aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorXavier Claessens <xclaesse@src.gnome.org>2008-04-04 22:59:07 +0800
committerXavier Claessens <xclaesse@src.gnome.org>2008-04-04 22:59:07 +0800
commitecf81a22ceed387b5c592e31cd8e69a974834562 (patch)
treeef6d3f560d9693c97c93fd7521b83ade979e7fbf
parent62e60bcd7fdded2946976696a7a8b2aaedb80570 (diff)
downloadgsoc2013-empathy-EMPATHY_0_22_1.tar
gsoc2013-empathy-EMPATHY_0_22_1.tar.gz
gsoc2013-empathy-EMPATHY_0_22_1.tar.bz2
gsoc2013-empathy-EMPATHY_0_22_1.tar.lz
gsoc2013-empathy-EMPATHY_0_22_1.tar.xz
gsoc2013-empathy-EMPATHY_0_22_1.tar.zst
gsoc2013-empathy-EMPATHY_0_22_1.zip
Tagged for release 0.22.1.EMPATHY_0_22_1
svn path=/tags/EMPATHY_0_22_1/; revision=876
-rw-r--r--gnome-2-22/.gitignore44
-rw-r--r--gnome-2-22/AUTHORS4
-rw-r--r--gnome-2-22/CONTRIBUTORS19
-rw-r--r--gnome-2-22/COPYING340
-rw-r--r--gnome-2-22/ChangeLog.old2353
-rw-r--r--gnome-2-22/MAINTAINERS4
-rw-r--r--gnome-2-22/Makefile.am55
-rw-r--r--gnome-2-22/NEWS344
-rw-r--r--gnome-2-22/README12
-rw-r--r--gnome-2-22/TODO27
-rwxr-xr-xgnome-2-22/autogen.sh23
-rw-r--r--gnome-2-22/configure.ac329
-rw-r--r--gnome-2-22/data/.gitignore3
-rw-r--r--gnome-2-22/data/Makefile.am50
-rw-r--r--gnome-2-22/data/aim.profile10
-rw-r--r--gnome-2-22/data/ekiga.profile14
-rw-r--r--gnome-2-22/data/empathy.desktop.in.in14
-rw-r--r--gnome-2-22/data/empathy.schemas.in309
-rw-r--r--gnome-2-22/data/fwd.profile15
-rw-r--r--gnome-2-22/data/gtalk.profile16
-rw-r--r--gnome-2-22/data/icons/Makefile.am166
-rwxr-xr-xgnome-2-22/data/icons/generate-png.sh15
-rw-r--r--gnome-2-22/data/icons/hicolor_actions_16x16_im-message-new.pngbin0 -> 693 bytes
-rw-r--r--gnome-2-22/data/icons/hicolor_actions_22x22_im-message-new.pngbin0 -> 955 bytes
-rw-r--r--gnome-2-22/data/icons/hicolor_actions_24x24_im-message-new.pngbin0 -> 994 bytes
-rw-r--r--gnome-2-22/data/icons/hicolor_apps_16x16_empathy.pngbin0 -> 797 bytes
-rw-r--r--gnome-2-22/data/icons/hicolor_apps_16x16_im-ekiga.pngbin0 -> 844 bytes
-rw-r--r--gnome-2-22/data/icons/hicolor_apps_16x16_im-gizmo.pngbin0 -> 861 bytes
-rw-r--r--gnome-2-22/data/icons/hicolor_apps_16x16_im-google-talk.pngbin0 -> 828 bytes
-rw-r--r--gnome-2-22/data/icons/hicolor_apps_16x16_im-irc.pngbin0 -> 848 bytes
-rw-r--r--gnome-2-22/data/icons/hicolor_apps_16x16_im-local-xmpp.pngbin0 -> 874 bytes
-rw-r--r--gnome-2-22/data/icons/hicolor_apps_16x16_im-msn.pngbin0 -> 762 bytes
-rw-r--r--gnome-2-22/data/icons/hicolor_apps_16x16_im-sip.pngbin0 -> 630 bytes
-rw-r--r--gnome-2-22/data/icons/hicolor_apps_16x16_im-xmpp.pngbin0 -> 663 bytes
-rw-r--r--gnome-2-22/data/icons/hicolor_apps_22x22_empathy.pngbin0 -> 1179 bytes
-rw-r--r--gnome-2-22/data/icons/hicolor_apps_22x22_im-ekiga.pngbin0 -> 1299 bytes
-rw-r--r--gnome-2-22/data/icons/hicolor_apps_22x22_im-gizmo.pngbin0 -> 1301 bytes
-rw-r--r--gnome-2-22/data/icons/hicolor_apps_22x22_im-google-talk.pngbin0 -> 1252 bytes
-rw-r--r--gnome-2-22/data/icons/hicolor_apps_22x22_im-irc.pngbin0 -> 1218 bytes
-rw-r--r--gnome-2-22/data/icons/hicolor_apps_22x22_im-local-xmpp.pngbin0 -> 1358 bytes
-rw-r--r--gnome-2-22/data/icons/hicolor_apps_22x22_im-msn.pngbin0 -> 1086 bytes
-rw-r--r--gnome-2-22/data/icons/hicolor_apps_22x22_im-sip.pngbin0 -> 824 bytes
-rw-r--r--gnome-2-22/data/icons/hicolor_apps_22x22_im-xmpp.pngbin0 -> 953 bytes
-rw-r--r--gnome-2-22/data/icons/hicolor_apps_24x24_empathy.pngbin0 -> 1249 bytes
-rw-r--r--gnome-2-22/data/icons/hicolor_apps_24x24_im-ekiga.pngbin0 -> 1431 bytes
-rw-r--r--gnome-2-22/data/icons/hicolor_apps_24x24_im-gizmo.pngbin0 -> 1437 bytes
-rw-r--r--gnome-2-22/data/icons/hicolor_apps_24x24_im-google-talk.pngbin0 -> 1363 bytes
-rw-r--r--gnome-2-22/data/icons/hicolor_apps_24x24_im-irc.pngbin0 -> 1308 bytes
-rw-r--r--gnome-2-22/data/icons/hicolor_apps_24x24_im-local-xmpp.pngbin0 -> 1505 bytes
-rw-r--r--gnome-2-22/data/icons/hicolor_apps_24x24_im-msn.pngbin0 -> 1203 bytes
-rw-r--r--gnome-2-22/data/icons/hicolor_apps_24x24_im-sip.pngbin0 -> 816 bytes
-rw-r--r--gnome-2-22/data/icons/hicolor_apps_24x24_im-xmpp.pngbin0 -> 1013 bytes
-rw-r--r--gnome-2-22/data/icons/hicolor_apps_32x32_empathy.pngbin0 -> 1813 bytes
-rw-r--r--gnome-2-22/data/icons/hicolor_apps_32x32_im-ekiga.pngbin0 -> 2118 bytes
-rw-r--r--gnome-2-22/data/icons/hicolor_apps_32x32_im-gizmo.pngbin0 -> 2061 bytes
-rw-r--r--gnome-2-22/data/icons/hicolor_apps_32x32_im-google-talk.pngbin0 -> 1893 bytes
-rw-r--r--gnome-2-22/data/icons/hicolor_apps_32x32_im-irc.pngbin0 -> 1695 bytes
-rw-r--r--gnome-2-22/data/icons/hicolor_apps_32x32_im-local-xmpp.pngbin0 -> 2255 bytes
-rw-r--r--gnome-2-22/data/icons/hicolor_apps_32x32_im-msn.pngbin0 -> 1734 bytes
-rw-r--r--gnome-2-22/data/icons/hicolor_apps_32x32_im-sip.pngbin0 -> 1151 bytes
-rw-r--r--gnome-2-22/data/icons/hicolor_apps_32x32_im-xmpp.pngbin0 -> 1492 bytes
-rw-r--r--gnome-2-22/data/icons/hicolor_apps_48x48_empathy.pngbin0 -> 2930 bytes
-rw-r--r--gnome-2-22/data/icons/hicolor_apps_48x48_im-ekiga.pngbin0 -> 3706 bytes
-rw-r--r--gnome-2-22/data/icons/hicolor_apps_48x48_im-gizmo.pngbin0 -> 3284 bytes
-rw-r--r--gnome-2-22/data/icons/hicolor_apps_48x48_im-google-talk.pngbin0 -> 3043 bytes
-rw-r--r--gnome-2-22/data/icons/hicolor_apps_48x48_im-irc.pngbin0 -> 2428 bytes
-rw-r--r--gnome-2-22/data/icons/hicolor_apps_48x48_im-local-xmpp.pngbin0 -> 3942 bytes
-rw-r--r--gnome-2-22/data/icons/hicolor_apps_48x48_im-msn.pngbin0 -> 2876 bytes
-rw-r--r--gnome-2-22/data/icons/hicolor_apps_48x48_im-sip.pngbin0 -> 1405 bytes
-rw-r--r--gnome-2-22/data/icons/hicolor_apps_48x48_im-xmpp.pngbin0 -> 2413 bytes
-rw-r--r--gnome-2-22/data/icons/hicolor_apps_scalable_empathy.svg261
-rw-r--r--gnome-2-22/data/icons/hicolor_apps_scalable_im-ekiga.svg441
-rw-r--r--gnome-2-22/data/icons/hicolor_apps_scalable_im-gizmo.svg269
-rw-r--r--gnome-2-22/data/icons/hicolor_apps_scalable_im-google-talk.svg301
-rw-r--r--gnome-2-22/data/icons/hicolor_apps_scalable_im-irc.svg785
-rw-r--r--gnome-2-22/data/icons/hicolor_apps_scalable_im-local-xmpp.svg1723
-rw-r--r--gnome-2-22/data/icons/hicolor_apps_scalable_im-msn.svg302
-rw-r--r--gnome-2-22/data/icons/hicolor_apps_scalable_im-sip.svg251
-rw-r--r--gnome-2-22/data/icons/hicolor_apps_scalable_im-xmpp.svg632
-rw-r--r--gnome-2-22/data/icons/hicolor_status_16x16_empathy-available.pngbin0 -> 685 bytes
-rw-r--r--gnome-2-22/data/icons/hicolor_status_16x16_empathy-away.pngbin0 -> 536 bytes
-rw-r--r--gnome-2-22/data/icons/hicolor_status_16x16_empathy-busy.pngbin0 -> 618 bytes
-rw-r--r--gnome-2-22/data/icons/hicolor_status_16x16_empathy-extended-away.pngbin0 -> 752 bytes
-rw-r--r--gnome-2-22/data/icons/hicolor_status_16x16_empathy-offline.pngbin0 -> 405 bytes
-rw-r--r--gnome-2-22/data/icons/hicolor_status_16x16_empathy-pending.pngbin0 -> 606 bytes
-rw-r--r--gnome-2-22/data/icons/hicolor_status_16x16_im-message.pngbin0 -> 510 bytes
-rw-r--r--gnome-2-22/data/icons/hicolor_status_16x16_user-typing.pngbin0 -> 587 bytes
-rw-r--r--gnome-2-22/data/icons/hicolor_status_22x22_empathy-available.pngbin0 -> 967 bytes
-rw-r--r--gnome-2-22/data/icons/hicolor_status_22x22_empathy-away.pngbin0 -> 740 bytes
-rw-r--r--gnome-2-22/data/icons/hicolor_status_22x22_empathy-busy.pngbin0 -> 1041 bytes
-rw-r--r--gnome-2-22/data/icons/hicolor_status_22x22_empathy-extended-away.pngbin0 -> 1115 bytes
-rw-r--r--gnome-2-22/data/icons/hicolor_status_22x22_empathy-offline.pngbin0 -> 571 bytes
-rw-r--r--gnome-2-22/data/icons/hicolor_status_22x22_empathy-pending.pngbin0 -> 806 bytes
-rw-r--r--gnome-2-22/data/icons/hicolor_status_24x24_empathy-available.pngbin0 -> 1075 bytes
-rw-r--r--gnome-2-22/data/icons/hicolor_status_24x24_empathy-away.pngbin0 -> 825 bytes
-rw-r--r--gnome-2-22/data/icons/hicolor_status_24x24_empathy-busy.pngbin0 -> 1081 bytes
-rw-r--r--gnome-2-22/data/icons/hicolor_status_24x24_empathy-extended-away.pngbin0 -> 1199 bytes
-rw-r--r--gnome-2-22/data/icons/hicolor_status_24x24_empathy-offline.pngbin0 -> 570 bytes
-rw-r--r--gnome-2-22/data/icons/hicolor_status_24x24_empathy-pending.pngbin0 -> 950 bytes
-rw-r--r--gnome-2-22/data/icons/hicolor_status_32x32_empathy-available.pngbin0 -> 1433 bytes
-rw-r--r--gnome-2-22/data/icons/hicolor_status_32x32_empathy-away.pngbin0 -> 1057 bytes
-rw-r--r--gnome-2-22/data/icons/hicolor_status_32x32_empathy-busy.pngbin0 -> 1218 bytes
-rw-r--r--gnome-2-22/data/icons/hicolor_status_32x32_empathy-extended-away.pngbin0 -> 1612 bytes
-rw-r--r--gnome-2-22/data/icons/hicolor_status_32x32_empathy-offline.pngbin0 -> 724 bytes
-rw-r--r--gnome-2-22/data/icons/hicolor_status_32x32_empathy-pending.pngbin0 -> 1298 bytes
-rw-r--r--gnome-2-22/data/icons/hicolor_status_48x48_empathy-available.pngbin0 -> 2211 bytes
-rw-r--r--gnome-2-22/data/icons/hicolor_status_48x48_empathy-away.pngbin0 -> 1606 bytes
-rw-r--r--gnome-2-22/data/icons/hicolor_status_48x48_empathy-busy.pngbin0 -> 1848 bytes
-rw-r--r--gnome-2-22/data/icons/hicolor_status_48x48_empathy-extended-away.pngbin0 -> 2622 bytes
-rw-r--r--gnome-2-22/data/icons/hicolor_status_48x48_empathy-offline.pngbin0 -> 1062 bytes
-rw-r--r--gnome-2-22/data/icons/hicolor_status_48x48_empathy-pending.pngbin0 -> 2018 bytes
-rw-r--r--gnome-2-22/data/icons/hicolor_status_scalable_empathy-available.svg104
-rw-r--r--gnome-2-22/data/icons/hicolor_status_scalable_empathy-away.svg93
-rw-r--r--gnome-2-22/data/icons/hicolor_status_scalable_empathy-busy.svg140
-rw-r--r--gnome-2-22/data/icons/hicolor_status_scalable_empathy-extended-away.svg120
-rw-r--r--gnome-2-22/data/icons/hicolor_status_scalable_empathy-offline.svg101
-rw-r--r--gnome-2-22/data/icons/hicolor_status_scalable_empathy-pending.svg103
-rw-r--r--gnome-2-22/data/icq.profile11
-rw-r--r--gnome-2-22/data/irc.profile9
-rw-r--r--gnome-2-22/data/jabber.profile12
-rw-r--r--gnome-2-22/data/msn-haze.profile12
-rw-r--r--gnome-2-22/data/msn.profile12
-rw-r--r--gnome-2-22/data/salut.profile9
-rw-r--r--gnome-2-22/data/sipphone.profile16
-rw-r--r--gnome-2-22/data/sofiasip.profile10
-rw-r--r--gnome-2-22/data/yahoo.profile11
-rw-r--r--gnome-2-22/docs/.gitignore8
-rw-r--r--gnome-2-22/docs/Makefile.am2
-rw-r--r--gnome-2-22/docs/libempathy-gtk/.gitignore6
-rw-r--r--gnome-2-22/docs/libempathy-gtk/Makefile.am59
-rw-r--r--gnome-2-22/docs/libempathy-gtk/libempathy-gtk-docs.sgml68
-rw-r--r--gnome-2-22/docs/libempathy-gtk/libempathy-gtk.types25
-rw-r--r--gnome-2-22/docs/libempathy-gtk/version.xml.in1
-rw-r--r--gnome-2-22/docs/libempathy/.gitignore6
-rw-r--r--gnome-2-22/docs/libempathy/Makefile.am60
-rw-r--r--gnome-2-22/docs/libempathy/libempathy-docs.sgml57
-rw-r--r--gnome-2-22/docs/libempathy/libempathy.types20
-rw-r--r--gnome-2-22/docs/libempathy/version.xml.in1
-rw-r--r--gnome-2-22/extensions/.gitignore2
-rw-r--r--gnome-2-22/extensions/Channel_Handler.xml62
-rw-r--r--gnome-2-22/extensions/Makefile.am130
-rw-r--r--gnome-2-22/extensions/Stream_Engine.xml44
-rw-r--r--gnome-2-22/extensions/all.xml14
-rw-r--r--gnome-2-22/extensions/extensions-cli.c25
-rw-r--r--gnome-2-22/extensions/extensions.c6
-rw-r--r--gnome-2-22/extensions/extensions.h20
-rw-r--r--gnome-2-22/extensions/misc.xml10
-rw-r--r--gnome-2-22/libempathy-gtk/.gitignore2
-rw-r--r--gnome-2-22/libempathy-gtk/Makefile.am211
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-about-dialog.c113
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-about-dialog.h36
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-account-chooser.c677
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-account-chooser.h73
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-account-widget-generic.glade89
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-account-widget-icq.glade375
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-account-widget-irc.c511
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-account-widget-irc.glade451
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-account-widget-irc.h33
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-account-widget-jabber.glade566
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-account-widget-msn.glade335
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-account-widget-salut.glade396
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-account-widget-yahoo.glade526
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-account-widget.c680
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-account-widget.h53
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-accounts-dialog.c1083
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-accounts-dialog.glade350
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-accounts-dialog.h36
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-avatar-chooser.c569
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-avatar-chooser.h60
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-avatar-image.c306
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-avatar-image.h58
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-call-window.c519
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-call-window.glade300
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-call-window.h34
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-cell-renderer-activatable.c121
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-cell-renderer-activatable.h54
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-cell-renderer-expander.c482
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-cell-renderer-expander.h59
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-cell-renderer-text.c368
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-cell-renderer-text.h56
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-chat-view.c1570
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-chat-view.h119
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-chat-window.c1892
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-chat-window.h80
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-chat.c1761
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-chat.glade756
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-chat.h123
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-chatrooms-window.c582
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-chatrooms-window.glade477
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-chatrooms-window.h35
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-conf.c373
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-conf.h87
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-contact-dialogs.c344
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-contact-dialogs.glade120
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-contact-dialogs.h41
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-contact-list-store.c1549
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-contact-list-store.h108
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-contact-list-view.c1502
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-contact-list-view.h88
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-contact-widget.c946
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-contact-widget.glade983
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-contact-widget.h52
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-geometry.c186
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-geometry.h45
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-group-chat.c700
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-group-chat.glade123
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-group-chat.h67
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-images.h45
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-irc-network-dialog.c579
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-irc-network-dialog.h35
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-log-window.c1104
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-log-window.glade470
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-log-window.h39
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-main-window.c1160
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-main-window.glade310
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-main-window.h35
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-new-chatroom-dialog.c566
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-new-chatroom-dialog.glade437
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-new-chatroom-dialog.h34
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-new-message-dialog.c164
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-new-message-dialog.glade181
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-new-message-dialog.h33
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-preferences.c990
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-preferences.glade1063
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-preferences.h62
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-presence-chooser.c974
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-presence-chooser.glade200
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-presence-chooser.h57
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-private-chat.c362
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-private-chat.h63
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-profile-chooser.c190
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-profile-chooser.h34
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-smiley-manager.c353
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-smiley-manager.h74
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-spell-dialog.c267
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-spell-dialog.glade205
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-spell-dialog.h39
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-spell.c452
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-spell.h39
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-status-icon.c861
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-status-icon.glade59
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-status-icon.h53
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-theme-boxes.c837
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-theme-boxes.h53
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-theme-irc.c352
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-theme-irc.h53
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-theme-manager.c449
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-theme-manager.h57
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-theme.c417
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-theme.h97
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-ui-utils.c1418
-rw-r--r--gnome-2-22/libempathy-gtk/empathy-ui-utils.h116
-rw-r--r--gnome-2-22/libempathy-gtk/ephy-spinner.c977
-rw-r--r--gnome-2-22/libempathy-gtk/ephy-spinner.h70
-rw-r--r--gnome-2-22/libempathy-gtk/libempathy-gtk.pc.in11
-rw-r--r--gnome-2-22/libempathy-gtk/totem-subtitle-encoding.c585
-rw-r--r--gnome-2-22/libempathy-gtk/totem-subtitle-encoding.h12
-rw-r--r--gnome-2-22/libempathy/.gitignore4
-rw-r--r--gnome-2-22/libempathy/Makefile.am185
-rw-r--r--gnome-2-22/libempathy/empathy-avatar.c180
-rw-r--r--gnome-2-22/libempathy/empathy-avatar.h53
-rw-r--r--gnome-2-22/libempathy/empathy-chandler.c158
-rw-r--r--gnome-2-22/libempathy/empathy-chandler.h53
-rw-r--r--gnome-2-22/libempathy/empathy-chandler.xml13
-rw-r--r--gnome-2-22/libempathy/empathy-chatroom-manager.c501
-rw-r--r--gnome-2-22/libempathy/empathy-chatroom-manager.dtd17
-rw-r--r--gnome-2-22/libempathy/empathy-chatroom-manager.h72
-rw-r--r--gnome-2-22/libempathy/empathy-chatroom.c361
-rw-r--r--gnome-2-22/libempathy/empathy-chatroom.h77
-rw-r--r--gnome-2-22/libempathy/empathy-contact-factory.c179
-rw-r--r--gnome-2-22/libempathy/empathy-contact-factory.h76
-rw-r--r--gnome-2-22/libempathy/empathy-contact-groups.c285
-rw-r--r--gnome-2-22/libempathy/empathy-contact-groups.dtd17
-rw-r--r--gnome-2-22/libempathy/empathy-contact-groups.h38
-rw-r--r--gnome-2-22/libempathy/empathy-contact-list.c219
-rw-r--r--gnome-2-22/libempathy/empathy-contact-list.h95
-rw-r--r--gnome-2-22/libempathy/empathy-contact-manager.c520
-rw-r--r--gnome-2-22/libempathy/empathy-contact-manager.h60
-rw-r--r--gnome-2-22/libempathy/empathy-contact.c700
-rw-r--r--gnome-2-22/libempathy/empathy-contact.h105
-rw-r--r--gnome-2-22/libempathy/empathy-debug.c132
-rw-r--r--gnome-2-22/libempathy/empathy-debug.h58
-rw-r--r--gnome-2-22/libempathy/empathy-filter.c245
-rw-r--r--gnome-2-22/libempathy/empathy-filter.h62
-rw-r--r--gnome-2-22/libempathy/empathy-filter.xml18
-rw-r--r--gnome-2-22/libempathy/empathy-idle.c664
-rw-r--r--gnome-2-22/libempathy/empathy-idle.h73
-rw-r--r--gnome-2-22/libempathy/empathy-irc-network-manager.c801
-rw-r--r--gnome-2-22/libempathy/empathy-irc-network-manager.h82
-rw-r--r--gnome-2-22/libempathy/empathy-irc-network.c365
-rw-r--r--gnome-2-22/libempathy/empathy-irc-network.h81
-rw-r--r--gnome-2-22/libempathy/empathy-irc-networks.dtd18
-rw-r--r--gnome-2-22/libempathy/empathy-irc-server.c233
-rw-r--r--gnome-2-22/libempathy/empathy-irc-server.h65
-rw-r--r--gnome-2-22/libempathy/empathy-log-manager.c799
-rw-r--r--gnome-2-22/libempathy/empathy-log-manager.h99
-rw-r--r--gnome-2-22/libempathy/empathy-log-manager.xsl148
-rw-r--r--gnome-2-22/libempathy/empathy-message.c473
-rw-r--r--gnome-2-22/libempathy/empathy-message.h85
-rw-r--r--gnome-2-22/libempathy/empathy-status-presets.c407
-rw-r--r--gnome-2-22/libempathy/empathy-status-presets.dtd14
-rw-r--r--gnome-2-22/libempathy/empathy-status-presets.h46
-rw-r--r--gnome-2-22/libempathy/empathy-time.c124
-rw-r--r--gnome-2-22/libempathy/empathy-time.h47
-rw-r--r--gnome-2-22/libempathy/empathy-tp-call.c1018
-rw-r--r--gnome-2-22/libempathy/empathy-tp-call.h93
-rw-r--r--gnome-2-22/libempathy/empathy-tp-chat.c983
-rw-r--r--gnome-2-22/libempathy/empathy-tp-chat.h75
-rw-r--r--gnome-2-22/libempathy/empathy-tp-chatroom.c299
-rw-r--r--gnome-2-22/libempathy/empathy-tp-chatroom.h65
-rw-r--r--gnome-2-22/libempathy/empathy-tp-contact-factory.c1287
-rw-r--r--gnome-2-22/libempathy/empathy-tp-contact-factory.h71
-rw-r--r--gnome-2-22/libempathy/empathy-tp-contact-list.c1019
-rw-r--r--gnome-2-22/libempathy/empathy-tp-contact-list.h58
-rw-r--r--gnome-2-22/libempathy/empathy-tp-group.c854
-rw-r--r--gnome-2-22/libempathy/empathy-tp-group.h94
-rw-r--r--gnome-2-22/libempathy/empathy-tp-roomlist.c349
-rw-r--r--gnome-2-22/libempathy/empathy-tp-roomlist.h58
-rw-r--r--gnome-2-22/libempathy/empathy-utils.c605
-rw-r--r--gnome-2-22/libempathy/empathy-utils.h103
-rw-r--r--gnome-2-22/libempathy/irc-networks.xml543
-rw-r--r--gnome-2-22/libempathy/libempathy.pc.in11
-rw-r--r--gnome-2-22/m4/.gitignore2
-rw-r--r--gnome-2-22/m4/acinclude.m465
-rw-r--r--gnome-2-22/m4/empathy-args.m419
-rw-r--r--gnome-2-22/m4/empathy-valgrind.m431
-rw-r--r--gnome-2-22/megaphone/.gitignore4
-rw-r--r--gnome-2-22/megaphone/Makefile.am2
-rw-r--r--gnome-2-22/megaphone/data/GNOME_Megaphone_Applet.schemas.in30
-rw-r--r--gnome-2-22/megaphone/data/GNOME_Megaphone_Applet.server.in.in25
-rw-r--r--gnome-2-22/megaphone/data/GNOME_Megaphone_Applet.xml9
-rw-r--r--gnome-2-22/megaphone/data/Makefile.am35
-rw-r--r--gnome-2-22/megaphone/src/Makefile.am17
-rw-r--r--gnome-2-22/megaphone/src/megaphone-applet.c559
-rw-r--r--gnome-2-22/megaphone/src/megaphone-applet.h53
-rw-r--r--gnome-2-22/nothere/Makefile.am2
-rw-r--r--gnome-2-22/nothere/data/GNOME_NotHere_Applet.server.in.in25
-rw-r--r--gnome-2-22/nothere/data/GNOME_NotHere_Applet.xml7
-rw-r--r--gnome-2-22/nothere/data/Makefile.am35
-rw-r--r--gnome-2-22/nothere/src/Makefile.am17
-rw-r--r--gnome-2-22/nothere/src/nothere-applet.c120
-rw-r--r--gnome-2-22/nothere/src/nothere-applet.h52
-rw-r--r--gnome-2-22/po/.gitignore6
-rw-r--r--gnome-2-22/po/ChangeLog13
-rw-r--r--gnome-2-22/po/ChangeLog.old347
-rw-r--r--gnome-2-22/po/LINGUAS47
-rw-r--r--gnome-2-22/po/POTFILES.in74
-rw-r--r--gnome-2-22/po/POTFILES.skip6
-rw-r--r--gnome-2-22/po/ar.po2485
-rw-r--r--gnome-2-22/po/az.po1136
-rw-r--r--gnome-2-22/po/bg.po1406
-rw-r--r--gnome-2-22/po/ca.po3499
-rw-r--r--gnome-2-22/po/cs.po2040
-rw-r--r--gnome-2-22/po/cy.po2235
-rw-r--r--gnome-2-22/po/da.po2578
-rw-r--r--gnome-2-22/po/de.po1371
-rw-r--r--gnome-2-22/po/dz.po1419
-rw-r--r--gnome-2-22/po/el.po1742
-rw-r--r--gnome-2-22/po/en_CA.po2380
-rw-r--r--gnome-2-22/po/en_GB.po1977
-rw-r--r--gnome-2-22/po/eo.po1921
-rw-r--r--gnome-2-22/po/es.po1751
-rw-r--r--gnome-2-22/po/eu.po1751
-rw-r--r--gnome-2-22/po/fi.po1773
-rw-r--r--gnome-2-22/po/fr.po1794
-rw-r--r--gnome-2-22/po/ga.po1141
-rw-r--r--gnome-2-22/po/gl.po1454
-rw-r--r--gnome-2-22/po/he.po1679
-rw-r--r--gnome-2-22/po/hr.po1144
-rw-r--r--gnome-2-22/po/hu.po1311
-rw-r--r--gnome-2-22/po/it.po1843
-rw-r--r--gnome-2-22/po/ja.po1739
-rw-r--r--gnome-2-22/po/lt.po1745
-rw-r--r--gnome-2-22/po/ml.po1124
-rw-r--r--gnome-2-22/po/ms.po1982
-rw-r--r--gnome-2-22/po/nb.po1399
-rw-r--r--gnome-2-22/po/ne.po1259
-rw-r--r--gnome-2-22/po/nl.po1971
-rw-r--r--gnome-2-22/po/oc.po1664
-rw-r--r--gnome-2-22/po/pl.po2208
-rw-r--r--gnome-2-22/po/pt.po2003
-rw-r--r--gnome-2-22/po/pt_BR.po2685
-rw-r--r--gnome-2-22/po/ru.po2335
-rw-r--r--gnome-2-22/po/sl.po1332
-rw-r--r--gnome-2-22/po/sq.po1347
-rw-r--r--gnome-2-22/po/sr.po2314
-rw-r--r--gnome-2-22/po/sr@Latn.po2314
-rw-r--r--gnome-2-22/po/sv.po2790
-rw-r--r--gnome-2-22/po/tr.po854
-rw-r--r--gnome-2-22/po/uk.po1915
-rw-r--r--gnome-2-22/po/vi.po1940
-rw-r--r--gnome-2-22/po/zh_CN.po1961
-rw-r--r--gnome-2-22/po/zh_HK.po2561
-rw-r--r--gnome-2-22/po/zh_TW.po2561
-rw-r--r--gnome-2-22/python/.gitignore2
-rw-r--r--gnome-2-22/python/Makefile.am2
-rw-r--r--gnome-2-22/python/README11
-rw-r--r--gnome-2-22/python/pyempathy.patch35
-rw-r--r--gnome-2-22/python/pyempathy/Makefile.am43
-rw-r--r--gnome-2-22/python/pyempathy/pyempathy.defs2138
-rw-r--r--gnome-2-22/python/pyempathy/pyempathy.override64
-rw-r--r--gnome-2-22/python/pyempathy/pyempathymodule.c24
-rw-r--r--gnome-2-22/python/pyempathygtk.patch57
-rw-r--r--gnome-2-22/python/pyempathygtk/Makefile.am44
-rw-r--r--gnome-2-22/python/pyempathygtk/pyempathygtk.defs2141
-rw-r--r--gnome-2-22/python/pyempathygtk/pyempathygtk.override85
-rw-r--r--gnome-2-22/python/pyempathygtk/pyempathygtkmodule.c23
-rwxr-xr-xgnome-2-22/release.py281
-rw-r--r--gnome-2-22/rules/check.mak120
-rw-r--r--gnome-2-22/src/.gitignore7
-rw-r--r--gnome-2-22/src/Makefile.am60
-rw-r--r--gnome-2-22/src/bacon-message-connection.c396
-rw-r--r--gnome-2-22/src/bacon-message-connection.h43
-rw-r--r--gnome-2-22/src/empathy-accounts.c59
-rw-r--r--gnome-2-22/src/empathy-call-chandler.c87
-rw-r--r--gnome-2-22/src/empathy-call.chandler5
-rw-r--r--gnome-2-22/src/empathy-chat-chandler.c158
-rw-r--r--gnome-2-22/src/empathy-chat.chandler5
-rw-r--r--gnome-2-22/src/empathy-logs.c59
-rw-r--r--gnome-2-22/src/empathy.c451
-rw-r--r--gnome-2-22/src/org.gnome.Empathy.Call.service.in3
-rw-r--r--gnome-2-22/src/org.gnome.Empathy.Chat.service.in3
-rw-r--r--gnome-2-22/tests/.gitignore3
-rw-r--r--gnome-2-22/tests/Makefile.am48
-rw-r--r--gnome-2-22/tests/check-empathy-irc-network-manager.c877
-rw-r--r--gnome-2-22/tests/check-empathy-irc-network.c240
-rw-r--r--gnome-2-22/tests/check-empathy-irc-server.c93
-rw-r--r--gnome-2-22/tests/check-empathy-utils.c29
-rw-r--r--gnome-2-22/tests/check-helpers.c63
-rw-r--r--gnome-2-22/tests/check-helpers.h43
-rw-r--r--gnome-2-22/tests/check-irc-helper.c80
-rw-r--r--gnome-2-22/tests/check-irc-helper.h27
-rw-r--r--gnome-2-22/tests/check-libempathy.h9
-rw-r--r--gnome-2-22/tests/check-main.c43
-rw-r--r--gnome-2-22/tests/contact-manager.c34
-rw-r--r--gnome-2-22/tests/dlopen.supp127
-rw-r--r--gnome-2-22/tests/valgrind.supp711
-rw-r--r--gnome-2-22/tests/xml/.gitignore1
-rw-r--r--gnome-2-22/tests/xml/Makefile.am3
-rw-r--r--gnome-2-22/tests/xml/default-irc-networks-sample.xml30
-rw-r--r--gnome-2-22/tests/xml/user-irc-networks-sample.xml26
-rw-r--r--gnome-2-22/tools/.gitignore1
-rw-r--r--gnome-2-22/tools/Makefile.am41
-rw-r--r--gnome-2-22/tools/c-constants-generator.xsl299
-rw-r--r--gnome-2-22/tools/c-interfaces-generator.xsl84
-rw-r--r--gnome-2-22/tools/check-c-style.sh36
-rw-r--r--gnome-2-22/tools/check-coding-style.mk17
-rw-r--r--gnome-2-22/tools/check-misc.sh13
-rw-r--r--gnome-2-22/tools/check-whitespace.sh17
-rw-r--r--gnome-2-22/tools/doc-generator.xsl689
-rw-r--r--gnome-2-22/tools/glib-client-gen.py1126
-rw-r--r--gnome-2-22/tools/glib-client-marshaller-gen.py59
-rw-r--r--gnome-2-22/tools/glib-errors-enum-body.xsl72
-rw-r--r--gnome-2-22/tools/glib-errors-enum-header.xsl73
-rw-r--r--gnome-2-22/tools/glib-ginterface-gen.py711
-rw-r--r--gnome-2-22/tools/glib-gtypes-generator.py230
-rw-r--r--gnome-2-22/tools/glib-interfaces-body-generator.xsl47
-rw-r--r--gnome-2-22/tools/glib-interfaces-generator.xsl55
-rw-r--r--gnome-2-22/tools/glib-signals-marshal-gen.py55
-rw-r--r--gnome-2-22/tools/identity.xsl7
-rw-r--r--gnome-2-22/tools/libglibcodegen.py320
461 files changed, 168876 insertions, 0 deletions
diff --git a/gnome-2-22/.gitignore b/gnome-2-22/.gitignore
new file mode 100644
index 000000000..1493edb8a
--- /dev/null
+++ b/gnome-2-22/.gitignore
@@ -0,0 +1,44 @@
+*.[oa]
+*.lo
+*.la
+Makefile.in
+Makefile
+.deps
+.libs
+*.sw[po]
+*enum-types*
+*.pc
+*.tar.*
+*.orig
+*.rej
+*.bak
+*~
+*.pyc
+*.loT
+
+ChangeLog
+stamp-h1
+xmldocs.make
+INSTALL
+aclocal.m4
+config.guess
+config.h
+config.h.in
+config.log
+config.status
+config.status.lineno
+config.sub
+configure
+depcomp
+autom4te.cache
+gtk-doc.make
+install-sh
+intltool-*
+libtool
+ltmain.sh
+missing
+mkinstalldirs
+omf.make
+compile
+tags
+TAGS
diff --git a/gnome-2-22/AUTHORS b/gnome-2-22/AUTHORS
new file mode 100644
index 000000000..2847eaa37
--- /dev/null
+++ b/gnome-2-22/AUTHORS
@@ -0,0 +1,4 @@
+Mikael Hallendal <micke@imendio.com>
+Richard Hult <richard@imendio.com>
+Martyn Russell <martyn@gnome.org>
+Xavier Claessens <xclaesse@gmail.com>
diff --git a/gnome-2-22/CONTRIBUTORS b/gnome-2-22/CONTRIBUTORS
new file mode 100644
index 000000000..232f6c27f
--- /dev/null
+++ b/gnome-2-22/CONTRIBUTORS
@@ -0,0 +1,19 @@
+Andreas Lööw
+Aurelien Naldi
+Bastien Nocera
+Christoffer Olsen
+Frederic Crozat
+Geert-Jan Van den Bogaerde
+Johan Hammar
+Jonatan Magnusson
+Jordi Mallach
+Kim Andersen
+Martyn Russell
+Mike Gratton
+Ross Burton
+Sjoerd Simons
+Thomas Reynolds
+Vincent Untz
+Xavier Claessens
+Andreas Nilsson
+Vinicius Depizzol
diff --git a/gnome-2-22/COPYING b/gnome-2-22/COPYING
new file mode 100644
index 000000000..d60c31a97
--- /dev/null
+++ b/gnome-2-22/COPYING
@@ -0,0 +1,340 @@
+ 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/gnome-2-22/ChangeLog.old b/gnome-2-22/ChangeLog.old
new file mode 100644
index 000000000..6274dd053
--- /dev/null
+++ b/gnome-2-22/ChangeLog.old
@@ -0,0 +1,2353 @@
+2007-12-06 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-preferences.c:
+ * libempathy-gtk/empathy-preferences.glade:
+ * libempathy/empathy-idle.c: When NM is in sleeping (=disabled) state,
+ do just like if it was connected. Remove option from preference dialog
+ to disabled NM support because NM can be disabled using nm-applet, but
+ let the option in gconf, it can be useful in case of buggy NM.
+
+2007-12-06 Xavier Claessens <xclaesse@gmail.com>
+
+ * data/empathy.schemas.in:
+ * libempathy-gtk/empathy-preferences.c:
+ * libempathy-gtk/empathy-preferences.glade:
+ * libempathy-gtk/empathy-preferences.h:
+ * libempathy-gtk/empathy-status-icon.c:
+ * libempathy/empathy-idle.c:
+ * libempathy/empathy-idle.h: Add a preference option to disable/enable
+ NM support.
+
+2007-12-05 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-contact-list-view.c:
+ * src/Makefile.am: Ship empathy-call.chandler as extra_dist if not
+ compiled with VoIP support. Fixes bug #501486.
+
+2007-12-03 Xavier Claessens <xclaesse@gmail.com>
+
+ * configure.ac: Bump version to 0.21.4.
+
+2007-12-03 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-chat-window.c:
+ * libempathy-gtk/empathy-chat.c:
+ * libempathy-gtk/empathy-chat.h:
+ * libempathy-gtk/empathy-group-chat.c:
+ * libempathy-gtk/empathy-group-chat.h:
+ * libempathy-gtk/empathy-private-chat.c:
+ * libempathy-gtk/empathy-private-chat.h:
+ * libempathy/empathy-tp-chat.c:
+ * libempathy/empathy-tp-chat.h:
+ * python/pyempathy/pyempathy.defs:
+ * python/pyempathygtk/pyempathygtk.defs:
+ * src/empathy-chat-chandler.c: Cleanup chat objects API and request a
+ new Text channel if account gets reconnected.
+
+2007-12-03 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy/empathy-debug.c: Call tp_debug_set_flags to get tp-glib
+ debug output.
+
+2007-12-02 Xavier Claessens <xclaesse@gmail.com>
+
+ * configure.ac:
+ * libempathy-gtk/empathy-account-chooser.c:
+ * libempathy-gtk/empathy-accounts-dialog.c:
+ * libempathy-gtk/empathy-chat.c:
+ * libempathy-gtk/empathy-contact-dialogs.c:
+ * libempathy-gtk/empathy-group-chat.c:
+ * libempathy-gtk/empathy-main-window.c:
+ * libempathy-gtk/empathy-presence-chooser.c:
+ * libempathy-gtk/empathy-status-presets.c:
+ * libempathy/empathy-avatar.c:
+ * libempathy/empathy-contact-factory.c:
+ * libempathy/empathy-contact-manager.c:
+ * libempathy/empathy-tp-call.c:
+ * libempathy/empathy-tp-chat.c:
+ * libempathy/empathy-tp-chat.h:
+ * libempathy/empathy-tp-contact-list.c:
+ * libempathy/empathy-tp-group.c:
+ * libempathy/empathy-tp-roomlist.c:
+ * libempathy/empathy-utils.c:
+ * libempathy/empathy-utils.h:
+ * python/pyempathy/pyempathy.defs:
+ * src/empathy.c: Do not use deprecated symbols from libtelepathy. We
+ now link on telepathy-glib, make use of tp_strdiff and
+ tp_escape_as_identifier instead of using our own copy of those
+ functions.
+
+2007-12-02 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/Makefile.am:
+ * libempathy-gtk/empathy-main-window.c:
+ * libempathy-gtk/empathy-new-message-dialog.c:
+ * libempathy-gtk/empathy-new-message-dialog.glade:
+ * libempathy-gtk/empathy-new-message-dialog.h:
+ * libempathy-gtk/empathy-status-icon.c: Implement New Message menu
+ entry. Fixes bug #489979.
+
+2007-11-30 Xavier Claessens <xclaesse@gmail.com>
+
+ * data/empathy.schemas.in:
+ * libempathy-gtk/empathy-group-chat.c:
+ * libempathy-gtk/empathy-preferences.h: Add a gconf key to define the
+ char to be added for tab completion.
+ Fixes bug #453418 (Matej Cepl, Xavier Claessens).
+
+2007-11-28 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-private-chat.c: Request new Text Channel if
+ the contact is online again and CM don't support offline message.
+
+2007-11-22 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-group-chat.c: use ":" instead of "," for nick
+ completion.
+
+2007-11-21 Xavier Claessens <xclaesse@gmail.com>
+
+ * TODO: Updated.
+
+2007-11-21 Xavier Claessens <xclaesse@gmail.com>
+
+ * configure.ac: Add x11 to build deps.
+
+2007-11-21 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-group-chat.c:
+ * libempathy-gtk/empathy-chat.c:
+ * libempathy-gtk/empathy-chat.h: Add nick completion for MUCs.
+ Fixes bug #453418.
+
+2007-11-15 Xavier Claessens <xclaesse@gmail.com>
+
+ * docs/*:
+ * doc/*:
+ * configure.ac:
+ * Makefile.am: Remove doc directory and replace it with a better gtk-doc
+ in docs. More files are auto-generated, we have less files on SVN.
+
+2007-11-15 Xavier Claessens <xclaesse@gmail.com>
+
+ * src/Makefile.am: Do not build voip chandler if building without voip
+ support. Fixes bug #496861.
+
+2007-11-13 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy/empathy-chandler.c:
+ * libempathy/empathy-filter.c: Do not use deprecated tp_conn_new(), use
+ tp_conn_new_without_connect() instead.
+
+2007-11-12 Xavier Claessens <xclaesse@gmail.com>
+
+ * configure.ac: Bump version to 0.21.3.
+
+2007-11-12 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-status-icon.c:
+ * src/empathy-call-chandler.c:
+ * src/empathy-call.chandler:
+ * src/org.gnome.Empathy.Call.service.in:
+ * src/empathy-chat.chandler:
+ * src/org.gnome.Empathy.Chat.service.in:
+ * src/empathy-chat-chandler.c: Don't use the same bus name for filter
+ and chandler programs.
+
+2007-11-12 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-account-widget-jabber.glade: Jabber priority is
+ in the range -128 127 (Laurent Bigonville).
+
+2007-11-11 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-chat.c:
+ * src/empathy-call-chandler.c:
+ * src/org.gnome.Empathy.Chat.service.in:
+ * src/empathy-chat-chandler.c:
+ * src/empathy.c:
+ * src/Makefile.am: Move chats to its own process.
+
+2007-11-07 Xavier Claessens <xclaesse@gmail.com>
+
+ * src/org.gnome.Empathy.Call.service.in:
+ * src/Makefile.am: Install empathy-call-chandler to $libexecdir.
+
+2007-11-06 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-account-widget-jabber.glade:
+ * libempathy-gtk/empathy-account-widget-jabber.c: Allow to change jabber
+ priority. Fixes bug #493992 (Laurent Bigonville).
+
+2007-11-04 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-main-window.c: Display error message when an
+ account failed to connect. Based on Gossip's code.
+
+2007-11-03 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy/empathy-contact-factory.c: Call ClearAvatar if the data
+ is NULL or size <= 0 in empathy_contact_factory_set_avatar().
+
+2007-11-03 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-contact-widget.c:
+ * libempathy-gtk/empathy-avatar-chooser.c:
+ * libempathy-gtk/empathy-avatar-chooser.h:
+ * python/pyempathy/pyempathy.defs:
+ * libempathy/empathy-contact-factory.c:
+ * libempathy/empathy-contact-factory.h: Rename
+ empathy_contact_factory_set_name() to _set_alias(). Implements
+ empathy_contact_factory_set_avatar(). Return the mime_type in
+ empathy_avatar_chooser_get_image_data().
+
+2007-11-03 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-main-window.c: Unref contact returned by
+ empathy_contact_factory_get_user().
+
+2007-11-03 Xavier Claessens <xclaesse@gmail.com>
+
+ * src/empathy.c: Make use of gtk_init_with_args for command line
+ parsing. Fixes bug #491985 (Basilio Kublik).
+
+2007-11-03 Xavier Claessens <xclaesse@gmail.com>
+
+ * data/icons/hicolor_status_scalable_empathy-pending.svg:
+ * data/icons/hicolor_status_16x16_empathy-pending.svg:
+ * data/icons/hicolor_status_scalable_empathy-extended-away.svg:
+ * data/icons/hicolor_status_16x16_empathy-extended-away.svg:
+ * data/icons/hicolor_status_scalable_empathy-away.svg:
+ * data/icons/hicolor_status_16x16_empathy-away.svg:
+ * data/icons/hicolor_status_scalable_empathy-offline.svg:
+ * data/icons/hicolor_status_16x16_empathy-offline.svg:
+ * data/icons/hicolor_status_scalable_empathy-busy.svg:
+ * data/icons/hicolor_status_16x16_empathy-busy.svg:
+ * data/icons/hicolor_status_scalable_empathy-available.svg:
+ * data/icons/hicolor_status_16x16_empathy-available.svg:
+ * data/icons/Makefile.am: Install SVG status images as scalable.
+ Fixes bug #492984.
+
+2007-11-03 Xavier Claessens <xclaesse@gmail.com>
+
+ * configure.ac: Bump version to 0.21.2.
+
+2007-10-28 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-contact-list-view.c:
+ * libempathy-gtk/empathy-contact-list-store.c:
+ * libempathy-gtk/empathy-contact-list-store.h:
+ * doc/libempathy-gtk/libempathy-gtk.types:
+ * doc/libempathy-gtk/tmpl/empathy-contact-list-store.sgml: Rename
+ COL_XXX to EMPATHY_CONTACT_LIST_STORE_COL_XXX since it's in public API.
+ Fixes bug #470804.
+
+2007-10-28 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-status-icon.glade:
+ * libempathy-gtk/empathy-group-chat.glade:
+ * libempathy-gtk/empathy-main-window.glade:
+ * libempathy-gtk/empathy-images.h:
+ * src/empathy.c:
+ * src/Makefile.am:
+ * configure.ac:
+ * data/jabber.profile:
+ * data/salut.profile:
+ * data/msn.profile:
+ * data/gtalk.profile:
+ * data/irc.profile:
+ * data/22x22:
+ * data/32x32:
+ * data/24x24:
+ * data/16x16:
+ * data/48x48:
+ * data/scalable:
+ * data/Makefile.am:
+ * data/icons/*: Rename icons to follow fd.o icon naming spec. Move icons
+ to the right directory. Fixes bug #470418 (Michael Monreal).
+
+2007-10-28 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-smiley-manager.c: Update to new icon naming
+ spec for new avatars. Fixes bug #490173 (Michael Monreal).
+
+2007-10-28 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-contact-dialogs.c: Change edit personal
+ information window title to "Personal Information". Fixes bug #490159.
+ Change add contact window title to "New Contact", need a capitalized
+ 'C'. Change edit contact information window title to
+ "Edit Contact Information".
+
+2007-10-25 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-chat.glade: Add Ctr-L accelerator to clear
+ the chat. Fixes bug #490125 (Marco Barisione).
+
+2007-10-25 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-main-window.glade: Change window title to
+ "Contact List", both words should be capitalised according to HIG.
+ Fixes bug #490076 (Michael Monreal).
+
+2007-10-25 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-main-window.glade: Remove "..." from the
+ "Manage Favorites..." menu item. Fixes bug #490086 (Michael Monreal).
+
+2007-10-25 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-images.h:
+ * libempathy-gtk/empathy-contact-list-view.c:
+ * libempathy-gtk/empathy-chat.glade:
+ * libempathy-gtk/empathy-log-window.glade:
+ * libempathy-gtk/empathy-main-window.glade: Use "document-open-recent"
+ icon instead of gtk-justify-left for history icon.
+ Fixes bug #490080 (Michael Monreal, Xavier Claessens).
+
+2007-10-25 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-main-window.glade: Use "user-info" icon for
+ Edit->Personal Information menu item.
+ Fixes bug #490079 (Michael Monreal).
+
+2007-10-25 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-log-window.glade: Use the navigation icons in
+ the history dialog. Fixes bug #490077 (Michael Monreal).
+
+2007-10-25 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-log-window.glade: Set window title to
+ "Previous Conversations". Fixes bug #490075 (Michael Monreal).
+
+2007-10-24 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-account-chooser.c:
+ * libempathy-gtk/empathy-profile-chooser.c:
+ * libempathy-gtk/empathy-account-chooser.h:
+ * libempathy-gtk/empathy-profile-chooser.h:
+ * libempathy-gtk/empathy-images.h:
+ * libempathy-gtk/empathy-main-window.c:
+ * libempathy-gtk/empathy-main-window.h:
+ * libempathy-gtk/empathy-cell-renderer-activatable.c:
+ * libempathy-gtk/empathy-account-widget-salut.c:
+ * libempathy-gtk/empathy-presence-chooser.c:
+ * libempathy-gtk/empathy-cell-renderer-activatable.h:
+ * libempathy-gtk/empathy-account-widget-salut.h:
+ * libempathy-gtk/empathy-account-widget-msn.c:
+ * libempathy-gtk/empathy-presence-chooser.h:
+ * libempathy-gtk/empathy-status-icon.c:
+ * libempathy-gtk/empathy-contact-dialogs.c:
+ * libempathy-gtk/empathy-account-widget-msn.h:
+ * libempathy-gtk/empathy-status-icon.h:
+ * libempathy-gtk/empathy-contact-dialogs.h:
+ * libempathy-gtk/empathy-account-widget-jabber.c:
+ * libempathy-gtk/empathy-account-widget-jabber.h:
+ * libempathy-gtk/empathy-contact-widget.c:
+ * libempathy-gtk/empathy-contact-widget.h:
+ * libempathy-gtk/empathy-smiley-manager.c:
+ * libempathy-gtk/empathy-about-dialog.h:
+ * libempathy-gtk/empathy-smiley-manager.h:
+ * libempathy-gtk/empathy-accounts-dialog.h:
+ * libempathy/empathy-avatar.h:
+ * libempathy/empathy-debug.h: Cleanup licences and copyrights,
+ Modules with 100% collabora code are now relicenced to LGPL.
+
+ * doc/libempathy-gtk/tmpl/empathy-contact-list-store.sgml: Updated.
+
+2007-10-23 Xavier Claessens <xclaesse@gmail.com>
+
+ * doc/libempathy-gtk/tmpl/empathy-profile-chooser.sgml:
+ * doc/libempathy-gtk/tmpl/empathy-contact-dialogs.sgml:
+ * doc/libempathy-gtk/tmpl/empathy-contact-widget.sgml: Updated.
+
+2007-10-21 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-contact-widget.h: Add
+ EMPATHY_CONTACT_WIDGET_EDIT_NONE to EmpathyContactWidgetFlags.
+
+2007-10-21 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-contact-dialogs.h:
+ * libempathy-gtk/empathy-contact-dialogs.c:
+ * libempathy-gtk/empathy-main-window.c:
+ * libempathy-gtk/empathy-contact-list-view.c: Don't allow to change
+ account if we are editing information of self-contact.
+
+2007-10-21 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-account-chooser.c:
+ * libempathy-gtk/empathy-contact-dialogs.c:
+ * libempathy-gtk/empathy-contact-widget.c:
+ * libempathy-gtk/empathy-contact-widget.h:
+ * libempathy-gtk/empathy-accounts-dialog.c: To know if an account is
+ connected, use mission_control_get_connection_status() instead of
+ mission_control_get_connection(). Update account chooser if an account's
+ status changes or if it get removed.
+ Move account chooser filter func for add-contact's window from
+ EmpathyContactWidget to EmpathyContactDialogs.
+
+2007-10-19 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-accounts-dialog.c: Update Enable/Disable
+ button when "account-enabled" or "account-disabled" are emitted on
+ McAccountMonitor. Set tooltip on protocol icon with the profile's
+ display name.
+
+2007-10-19 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-profile-chooser.c:
+ * libempathy-gtk/empathy-profile-chooser.h:
+ * libempathy-gtk/empathy-accounts-dialog.c: set unsensitive the add
+ button if there is no profile installed and tell the user to install
+ some connection managers.
+
+ * libempathy-gtk/empathy-ui-utils.c: Fix indentation.
+
+2007-10-19 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-chat-window.c: If EmpathyChat object does not
+ exist when DnD a contact, create one. Fixes bug #483168.
+
+2007-10-19 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-status-icon.c: Fix crash when iconifying main
+ window if it's already hiden.
+
+2007-10-19 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-group-chat.c:
+ * libempathy/empathy-tp-chatroom.c:Don't accept invitation if we are
+ not invited.
+
+ * libempathy-gtk/empathy-status-icon.c: Correctly toggle visibility
+ with ALT-F4 on the main windows.
+
+2007-10-18 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy/empathy-log-manager.c:
+ * libempathy/empathy-log-manager.h:
+ * libempathy/empathy-tp-chat.c:
+ * libempathy/empathy-contact-manager.c:
+ * libempathy/empathy-tp-chat.h:
+ * libempathy/empathy-contact-manager.h:
+ * libempathy/empathy-avatar.c:
+ * libempathy/empathy-chandler.c:
+ * libempathy/empathy-tp-contact-list.c:
+ * libempathy/empathy-chandler.h:
+ * libempathy/empathy-filter.c:
+ * libempathy/empathy-tp-roomlist.c:
+ * libempathy/empathy-tp-contact-list.h:
+ * libempathy/empathy-filter.h:
+ * libempathy/empathy-tp-chatroom.c:
+ * libempathy/empathy-tp-roomlist.h:
+ * libempathy/empathy-contact-factory.c:
+ * libempathy/empathy-tp-chatroom.h:
+ * libempathy/empathy-contact-list.c:
+ * libempathy/empathy-contact-factory.h:
+ * libempathy/empathy-contact-list.h:
+ * libempathy/empathy-chatroom.c:
+ * libempathy/empathy-idle.c:
+ * libempathy/empathy-tp-group.c:
+ * libempathy/empathy-chatroom.h:
+ * libempathy/empathy-idle.h:
+ * libempathy/empathy-tp-group.h: Cleanup licences and copyrights,
+ Modules with 100% collabora code are now relicenced to LGPL.
+
+2007-10-15 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-ui-utils.c: Don't warning if we try to load
+ a NULL icon.
+
+ * data/Makefile.am:
+ * data/aim.profile:
+ * data/sofiasip.profile: Add AIM and SIP profiles. Fixes bug #457740
+ (Jamey Hicks).
+
+2007-10-13 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-chat.c: Set chat state to ACTIVE when receiving
+ a message from a contact, avoid staying in COMPOSING state forever for
+ protocols like MSN that do not notify when contact stoped writing.
+
+2007-10-13 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-chat-view.h:
+ * libempathy-gtk/empathy-main-window.c:
+ * libempathy-gtk/empathy-chat.c:
+ * libempathy-gtk/empathy-chat-window.c:
+ * libempathy-gtk/empathy-chat-view.c:
+ * libempathy/empathy-log-manager.c:
+ * libempathy/empathy-time.c:
+ * libempathy/empathy-tp-chat.c:
+ * libempathy/empathy-time.h:
+ * libempathy/empathy-message.c:
+ * libempathy/empathy-message.h:
+ * libempathy/empathy-presence.c:
+ * configure.ac: Don't use deprecated GtkTooltips API. Add commented out
+ lines in configure.ac to disable GLib and GTK deprecated symbols.
+ Replace EmpathyTime by time_t which is more appropriate for timestamps.
+
+ * doc/*: Updated.
+
+2007-10-13 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-main-window.c:
+ * libempathy-gtk/empathy-presence-chooser.c:
+ * libempathy-gtk/empathy-contact-list-view.c:
+ * libempathy-gtk/empathy-contact-widget.c:
+ * libempathy-gtk/empathy-chat.c:
+ * libempathy-gtk/empathy-contact-list-store.c:
+ * libempathy-gtk/empathy-chat-window.c:
+ * libempathy/empathy-idle.c:
+ * tests/contact-manager.c: Use g_timeout_add_seconds when appropriated
+ to avoid weaking the process too much.
+
+2007-10-11 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy/empathy-tp-contact-list.c: Set supress_handler to TRUE when
+ creating new group channel.
+
+2007-10-11 Xavier Claessens <xclaesse@gmail.com>
+
+ * po/POTFILES.in: Add missing files.
+
+2007-10-09 Xavier Claessens <xclaesse@gmail.com>
+
+ * configure.ac: Bump MissionControl version to 4.37, we uses new API
+ introduced in that version.
+
+2007-10-09 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-main-window.c:
+ * libempathy-gtk/empathy-contact-dialogs.c:
+ * libempathy-gtk/empathy-contact-list-view.c:
+ * libempathy-gtk/empathy-contact-dialogs.h:
+ * libempathy-gtk/empathy-contact-widget.c:
+ * libempathy-gtk/empathy-contact-widget.h:
+ * libempathy-gtk/empathy-chat-window.c:
+ * megaphone/src/megaphone-applet.c: More flexible API for
+ EmpathyContactWidget, we now have flags to set editable each fields.
+ Implement personal information menu item in main window.
+
+2007-10-09 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-contact-widget.glade:
+ * libempathy-gtk/empathy-contact-widget.c:
+ * libempathy-gtk/empathy-avatar-chooser.c:
+ * libempathy-gtk/empathy-avatar-image.c: Makes avatar looks better in
+ information and edit dialogs.
+
+2007-10-08 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-ui-utils.c:
+ * libempathy-gtk/empathy-ui-utils.h:
+ * libempathy-gtk/empathy-contact-widget.c:
+ * libempathy-gtk/empathy-contact-widget.h:
+ * libempathy-gtk/empathy-avatar-chooser.c:
+ * libempathy-gtk/empathy-avatar-chooser.h:
+ * libempathy-gtk/empathy-avatar-image.c:
+ * libempathy-gtk/empathy-avatar-image.h:
+ * libempathy-gtk/Makefile.am:
+ * src/empathy.c: Implement EmpathyAvatarChooser and EmpathyAvatarImage
+ and make use of them in contact information windows. That means we can
+ now enlarge avatars when clicking on it and we can set our own avatar if
+ we edit our own contact.
+
+2007-10-03 Marco Barisione <marco@barisione.org>
+
+ * libempathy/empathy-contact-factory.c:
+ * libempathy/empathy-tp-call.c:
+ * libempathy/empathy-tp-group.c:
+ * libempathy/empathy-utils.c: Initialize every GError to NULL. Fixes
+ bug #482889.
+
+2007-10-02 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy/empathy-tp-contact-list.c: Add back protocol group.
+
+2007-10-01 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-contact-list-view.c: Add a #ifdef HAVE_VOIP.
+ Fixes bug #482190 (Marco Barisione).
+
+2007-10-01 Xavier Claessens <xclaesse@gmail.com>
+
+ * data/Makefile.am:
+ * data/empathy.desktop.in.in: Use fd.o standard location for autostart
+ desktop files. Fixes bug #481860 (Stephane Loeuillet).
+
+2007-10-01 Xavier Claessens <xclaesse@gmail.com>
+
+ * configure.ac: Bump version to 0.15.
+
+2007-10-01 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy/Makefile.am: Add tp-stream-engine.xml to EXTRA_DIST.
+ * po/POTFILES.in: Add empathy-call-window.glade.
+
+2007-10-01 Xavier Claessens <xclaesse@gmail.com>
+
+ * configure.ac:
+ * NEWS: Update before release.
+
+2007-10-01 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-private-chat.c: Fix refcounting of
+ priv->factory. Fixes bug #473116.
+
+2007-10-01 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-chat-window.c: Adding sanity checks to public
+ functions.
+
+2007-10-01 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-accounts-dialog.c:
+ * libempathy/empathy-utils.c: Add some sanity checks. Fixes bug #463051.
+
+2007-10-01 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy/empathy-tp-chat.c: Disconnect all signals in finalize.
+ Fixes bug #462815.
+
+2007-10-01 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-chatrooms-window.c: Disconnect signals on
+ chatroom manager. Fixes bug #456619.
+
+2007-10-01 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-contact-list-store.c: Disconnect signals on
+ list and contacts when finalizing the store.
+
+2007-10-01 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-contact-list-view.c:
+ * libempathy-gtk/empathy-chat-window.c: Hide VOIP stuff if empathy is
+ not compiled with --enable-voip=yes. Fixes bug #482111
+ (Sjoerd Simons, Xavier Claessens).
+
+2007-10-01 Xavier Claessens <xclaesse@gmail.com>
+
+ * megaphone/src/megaphone-applet.c:
+ * megaphone/data/GNOME_Megaphone_Applet.schemas.in: Updated to use new
+ avatar cache.
+
+2007-09-29 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy/empathy-tp-group.c: ref group when async calls are in
+ flight to avoid destroying the object before receiving the reply.
+ * libempathy/empathy-utils.c: Unref the group to not leak it.
+
+2007-09-29 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy/empathy-contact-factory.c: Refcount
+ ContactFactoryAccountData struct.
+
+2007-09-29 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-call-window.c:
+ * libempathy-gtk/empathy-call-window.h:
+ * libempathy-gtk/empathy-contact-list-view.c:
+ * libempathy-gtk/empathy-call-window.glade:
+ * libempathy-gtk/Makefile.am:
+ * libempathy-gtk/empathy-chat-window.c:
+ * src/empathy-call-chandler.c:
+ * src/empathy-call.chandler:
+ * src/org.gnome.Empathy.Call.service.in:
+ * src/Makefile.am:
+ * libempathy/empathy-utils.c:
+ * libempathy/empathy-utils.h:
+ * libempathy/empathy-tp-call.c:
+ * libempathy/empathy-tp-call.h:
+ * libempathy/Makefile.am:
+ * libempathy/tp-stream-engine.xml:
+ * configure.ac:
+ * doc/libempathy-gtk/libempathy-gtk-docs.sgml:
+ * doc/libempathy/libempathy.types:
+ * doc/libempathy/libempathy-docs.sgml:
+ * doc/libempathy/Makefile.am:
+ * doc/libempathy/tmpl/empathy-utils.sgml: Initial Voice+Video support
+ Fixes bug #468204 (Elliot Fairweather, Xavier Claessens).
+
+2007-09-28 Xavier Claessens <xclaesse@gmail.com>
+
+ * configure.ac: Bump version to 0.14.
+ * doc/*: Updated.
+
+2007-09-28 Xavier Claessens <xclaesse@gmail.com>
+
+ * ChangeLog:
+ * configure.ac:
+ * NEWS: Updated for 0.13 release.
+
+2007-09-28 Xavier Claessens <xclaesse@gmail.com>
+
+ * configure.ac:
+ * src/empathy.c: Remove GnomeProgram, not useful anymore, drop libgnome
+ dependency. Fixes bug #442079
+
+ * libempathy/empathy-avatar.c:
+ * libempathy/empathy-avatar.h: Fix Copyright header.
+
+ * libempathy/empathy-contact-factory.c:
+ * libempathy/empathy-tp-group.c: Free return value for async DBus calls,
+ they are not owned by dbus-glib. This fix big leaks, thanks again to
+ valgrind.
+
+2007-09-28 Xavier Claessens <xclaesse@gmail.com>
+
+ * src/Makefile.am: Correctly modify service.in files to expand bindir.
+
+2007-09-28 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy/empathy-tp-group.c: Look in the local_pendings list if a
+ contact is already local pending.
+ * tests/contact-manager.c: Fix white space typo.
+
+2007-09-27 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy/empathy-utils.c:
+ * libempathy/empathy-contact-factory.c: Fix 2 leaks thanks to valgrind.
+
+2007-09-27 Xavier Claessens <xclaesse@gmail.com>
+
+ * tests/contact-manager.c:
+ * tests/Makefile.am: No need to init gtk, GMainLoop is enough and makes
+ easier to run valgrind.
+
+2007-09-27 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy/empathy-avatar.c: Fix leak when loading avatar from cache.
+ * libempathy/empathy-contact-factory.c: Do not request avatar for
+ unknown tokens, wait for AvatarUpdate signal.
+
+2007-09-27 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-profile-chooser.c: Set the sort function before
+ begin to sort otherwise we get warnings.
+
+2007-09-26 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy/empathy-utils.c:
+ * libempathy/empathy-utils.h:
+ * libempathy/empathy-avatar.c:
+ * libempathy/empathy-avatar.h:
+ * libempathy/empathy-contact-factory.c: Cache avatars and RequestAvatars
+ only when needed.
+
+2007-09-26 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy/empathy-contact-factory.c: Fix capabilities update, the NOT
+ operator is ~ and not !
+
+2007-09-26 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-profile-chooser.c:
+ * libempathy-gtk/empathy-main-window.c: Fix warning when sort criterium
+ is NULL and when there is no profile. Fixes bug #479786
+ (Christian Persch, Xavier Claessens).
+
+2007-09-21 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy/empathy-log-manager.c: Ignore log files that don't have a
+ good filename. Fixes bug #462046 (Michael Scherer).
+ * configure.ac: Bump GLIB version to 2.14.0.
+
+2007-09-21 Xavier Claessens <xclaesse@gmail.com>
+
+ * doc/libempathy-gtk/Makefile.am: Explicitely use libempathy from
+ builddir. Fixes bug #478558 (Frederic Peters).
+
+2007-09-21 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-chat.c: Move TP_CHANNEL_CHAT_STATE_PAUSED to
+ the not typing case. Fixes bug #474603 (Cosimo Cecchi).
+
+2007-09-21 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-status-icon.c: Tooltip for subscription request
+ shouldn't display "Message:" if the message is empty. Fixes bug #459538
+ (Cosimo Cecchi).
+ Do not update tooltip each time the icon change.
+
+2007-09-21 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-chat-window.c: Do not set "new message" in
+ the title of conversation windows, it's useless. Fixes bug #459523.
+
+2007-09-21 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy/empathy-tp-contact-list.c: Fix warnings when finalizing.
+
+ * tests/contact-manager.c:
+ * tests/Makefile.am:
+ * configure.ac:
+ * Makefile.am: Add a test program to track leaks.
+
+2007-09-21 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-contact-list-view.c: Fix ref count error for
+ account objects.
+
+ * libempathy/empathy-contact-manager.c: Disconnect signals from
+ MissionControl object when finalising the contact manager.
+
+ * configure.ac:
+ * megaphone/src/megaphone-applet.c:
+ * megaphone/src/Makefile.am:
+ * megaphone/src/megaphone-applet.h:
+ * megaphone/data/GNOME_Megaphone_Applet.schemas.in:
+ * megaphone/data/Makefile.am:
+ * megaphone/data/GNOME_Megaphone_Applet.server.in.in:
+ * megaphone/data/GNOME_Megaphone_Applet.xml:
+ * megaphone/Makefile.am:
+ * nothere/src/nothere-applet.c:
+ * nothere/src/Makefile.am:
+ * nothere/src/nothere-applet.h:
+ * nothere/data/Makefile.am:
+ * nothere/data/GNOME_NotHere_Applet.server.in.in:
+ * nothere/data/GNOME_NotHere_Applet.xml:
+ * nothere/Makefile.am:
+ * Makefile.am:
+ * po/POTFILES.in:
+ * po/POTFILES.skip: Add Megaphone and Nothere applets. Fixes bug
+ #464954 (Raphael Slinckx, Xavier Claessens).
+
+2007-09-20 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-status-icon.c:
+ * libempathy/empathy-idle.c:
+ * libempathy/empathy-idle.h:
+ * doc/libempathy/tmpl/empathy-idle.sgml: Add 2 properties to EmpathyIdle
+ to activate auto-away and auto-disconnect, default to off. Only empathy
+ main client will turn them on, like that if other processes are
+ running with an EmpathyIdle instance they won't change presence in the
+ same time than Empathy client.
+
+2007-09-19 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-smiley-manager.c: Fix a leak.
+
+2007-09-11 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-main-window.c:
+ * libempathy-gtk/empathy-group-chat.c:
+ * libempathy-gtk/empathy-contact-list-view.c:
+ * libempathy-gtk/empathy-contact-list-view.h:
+ * doc/libempathy-gtk/tmpl/empathy-contact-list-view.sgml: "interactive"
+ property on EmpathyContactListView to enable/disable context menu and
+ action when double-click on a contact.
+
+2007-09-10 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy/empathy-contact-factory.c: Fix debug message.
+
+ * libempathy/Makefile.am:
+ * configure.ac: Remove useless code.
+
+2007-09-08 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-contact-list-view.c:
+ * libempathy-gtk/empathy-chat-window.c: Request media channel when
+ clicking on call icon.
+
+2007-09-08 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-images.h:
+ * libempathy-gtk/empathy-chat.glade:
+ * libempathy-gtk/empathy-cell-renderer-activatable.c:
+ * libempathy-gtk/empathy-cell-renderer-activatable.h:
+ * libempathy-gtk/empathy-contact-list-view.c:
+ * libempathy-gtk/empathy-contact-list-store.c:
+ * libempathy-gtk/empathy-contact-list-store.h:
+ * libempathy-gtk/Makefile.am:
+ * libempathy-gtk/empathy-chat-window.c:
+ * libempathy/empathy-contact.c:
+ * libempathy/empathy-contact.h: Adding UI to start a VoIP call. It does
+ nothing yet. Most of the code is ported from Gossip patch
+ (Raphael Slinckx, Xavier Claessens).
+
+2007-09-08 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy/empathy-contact.c:
+ * libempathy/empathy-contact.h:
+ * libempathy/empathy-contact-factory.c: Adding capabilities contact
+ property.
+
+2007-09-08 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-contact-list-view.c:
+ * libempathy-gtk/empathy-contact-list-store.c: Make use of the search
+ function to correctly find when typing in the contact list view.
+ Fixes bug #472309 (Will Thompson, Xavier Claessens).
+
+2007-09-08 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-log-window.c: Fix crash if there is no date
+ for a conversation. Fixes bug #473510.
+
+2007-09-08 Xavier Claessens <xclaesse@gmail.com>
+
+ * python/pyempathygtk/pyempathygtk.override:
+ * python/pyempathygtk/pyempathygtk.defs: Updated for new API.
+
+2007-09-08 Xavier Claessens <xclaesse@gmail.com>
+
+ * configure.ac: Bump libtelepathy depend to 0.0.57.
+
+2007-09-08 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-chat-view.h:
+ * libempathy-gtk/empathy-ui-utils.c:
+ * libempathy-gtk/empathy-ui-utils.h:
+ * libempathy-gtk/empathy-chat.c:
+ * libempathy-gtk/empathy-smiley-manager.c:
+ * libempathy-gtk/empathy-smiley-manager.h:
+ * libempathy-gtk/Makefile.am:
+ * libempathy-gtk/empathy-chat-window.c:
+ * libempathy-gtk/empathy-chat-view.c: More dynamic smiley managment and
+ more efficient algorithm to detect smileys in messages.
+ Fixes bug #474167.
+
+ * doc/: Updated
+
+2007-08-31 Xavier Claessens <xclaesse@gmail.com>
+
+ * doc/libempathy-gtk/Makefile.am:
+ * doc/libempathy-gtk/tmpl/empathy-preferences.sgml:
+ * doc/libempathy-gtk/tmpl/empathy-images.sgml:
+ * doc/libempathy/libempathy.types:
+ * doc/libempathy/libempathy-docs.sgml:
+ * doc/libempathy/Makefile.am:
+ * doc/libempathy/tmpl/empathy-tp-group.sgml:
+ * doc/libempathy/tmpl/empathy-avatar.sgml:
+ * doc/libempathy/tmpl/empathy-contact.sgml:
+ * doc/libempathy/tmpl/empathy-contact-list.sgml: Updated.
+
+2007-08-30 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy/empathy-contact-factory.c: Don't use deprecated
+ RequestAvatar method.
+
+2007-08-30 Xavier Claessens <xclaesse@gmail.com>
+
+ * python/pyempathy/pyempathy.defs:
+ * python/pyempathy/pyempathy.override:
+ * python/pyempathygtk/pyempathygtk.defs: Updated for new API.
+ * python/README: Explain how to update python binding.
+
+ * libempathy-gtk/empathy-images.h:
+ * libempathy-gtk/empathy-private-chat.c:
+ * libempathy-gtk/empathy-main-window.c:
+ * libempathy-gtk/empathy-status-icon.c:
+ * libempathy-gtk/empathy-group-chat.c:
+ * libempathy-gtk/empathy-ui-utils.c:
+ * libempathy-gtk/empathy-contact-dialogs.c:
+ * libempathy-gtk/empathy-contact-list-view.c:
+ * libempathy-gtk/empathy-contact-list-view.h:
+ * libempathy-gtk/empathy-contact-widget.c:
+ * libempathy-gtk/empathy-contact-list-store.c:
+ * libempathy-gtk/empathy-contact-list-store.h:
+ * libempathy-gtk/empathy-chat-window.c: Updated to use new libempathy
+ API.
+
+ * libempathy/empathy-log-manager.c:
+ * libempathy/empathy-contact.c:
+ * libempathy/empathy-contact.h:
+ * libempathy/empathy-tp-chat.c:
+ * libempathy/empathy-contact-manager.c:
+ * libempathy/empathy-contact-manager.h:
+ * libempathy/empathy-avatar.c:
+ * libempathy/empathy-avatar.h:
+ * libempathy/empathy-tp-contact-list.c:
+ * libempathy/empathy-tp-contact-list.h:
+ * libempathy/empathy-tp-chatroom.c:
+ * libempathy/empathy-contact-factory.c:
+ * libempathy/empathy-contact-factory.h:
+ * libempathy/empathy-contact-list.c:
+ * libempathy/empathy-contact-list.h:
+ * libempathy/empathy-tp-group.c:
+ * libempathy/empathy-marshal.list:
+ * libempathy/empathy-tp-group.h:
+ * libempathy/Makefile.am:
+ * configure.ac: Completely reworked ContactList API. Fixes bugs
+ #471611,
+ #467280,
+ #459540,
+ #462907.
+
+ * doc/*: Updated.
+
+2007-08-24 Xavier Claessens <xclaesse@gmail.com>
+
+ * python/pyempathy/Makefile.am:
+ * python/pyempathygtk/Makefile.am:
+ * configure.ac: Make use of AM_PATH_PYTHON to get python variables.
+ Fixes bug #470642 (Daniel Gryniewicz).
+
+2007-08-24 Xavier Claessens <xclaesse@gmail.com>
+
+ * configure.ac: Bump version to 0.13.
+ * NEWS: Last NEWS entry is for version 0.12 and not 0.11.
+
+2007-08-24 Xavier Claessens <xclaesse@gmail.com>
+
+ * configure.ac:
+ * doc/libempathy-gtk/tmpl/empathy-preferences.sgml:
+ * NEWS:
+ * po/POTFILES.in: Updated.
+
+2007-08-24 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-new-chatroom-dialog.c:
+ * libempathy-gtk/empathy-contact-widget.c:
+ * libempathy-gtk/empathy-accounts-dialog.c:
+ * libempathy/empathy-tp-contact-list.c:
+ * data/salut.profile: Salut's protocol name is going to change to
+ local-xmpp. Fixes bug #469638 (Sjoerd Simons)
+
+2007-08-24 Xavier Claessens <xclaesse@gmail.com>
+
+ * src/empathy.c: Check if there is already a Salut account before
+ creating a new one and add more debug messages.
+
+2007-08-24 Xavier Claessens <xclaesse@gmail.com>
+
+ * configure.ac:
+ * data/22x22/Makefile.am:
+ * data/22x22/empathy-proto-jabber.svg:
+ * data/22x22/empathy-proto-jabber.png:
+ * data/48x48/Makefile.am:
+ * data/32x32/Makefile.am:
+ * data/32x32/empathy-proto-jabber.svg:
+ * data/32x32/empathy-proto-jabber.png:
+ * data/24x24:
+ * data/24x24/Makefile.am:
+ * data/24x24/empathy-proto-jabber.png:
+ * data/16x16/empathy-proto-jabber.svg:
+ * data/16x16/Makefile.am:
+ * data/16x16/empathy-proto-jabber.png:
+ * data/scalable/empathy-proto-jabber.svg:
+ * data/scalable/Makefile.am:
+ * data/Makefile.am: Change jabber icon. Fixes bug #466377
+ (Björn Martensen).
+
+2007-08-23 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-account-widget-salut.glade:
+ * libempathy-gtk/empathy-account-widget-salut.c:
+ * libempathy-gtk/empathy-account-widget-salut.h:
+ * libempathy-gtk/empathy-preferences.h:
+ * libempathy-gtk/empathy-accounts-dialog.c:
+ * libempathy-gtk/Makefile.am:
+ * src/empathy.c:
+ * configure.ac:
+ * data/empathy.schemas.in: Add specialised UI for salut settings.
+ Configure a Salut account first time empathy is started with
+ salut CM installed using gnome-about-me information. Fixes bug #447467
+ (Cosimo Cecchi, Xavier Claessens).
+
+2007-08-19 Xavier Claessens <xclaesse@gmail.com>
+
+ * python/pyempathy/Makefile.am:
+ * python/pyempathy/pyempathy.override:
+ * python/pyempathygtk/Makefile.am: Fix build system, make distcheck now
+ works.
+
+2007-08-19 Xavier Claessens <xclaesse@gmail.com>
+
+ * python/pyempathy/pyempathy.defs:
+ * python/pyempathy/pyempathymodule.c:
+ * python/pyempathy/Makefile.am:
+ * python/pyempathy/pyempathy.override:
+ * python/pyempathygtk/pyempathygtk.override:
+ * python/pyempathygtk/pyempathygtk.defs:
+ * python/pyempathygtk/Makefile.am:
+ * python/pyempathygtk/pyempathygtkmodule.c:
+ * python/Makefile.am:
+ * libempathy/empathy-time.h:
+ * configure.ac:
+ * Makefile.am: Add python binding. Fixes bug #457660 (Michael Sheldon).
+
+2007-08-19 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-main-window.glade: Edit menu should be second
+ from the left. Fixes bug #467827 (Cosimo Cecchi).
+
+2007-08-13 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-group-chat.c: Only update the topic of it has
+ really be changed, avoid diplaying many times "Topic set to:" message.
+
+ * libempathy-gtk/empathy-chat.c: Some Jabber chatroom sends messages
+ received before we joined the room, this avoid displaying those messages
+ if we already logged them last time we joined that room. Previous
+ workaround prevented Empathy to log offline messages.
+
+2007-08-12 Xavier Claessens <xclaesse@gmail.com>
+
+ * configure.ac: Bump version to 0.12.
+
+2007-08-12 Xavier Claessens <xclaesse@gmail.com>
+
+ * configure.ac: Update libtool version.
+
+ * doc/libempathy-gtk/tmpl/empathy-images.sgml:
+ * doc/libempathy-gtk/tmpl/empathy-status-presets.sgml:
+ * NEWS: Updated.
+
+2007-08-12 Xavier Claessens <xclaesse@gmail.com>
+
+ * data/irc.profile: Removed spaces in the SupportedPresences key to
+ workaround a MC warning SF bug 1772539.
+
+2007-08-11 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-accounts-dialog.c: Make "Add account" button
+ insensitive when we are creating one. Fixes bug #459170
+ (Jaap A. Haitsma).
+
+2007-08-11 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy/empathy-tp-contact-list.c: s/Local Network/People nearby/
+ (Sjoerd Simons)
+
+2007-08-10 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-accounts-dialog.c: Unselect accounts when
+ clicking on "add" button. Fixes bug #459173 (Cosimo Cecchi).
+
+2007-08-10 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-presence-chooser.glade: add some spacing in
+ "Custom message" dialog. Fixes bug #465360 (Frederic Peters).
+
+2007-08-10 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-images.h:
+ * libempathy-gtk/empathy-presence-chooser.c:
+ * libempathy-gtk/empathy-ui-utils.c:
+ * libempathy/empathy-presence.c: Add hidden supprot. Fixes bug #455510
+ (Cosimo Cecchi).
+
+ * data/gtalk.profile:
+ * data/jabber.profile:
+ * data/salut.profile:
+ * data/irc.profile:
+ * data/msn.profile: Updated to use SupportedPresences field.
+
+2007-08-09 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-presence-chooser.glade:
+ * libempathy-gtk/empathy-presence-chooser.c:
+ * libempathy-gtk/empathy-status-presets.c:
+ * libempathy-gtk/empathy-status-presets.h:
+ * libempathy-gtk/empathy-ui-utils.c: Remove per-state
+ "Custom message..." item and add one on the bottom of the menu. Add
+ a combobox on the custom message dialog to select the state and change
+ the action of the checkbox, now it add/remove the message from saved
+ messages. Make easier to add other states to the list if needed.
+ Fixes bug #460678.
+
+2007-08-09 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy/empathy-presence.c:
+ * libempathy/empathy-idle.c:
+ * configure.ac: Remove workaround for mc-enum-types.h not being
+ installed by MC and bump MC minimal version to 4.33.
+
+2007-08-09 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-preferences.c:
+ * libempathy-gtk/empathy-preferences.glade: Useless spell checker
+ option. Fixes bug #459164 (Cosimo Cecchi).
+
+2007-08-08 Xavier Claessens <xclaesse@gmail.com>
+
+ * autogen.sh: Requier automake 1.9. Fixes bug #464822 (Cosimo Cecchi).
+
+2007-08-08 Xavier Claessens <xclaesse@gmail.com>
+
+ * MAINTAINERS: Updated the MAINTAINERS file to match new syntax.
+
+2007-08-07 Marco Barisione <marco@barisione.org>
+
+ * libempathy/Makefile.am:
+ * libempathy/empathy-marshal-main.c: Remove empathy-marshal-main.c and
+ include empathy-marshal.h from empathy-marshal.c.
+
+ * libempathy/Makefile.am:
+ * libempathy-gtk/Makefile.am: Generate files for enum types with
+ glib-mkenums.
+
+ * libempathy/empathy-contact.c:
+ * libempathy/empathy-idle.c:
+ * libempathy/empathy-message.c:
+ * libempathy/empathy-presence.c:
+ * libempathy-gtk/empathy-main-window.c:
+ * libempathy-gtk/empathy-preferences.c:
+ * doc/libempathy-gtk/libempathy-gtk.types:
+ * doc/libempathy-gtk/tmpl/empathy-contact-list-store.sgml: Use
+ g_param_spec_enum() and g_param_spec_flags() instead of
+ g_param_spec_(u)int.
+ Fixes bug #462465.
+
+ * libempathy-gtk/empathy-contact-list-store.c:
+ * libempathy-gtk/empathy-contact-list-store.h: Remove
+ empathy_contact_list_store_sort_get_type() as it's now auto-generated
+ by glib-mkenums.
+
+2007-08-06 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-main-window.glade: Change main window's title
+ to "Contact list".
+
+2007-08-06 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy/empathy-tp-chat.c: Don't forget to reverse the glist of
+ pending messages.
+
+ * libempathy/empathy-tp-roomlist.c: Fix wrong room list names when
+ listing them.
+
+2007-08-06 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-account-widget-msn.glade:
+ * libempathy-gtk/empathy-account-widget-msn.c: Add an Advanced section
+ and remove size_group.
+ Fixes bug #463759 (Jaap A. Haitsma, Xavier Claessens).
+
+ * README: Use ./autogen.sh instead of gnome-autogen.sh.
+
+2007-08-02 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-accounts-dialog.glade:
+ * libempathy-gtk/empathy-accounts-dialog.c: Click on the treeview to
+ edit the name of an account. Fixes bug #459166.
+
+2007-08-02 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-account-widget-jabber.c: Do not try to guess
+ the Jabber server from the jid, gabble does that for us.
+
+2007-08-02 Xavier Claessens <xclaesse@gmail.com>
+
+ * doc/libempathy-gtk/tmpl/empathy-account-chooser.sgml:
+ * doc/libempathy-gtk/tmpl/empathy-ui-utils.sgml:
+ * doc/libempathy-gtk/tmpl/empathy-contact-widget.sgml:
+ * doc/libempathy/tmpl/empathy-message.sgml:
+ * doc/libempathy/tmpl/empathy-utils.sgml: Update doc.
+
+2007-08-02 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-profile-chooser.c: Do not list profiles that
+ don't have the corresponding CM installed when creating a new account.
+ This is a workaround for MC bug: SF #1688779.
+
+2007-08-02 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-account-widget-generic.c: Remove size_group.
+ Fixes bug #462792.
+
+2007-08-02 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-accounts-dialog.c:
+ * libempathy/empathy-utils.c:
+ * libempathy/empathy-utils.h: Adding new empathy_strdiff API stolen from
+ telepathy-glib. It check if strings are != NULL before using strcmp.
+ Using that API to fix bug #461886. Should be used in more places.
+
+2007-08-02 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-status-icon.c: Click on the tray icon shows the
+ window if it's not active and hide if it is. Fixes bug #462057
+ (Olivier Valentin).
+
+2007-08-02 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-group-chat.c: don't display
+ "Topic set to: (null)". Fixes bug #460205 (Michael Scherer).
+
+2007-07-30 Xavier Claessens <xclaesse@gmail.com>
+
+ * autogen.sh: Added back, it calls gnome-autogen.sh.
+
+2007-07-29 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-profile-chooser.c:
+ * libempathy/empathy-message.c: Add missing include string.h.
+
+2007-07-29 Xavier Claessens <xclaesse@gmail.com>
+
+ * configure.ac: Bump version to 0.11.
+
+2007-07-29 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-account-widget-generic.c:
+ * libempathy-gtk/empathy-account-widget-generic.h: Align param names
+ on the left.
+
+ * libempathy-gtk/empathy-accounts-dialog.glade:
+ * libempathy-gtk/empathy-accounts-dialog.c: Simpler header to describe
+ the selected account. Fixes bug #459169.
+
+ * configure.ac: Set Collabora Ltd. in the Copyright.
+
+2007-07-28 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-profile-chooser.c: Makes easier to change to
+ profile order.
+
+2007-07-28 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-account-widget-jabber.c: Try to guess the
+ server from the jid only if we are using the jabber profile. When we
+ guessed a server don't forget to set the "server" McAccount param,
+ setting the entry's text is not enough.
+
+2007-07-28 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-profile-chooser.c: Improve the sort function
+ a bit to have Jabber before GTalk.
+
+2007-07-28 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-accounts-dialog.glade:
+ * libempathy-gtk/empathy-accounts-dialog.c: Update the Enable/Disable
+ button even if there is no account selected. Set it insensitive if no
+ account is selected. Fixes bug #459012.
+
+2007-07-27 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-profile-chooser.c: Sort profiles to have
+ free protocols first. Fixes bug #460605.
+
+2007-07-27 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy/empathy-message.c:
+ * libempathy/empathy-message.h:
+ * libempathy/empathy-log-manager.c: Add message type in log files.
+ Fixes bug #459579.
+
+ * doc/*: Updated.
+
+2007-07-26 Xavier Claessens <xclaesse@gmail.com>
+
+ * po/POTFILES.in: Add missing file
+ libempathy-gtk/empathy-account-widget-msn.glade.
+
+2007-07-26 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-account-widget-jabber.glade:
+ * libempathy-gtk/empathy-account-widget-jabber.c: Hide
+ "advanced options" for jabber in a GtkExpander. Fixes bug #459168
+ (Guillaume Desmottes).
+
+2007-07-26 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-new-chatroom-dialog.c:
+ * libempathy/empathy-tp-roomlist.c: Fix Room listing. Fixes bug #460416
+ (Sjoerd Simons).
+
+2007-07-26 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/Makefile.am:
+ * libempathy/Makefile.am:
+ * configure.ac: Use libtool -version-info. Fixes bug #460579
+ (Laurent Bigonville).
+
+2007-07-26 Xavier Claessens <xclaesse@gmail.com>
+
+ * README:
+ * autogen.sh: Remove the autogen.sh script and use gnome-autogen.sh
+ instead. Fixes bug #460590.
+
+2007-07-26 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-account-chooser.c:
+ * libempathy-gtk/empathy-new-chatroom-dialog.c:
+ * libempathy-gtk/empathy-account-chooser.h:
+ * libempathy-gtk/empathy-contact-dialogs.c:
+ * libempathy-gtk/empathy-chatrooms-window.c:
+ * libempathy-gtk/empathy-contact-widget.c:
+ * libempathy-gtk/empathy-contact-widget.h:
+ * libempathy-gtk/empathy-log-window.c:
+ * doc/*: Do not show salut accounts in the add contact dialog. Rework
+ a bit EmpathyContactWidget. Fixes bug #459100
+ (Guillaume Desmottes, Xavier Claessens).
+
+2007-07-26 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-accounts-dialog.c: add contact frame is not
+ hidden after cancelling. Fixes bug #458997 (Frederic Peters).
+
+2007-07-26 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy/empathy-idle.c: Fix problems when NM is not running. Fixes
+ bug #460419.
+
+ * doc/*: Updated documentation.
+
+2007-07-26 Xavier Claessens <xclaesse@gmail.com>
+
+ * configure.ac: Bump version to 0.10
+
+2007-07-25 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy/empathy-filter.c: Adding more debug output.
+
+2007-07-25 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy/empathy-tp-contact-list.c: Add a check to be sure the
+ new channel is valid in the NewChannel cb. Fixes bug #451564.
+
+2007-07-20 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy/Makefile.am:
+ * libempathy/empathy-tp-roomlist.h:
+ * libempathy/empathy-tp-roomlist.c:
+ * libempathy-gtk/empathy-chatrooms-window.c:
+ * libempathy-gtk/empathy-new-chatroom-dialog.c: Initial room list
+ support. It does not works yet.
+
+ * libempathy-gtk/empathy-account-widget-generic.c: Add support for all
+ types of integer and float. Fixes bug #457740 (Jamey Hicks).
+
+ * libempathy/empathy-tp-chat.c:
+ * libempathy-gtk/empathy-chat.c: If there is an error sending a message,
+ show an error message to the user.
+
+ * libempathy-gtk/empathy-accounts-dialog.c: Fix a leak, profile should
+ be unrefed after mc_account_get_profile.
+
+ * libempathy/empathy-utils.c:
+ * libempathy/empathy-utils.h:
+ * libempathy/empathy-tp-chatroom.c:
+ * libempathy/empathy-tp-group.h:
+ * libempathy/empathy-tp-group.c:
+ * src/empathy.c: Rename empathy_get_channel_id() to
+ empathy_inspect_channel(). We now have empathy_inspect_handle().
+
+ * po/POTFILES.in:
+ * libempathy/empathy-tp-contact-list.c: Set all contacts from salut
+ protocol to the "Local Network" group.
+
+ * libempathy/empathy-idle.c: Fix NetworkManager support.
+
+ * libempathy/empathy-chatroom.h: Fix indentation.
+
+ * libempathy-gtk/empathy-status-icon.c:
+ * libempathy-gtk/empathy-ui-utils.c:
+ * libempathy-gtk/empathy-ui-utils.h:
+ - Iconify main window to the status icon like in rhythmbox.
+ Fixes bug #458106 (Jaap A. Haitsma).
+ - Rounded avatars. Fixes bug #457992 (Raphael Slinckx)
+
+ * Makefile.am: Fix distcheck for gtkdoc (Vincent Untz)
+
+ * data/empathy.desktop.in.in: Change application description
+ (Jaap A. Haitsma).
+
+2007-07-14 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-contact-list-store.c: Show avatars by default.
+
+2007-07-13 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-status-icon.c: If there is no pending msg
+ when a text channel should be filtered wait for the first message
+ instead of not dispatching the channel which may cause messages to be
+ lost.
+
+2007-07-13 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy/empathy-tp-contact-list.c: Fix avatar request queue.
+
+2007-07-13 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-new-chatroom-dialog.c:
+ * libempathy-gtk/empathy-new-chatroom-dialog.glade: Remove unused
+ nickname entry and use a GtkTable for room information. More work is
+ needed here.
+
+ * libempathy-gtk/empathy-contact-widget.glade: Change padding to 6.
+
+ * libempathy-gtk/empathy-contact-dialogs.c: Set a window title.
+
+ * libempathy-gtk/empathy-contact-widget.c: Fix alignment of widgets.
+
+ * libempathy/empathy-tp-contact-list.c: Add more debug msg for avatar
+ handling.
+
+2007-07-12 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/Makefile.am: Fix missing header for
+ EmpathyAccountWidgetMSN.
+
+ * configure.ac: Fix useless "\".
+
+ * autogen.sh: run gtkdocize if needed.
+
+2007-07-12 Xavier Claessens <xclaesse@gmail.com>
+
+ * configure.ac:
+ * doc/*:
+ * Makefile.am: Adding initial API documentation using gtk-doc.
+
+2007-07-12 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy/empathy-tp-contact-list.c: Auto-accept to publish presence
+ to contacts that are in our subscribe list. When accepting a pending
+ contact add it to publish and subscribe list.
+
+2007-07-09 Xavier Claessens <xclaesse@gmail.com>
+
+ * src/empathy.c:
+ * libempathy/empathy-debug.c:
+ * libempathy/empathy-debug.h: Add EMPATHY_LOGFILE env variable. Fixes
+ bug #455240 (Guillaume Desmottes).
+
+2007-07-09 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-account-widget-msn.glade:
+ * libempathy-gtk/empathy-account-widget-msn.c:
+ * libempathy-gtk/empathy-account-widget-msn.h:
+ * libempathy-gtk/empathy-accounts-dialog.c:
+ * libempathy-gtk/Makefile.am: Add MSN setting UI. Fixes bug #443162
+ (Cosimo Cecchi).
+
+ * libempathy-gtk/empathy-chat-view.c:
+ * libempathy/empathy-log-manager.c:
+ * libempathy/empathy-log-manager.h: Add needed API to show chat logs in
+ Tracker. Fixes bug #452536.
+
+2007-07-07 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-account-widget-generic.c: Workaround to fix a
+ commonly reported crash. Fixes bug #454277
+ * libempathy/empathy-tp-group.c: Add a missing check.
+
+2007-06-30 Xavier Claessens <xclaesse@gmail.com>
+
+ * configure.ac: Bump MC version required to 4.27.
+ * TODO: Updated.
+
+2007-06-30 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-account-widget-generic.c: Fix a leaked ref.
+
+ * src/empathy.c: If we get a chatroom we have to create an
+ EmpathyTpChatroom object.
+
+ * src/Makefile.am: Fix build system, programs links to libempathy-gtk
+ and libempathy.
+
+ * configure.ac: libempathy does not depends on libgnome-vfs.
+
+ * libempathy-gtk/empathy-status-icon.c:
+ * libempathy-gtk/empathy-chat.c:
+ * libempathy/empathy-tp-chat.c:
+ * libempathy/empathy-tp-chat.h:
+ * libempathy/empathy-filter.c:
+ * libempathy/empathy-filter.h:
+ * libempathy/empathy-filter.xml:
+ * libempathy/Makefile.am: Filter incoming text channels and make
+ status icon flash when there we receive a new message. Dispatch the
+ channel only when we get a message and the user click on the icon.
+
+2007-06-22 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/libempathy-gtk.pc.in:
+ * libempathy-gtk/Makefile.am:
+ * libempathy/libempathy.pc.in:
+ * libempathy/Makefile.am:
+ * configure.ac: Install libempathy and libempathy-gtk and make their
+ API public.
+
+2007-06-22 Xavier Claessens <xclaesse@gmail.com>
+
+ * po/POTFILES.in: s/gossip/empathy/
+
+2007-06-22 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy/*.[ch]:
+ * libempathy-gtk/*.[ch]:
+ * src/*.[ch]: Rename all filenames starting with "gossip" by "empathy",
+ change namespace of all gossip_*() functions to empathy_*().
+ Fixes bug #444490 (Mario Danic, Xavier Claessens).
+
+2007-06-21 Xavier Claessens <xclaesse@gmail.com>
+
+ * configure.ac: Bump version to 0.9
+
+2007-06-21 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy/empathy-tp-contact-list.c: Fix typo causing warnings.
+
+2007-06-21 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-contact-dialogs.c:
+ * libempathy-gtk/gossip-contact-list-store.c:
+ * libempathy-gtk/gossip-contact-list-view.c:
+ * libempathy/empathy-contact-manager.c:
+ * libempathy/empathy-tp-contact-list.c:
+ * libempathy/empathy-contact-list.c:
+ * libempathy/empathy-contact-list.h:
+ * libempathy/gossip-contact.c: We show in our roster all contacts
+ members and remote-pending of subscribe list. Adding/Removing a contact
+ only add/remove from subscribe list. Accept/Reject a contact in
+ local-pending of publish list is done using _process_pending().
+
+2007-06-15 Xavier Claessens <xclaesse@gmail.com>
+
+ * src/empathy.c:
+ * libempathy/empathy-idle.c: Adding NetworkManager support.
+
+2007-06-15 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-status-icon.c:
+ * libempathy-gtk/gossip-presence-chooser.c:
+ * libempathy-gtk/gossip-presence-chooser.h:
+ * libempathy/empathy-idle.c:
+ * libempathy/empathy-idle.h: Prepare for slack time when coming back
+ from auto away. Not yet fully implemented.
+
+2007-06-14 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-images.h:
+ * libempathy-gtk/gossip-chat.c: Use gtk-info for contact informaiton.
+
+ * data/22x22/empathy-proto-salut.png:
+ * data/22x22/Makefile.am:
+ * data/16x16/empathy-proto-salut.png:
+ * data/16x16/Makefile.am:
+ * data/scalable/empathy-proto-salut.svg:
+ * data/scalable/Makefile.am:
+ * data/salut.profile: Add salut icon. Fixes bug #447659 (Michael Monreal).
+
+2007-06-14 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/gossip-contact-list-view.c: Show logs when right
+ click on a contact in the roster.
+
+2007-06-14 Xavier Claessens <xclaesse@gmail.com>
+
+ * src/org.gnome.Empathy.Chat.service.in:
+ * src/empathy-accounts.c:
+ * src/empathy-accounts-main.c:
+ * src/empathy-chat-main.c:
+ * src/empathy.c:
+ * src/Makefile.am:
+ * src/empathy-main.c:
+ * libempathy/gossip-chatroom-manager.c:
+ * autogen.sh: Empathy is no more splitted into 2 processes. It makes
+ debugging more difficult when emmpathy-chat crashes. It's also more
+ optimised like that since contact objects can be shared.
+
+2007-06-14 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/gossip-chat-window.c: Disconnect signals from
+ chatroom_manager. Fixes bug #447178.
+
+2007-06-14 Xavier Claessens <xclaesse@gmail.com>
+
+ * po/POTFILES.in:
+ * po/POTFILES.skip: Get strings in empathy.desktop.in.in and skip
+ empathy.desktop.in. Fixes bug #446161.
+
+2007-06-14 Xavier Claessens <xclaesse@gmail.com>
+
+ * po/POTFILES.in: Adding missing files.
+
+2007-06-14 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/gossip-log-window.c:
+ * libempathy-gtk/gossip-chat-window.c:
+ * libempathy/empathy-log-manager.c:
+ * libempathy/empathy-log-manager.h: Do not create log directory for a
+ chat if there is no messages to put in. Show logs and information for
+ the contact we are speaking with in the chat window menu.
+
+2007-06-13 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/Makefile.am:
+ * libempathy-gtk/gossip-log-window.glade:
+ * libempathy-gtk/gossip-log-window.h:
+ * libempathy-gtk/gossip-log-window.c:
+ * libempathy/empathy-log-manager.c:
+ * libempathy/empathy-log-manager.h:
+ * libempathy-gtk/gossip-chat.c:
+ * libempathy-gtk/empathy-main-window.c: New window for viewing logs.
+
+ * libempathy-gtk/gossip-chat-view.c: Do not use smooth scroll when
+ resizing the view.
+
+ * libempathy-gtk/gossip-contact-list-store.c: Do not set active
+ contacts when creating the store, and when contact groups changed.
+
+ * src/empathy-main.c: Fix warning when using command-line options.
+
+ * libempathy/empathy-tp-contact-list.c: Check if we have an aliasing
+ iface before setting the alias of a contact.
+
+ * TODO: Updated.
+
+ * data/jabber.profile: Ignore ssl errors by default. This is a security
+ vulnerability but we don't really have the choice.
+
+ * libempathy/gossip-contact.h:
+ * libempathy/gossip-contact.c: Add a "is-user" property to know if
+ it's our self contact.
+
+ * libempathy/gossip-message.h:
+ * libempathy/gossip-message.c: Add a "receiver" property like that we
+ have our self contact for nick highlight.
+
+2007-06-10 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/gossip-spell-dialog.glade:
+ * libempathy-gtk/gossip-spell-dialog.c:
+ * libempathy-gtk/gossip-spell-dialog.h:
+ * libempathy-gtk/gossip-chat.c:
+ * libempathy-gtk/Makefile.am:
+ * configure.ac: Adding spellcheck support.
+
+ * libempathy-gtk/gossip-spell.c:
+ * libempathy/gossip-conf.c: Remove useless debug messages.
+
+2007-06-10 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/gossip-chat-view.c: Smooth scrolling.
+ Fixes bug #445859 (Raphael Slinckx).
+
+2007-06-09 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy/gossip-contact.c: Emit notify signal only if the property
+ value effectively changed.
+
+2007-06-09 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/gossip-contact-list-view.c: Fix warning for DnD.
+ patch imported from gossip.
+
+2007-06-09 Xavier Claessens <xclaesse@gmail.com>
+
+ * configure.ac: Bump version to 0.8
+
+ * libempathy-gtk/gossip-ui-utils.c: Fix usage of contact subscription
+ property.
+
+ * data/gtalk.profile:
+ * data/jabber.profile:
+ * data/msn.profile: Add VCardField and VCardDefault to profiles for
+ eds-sync support.
+
+2007-06-09 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-contact-widget.c: Fix a warning.
+
+2007-06-09 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-main-window.c:
+ * libempathy-gtk/empathy-contact-widget.glade:
+ * libempathy-gtk/empathy-contact-dialogs.c:
+ * libempathy-gtk/empathy-contact-dialogs.h:
+ * libempathy-gtk/empathy-contact-widget.c: We can now add a new contact.
+ EmpathyContactWidget can change the contact it's displaying on-the-fly,
+ like that we can display info when typing the contact ID we want to
+ add to our contact list.
+
+ * libempathy/empathy-tp-contact-list.c: Fix a refcount bug.
+
+2007-06-08 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy/gossip-chatroom-manager.c: Checks if the chatroom has
+ an account and a room. Fixes bug #444135.
+
+2007-06-08 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-contact-dialogs.c:
+ * libempathy-gtk/empathy-contact-widget.c:
+ * libempathy-gtk/empathy-contact-widget.h: Do not save when closing the
+ dialog. Update information in real-time and just provides a "Close"
+ button. That's more GNOME spirite.
+ * libempathy/empathy-tp-contact-list.c:
+ * libempathy/gossip-contact.h:
+ * libempathy/gossip-contact.c: New methods:
+ gossip_contact_add/remove_group(). This fixes leaks when a contact is
+ added/removed from a group.
+
+2007-06-08 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/gossip-chat.c: Fix build on 64bits arch.
+ Fixes bug #444680 (Matej Cepl).
+
+2007-06-06 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-contact-dialogs.glade:
+ * libempathy-gtk/empathy-contact-dialogs.c: Fix response and action
+ buttons.
+
+2007-06-06 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-contact-dialogs.glade:
+ * libempathy-gtk/empathy-contact-widget.glade:
+ * libempathy-gtk/empathy-status-icon.c:
+ * libempathy-gtk/empathy-contact-dialogs.c:
+ * libempathy-gtk/empathy-contact-dialogs.h:
+ * libempathy-gtk/gossip-ui-utils.c:
+ * libempathy-gtk/empathy-subscription-dialog.glade:
+ * libempathy-gtk/empathy-contact-widget.c:
+ * libempathy-gtk/gossip-ui-utils.h:
+ * libempathy-gtk/gossip-contact-list-view.c:
+ * libempathy-gtk/empathy-subscription-dialog.c:
+ * libempathy-gtk/Makefile.am:
+ * libempathy-gtk/empathy-subscription-dialog.h: Implement editing and
+ viewing contact information with right click on the roster.
+
+2007-06-06 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-contact-widget.glade:
+ * libempathy-gtk/empathy-contact-widget.c:
+ * libempathy-gtk/empathy-contact-widget.h:
+ * libempathy-gtk/empathy-subscription-dialog.c: EmpatchContactWidget
+ has 2 modes: editable or not.
+
+2007-06-06 Xavier Claessens <xclaesse@gmail.com>
+
+ * po/POTFILES.in: Updated with new files.
+
+2007-06-06 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-status-icon.c:
+ * libempathy-gtk/empathy-subscription-dialog.glade:
+ * libempathy-gtk/empathy-contact-widget.c:
+ * libempathy-gtk/gossip-contact-list-view.c:
+ * libempathy-gtk/empathy-subscription-dialog.c:
+ * libempathy-gtk/Makefile.am:
+ * libempathy-gtk/empathy-subscription-dialog.h:
+ * libempathy/empathy-tp-contact-list.c: New dialog:
+ EmpathySubscriptionDialog. It uses EmpathyContactWidget to display
+ information about the contact who wants to get your presence. This
+ dialog appears when clicking on the status icon when it blinks. You
+ can also remove contacts when right-click on it in the roster.
+
+2007-06-06 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-status-icon.c:
+ * libempathy-gtk/empathy-contact-widget.glade:
+ * libempathy-gtk/empathy-contact-widget.c:
+ * libempathy-gtk/empathy-contact-widget.h:
+ * libempathy-gtk/Makefile.am: New widget: EmpathyContactWidget. It
+ displays information about a contact, it can be used in any kind of
+ dialog which needs to display contact information like alias, groups,
+ avatar, etc. If the contact is the selfcontact information are editable.
+
+ * libempathy/empathy-tp-contact-list.c: Do not take care of subscription
+ changes.
+
+ * libempathy/gossip-contact.c: Use
+ gossip_presence_state_get_default_status (MC_PRESENCE_OFFLINE)
+ when there is no presence.
+
+2007-06-06 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-status-icon.c: Add support for blinking when
+ there is an event. Make use of EmpathyIdle for presence handling. Add
+ an event when a contact requets subscription.
+
+ * libempathy-gtk/gossip-contact-list-store.c:
+ * libempathy-gtk/gossip-contact-list-view.c:
+ * libempathy/empathy-contact-manager.c:
+ * libempathy/empathy-tp-contact-list.c:
+ * libempathy/empathy-tp-chatroom.c:
+ * libempathy/empathy-contact-list.c:
+ * libempathy/empathy-contact-list.h: get_contacts() is renamed to
+ get_members(). Adding a signal and a method for local-pending with
+ contacts with the message. Rework completely the contact-list handling in
+ EmpathyTpContactList to follow tp spec.
+
+ * libempathy/empathy-idle.c:
+ * libempathy/empathy-idle.h: Add properties for the state and the
+ status message. EmpathyIdle is now a singleton to manager self presence.
+
+ * TODO: Updated.
+
+2007-06-03 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/gossip-accounts-dialog.glade: Set use_stock for
+ button_connect to False, to avoid a crasher when opening the accounts
+ window with GTK+ trunk. Fixes bug #439931.
+ * libempathy-gtk/gossip-chat.c: Do not add backlog for chatrooms and
+ do not log backlog from jabber server.
+
+2007-06-03 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/gossip-ui-utils.c
+ * libempathy-gtk/gossip-accounts-dialog.c
+ * libempathy-gtk/Makefile.am
+ * src/empathy-accounts-main.c
+ * src/empathy-chat-main.c
+ * src/Makefile.am
+ * src/empathy-main.c
+ * libempathy/gossip-utils.c
+ * libempathy/Makefile.am
+ * src/empathy-filter.h
+ * src/empathy-filter-plugin.c
+ * src/empathy-filter.xml
+ * src/empathy-filter.c
+ * libempathy/gossip-paths.c
+ * libempathy/gossip-paths.h: Remove unused code and append DATADIR to
+ dirs where GTK should search icons.
+
+2007-06-03 Xavier Claessens <xclaesse@gmail.com>
+
+ * po/POTFILES.in:
+ * po/POTFILES.skip: Add missing files that have strings for translation.
+ Skip empathy-desktop.in.in. (Olivier Crete)
+
+2007-06-03 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/gossip-group-chat.c:
+ * libempathy-gtk/gossip-private-chat.c:
+ * libempathy-gtk/gossip-chat.c:
+ * libempathy-gtk/gossip-chat.h:
+ * libempathy/empathy-tp-chat.c: Add all properties described by TP spec
+ for the Text channel on EmpathyTpChat. Make use of "name" and "subject"
+ properties in GossipGroupChat.
+
+2007-06-02 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy/empathy-log-manager.c: Fix crash when there is no log
+ available for a chat.
+ * libempathy/empathy-tp-contact-list.c: Fix a crash when destroy signal
+ is emitted before StatusChanged.
+
+2007-06-02 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/gossip-group-chat.c:
+ * libempathy-gtk/gossip-private-chat.c:
+ * libempathy-gtk/gossip-chat.c:
+ * libempathy/empathy-log-manager.c:
+ * libempathy/empathy-log-manager.h:
+ * libempathy/empathy-log-manager.xsl:
+ * libempathy/Makefile.am: Log chats and display 10 last messages when
+ opening a new chat.
+
+2007-06-02 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/gossip-group-chat.c:
+ * libempathy/empathy-tp-contact-list.c:
+ * libempathy/gossip-contact.c: Set default presence to available if
+ there is no presence iface.
+
+2007-06-02 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/gossip-ui-utils.c:
+ * libempathy-gtk/gossip-ui-utils.h:
+ * configure.ac: Use gnome_vfs_url_show() instead of gnome_url_show()
+ to avoid libgnomeui dependency (Ross Burton).
+
+2007-06-01 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/gossip-chatrooms-window.c:
+ * libempathy-gtk/gossip-chat-window.c:
+ * libempathy/gossip-chatroom.c:
+ * libempathy/gossip-chatroom-manager.c:
+ * configure.ac: Monitor changes on chatrooms.xml file and relead it
+ when it's modified. connect chatroom-added/removed in some places where
+ needed.
+
+2007-06-01 Xavier Claessens <xclaesse@gmail.com>
+
+ * configure.ac: Bump version to 0.7
+
+2007-05-31 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/gossip-new-chatroom-dialog.c: No need to RequestHandle,
+ MissionControl has API to request the channel from handle string.
+
+ * libempathy-gtk/empathy-main-window.c: Request room channel when
+ clicking on favorite rooms.
+
+ * TODO: Add a task: supporting registering.
+
+2007-05-31 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy/empathy-idle.c: Do not restore away presence message when
+ coming back after the user set manually to away.
+
+2007-05-31 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/gossip-account-chooser.c: Fix warning when selecting
+ all accounts.
+
+ * src/empathy-accounts-main.c:
+ * libempathy-gtk/empathy-status-icon.c:
+ * libempathy-gtk/gossip-accounts-dialog.h:
+ * libempathy-gtk/gossip-accounts-dialog.c:
+ * libempathy-gtk/gossip-preferences.h:
+ * libempathy-gtk/gossip-preferences.c: Set parent window.
+
+ * libempathy-gtk/empathy-main-window.c: Implement favorite chatroom
+ menu and fix a leak.
+
+ * libempathy-gtk/Makefile.am:
+ * libempathy/Makefile.am:
+ * libempathy/gossip-chatroom.c:
+ * libempathy/gossip-chatroom.h:
+ * libempathy/gossip-chatroom-manager.c:
+ * libempathy/gossip-chatroom-manager.h:
+ * libempathy/gossip-chatroom-manager.dtd:
+ * libempathy-gtk/gossip-chatrooms-window.glade:
+ * libempathy-gtk/gossip-chatrooms-window.c:
+ * libempathy-gtk/gossip-chatrooms-window.h: New files to implement
+ favorite chatrooms and a window to show them.
+
+
+ * libempathy-gtk/gossip-chat.c: Fix tooltip leaked.
+
+ * libempathy-gtk/gossip-chat-window.h:
+ * libempathy-gtk/gossip-chat-window.c: Do not use deprecated
+ gtk_object_sink(). Implement favorite chatroom features. Find a chat
+ by comparing the account AND the chat ID.
+
+ * src/empathy-chat-main.c:
+ * libempathy/empathy-tp-chat.h:
+ * libempathy/empathy-tp-chat.c:
+ * libempathy/gossip-utils.h:
+ * libempathy/gossip-utils.c: empathy_tp_chat_get_id() returns the Text
+ channel's name. The chat ID is unique only for a specified account.
+
+ * libempathy/empathy-tp-contact-list.c: Fix some leaks and add a FIXME
+ comment for a leak not yet fixed.
+
+ * TODO: Would be cool to have a glade catalog for libempathy-gtk.
+
+2007-05-26 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/gossip-contact-list-store.c: Do not highlight contacts
+ already known when creating the contact list.
+ * libempathy/empathy-tp-contact-list.c: Do not set alias if DBus
+ returns an error. Fixes bug #442639.
+ * libempathy/empathy-idle.c: Do not set status message to
+ "Extended autoaway", let user's message unchanged.
+
+2007-05-25 Xavier Claessens <xclaesse@gmail.com>
+
+ * configure.ac: Bump version to 0.6
+
+2007-05-25 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/gossip-group-chat.c: Fix refcounting of
+ GossipGroupChat.
+ * libempathy/empathy-tp-contact-list.c: Add debug message when alias
+ request fails.
+ * data/22x22/empathy-group-message.png:
+ * data/22x22/Makefile.am: Add group message icon.
+2007-05-25 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/gossip-new-chatroom-dialog.c: Do not use the server
+ entry's value if it's hidden.
+ * libempathy-gtk/gossip-contact-list-view.c: Do not highlight groups
+ when adding them in the roster.
+ * libempathy/empathy-tp-contact-list.c: Do not create new GossipContact
+ object in presence/avatar/alias changed signal if we don't already know
+ that contact from a contact list channel. This should fix DBus max
+ pending calls limit reached in some cases.
+
+2007-05-25 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/gossip-new-chatroom-dialog.c: Preset the server only
+ for jabber protocol to conference.server. This fixes a warning.
+
+ * libempathy-gtk/gossip-group-chat.h:
+ * libempathy-gtk/gossip-group-chat.c: gossip_group_chat_set_topic() is
+ a public function.
+
+ * libempathy-gtk/empathy-images.h:
+ * libempathy-gtk/empathy-main-window.glade:
+ * libempathy-gtk/empathy-status-icon.glade: Make use of
+ empathy-new-message icon name.
+
+ * libempathy-gtk/gossip-contact-list-store.c: By default we sort by
+ contacts names.
+
+ * libempathy-gtk/gossip-chat.c: Do not display composing state if
+ it's our own contact that is composing.
+
+ * src/empathy-chat-main.c:
+ * libempathy/empathy-tp-chat.c:
+ * libempathy/empathy-tp-chat.h: Make possible to build the id based on
+ the account and the channel's name. For private chats that means the
+ contact's id.
+
+ * libempathy-gtk/gossip-chat-window.c: Un-comment the code related to
+ chatrooms that is now implemented. We can now Show/Hide contact list
+ for group chats, DnD contact on the window to begin a discussion, join
+ a new chatroom.
+
+ * libempathy-gtk/gossip-account-chooser.c: Add a FIXME message.
+
+ * data/22x22/empathy-new-message.png:
+ * data/22x22/empathy-proto-irc.png:
+ * data/22x22/Makefile.am:
+ * data/32x32/empathy-proto-irc.png:
+ * data/32x32/Makefile.am:
+ * data/gtalk.profile:
+ * data/16x16/empathy-new-message:
+ * data/16x16/empathy-message-new.png:
+ * data/16x16/empathy-proto-irc.png:
+ * data/16x16/Makefile.am:
+ * data/scalable/empathy-proto-irc.svg:
+ * data/scalable/Makefile.am:
+ * data/irc.profile: Adding icons for empathy-new-message and IRC
+ protocol. Make use of the irc icon in the irc profile.
+
+2007-05-24 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/gossip-new-chatroom-dialog.c:
+ * libempathy-gtk/empathy-main-window.c: White space fix.
+
+2007-05-24 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/gossip-account-chooser.c:
+ * libempathy-gtk/gossip-new-chatroom-dialog.c:
+ * libempathy-gtk/gossip-account-widget-jabber.c:
+ * libempathy-gtk/gossip-account-chooser.h:
+ * libempathy-gtk/gossip-new-chatroom-dialog.h:
+ * libempathy-gtk/gossip-group-chat.c:
+ * libempathy-gtk/empathy-main-window.c:
+ * libempathy-gtk/gossip-new-chatroom-dialog.glade:
+ * libempathy-gtk/gossip-account-widget-jabber.glade:
+ * libempathy-gtk/Makefile.am:
+ * libempathy/empathy-tp-chatroom.c:
+ * data/gtalk.profile:
+ * data/jabber.profile:
+ * data/salut.profile:
+ * data/Makefile.am:
+ * data/empathy.desktop.in.in:
+ * data/msn.profile:
+ * data/irc.profile: New objects: GossipAccountChooser and
+ GossipNewChatroom, we can now join any chatroom. Adding IRC profile.
+
+2007-05-21 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy/empathy-idle.c: If we are offline do not set away on idle.
+ If we are already away restore to available when we are no mode idle.
+ Do no modify status message.
+
+2007-05-21 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/gossip-group-chat.c:
+ * libempathy-gtk/gossip-group-chat.h:
+ * libempathy-gtk/gossip-private-chat.c:
+ * libempathy-gtk/gossip-private-chat.h:
+ * libempathy-gtk/gossip-group-chat.glade:
+ * libempathy-gtk/Makefile.am:
+ * src/empathy-chat-main.c:
+ * libempathy/empathy-tp-contact-list.c:
+ * libempathy/gossip-telepathy-group.c:
+ * libempathy/gossip-telepathy-group.h:
+ * libempathy/empathy-tp-chatroom.c:
+ * libempathy/empathy-tp-chatroom.h: Implementing basic chatroom support.
+ Actually it works only if we get invited in a chatroom.
+
+2007-05-20 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/gossip-chat-view.c: Correctly remember the contact
+ who sent last message.
+
+2007-05-20 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/gossip-chat-view.c: Correctly remember if last message
+ comes from the self contact or another.
+
+2007-05-20 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/gossip-contact-list-model.c:
+ * libempathy-gtk/gossip-contact-list-model.h: Removed.
+ * libempathy-gtk/gossip-contact-list-view.c:
+ * libempathy-gtk/gossip-contact-list-view.h: Added.
+
+2007-05-20 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/gossip-contact-list-store.c: Set COL_NAME earlier like
+ that it can directly be sorted.
+ * data/empathy.schemas.in: s/gossip/empathy/
+
+2007-05-20 Xavier Claessens <xclaesse@gmail.com>
+
+ * configure.ac: Bump version to 0.5
+
+2007-05-20 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/gossip-contact-list-store.c: Allow to set custom
+ function for getting groups of a contact. Make possible to have groups
+ for presence or role/affiliation in chatroom for example.
+ * libempathy-gtk/gossip-contact-list-store.h: Allow to set custom
+ function to handle DnD of contact. Useful when a custom function is set
+ for groups.
+ * src/empathy-chat-main.c: Minor fix.
+ * TODO:
+ * po/POTFILES.in: Updated.
+
+2007-05-19 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/Makefile.am:
+ * libempathy/empathy-tp-chat.c:
+ * libempathy/empathy-contact-manager.c:
+ * libempathy/empathy-contact-list.c: Fix indentation
+ * libempathy/empathy-tp-contact-list.c: Fix not returning the contact
+ in tp_contact_list_find()
+ * TODO: Updated.
+
+2007-05-19 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/gossip-contact-list-store.c:
+ * libempathy-gtk/gossip-preferences.c:
+ * libempathy-gtk/gossip-contact-list-store.h:
+ * libempathy-gtk/gossip-contact-list.c:
+ * libempathy-gtk/gossip-contact-list.h:
+ * libempathy-gtk/empathy-main-window.c:
+ * libempathy-gtk/gossip-contact-list-model.c:
+ * libempathy-gtk/gossip-contact-list-model.h:
+ * libempathy-gtk/Makefile.am:
+ * libempathy/empathy-marshal.list: Split GossipContactList into
+ two objects: GossipContactListStore inheriting from GtkTreeStore and
+ GossipContactListView inheriting from GtkTreeView. This makes
+ easier to build new UI widgets reusing the GtkTreeModel.
+
+2007-05-19 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy/empathy-idle.c: Auto away when session id idle, instead of
+ when screensaver is active.
+
+2007-05-18 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/gossip-private-chat.h:
+ * libempathy-gtk/gossip-contact-list.c:
+ * libempathy-gtk/gossip-chat.c:
+ * libempathy-gtk/gossip-chat.h:
+ * libempathy-gtk/gossip-chat-window.c:
+ * libempathy-gtk/Makefile.am:
+ * libempathy-gtk/gossip-chat-view.c:
+ * libempathy-gtk/gossip-private-chat.c:
+ * src/empathy-chat-main.c:
+ * libempathy/gossip-utils.c:
+ * libempathy/gossip-contact.h:
+ * libempathy/empathy-tp-chat.c:
+ * libempathy/gossip-utils.h:
+ * libempathy/empathy-contact-manager.c:
+ * libempathy/empathy-contact-manager.h:
+ * libempathy/empathy-tp-contact-list.c:
+ * libempathy/empathy-tp-contact-list.h:
+ * libempathy/empathy-tp-chatroom.c:
+ * libempathy/empathy-tp-chatroom.h:
+ * libempathy/empathy-contact-list.c:
+ * libempathy/empathy-contact-list.h:
+ * libempathy/Makefile.am:
+ * libempathy/gossip-contact.c: EmpathyContactList is now an interface
+ implemented by EmpathyTpContactList, EmpathyContactManager and
+ EmpathyTpChatroom. GossipContactList use that interface to display a
+ treeview.
+
+2007-05-17 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/gossip-chat.c: Display ChatState.
+
+2007-05-16 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-status-icon.c:
+ * libempathy/empathy-idle.c:
+ * libempathy/empathy-idle.h:
+ * libempathy/Makefile.am:
+ * po/POTFILES.in: New object EmpathyIdle to manage autoaway and
+ extended autoaway states.
+
+2007-05-15 Xavier Claessens <xclaesse@gmail.com>
+
+ * configure.ac:
+ * data/empathy.desktop.in:
+ * data/Makefile.am:
+ * data/empathy.desktop.in.in:
+ * po/POTFILES.in: Set bugzilla information in desktop file and add it
+ to POTFILES.in
+
+2007-05-15 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-status-icon.glade:
+ * libempathy-gtk/empathy-main-window.glade: Fix using of gossip icons
+ in menus.
+
+2007-05-14 Xavier Claessens <xclaesse@gmail.com>
+
+ * src/empathy-chat-main.c:
+ * src/empathy-main.c:
+ * configure.ac:
+ * data/22x22/Makefile.am:
+ * data/22x22/empathy.png:
+ * data/48x48:
+ * data/48x48/Makefile.am:
+ * data/48x48/empathy.png:
+ * data/32x32/Makefile.am:
+ * data/32x32/empathy.png:
+ * data/16x16/empathy.png:
+ * data/16x16/Makefile.am:
+ * data/scalable/empathy.svg:
+ * data/scalable/Makefile.am:
+ * data/Makefile.am: Add empathy icon stolen from cohoba.
+
+2007-05-14 Xavier Claessens <xclaesse@gmail.com>
+
+ * src/empathy-chat-main.c:
+ * src/Makefile.am:
+ * src/empathy-main.c:
+ * po/POTFILES.in
+ * po/LINGUAS:
+ * TODO: Setting up i18n support.
+
+ * po/Makefile.in.in: Removed, it's generated at build time.
+
+2007-05-13 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/gossip-account-widget-jabber.glade: Add an example
+ label for jid.
+
+2007-05-13 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/gossip-chat-window.c:
+ * libempathy-gtk/gossip-chat-window.h:
+ * src/empathy-chat-main.c:
+ * libempathy/empathy-tp-chat.c:
+ * libempathy/empathy-tp-chat.h: When a new text channel arrives, check
+ if there is no existing GossipChat object for it.
+
+2007-05-13 Xavier Claessens <xclaesse@gmail.com>
+
+ * src/Makefile.am:
+ * src/empathy-contact-list-main.c: Removing empathy-contact-list
+ program, it's useless.
+
+2007-05-13 Xavier Claessens <xclaesse@gmail.com>
+
+ * configure.ac: Change version from 0.3darcs to 0.3svn
+
+2007-05-13 Xavier Claessens <xclaesse@gmail.com>
+
+ * autogen.sh: Set executable
+ * po/POTFILES.in: Update translatable files
+
+2007-03-16 Xavier Claessens <xclaesse@gmail.com>
+
+ * Initial version
+
+2007-09-28 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy/empathy-tp-group.c: Look in the local_pendings list if a
+ contact is already local pending.
+ * tests/contact-manager.c: Fix white space typo.
+
diff --git a/gnome-2-22/MAINTAINERS b/gnome-2-22/MAINTAINERS
new file mode 100644
index 000000000..7c28af00a
--- /dev/null
+++ b/gnome-2-22/MAINTAINERS
@@ -0,0 +1,4 @@
+Xavier Claessens
+E-mail: xclaesse@gmail.com
+Userid: xclaesse
+
diff --git a/gnome-2-22/Makefile.am b/gnome-2-22/Makefile.am
new file mode 100644
index 000000000..14aa451e5
--- /dev/null
+++ b/gnome-2-22/Makefile.am
@@ -0,0 +1,55 @@
+SUBDIRS = tools extensions po data libempathy libempathy-gtk src docs
+
+if HAVE_MEGAPHONE
+SUBDIRS += megaphone
+endif
+
+if HAVE_NOTHERE
+SUBDIRS += nothere
+endif
+
+if HAVE_PYTHON
+SUBDIRS += python
+endif
+
+if HAVE_TESTS
+SUBDIRS += tests
+endif
+
+ACLOCAL_AMFLAGS = -I m4
+
+DISTCHECK_CONFIGURE_FLAGS = \
+ --disable-scrollkeeper \
+ --enable-gtk-doc
+
+INTLTOOL = \
+ intltool-extract.in \
+ intltool-merge.in \
+ intltool-update.in
+
+EXTRA_DIST = \
+ ChangeLog \
+ ChangeLog.old \
+ README \
+ CONTRIBUTORS \
+ autogen.sh \
+ $(INTLTOOL)
+
+DISTCLEANFILES = \
+ ChangeLog \
+ intltool-extract \
+ intltool-merge \
+ intltool-update
+
+# Workaround broken scrollkeeper that doesn't remove its files on
+# uninstall.
+distuninstallcheck_listfiles = find . -type f -print | grep -v '^\./var/scrollkeeper'
+
+ChangeLog: Makefile.am
+ git-log --pretty=short > ChangeLog
+
+
+dist: ChangeLog
+
+.PHONY: ChangeLog
+
diff --git a/gnome-2-22/NEWS b/gnome-2-22/NEWS
new file mode 100644
index 000000000..16e823b2c
--- /dev/null
+++ b/gnome-2-22/NEWS
@@ -0,0 +1,344 @@
+NEW in 0.22.1
+==============
+ - Add more SIP profiles and widget (Xavier Claessens).
+ - Enable VoIP by default. Requier latest stream-engine. (Xavier Claessens).
+ - Move chat chandler into the same process than contact list (Xavier Claessens).
+ - Remove queueing messages until the alias is ready, this doesn't work and cause lost messages. A better solution will come in HEAD. (Xavier Claessens).
+ - Remove code that prevent to display dup backlog. This is broken and in some cases drop new messages. A better fix will come is HEAD. (Xavier Claessens).
+
+Bugs fixed:
+ - Fixed #513679, Need a widget to configure SIP accounts (Baptiste Mille-Mathias)
+
+NEW in 0.22.0
+==============
+ - Queue received messages until the sender got his alias. (Xavier Claessens).
+
+Bugs fixed:
+ - Fixed #466521, Add an advanced expander in the generic setting widget (Marco Barisione)
+ - Fixed #479534, remember conversation window sizes (Marco Barisione)
+ - Fixed #501805, empathy should prevent to run multiple instances (Marco Barisione)
+ - Fixed #505616, linkability of URL broken on _ (Marco Barisione)
+ - Fixed #520788, Wrong button order in the favourite rooms dialog (Marco Barisione)
+ - Fixed #521051, empathy_main_window_show() should use empathy_window_present() (Marco Barisione)
+
+Translations:
+ - Updated Finnish translation (ituohela).
+ - Updated en_GB translation (Philip Withnall).
+ - Updated sv translation (Daniel Nylander).
+ - Updated it translation (Milo Casagrande).
+ - Updated Spanish translation (Jorge Gonzalez).
+ - Updated fr translation (Robert-André Mauchin).
+
+NEW in 0.21.91
+==============
+ - Blink the status icon for new incoming calls. (Xavier Claessens).
+ - Close the media channel if stream engine crashes. (Xavier Claessens).
+ - Change status to closed if stream engine dies or if a call fails. (Xavier Claessens).
+ - Make use of generated code for using stream engine. (Xavier Claessens).
+ - Add a GUI to configure IRC accounts (Guillaume Desmottes).
+ - accounts-dialog: swap the create and previous button (Guillaume Desmottes).
+ - save when adding/removing networks (Guillaume Desmottes).
+ - check if network != NULL before trying to set its charset (Guillaume Desmottes).
+ - New call code, should be more usable (Elliot Fairweather).
+ - Try to create salut account if getting the gconf key fails. (Xavier Claessens).
+ - Add a generic UI to make easy building UI for protocol specific settings. (Xavier Claessens).
+ - Fix setting avatar on salut. (Sjoerd Simons).
+ - Use EMPATHY_SRCDIR environment variable to load uninstalled glade/xml/dtd files (Xavier Claessens).
+
+Bugs fixed:
+ - Fixed #505585, Improve .gitignore (Guillaume Desmottes)
+ - Fixed #505622, add "check" framework support (Guillaume Desmottes)
+ - Fixed #507515, "has come online" is printed even if peer has been online the whole time (Xavier Claessens)
+ - Fixed #507656, "make valgrind" broken (Guillaume Desmottes)
+ - Fixed #513673, Need a GUI to configure ICQ accounts (Andreas Henriksson)
+ - Fixed #513674, Need a GUI to configure Yahoo! accounts (Susana)
+ - Fixed #516198, Thinks contacts come online each time a chat dialog is opened (Xavier Claessens)
+ - Fixed #517098, Critical warnings viewing previous conversations (Xavier Claessens)
+
+Translations:
+ - Updated pt_BR translation (Og Maciel).
+ - Updated sv translation (Daniel Nylander).
+ - Updated Spanish translation (Jorge Gonzalez).
+ - Updated Arabic Translation (Abou Manal).
+ - Updated eu translation (Inaki Larranaga Murgoitio).
+ - Updated Occitan translation (ymarcheg).
+ - Updated Basque translation. (dooteo).
+ - Updated Finnish translation (ituohela).
+ - Updated ja translation (Takeshi AIHANA).
+ - Updated Nepali Translation (pachimho).
+ - Updated Finnish translation (ituohela).
+ - Updated Galician Translation. (icq).
+ - Added Hebrew translation (yairhr).
+
+NEW in 0.21.90
+==============
+ - Change "new message" dialog to "new conversation" and make possible to do voip call. (Xavier Claessens).
+ - Try to load dtd and glade files from the srcdir. (Xavier Claessens).
+ - Add a property to have or not groups on EmpathyContactListStore (Xavier Claessens).
+ - Add a features property on EmpathyContactListView to enable/disable each action. (Xavier Claessens).
+ - Add a program to show chat logs (Xavier Claessens).
+ - Add a cancel button on the custom message diaog (Xavier Claessens).
+ - Unset account parameter if user gives an empthy value. (Xavier Claessens).
+ - Show/Hide main window when changing corresponding gcong key. (Xavier Claessens).
+
+Bugs fixed:
+ - Fixed #501467, improve accounts dialog (Xavier Claessens)
+ - Fixed #507840, New UI for Jabber accounts (Xavier Claessens)
+ - Fixed #509906, empathy is showing off-line contacts before on-line ones (Xavier Claessens)
+ - Fixed #511048, Ellipsize error button (Xavier Claessens)
+ - Fixed #511841, account has to be selected to (un)check its checkbox (Carl-Anton Ingmarsson)
+ - Fixed #515008, Nickname should be in the main section of the preferences for salut accounts (Marco Barisione)
+ - Fixed #515010, Do not be automatically set published name for new salut accounts (Marco Barisione)
+ - Fixed #511679, Empathy HEAD doesn't build (Guillaume Desmottes)
+
+Translations:
+ - Updated eu translation (Inaki Larranaga Murgoitio).
+ - Updated Arabic Translation (Djihed Afifi).
+ - Updated Galician Translation. (icq).
+ - Updated Spanish translation (Jorge Gonzalez).
+
+NEW in 0.21.5.2
+==============
+ - Update API documentation generator. (Xavier Claessens).
+ - Update python binding for new API. (Xavier Claessens).
+ - Rename BlockType to EMPATHY_CHAT_VIEW_BLOCK to respect namespace (Xavier Claessens).
+ - Change EMPATHY_AVATAR_CHOOSER_TYPE to EMPATHY_TYPE_AVATAR_CHOOSER (Xavier Claessens).
+ - Ignore ssl errors for gtalk profile by default otherwise it won't connect. (Xavier Claessens).
+
+Bugs fixed:
+ - Fixed #509656, crash in Empathy Instant Messenger: Nothing. I was viewing s... (Xavier Claessens)
+
+Translations:
+ - Updated ja Translation (Takeshi AIHANA).
+ - Updated sv Translation (Daniel Nylander).
+
+NEW in 0.21.5.1
+==============
+ - Fix release.py script to give correct author of fixed bug.
+ - Fix NEWS file with correct authors
+ - BUMP ABI version, forgot that for release 0.21.5
+
+NEW in 0.21.5
+==============
+ - Adding a release.py script that uses git.
+ - Add SIP icon picked from pidgin.
+ - Cleanup icons: Regenerate icons from SVG at 16, 22, 24, 32 and 48 size.
+ Change xmpp-link-local icon from apple's to the avahi icon. Still missing SVG
+ for im-message, im-message-new and user-typing.
+ - Add avatar token in logs and load avatar from cache when getting logs messages.
+ - Reset status message when coming back from away and the status was manually
+ set to away.
+ - Update profiles based on N810's.
+ - Remove ChangeLog and po/ChangeLog, new release script uses git logs and
+ generates ChangeLog file from git.
+ - Add .gitignore files.
+ - Chandlers leaves when there is no more channels to handle.
+ - Set call window title to contact name
+ - Import Gossip's chat theme system and simplify it a bit.
+
+Bugs fixed:
+ - Fixed #466960, status icon tooltip doesn't change when status changes (Xavier Claessens)
+ - Fixed #508520, :0 smiley conversion shouldn't happen for times (Xavier Claessens)
+ - Fixed #499885, Automatically connect at session start (Carl-Anton Ingmarsson)
+ - Fixed #507656, "make valgrind" broken (Guillaume Desmottes)
+ - Fixed #459520, Can't remove a group (David Turner)
+ - Fixed #447851, Wider list of participants in group chat/IRC channel (Rohit Agrawal)
+ - Fixed #505622, add "check" framework support (Guillaume Desmottes)
+ - Fixed #490153, Join _New... icon (Michael Monreal)
+ - Fixed #502932, Text selection in Accounts window (Xavier Claessens)
+
+Translations:
+ - Updated Spanish Translation (jorgegonz).
+ - Updated Norwegian bokmål Translation (kmaraas).
+ - Updated Occitan Translation (ymarcheg).
+ - Updated French Translation (claudep).
+ - Updated Swedish Translation (dnylande).
+ - Updated Brazilian Portuguese Translation (leonardof).
+ - Updated Basque Translation (dooteo).
+ - Updated Arabic Translation (djihed).
+
+NEW in 0.21.4:
+=============
+ - Cache avatar pixbuf in EmpathyChatView to avoid having a new pixbuf in memory
+ for each message a contact sends
+ - Generate ChangeLog from svn commits. Copy generator from epiphany.
+ - Correctly store/restore presence when NM state changes.
+ - Split EmpathyContactFactory to have one EmpathyTpContactFactory per account.
+ - When NM is in sleeping (=disabled) state, do just like if it was connected.
+ Add a gconf key to disable NM support completely.
+
+NEW in 0.21.3:
+=============
+ - Request new Text Channel if the contact is online again and CM don't support
+ offline message or if account gets reconnected.
+ - Depend on telepathy-glib and make use of his new API. Don't use deprecated
+ functions of libtelepathy.
+ - Better gtkdoc generator.
+
+NEW in 0.21.2:
+=============
+ - Display error message when an account failed to connect.
+ - Move chats to its own process.
+ - Move chandlers in $libexecdir
+ - Don't use the same bus name for filter and chandler programs.
+
+NEW in 0.21.1:
+=============
+ - Cleanup licences and copyrights, Modules with 100% collabora code are now
+ relicenced to LGPL.
+ - Hide main window with ALT-F4.
+ - Set chat state to ACTIVE when receiving a message from a contact, avoid
+ staying in COMPOSING state forever for protocols like MSN that do not notify
+ when contact stoped writing.
+ - Don't use deprecated Gtk/GLib API. Mainly replace GtkTooltips by new
+ tooltip API from GTK 2.12.
+ - Use g_timeout_add_seconds when appropriated to avoid weaking the process too
+ much.
+ - Implement EmpathyAvatarChooser and EmpathyAvatarImage and make use of them in
+ contact information windows. That means we can now enlarge avatars when
+ clicking on it and we can set our own avatar if we edit our own contact.
+ - Implement edit personal information window, no vcard supported yet, but it's
+ not possible to set our own alias/avatar.
+ - Bump version to 0.21.1 for GNOME 2.21.1 release.
+
+NEW in 0.14:
+===========
+ - Megaphone applet now uses avatar cache.
+
+NEW in 0.13:
+===========
+ - Completely reworked ContactList API, new EmpathyContactFactory class.
+ - Update to new Telepathy avatar spec.
+ - Dynamic smiley managment and more efficient algorithm to detect smileys in
+ messages. New EmpathySmileyManager class.
+ - Adding capabilities contact property for Audio/Video.
+ - Adding UI to start a VoIP call. Atm it only shows a microphone icon for
+ contacts supporting voice or video but does not make the call. See
+ EMPATHY_VOIP branch for more complete support.
+ - "interactive" property on EmpathyContactListView to enable/disable context
+ menu and action when double-click on a contact.
+ - Add 2 properties to EmpathyIdle to activate auto-away and auto-disconnect,
+ default to off. Only empathy main client will turn them on, like that if
+ other processes are running with an EmpathyIdle instance they won't change
+ presence in the same time than Empathy client.
+ - Cache avatars in ~/.gnome2/Empathy/avatars.
+ - Adding a test program, useful to use with valgrind.
+ - Free return value for async DBus calls, they are not owned by dbus-glib.
+ This fix big leaks.
+
+NEW in 0.12:
+===========
+ - Only update the topic of it has really be changed, avoid diplaying many
+ times "Topic set to:" message.
+ - Some Jabber chatroom sends messages received before we joined the room, avoid
+ displaying those messages if we already logged them last time we joined that
+ room. Previous workaround prevented Empathy to log offline messages.
+
+NEW in 0.11:
+===========
+ - Change main window's title to "Contact list".
+ - Do not list profiles that don't have the corresponding CM installed when
+ creating a new account.
+
+NEW in 0.10:
+===========
+ - Align param names on the left in the generic account settings widget.
+ - Try to guess the server from the jid if we are using the jabber profile.
+
+NEW in 0.9:
+===========
+ - Initial room list support. It doesn't work yet but most of the code is ready.
+ - Tell the user when a message can't be sent.
+ - Set all contacts from salut protocol to the "Local Network" group.
+ - Fix NetworkManager support.
+ - Iconify main window to the status icon like in rhythmbox.
+ - Show avatars in chatrooms.
+ - Fix avatar not being requested when empathy starts.
+ - Remove unused nickname entry and use a GtkTable for room information.
+ - Set a window title and fix alignment of widgets for contact related dialogs
+ (add, edit/view info).
+ - Adding initial API documentation using gtk-doc.
+ - Auto-accept to publish presence to contacts that are in our subscribe list.
+ When accepting a pending contact add it to publish and subscribe list.
+ - Filter incoming text channels and make status icon flash when there we
+ receive a new message. Dispatch the channel only when we get a message and
+ the user click on the icon.
+ - Install libempathy and libempathy-gtk and make their API public. The API is
+ NOT STABLE AT ALL !!!
+
+NEW in 0.8:
+===========
+ - Fixed contact list handling.
+ - Make use of NetworkManager to set presence to OFFILE when we are disconnected
+ and restore presence once we are reconnected.
+ - UI for searching in conversation history and to view all conversations with
+ a given contact.
+ - Do not use 2 different processes (empathy and empathy-chat), merge them
+ into one client. This is easier for debugging and share data.
+ - Do not create log directory for a chat if there is no messages to put in.
+ - Do not set active contacts when creating the store, and when contact groups
+ changed.
+ - Fix warning when using command-line options.
+ - Ignore ssl errors by default. This is needed to connect jabber accounts
+ using ssl.
+ - Adding spellcheck support using aspell.
+ - Lots of bugs fixed.
+
+NEW in 0.7:
+===========
+ - Adding new contacts.
+ - Accept/Reject contacts who wants to get our presence.
+ - Edit/View contacts information.
+ - Get name and topic properties for chatrooms.
+ - Log chats and display 10 last messages when opening a new chat.
+ - Set presence to available for protocols that do not supports presence
+ (SIP, IRC).
+ - Lots of bugs fixed.
+
+NEW in 0.6:
+===========
+ - Join room when clicking on favorite rooms.
+ - Do not restore away presence message when coming back after the user set
+ manually to away.
+ - Set parent window when poping a new window/dialog.
+ - Implement favorite chatroom menu.
+ - Do not highlight contacts already known when creating the contact list.
+ - Do not set status message to "Extended autoaway", let user's message
+ unchanged.
+ - Many bugs and leaks fixed.
+
+NEW in 0.5:
+===========
+ - Do not highlight groups when adding them in the roster.
+ - Do not create new GossipContact object in presence/avatar/alias changed
+ signal if we don't already know that contact from a contact list channel.
+ This should fix DBus max pending calls limit reached in some cases.
+ - New icon for empathy-new-message, empathy-group-message and
+ empathy-proto-irc.
+ - Chatroom support. New objects: GossipNewChatroomDialog, GossipAccountChooser,
+ GossipGroupChat
+ - If we are offline do not set away on idle. If we are already away restore to
+ available when we are no mode idle. Do no modify status message.
+ - Fixed message displaying with fancy themes.
+ - Many bugs fixed.
+
+NEW in 0.4:
+===========
+ - contact list refactoring: EmpathyContactList is an iface implemented by
+ EmpathyTpContactList, EmpathyContactManager and EmpathyTpChatroom.
+ GossipContactList splitted into GossipContactListStore and
+ GossipContactListView, it can display any object implementing the
+ EmpathyContactList iface. Make possible to set custom functions to define
+ the groups of a contact, by default it gets the "group" property of the
+ GossipContact object. This make possible to reuse the contact list UI from
+ the main window for chatrooms where groups are the role/affiliation of the
+ contact on that room.
+ - Auto away when gnome-screensaver says the session is idle and extended away
+ 30min after that.
+ - Display ChatState when the contact is composing.
+ - Bugbuddy now reports crashes to GNOME Bugzilla.
+ - New program icon.
+ - Setting i18n support and importing po files from gossip.
+ - Add an example label for jid.
+ - Do not open chat window twice for the same conversation.
+
diff --git a/gnome-2-22/README b/gnome-2-22/README
new file mode 100644
index 000000000..7f38eabb2
--- /dev/null
+++ b/gnome-2-22/README
@@ -0,0 +1,12 @@
+How to use empathy ?
+
+1) Install
+$ ./autogen.sh
+$ make && make install
+
+2) Start empathy
+$ empathy
+This will start MC, connect all enabled accounts and add a GtkStatusIcon. If you
+start a private chat or someone is saying something to you, empathy-chat will be
+started automagicaly and display a chat UI for your conversation.
+
diff --git a/gnome-2-22/TODO b/gnome-2-22/TODO
new file mode 100644
index 000000000..a46c8cc18
--- /dev/null
+++ b/gnome-2-22/TODO
@@ -0,0 +1,27 @@
+Things you can do if you want to help:
+
+ - UI for inviting a contact in a chatroom.
+ - UI for accept/refuse invitation to join a chatroom and VoIP calls.
+ - GtkWidget-ify libempathy-gtk. Actually most window/dialog do not inherit from
+ GtkWindow/GtkDialog. Need to create a glade catalog, it seems to not be
+ that easy.
+ - Remove Quit option everywhere, empathy is a session service and shouldn't be
+ leaved.
+ - Add sound events
+ - Add register capability in EmpathyAccountsDialog if the profile says
+ it's supported.
+ - Write a manual based on gossip's.
+ - Reviewing File Transfer patch, see bug #462172.
+ - Drop libtelepathy and use telepathy-glib instead when it gets client-side
+ functions.
+ - Drop Nokia's MissionControl and use the standardized MC spec instead.
+ - Improve VoIP support once stream-engine gets cleaned and moved into tp-glib.
+ - Split MUC out of Empathy's main program and create a xchat-gnome-like
+ program for MUCs.
+ - See with Gnome Online Desktop project how to implement meta-contacts and
+ merge information from multiple contacts.
+ - Testing and Bugfixing.
+
+If you want to contribute you can ask for information at
+ - #telepathy on freenode
+ - Telepathy's mailing list: telepathy@lists.freedesktop.org
diff --git a/gnome-2-22/autogen.sh b/gnome-2-22/autogen.sh
new file mode 100755
index 000000000..b1a24fc3a
--- /dev/null
+++ b/gnome-2-22/autogen.sh
@@ -0,0 +1,23 @@
+#!/bin/sh
+# Run this to generate all the initial makefiles, etc.
+
+srcdir=`dirname $0`
+test -z "$srcdir" && srcdir=.
+
+PKG_NAME="Empathy"
+REQUIRED_AUTOMAKE_VERSION=1.9
+
+(test -f $srcdir/configure.ac) || {
+ echo -n "**Error**: Directory "\`$srcdir\'" does not look like the"
+ echo " top-level gnome directory"
+ exit 1
+}
+
+
+which gnome-autogen.sh || {
+ echo "You need to install gnome-common from the GNOME CVS"
+ exit 1
+}
+USE_GNOME2_MACROS=1 USE_COMMON_DOC_BUILD=yes . gnome-autogen.sh
+
+
diff --git a/gnome-2-22/configure.ac b/gnome-2-22/configure.ac
new file mode 100644
index 000000000..f156a9293
--- /dev/null
+++ b/gnome-2-22/configure.ac
@@ -0,0 +1,329 @@
+AC_INIT(Empathy, 0.22.1, http://bugzilla.gnome.org/browse.cgi?product=empathy)
+AC_PREREQ(2.59)
+AC_COPYRIGHT([
+ Copyright (C) 2003-2007 Imendio AB
+ Copyright (C) 2007 Collabora Ltd.
+])
+
+# LT Version numbers, remember to change them just *before* a release.
+# (Interfaces removed: CURRENT++, AGE=0, REVISION=0)
+# (Interfaces added: CURRENT++, AGE++, REVISION=0)
+# (No interfaces changed: REVISION++)
+LIBEMPATHY_CURRENT=11
+LIBEMPATHY_AGE=0
+LIBEMPATHY_REVISION=1
+
+LIBEMPATHY_GTK_CURRENT=11
+LIBEMPATHY_GTK_AGE=0
+LIBEMPATHY_GTK_REVISION=1
+
+AC_SUBST(LIBEMPATHY_CURRENT)
+AC_SUBST(LIBEMPATHY_AGE)
+AC_SUBST(LIBEMPATHY_REVISION)
+AC_SUBST(LIBEMPATHY_GTK_CURRENT)
+AC_SUBST(LIBEMPATHY_GTK_AGE)
+AC_SUBST(LIBEMPATHY_GTK_REVISION)
+
+# Minimal version required
+GLIB_REQUIRED=2.14.0
+GTK_REQUIRED=2.12.0
+GCONF_REQUIRED=1.2.0
+LIBGLADE_REQUIRED=2.0.0
+LIBPANELAPPLET_REQUIRED=2.10.0
+TELEPATHY_REQUIRED=0.3.1
+TELEPATHY_GLIB_REQUIRED=0.7.3
+MISSION_CONTROL_REQUIRED=4.53
+
+# Uncomment that to build without deprecated symbols
+# AC_DEFINE(GTK_DISABLE_DEPRECATED, 1, [Disable deprecated GTK symbols])
+# AC_DEFINE(G_DISABLE_DEPRECATED, 1, [Disable deprecated GLib symbols])
+# AC_DEFINE(LIBTELEPATHY_DISABLE_DEPRECATED, 1, [Disable deprecated libtelepathy symbols])
+
+AC_CONFIG_MACRO_DIR([m4])
+AC_CONFIG_HEADERS([config.h])
+AC_CONFIG_SRCDIR([configure.ac])
+AC_CONFIG_AUX_DIR(.)
+
+GNOME_COMMON_INIT
+
+AM_INIT_AUTOMAKE(1.9 dist-bzip2 no-define -Wno-portability)
+AM_MAINTAINER_MODE
+AC_ISC_POSIX
+AC_PROG_CC
+AC_HEADER_STDC
+AM_PROG_LIBTOOL
+AM_PROG_MKDIR_P
+AM_PATH_GLIB_2_0
+AC_PATH_XTRA
+IT_PROG_INTLTOOL([0.35.0])
+GTK_DOC_CHECK([1.3])
+IDT_COMPILE_WARNINGS
+AC_PATH_PROG(DBUS_BINDING_TOOL, dbus-binding-tool)
+AC_PATH_PROG(GCONFTOOL, gconftool-2)
+AM_GCONF_SOURCE_2
+GLIB_GENMARSHAL=`$PKG_CONFIG glib-2.0 --variable=glib_genmarshal`
+AC_SUBST(GLIB_GENMARSHAL)
+
+AC_CHECK_PROGS([XSLTPROC], [xsltproc])
+if test -z "$XSLTPROC"; then
+ AC_MSG_ERROR([xsltproc (from libxslt) is required])
+fi
+AC_CHECK_PROGS([PYTHON], [python2.3 python2.4 python2.5 python])
+if test -z "$PYTHON"; then
+ AC_MSG_ERROR([Python is required])
+fi
+
+EMPATHY_ARG_VALGRIND
+
+# -----------------------------------------------------------
+# Pkg-Config dependency checks
+# -----------------------------------------------------------
+
+PKG_CHECK_MODULES(LIBEMPATHY,
+[
+ glib-2.0 >= $GLIB_REQUIRED
+ gobject-2.0
+ libxml-2.0
+ libtelepathy >= $TELEPATHY_REQUIRED
+ telepathy-glib >= $TELEPATHY_GLIB_REQUIRED
+ libmissioncontrol >= $MISSION_CONTROL_REQUIRED
+])
+
+PKG_CHECK_MODULES(EMPATHY,
+[
+ glib-2.0 >= $GLIB_REQUIRED
+ gobject-2.0
+ gconf-2.0 >= $GCONF_REQUIRED
+ libtelepathy >= $TELEPATHY_REQUIRED
+ telepathy-glib >= $TELEPATHY_GLIB_REQUIRED
+ libmissioncontrol >= $MISSION_CONTROL_REQUIRED
+ gnome-vfs-2.0
+ gtk+-2.0 >= $GTK_REQUIRED
+ x11
+ libglade-2.0 >= $LIBGLADE_REQUIRED
+ libebook-1.2
+])
+
+# -----------------------------------------------------------
+# Language Support
+# -----------------------------------------------------------
+
+GETTEXT_PACKAGE=empathy
+AC_SUBST(GETTEXT_PACKAGE)
+AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE",[Gettext package name])
+
+AM_GLIB_GNU_GETTEXT
+
+# -----------------------------------------------------------
+# ISO codes, used for aspell support
+# -----------------------------------------------------------
+AC_MSG_CHECKING([whether iso-codes exists and has iso-639 domain])
+if $PKG_CONFIG --variable=domains iso-codes | grep -q 639 ; then
+ AC_MSG_RESULT([yes])
+ iso_codes_prefix=`$PKG_CONFIG --variable=prefix iso-codes`
+ iso_codes_pkgconfig=iso-codes
+ have_iso_codes=yes
+else
+ AC_MSG_RESULT([no])
+ iso_codes_prefix=
+ iso_codes_pkgconfig=
+ have_iso_codes=no
+fi
+
+AC_DEFINE_UNQUOTED([ISO_CODES_PREFIX],["$iso_codes_prefix"],[ISO codes prefix])
+
+# -----------------------------------------------------------
+# ASpell
+# -----------------------------------------------------------
+AC_ARG_ENABLE(aspell,
+ AS_HELP_STRING([--enable-aspell=@<:@no/yes/auto@:>@],
+ [compile with aspell support]), ,
+ enable_aspell=auto)
+
+if test "x$enable_aspell" = "xyes" -a "x$have_iso_codes" != "xyes"; then
+ AC_MSG_ERROR([You must have iso-codes with the iso-639 domain to use aspell.])
+fi
+
+if test "x$enable_aspell" != "xno" -a "x$have_iso_codes" = "xyes"; then
+ AC_CHECK_LIB(aspell, aspell_speller_check,have_aspell=yes,have_aspell=no,)
+
+ if test "x$have_aspell" = "xyes"; then
+ AC_DEFINE(HAVE_ASPELL, 1, [Define if we have aspell])
+ EMPATHY_LIBS="$EMPATHY_LIBS -laspell"
+ else
+ have_aspell=no
+ fi
+else
+ have_aspell=no
+fi
+
+if test "x$enable_aspell" = "xyes" -a "x$have_aspell" != "xyes"; then
+ AC_MSG_ERROR([Couldn't find aspell.])
+fi
+
+
+# -----------------------------------------------------------
+# Megaphone
+# -----------------------------------------------------------
+AC_ARG_ENABLE(megaphone,
+ AS_HELP_STRING([--enable-megaphone=@<:@no/yes/auto@:>@],
+ [build megaphone applet]), ,
+ enable_megaphone=auto)
+
+if test "x$enable_megaphone" != "xno"; then
+ PKG_CHECK_MODULES(MEGAPHONE,
+ [
+ libpanelapplet-2.0 >= $LIBPANELAPPLET_REQUIRED
+ glib-2.0 >= $GLIB_REQUIRED
+ gtk+-2.0 >= $GTK_REQUIRED
+ gconf-2.0 >= $GCONF_REQUIRED
+ libglade-2.0 >= $LIBGLADE_REQUIRED
+ gnome-vfs-2.0
+ libtelepathy >= $TELEPATHY_REQUIRED
+ libmissioncontrol >= $MISSION_CONTROL_REQUIRED
+ ], have_megaphone="yes", have_megaphone="no")
+else
+ have_megaphone=no
+fi
+
+if test "x$enable_megaphone" = "xyes" -a "x$have_megaphone" != "xyes"; then
+ AC_MSG_ERROR([Couldn't find megaphone dependencies.])
+fi
+
+AM_CONDITIONAL(HAVE_MEGAPHONE, test "x$have_megaphone" = "xyes")
+
+# -----------------------------------------------------------
+# Nothere
+# -----------------------------------------------------------
+AC_ARG_ENABLE(nothere,
+ AS_HELP_STRING([--enable-nothere=@<:@no/yes/auto@:>@],
+ [build nothere applet]), ,
+ enable_nothere=no)
+
+if test "x$enable_nothere" != "xno"; then
+ PKG_CHECK_MODULES(NOTHERE,
+ [
+ libpanelapplet-2.0 >= $LIBPANELAPPLET_REQUIRED
+ glib-2.0 >= $GLIB_REQUIRED
+ gtk+-2.0 >= $GTK_REQUIRED
+ gconf-2.0 >= $GCONF_REQUIRED
+ libglade-2.0 >= $LIBGLADE_REQUIRED
+ libtelepathy >= $TELEPATHY_REQUIRED
+ libmissioncontrol >= $MISSION_CONTROL_REQUIRED
+ ], have_nothere="yes", have_nothere="no")
+else
+ have_nothere=no
+fi
+
+if test "x$enable_nothere" = "xyes" -a "x$have_nothere" != "xyes"; then
+ AC_MSG_ERROR([Couldn't find nothere dependencies.])
+fi
+
+AM_CONDITIONAL(HAVE_NOTHERE, test "x$have_nothere" = "xyes")
+
+# -----------------------------------------------------------
+# Tests
+# -----------------------------------------------------------
+AC_ARG_ENABLE(tests,
+ AS_HELP_STRING([--enable-tests=@<:@no/yes/auto@:>@],
+ [build tests]), ,
+ enable_tests=auto)
+
+if test "x$enable_tests" != "xno"; then
+ PKG_CHECK_MODULES(CHECK,
+ [
+ check >= 0.9.4
+ ], have_check="yes", have_check="no")
+else
+ have_check=no
+fi
+
+if test "x$enable_tests" = "xyes" -a "x$have_check" != "xyes"; then
+ AC_MSG_ERROR([Couldn't find check dependencies.])
+fi
+
+AM_CONDITIONAL(HAVE_TESTS, test "x$have_check" = "xyes")
+
+# -----------------------------------------------------------
+# Python Bindings
+# -----------------------------------------------------------
+AC_ARG_ENABLE(python,
+ AS_HELP_STRING([--enable-python=@<:@no/yes/auto@:>@],
+ [build python bindings to libempathy and libempathy-gtk]), ,
+ enable_python=auto)
+
+if test "x$enable_python" != "xno"; then
+ AM_PATH_PYTHON
+ if test -z "$PYTHON" ; then
+ have_python="no"
+ else
+ PKG_CHECK_MODULES(PYTHON_BINDING,
+ [
+ pygtk-2.0,
+ glib-2.0 >= $GLIB_REQUIRED
+ gobject-2.0
+ gconf-2.0 >= $GCONF_REQUIRED
+ libxml-2.0
+ gnome-vfs-2.0
+ libtelepathy >= $TELEPATHY_REQUIRED
+ libmissioncontrol >= $MISSION_CONTROL_REQUIRED
+ gtk+-2.0 >= $GTK_REQUIRED
+ libglade-2.0 >= $LIBGLADE_REQUIRED
+ ], have_python="yes", have_python="no")
+ fi
+else
+ have_python=no
+fi
+
+if test "x$enable_python" = "xyes" -a "x$have_python" != "xyes"; then
+ AC_MSG_ERROR([Couldn't find python.])
+fi
+
+AM_CONDITIONAL(HAVE_PYTHON, test "x$have_python" = "xyes")
+
+# -----------------------------------------------------------
+# VoIP support
+# -----------------------------------------------------------
+AC_ARG_ENABLE(voip,
+ AS_HELP_STRING([--enable-voip=@<:@no/yes@:>@],
+ [Add support for Voice and Video call]), ,
+ enable_voip=yes)
+
+if test "x$enable_voip" = "xyes"; then
+ AC_DEFINE(HAVE_VOIP, 1, [Define if we have voip])
+fi
+
+AM_CONDITIONAL(HAVE_VOIP, test "x$enable_voip" = "xyes")
+
+# -----------------------------------------------------------
+
+AC_OUTPUT([
+ Makefile
+ data/Makefile
+ data/empathy.desktop.in
+ data/icons/Makefile
+ extensions/Makefile
+ po/Makefile.in
+ libempathy/Makefile
+ libempathy/libempathy.pc
+ libempathy-gtk/Makefile
+ libempathy-gtk/libempathy-gtk.pc
+ src/Makefile
+ megaphone/Makefile
+ megaphone/src/Makefile
+ megaphone/data/Makefile
+ nothere/Makefile
+ nothere/src/Makefile
+ nothere/data/Makefile
+ docs/Makefile
+ docs/libempathy/Makefile
+ docs/libempathy/version.xml
+ docs/libempathy-gtk/Makefile
+ docs/libempathy-gtk/version.xml
+ python/Makefile
+ python/pyempathy/Makefile
+ python/pyempathygtk/Makefile
+ tests/Makefile
+ tests/xml/Makefile
+ tools/Makefile
+])
diff --git a/gnome-2-22/data/.gitignore b/gnome-2-22/data/.gitignore
new file mode 100644
index 000000000..fd8659a18
--- /dev/null
+++ b/gnome-2-22/data/.gitignore
@@ -0,0 +1,3 @@
+empathy.desktop
+empathy.desktop.in
+empathy.schemas
diff --git a/gnome-2-22/data/Makefile.am b/gnome-2-22/data/Makefile.am
new file mode 100644
index 000000000..ae143f215
--- /dev/null
+++ b/gnome-2-22/data/Makefile.am
@@ -0,0 +1,50 @@
+SUBDIRS = icons
+
+profiledir = $(datadir)/mission-control/profiles
+profile_DATA = \
+ aim.profile \
+ icq.profile \
+ jabber.profile \
+ salut.profile \
+ yahoo.profile \
+ gtalk.profile \
+ irc.profile \
+ msn.profile \
+ msn-haze.profile \
+ sofiasip.profile \
+ ekiga.profile \
+ fwd.profile \
+ sipphone.profile
+
+autostartdir = $(sysconfdir)/xdg/autostart
+autostart_in_files = empathy.desktop.in
+autostart_DATA = $(autostart_in_files:.desktop.in=.desktop)
+@INTLTOOL_DESKTOP_RULE@
+
+schemasdir = $(GCONF_SCHEMA_FILE_DIR)
+schemas_in_files = empathy.schemas.in
+schemas_DATA = $(schemas_in_files:.schemas.in=.schemas)
+@INTLTOOL_SCHEMAS_RULE@
+
+if GCONF_SCHEMAS_INSTALL
+install-data-local:
+ if test -z "$(DESTDIR)" ; then \
+ for p in $(schemas_DATA) ; do \
+ GCONF_CONFIG_SOURCE=$(GCONF_SCHEMA_CONFIG_SOURCE) $(GCONFTOOL) --makefile-install-rule $(srcdir)/$$p ; \
+ done \
+ fi
+else
+install-data-local:
+endif
+
+EXTRA_DIST = \
+ $(profile_DATA) \
+ $(autostart_in_files) \
+ $(autostart_DATA) \
+ $(schemas_in_files) \
+ $(schemas_DATA)
+
+DISTCLEANFILES = \
+ $(autostart_DATA) \
+ $(schemas_DATA)
+
diff --git a/gnome-2-22/data/aim.profile b/gnome-2-22/data/aim.profile
new file mode 100644
index 000000000..d92d1b2cd
--- /dev/null
+++ b/gnome-2-22/data/aim.profile
@@ -0,0 +1,10 @@
+[Profile]
+Manager=haze
+Protocol=aim
+IconName = im-aim
+DisplayName=AIM
+ConfigurationUI = haze
+Capabilities = chat-p2p, supports-alias, supports-avatars, supports-roster
+VCardDefault = 1
+VCardField = X-AIM
+SupportedPresences = away,hidden,do-not-disturb
diff --git a/gnome-2-22/data/ekiga.profile b/gnome-2-22/data/ekiga.profile
new file mode 100644
index 000000000..1acc71044
--- /dev/null
+++ b/gnome-2-22/data/ekiga.profile
@@ -0,0 +1,14 @@
+[Profile]
+Manager = sofiasip
+Protocol = sip
+DisplayName = Ekiga.net (SIP)
+IconName = im-ekiga
+ConfigurationUI = sofiasip
+VCardDefault = 1
+VCardField = X-SIP
+Capabilities = chat-p2p, voice-p2p, split-account, video-p2p
+DefaultAccountDomain = ekiga.net
+Default-priority = 1
+Default-stun-server = stun.ekiga.net
+Default-discover-stun = false
+
diff --git a/gnome-2-22/data/empathy.desktop.in.in b/gnome-2-22/data/empathy.desktop.in.in
new file mode 100644
index 000000000..d7feab251
--- /dev/null
+++ b/gnome-2-22/data/empathy.desktop.in.in
@@ -0,0 +1,14 @@
+[Desktop Entry]
+Version=1.0
+_Name=Empathy Instant Messenger
+_Comment=Send and receive instant messages
+Exec=empathy
+Icon=empathy
+StartupNotify=false
+Terminal=false
+Type=Application
+Categories=GNOME;GTK;Network;InstantMessaging;
+X-GNOME-Bugzilla-Bugzilla=GNOME
+X-GNOME-Bugzilla-Product=empathy
+X-GNOME-Bugzilla-Component=General
+X-GNOME-Bugzilla-Version=@VERSION@
diff --git a/gnome-2-22/data/empathy.schemas.in b/gnome-2-22/data/empathy.schemas.in
new file mode 100644
index 000000000..6a9ab9ee5
--- /dev/null
+++ b/gnome-2-22/data/empathy.schemas.in
@@ -0,0 +1,309 @@
+<gconfschemafile>
+ <schemalist>
+
+ <schema>
+ <key>/schemas/apps/empathy/ui/show_offline</key>
+ <applyto>/apps/empathy/ui/show_offline</applyto>
+ <owner>empathy</owner>
+ <type>bool</type>
+ <default>false</default>
+ <locale name="C">
+ <short>Show offline contacts</short>
+ <long>
+ Whether or not to show contacts that are offline in the contact list.
+ </long>
+ </locale>
+ </schema>
+
+ <schema>
+ <key>/schemas/apps/empathy/contacts/sort_criterium</key>
+ <applyto>/apps/empathy/contacts/sort_criterium</applyto>
+ <owner>empathy</owner>
+ <type>string</type>
+ <default>name</default>
+ <locale name="C">
+ <short>Contact list sort criterium</short>
+ <long>
+ Which criterium to use when sorting the contact list.
+ Default is to use sort by the contact's name with the value
+ "name". A value of "state" will sort the contact list by state.
+ </long>
+ </locale>
+ </schema>
+
+ <schema>
+ <key>/schemas/apps/empathy/ui/show_avatars</key>
+ <applyto>/apps/empathy/ui/show_avatars</applyto>
+ <owner>empathy</owner>
+ <type>bool</type>
+ <default>true</default>
+ <locale name="C">
+ <short>Show avatars</short>
+ <long>
+ Whether or not to show avatars for contacts in the contact
+ list and chat windows.
+ </long>
+ </locale>
+ </schema>
+
+ <schema>
+ <key>/schemas/apps/empathy/ui/compact_contact_list</key>
+ <applyto>/apps/empathy/ui/compact_contact_list</applyto>
+ <owner>empathy</owner>
+ <type>bool</type>
+ <default>false</default>
+ <locale name="C">
+ <short>Compact contact list</short>
+ <long>
+ Whether to show the contact list in compact mode or not.
+ </long>
+ </locale>
+ </schema>
+
+ <schema>
+ <key>/schemas/apps/empathy/ui/main_window_hidden</key>
+ <applyto>/apps/empathy/ui/main_window_hidden</applyto>
+ <owner>empathy</owner>
+ <type>bool</type>
+ <default>true</default>
+ <locale name="C">
+ <short>Hide main window</short>
+ <long>
+ Hide the main window.
+ </long>
+ </locale>
+ </schema>
+
+ <schema>
+ <key>/schemas/apps/empathy/ui/avatar_directory</key>
+ <applyto>/apps/empathy/ui/avatar_directory</applyto>
+ <owner>empathy</owner>
+ <type>string</type>
+ <default></default>
+ <locale name="C">
+ <short>Default directory to select an avatar image from</short>
+ <long>
+ The last directory that an avatar image was chosen from.
+ </long>
+ </locale>
+ </schema>
+
+ <schema>
+ <key>/schemas/apps/empathy/notifications/play_sounds</key>
+ <applyto>/apps/empathy/notifications/play_sounds</applyto>
+ <owner>empathy</owner>
+ <type>bool</type>
+ <default>true</default>
+ <locale name="C">
+ <short>Use notification sounds</short>
+ <long>
+ Whether or not to play a sound when messages arrive.
+ </long>
+ </locale>
+ </schema>
+
+ <schema>
+ <key>/schemas/apps/empathy/notifications/sound_when_away</key>
+ <applyto>/apps/empathy/notifications/sound_when_away</applyto>
+ <owner>empathy</owner>
+ <type>bool</type>
+ <default>false</default>
+ <locale name="C">
+ <short>Enable sound when away</short>
+ <long>
+ Whether or not to play sounds when away.
+ </long>
+ </locale>
+ </schema>
+
+ <schema>
+ <key>/schemas/apps/empathy/notifications/sound_when_busy</key>
+ <applyto>/apps/empathy/notifications/sound_when_busy</applyto>
+ <owner>empathy</owner>
+ <type>bool</type>
+ <default>true</default>
+ <locale name="C">
+ <short>Enable sound when busy</short>
+ <long>
+ Whether or not to play sounds when busy.
+ </long>
+ </locale>
+ </schema>
+
+ <schema>
+ <key>/schemas/apps/empathy/notifications/popup_when_contact_available</key>
+ <applyto>/apps/empathy/notifications/popup_when_contact_available</applyto>
+ <owner>empathy</owner>
+ <type>bool</type>
+ <default>true</default>
+ <locale name="C">
+ <short>Enable popup when contact is available</short>
+ <long>
+ Whether or not to show a popup when a contact becomes available.
+ </long>
+ </locale>
+ </schema>
+
+ <schema>
+ <key>/schemas/apps/empathy/ui/separate_chat_windows</key>
+ <applyto>/apps/empathy/ui/separate_chat_windows</applyto>
+ <owner>empathy</owner>
+ <type>bool</type>
+ <default>false</default>
+ <locale name="C">
+ <short>Open new chats in separate windows</short>
+ <long>
+ Always open a separate chat window for new chats.
+ </long>
+ </locale>
+ </schema>
+
+ <schema>
+ <key>/schemas/apps/empathy/conversation/graphical_smileys</key>
+ <applyto>/apps/empathy/conversation/graphical_smileys</applyto>
+ <owner>empathy</owner>
+ <type>bool</type>
+ <default>true</default>
+ <locale name="C">
+ <short>Use graphical smileys</short>
+ <long>
+ Whether or not to convert smileys into graphical images in
+ conversations.
+ </long>
+ </locale>
+ </schema>
+
+ <schema>
+ <key>/schemas/apps/empathy/conversation/theme</key>
+ <applyto>/apps/empathy/conversation/theme</applyto>
+ <owner>empathy</owner>
+ <type>string</type>
+ <default>classic</default>
+ <locale name="C">
+ <short>Chat window theme</short>
+ <long>
+ The theme that is used to display the conversation in chat windows.
+ </long>
+ </locale>
+ </schema>
+
+ <schema>
+ <key>/schemas/apps/empathy/conversation/theme_chat_room</key>
+ <applyto>/apps/empathy/conversation/theme_chat_room</applyto>
+ <owner>empathy</owner>
+ <type>bool</type>
+ <default>true</default>
+ <locale name="C">
+ <short>Use theme for chat rooms</short>
+ <long>
+ Whether to use the theme for chat rooms or not.
+ </long>
+ </locale>
+ </schema>
+
+ <schema>
+ <key>/schemas/apps/empathy/conversation/spell_checker_languages</key>
+ <applyto>/apps/empathy/conversation/spell_checker_languages</applyto>
+ <owner>empathy</owner>
+ <type>string</type>
+ <default>en</default>
+ <locale name="C">
+ <short>Spell checking languages</short>
+ <long>
+ Comma separated list of spell checker languages to use (e.g. en, fr, nl).
+ </long>
+ </locale>
+ </schema>
+
+ <schema>
+ <key>/schemas/apps/empathy/conversation/spell_checker_enabled</key>
+ <applyto>/apps/empathy/conversation/spell_checker_enabled</applyto>
+ <owner>empathy</owner>
+ <type>bool</type>
+ <default>true</default>
+ <locale name="C">
+ <short>Enable spell checker</short>
+ <long>
+ Whether or not to check words typed against the languages you
+ want to check with.
+ </long>
+ </locale>
+ </schema>
+
+ <schema>
+ <key>/schemas/apps/empathy/conversation/nick_completion_char</key>
+ <applyto>/apps/empathy/conversation/nick_completion_char</applyto>
+ <owner>empathy</owner>
+ <type>string</type>
+ <default>:</default>
+ <locale name="C">
+ <short>Nick completed character</short>
+ <long>
+ Character to add after nickname when using nick completion (tab)
+ in group chat.
+ </long>
+
+ </locale>
+ </schema>
+
+ <schema>
+ <key>/schemas/apps/empathy/hints/close_main_window</key>
+ <applyto>/apps/empathy/hints/close_main_window</applyto>
+ <owner>empathy</owner>
+ <type>bool</type>
+ <default>true</default>
+ <locale name="C">
+ <short>Show hint about closing the main window</short>
+ <long>
+ Whether or not to show the message dialog about closing the
+ main window with the 'x' button in the title bar.
+ </long>
+ </locale>
+ </schema>
+
+ <schema>
+ <key>/schemas/apps/empathy/accounts/salut_created</key>
+ <applyto>/apps/empathy/accounts/salut_created</applyto>
+ <owner>empathy</owner>
+ <type>bool</type>
+ <default>false</default>
+ <locale name="C">
+ <short>Checks if Salut account is created</short>
+ <long>
+ Whether or not the Salut account has been created on the first
+ empathy run.
+ </long>
+ </locale>
+ </schema>
+
+ <schema>
+ <key>/schemas/apps/empathy/use_nm</key>
+ <applyto>/apps/empathy/use_nm</applyto>
+ <owner>empathy</owner>
+ <type>bool</type>
+ <default>true</default>
+ <locale name="C">
+ <short>Checks if NetworkManager should be used</short>
+ <long>
+ Whether or not the network manager should be used to automatically
+ disconnect/reconnect.
+ </long>
+ </locale>
+ </schema>
+
+ <schema>
+ <key>/schemas/apps/empathy/autoconnect</key>
+ <applyto>/apps/empathy/autoconnect</applyto>
+ <owner>empathy</owner>
+ <type>bool</type>
+ <default>true</default>
+ <locale name="C">
+ <short>Checks if Empathy should autoconnect on startup</short>
+ <long>
+ Whether or not Empathy should automatically login to your accounts on startup.
+ </long>
+ </locale>
+ </schema>
+
+ </schemalist>
+</gconfschemafile>
diff --git a/gnome-2-22/data/fwd.profile b/gnome-2-22/data/fwd.profile
new file mode 100644
index 000000000..af05b2cc3
--- /dev/null
+++ b/gnome-2-22/data/fwd.profile
@@ -0,0 +1,15 @@
+[Profile]
+Manager = sofiasip
+Protocol = sip
+DisplayName = FreeWorldDialup (SIP)
+IconName = im-sip
+ConfigurationUI = sofiasip
+VCardDefault = 1
+VCardField = X-SIP
+Capabilities = chav-p2p, voice-p2p, split-account, video-p2p
+DefaultAccountDomain = fwd.pulver.com
+Default-priority = 1
+Default-proxy-address = fwd.pulver.com
+Default-stun-server = stun.fwdnet.net
+Default-discover-stun = false
+
diff --git a/gnome-2-22/data/gtalk.profile b/gnome-2-22/data/gtalk.profile
new file mode 100644
index 000000000..8a91d0fdc
--- /dev/null
+++ b/gnome-2-22/data/gtalk.profile
@@ -0,0 +1,16 @@
+[Profile]
+Manager = gabble
+Protocol = jabber
+DisplayName = Google Talk
+IconName = im-google-talk
+ConfigurationUI = jabber
+VCardDefault = 0
+VCardField = X-JABBER
+Capabilities = chat-p2p, voice-p2p, split-account, chat-room, chat-room-list, registration-ui, supports-avatars, supports-alias, supports-roster
+DefaultAccountDomain = gmail.com, googlemail.com
+Default-server = talk.google.com
+Default-port = 5223
+Default-old-ssl = 1
+Default-ignore-ssl-errors = 1
+Default-fallback-conference-server = conference.jabber.org
+SupportedPresences = away,extended-away,do-not-disturb
diff --git a/gnome-2-22/data/icons/Makefile.am b/gnome-2-22/data/icons/Makefile.am
new file mode 100644
index 000000000..66cef9290
--- /dev/null
+++ b/gnome-2-22/data/icons/Makefile.am
@@ -0,0 +1,166 @@
+NULL =
+
+public_icons_themes = \
+ hicolor \
+ $(NULL)
+
+public_icons = \
+ hicolor_apps_16x16_empathy.png \
+ hicolor_apps_22x22_empathy.png \
+ hicolor_apps_24x24_empathy.png \
+ hicolor_apps_32x32_empathy.png \
+ hicolor_apps_48x48_empathy.png \
+ hicolor_apps_scalable_empathy.svg \
+ $(NULL)
+
+private_icons = \
+ hicolor_actions_16x16_im-message-new.png \
+ hicolor_actions_22x22_im-message-new.png \
+ hicolor_actions_24x24_im-message-new.png \
+ hicolor_status_16x16_im-message.png \
+ hicolor_status_16x16_user-typing.png \
+ hicolor_apps_16x16_im-ekiga.png \
+ hicolor_apps_16x16_im-gizmo.png \
+ hicolor_apps_16x16_im-google-talk.png \
+ hicolor_apps_16x16_im-irc.png \
+ hicolor_apps_16x16_im-xmpp.png \
+ hicolor_apps_16x16_im-msn.png \
+ hicolor_apps_16x16_im-sip.png \
+ hicolor_apps_16x16_im-local-xmpp.png \
+ hicolor_apps_22x22_im-ekiga.png \
+ hicolor_apps_22x22_im-gizmo.png \
+ hicolor_apps_22x22_im-google-talk.png \
+ hicolor_apps_22x22_im-irc.png \
+ hicolor_apps_22x22_im-xmpp.png \
+ hicolor_apps_22x22_im-msn.png \
+ hicolor_apps_22x22_im-sip.png \
+ hicolor_apps_22x22_im-local-xmpp.png \
+ hicolor_apps_24x24_im-ekiga.png \
+ hicolor_apps_24x24_im-gizmo.png \
+ hicolor_apps_24x24_im-google-talk.png \
+ hicolor_apps_24x24_im-irc.png \
+ hicolor_apps_24x24_im-xmpp.png \
+ hicolor_apps_24x24_im-msn.png \
+ hicolor_apps_24x24_im-sip.png \
+ hicolor_apps_24x24_im-local-xmpp.png \
+ hicolor_apps_32x32_im-ekiga.png \
+ hicolor_apps_32x32_im-gizmo.png \
+ hicolor_apps_32x32_im-google-talk.png \
+ hicolor_apps_32x32_im-irc.png \
+ hicolor_apps_32x32_im-xmpp.png \
+ hicolor_apps_32x32_im-msn.png \
+ hicolor_apps_32x32_im-sip.png \
+ hicolor_apps_32x32_im-local-xmpp.png \
+ hicolor_apps_48x48_im-ekiga.png \
+ hicolor_apps_48x48_im-gizmo.png \
+ hicolor_apps_48x48_im-google-talk.png \
+ hicolor_apps_48x48_im-irc.png \
+ hicolor_apps_48x48_im-xmpp.png \
+ hicolor_apps_48x48_im-msn.png \
+ hicolor_apps_48x48_im-sip.png \
+ hicolor_apps_48x48_im-local-xmpp.png \
+ hicolor_apps_scalable_im-ekiga.svg \
+ hicolor_apps_scalable_im-gizmo.svg \
+ hicolor_apps_scalable_im-google-talk.svg \
+ hicolor_apps_scalable_im-irc.svg \
+ hicolor_apps_scalable_im-xmpp.svg \
+ hicolor_apps_scalable_im-msn.svg \
+ hicolor_apps_scalable_im-sip.svg \
+ hicolor_apps_scalable_im-local-xmpp.svg \
+ hicolor_status_16x16_empathy-available.png \
+ hicolor_status_16x16_empathy-away.png \
+ hicolor_status_16x16_empathy-busy.png \
+ hicolor_status_16x16_empathy-extended-away.png \
+ hicolor_status_16x16_empathy-offline.png \
+ hicolor_status_16x16_empathy-pending.png \
+ hicolor_status_22x22_empathy-available.png \
+ hicolor_status_22x22_empathy-away.png \
+ hicolor_status_22x22_empathy-busy.png \
+ hicolor_status_22x22_empathy-extended-away.png \
+ hicolor_status_22x22_empathy-offline.png \
+ hicolor_status_22x22_empathy-pending.png \
+ hicolor_status_24x24_empathy-available.png \
+ hicolor_status_24x24_empathy-away.png \
+ hicolor_status_24x24_empathy-busy.png \
+ hicolor_status_24x24_empathy-extended-away.png \
+ hicolor_status_24x24_empathy-offline.png \
+ hicolor_status_24x24_empathy-pending.png \
+ hicolor_status_32x32_empathy-available.png \
+ hicolor_status_32x32_empathy-away.png \
+ hicolor_status_32x32_empathy-busy.png \
+ hicolor_status_32x32_empathy-extended-away.png \
+ hicolor_status_32x32_empathy-offline.png \
+ hicolor_status_32x32_empathy-pending.png \
+ hicolor_status_48x48_empathy-available.png \
+ hicolor_status_48x48_empathy-away.png \
+ hicolor_status_48x48_empathy-busy.png \
+ hicolor_status_48x48_empathy-extended-away.png \
+ hicolor_status_48x48_empathy-offline.png \
+ hicolor_status_48x48_empathy-pending.png \
+ hicolor_status_scalable_empathy-available.svg \
+ hicolor_status_scalable_empathy-away.svg \
+ hicolor_status_scalable_empathy-busy.svg \
+ hicolor_status_scalable_empathy-extended-away.svg \
+ hicolor_status_scalable_empathy-offline.svg \
+ hicolor_status_scalable_empathy-pending.svg \
+ $(NULL)
+
+EXTRA_DIST = \
+ $(public_icons) \
+ $(private_icons) \
+ $(NULL)
+
+###############################################################################
+
+gtk_update_icon_cache = gtk-update-icon-cache -f -t
+
+update-icon-cache:
+ @-if test -z "$(DESTDIR)"; then \
+ echo "Updating Gtk icon cache."; \
+ for theme in $(public_icons_themes); do \
+ $(gtk_update_icon_cache) $(datadir)/icons/$$theme; \
+ done; \
+ else \
+ echo "*** Icon cache not updated. After (un)install, run this:"; \
+ for theme in $(public_icons_themes); do \
+ echo "*** $(gtk_update_icon_cache) $(datadir)/icons/$$theme"; \
+ done; \
+ fi
+
+install-icons:
+ for icon in $(public_icons); do \
+ THEME=`echo $$icon | cut -d_ -f1`; \
+ CONTEXT=`echo $$icon | cut -d_ -f2`; \
+ SIZE=`echo $$icon | cut -d_ -f3`; \
+ ICONFILE=`echo $$icon | cut -d_ -f4`; \
+ mkdir -p $(DESTDIR)$(datadir)/icons/$$THEME/$$SIZE/$$CONTEXT; \
+ $(INSTALL_DATA) $(srcdir)/$$icon $(DESTDIR)$(datadir)/icons/$$THEME/$$SIZE/$$CONTEXT/$$ICONFILE; \
+ done; \
+ for icon in $(private_icons); do \
+ THEME=`echo $$icon | cut -d_ -f1`; \
+ CONTEXT=`echo $$icon | cut -d_ -f2`; \
+ SIZE=`echo $$icon | cut -d_ -f3`; \
+ ICONFILE=`echo $$icon | cut -d_ -f4`; \
+ mkdir -p $(DESTDIR)$(pkgdatadir)/icons/$$THEME/$$SIZE/$$CONTEXT; \
+ $(INSTALL_DATA) $(srcdir)/$$icon $(DESTDIR)$(pkgdatadir)/icons/$$THEME/$$SIZE/$$CONTEXT/$$ICONFILE; \
+ done
+
+uninstall-icons:
+ -for icon in $(public_icons); do \
+ THEME=`echo $$icon | cut -d_ -f1`; \
+ CONTEXT=`echo $$icon | cut -d_ -f2`; \
+ SIZE=`echo $$icon | cut -d_ -f3`; \
+ ICONFILE=`echo $$icon | cut -d_ -f4`; \
+ rm -f $(DESTDIR)$(datadir)/icons/$$THEME/$$SIZE/$$CONTEXT/$$ICONFILE; \
+ done; \
+ for icon in $(private_icons); do \
+ THEME=`echo $$icon | cut -d_ -f1`; \
+ CONTEXT=`echo $$icon | cut -d_ -f2`; \
+ SIZE=`echo $$icon | cut -d_ -f3`; \
+ ICONFILE=`echo $$icon | cut -d_ -f4`; \
+ rm -f $(DESTDIR)$(pkgdatadir)/icons/$$THEME/$$SIZE/$$CONTEXT/$$ICONFILE; \
+ done
+
+install-data-local: install-icons update-icon-cache
+
+uninstall-local: uninstall-icons update-icon-cache
diff --git a/gnome-2-22/data/icons/generate-png.sh b/gnome-2-22/data/icons/generate-png.sh
new file mode 100755
index 000000000..ce6d585c5
--- /dev/null
+++ b/gnome-2-22/data/icons/generate-png.sh
@@ -0,0 +1,15 @@
+#! /bin/sh
+
+for F in *.svg
+do
+ for S in "16" "22" "24" "32" "48"
+ do
+ SIZE="$S"x"$S"
+ D=$(echo $F | sed -e "s/scalable/$SIZE/g" | sed -e "s/.svg/.png/")
+ if [ ! -e $D ]
+ then
+ inkscape --export-png=$D -w $S -h $S $F
+ fi
+ done
+
+done
diff --git a/gnome-2-22/data/icons/hicolor_actions_16x16_im-message-new.png b/gnome-2-22/data/icons/hicolor_actions_16x16_im-message-new.png
new file mode 100644
index 000000000..da01aff75
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_actions_16x16_im-message-new.png
Binary files differ
diff --git a/gnome-2-22/data/icons/hicolor_actions_22x22_im-message-new.png b/gnome-2-22/data/icons/hicolor_actions_22x22_im-message-new.png
new file mode 100644
index 000000000..f75737ff2
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_actions_22x22_im-message-new.png
Binary files differ
diff --git a/gnome-2-22/data/icons/hicolor_actions_24x24_im-message-new.png b/gnome-2-22/data/icons/hicolor_actions_24x24_im-message-new.png
new file mode 100644
index 000000000..70f7a6622
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_actions_24x24_im-message-new.png
Binary files differ
diff --git a/gnome-2-22/data/icons/hicolor_apps_16x16_empathy.png b/gnome-2-22/data/icons/hicolor_apps_16x16_empathy.png
new file mode 100644
index 000000000..2d91a6f4e
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_apps_16x16_empathy.png
Binary files differ
diff --git a/gnome-2-22/data/icons/hicolor_apps_16x16_im-ekiga.png b/gnome-2-22/data/icons/hicolor_apps_16x16_im-ekiga.png
new file mode 100644
index 000000000..1bce97d3c
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_apps_16x16_im-ekiga.png
Binary files differ
diff --git a/gnome-2-22/data/icons/hicolor_apps_16x16_im-gizmo.png b/gnome-2-22/data/icons/hicolor_apps_16x16_im-gizmo.png
new file mode 100644
index 000000000..a465cf9cf
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_apps_16x16_im-gizmo.png
Binary files differ
diff --git a/gnome-2-22/data/icons/hicolor_apps_16x16_im-google-talk.png b/gnome-2-22/data/icons/hicolor_apps_16x16_im-google-talk.png
new file mode 100644
index 000000000..822eb3d8f
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_apps_16x16_im-google-talk.png
Binary files differ
diff --git a/gnome-2-22/data/icons/hicolor_apps_16x16_im-irc.png b/gnome-2-22/data/icons/hicolor_apps_16x16_im-irc.png
new file mode 100644
index 000000000..622b74d28
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_apps_16x16_im-irc.png
Binary files differ
diff --git a/gnome-2-22/data/icons/hicolor_apps_16x16_im-local-xmpp.png b/gnome-2-22/data/icons/hicolor_apps_16x16_im-local-xmpp.png
new file mode 100644
index 000000000..956e090c7
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_apps_16x16_im-local-xmpp.png
Binary files differ
diff --git a/gnome-2-22/data/icons/hicolor_apps_16x16_im-msn.png b/gnome-2-22/data/icons/hicolor_apps_16x16_im-msn.png
new file mode 100644
index 000000000..ebd6e2cd2
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_apps_16x16_im-msn.png
Binary files differ
diff --git a/gnome-2-22/data/icons/hicolor_apps_16x16_im-sip.png b/gnome-2-22/data/icons/hicolor_apps_16x16_im-sip.png
new file mode 100644
index 000000000..38339af36
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_apps_16x16_im-sip.png
Binary files differ
diff --git a/gnome-2-22/data/icons/hicolor_apps_16x16_im-xmpp.png b/gnome-2-22/data/icons/hicolor_apps_16x16_im-xmpp.png
new file mode 100644
index 000000000..334d172ca
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_apps_16x16_im-xmpp.png
Binary files differ
diff --git a/gnome-2-22/data/icons/hicolor_apps_22x22_empathy.png b/gnome-2-22/data/icons/hicolor_apps_22x22_empathy.png
new file mode 100644
index 000000000..f3961ceac
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_apps_22x22_empathy.png
Binary files differ
diff --git a/gnome-2-22/data/icons/hicolor_apps_22x22_im-ekiga.png b/gnome-2-22/data/icons/hicolor_apps_22x22_im-ekiga.png
new file mode 100644
index 000000000..140fdabd6
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_apps_22x22_im-ekiga.png
Binary files differ
diff --git a/gnome-2-22/data/icons/hicolor_apps_22x22_im-gizmo.png b/gnome-2-22/data/icons/hicolor_apps_22x22_im-gizmo.png
new file mode 100644
index 000000000..5141337f4
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_apps_22x22_im-gizmo.png
Binary files differ
diff --git a/gnome-2-22/data/icons/hicolor_apps_22x22_im-google-talk.png b/gnome-2-22/data/icons/hicolor_apps_22x22_im-google-talk.png
new file mode 100644
index 000000000..9246ed343
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_apps_22x22_im-google-talk.png
Binary files differ
diff --git a/gnome-2-22/data/icons/hicolor_apps_22x22_im-irc.png b/gnome-2-22/data/icons/hicolor_apps_22x22_im-irc.png
new file mode 100644
index 000000000..8da583227
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_apps_22x22_im-irc.png
Binary files differ
diff --git a/gnome-2-22/data/icons/hicolor_apps_22x22_im-local-xmpp.png b/gnome-2-22/data/icons/hicolor_apps_22x22_im-local-xmpp.png
new file mode 100644
index 000000000..4f363c744
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_apps_22x22_im-local-xmpp.png
Binary files differ
diff --git a/gnome-2-22/data/icons/hicolor_apps_22x22_im-msn.png b/gnome-2-22/data/icons/hicolor_apps_22x22_im-msn.png
new file mode 100644
index 000000000..c1baa2160
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_apps_22x22_im-msn.png
Binary files differ
diff --git a/gnome-2-22/data/icons/hicolor_apps_22x22_im-sip.png b/gnome-2-22/data/icons/hicolor_apps_22x22_im-sip.png
new file mode 100644
index 000000000..2aebd81ff
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_apps_22x22_im-sip.png
Binary files differ
diff --git a/gnome-2-22/data/icons/hicolor_apps_22x22_im-xmpp.png b/gnome-2-22/data/icons/hicolor_apps_22x22_im-xmpp.png
new file mode 100644
index 000000000..b76e85b55
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_apps_22x22_im-xmpp.png
Binary files differ
diff --git a/gnome-2-22/data/icons/hicolor_apps_24x24_empathy.png b/gnome-2-22/data/icons/hicolor_apps_24x24_empathy.png
new file mode 100644
index 000000000..939716a26
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_apps_24x24_empathy.png
Binary files differ
diff --git a/gnome-2-22/data/icons/hicolor_apps_24x24_im-ekiga.png b/gnome-2-22/data/icons/hicolor_apps_24x24_im-ekiga.png
new file mode 100644
index 000000000..c20bf5215
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_apps_24x24_im-ekiga.png
Binary files differ
diff --git a/gnome-2-22/data/icons/hicolor_apps_24x24_im-gizmo.png b/gnome-2-22/data/icons/hicolor_apps_24x24_im-gizmo.png
new file mode 100644
index 000000000..0127ce796
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_apps_24x24_im-gizmo.png
Binary files differ
diff --git a/gnome-2-22/data/icons/hicolor_apps_24x24_im-google-talk.png b/gnome-2-22/data/icons/hicolor_apps_24x24_im-google-talk.png
new file mode 100644
index 000000000..04d0539e7
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_apps_24x24_im-google-talk.png
Binary files differ
diff --git a/gnome-2-22/data/icons/hicolor_apps_24x24_im-irc.png b/gnome-2-22/data/icons/hicolor_apps_24x24_im-irc.png
new file mode 100644
index 000000000..88efe0277
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_apps_24x24_im-irc.png
Binary files differ
diff --git a/gnome-2-22/data/icons/hicolor_apps_24x24_im-local-xmpp.png b/gnome-2-22/data/icons/hicolor_apps_24x24_im-local-xmpp.png
new file mode 100644
index 000000000..6117bd95f
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_apps_24x24_im-local-xmpp.png
Binary files differ
diff --git a/gnome-2-22/data/icons/hicolor_apps_24x24_im-msn.png b/gnome-2-22/data/icons/hicolor_apps_24x24_im-msn.png
new file mode 100644
index 000000000..11bb9d4cc
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_apps_24x24_im-msn.png
Binary files differ
diff --git a/gnome-2-22/data/icons/hicolor_apps_24x24_im-sip.png b/gnome-2-22/data/icons/hicolor_apps_24x24_im-sip.png
new file mode 100644
index 000000000..9eee01036
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_apps_24x24_im-sip.png
Binary files differ
diff --git a/gnome-2-22/data/icons/hicolor_apps_24x24_im-xmpp.png b/gnome-2-22/data/icons/hicolor_apps_24x24_im-xmpp.png
new file mode 100644
index 000000000..94f34d33c
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_apps_24x24_im-xmpp.png
Binary files differ
diff --git a/gnome-2-22/data/icons/hicolor_apps_32x32_empathy.png b/gnome-2-22/data/icons/hicolor_apps_32x32_empathy.png
new file mode 100644
index 000000000..cd58a7134
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_apps_32x32_empathy.png
Binary files differ
diff --git a/gnome-2-22/data/icons/hicolor_apps_32x32_im-ekiga.png b/gnome-2-22/data/icons/hicolor_apps_32x32_im-ekiga.png
new file mode 100644
index 000000000..02c2b7268
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_apps_32x32_im-ekiga.png
Binary files differ
diff --git a/gnome-2-22/data/icons/hicolor_apps_32x32_im-gizmo.png b/gnome-2-22/data/icons/hicolor_apps_32x32_im-gizmo.png
new file mode 100644
index 000000000..b9811b641
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_apps_32x32_im-gizmo.png
Binary files differ
diff --git a/gnome-2-22/data/icons/hicolor_apps_32x32_im-google-talk.png b/gnome-2-22/data/icons/hicolor_apps_32x32_im-google-talk.png
new file mode 100644
index 000000000..4d08551d9
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_apps_32x32_im-google-talk.png
Binary files differ
diff --git a/gnome-2-22/data/icons/hicolor_apps_32x32_im-irc.png b/gnome-2-22/data/icons/hicolor_apps_32x32_im-irc.png
new file mode 100644
index 000000000..a0d9e04e7
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_apps_32x32_im-irc.png
Binary files differ
diff --git a/gnome-2-22/data/icons/hicolor_apps_32x32_im-local-xmpp.png b/gnome-2-22/data/icons/hicolor_apps_32x32_im-local-xmpp.png
new file mode 100644
index 000000000..dcc4d2373
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_apps_32x32_im-local-xmpp.png
Binary files differ
diff --git a/gnome-2-22/data/icons/hicolor_apps_32x32_im-msn.png b/gnome-2-22/data/icons/hicolor_apps_32x32_im-msn.png
new file mode 100644
index 000000000..09613e8d5
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_apps_32x32_im-msn.png
Binary files differ
diff --git a/gnome-2-22/data/icons/hicolor_apps_32x32_im-sip.png b/gnome-2-22/data/icons/hicolor_apps_32x32_im-sip.png
new file mode 100644
index 000000000..6f3a06036
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_apps_32x32_im-sip.png
Binary files differ
diff --git a/gnome-2-22/data/icons/hicolor_apps_32x32_im-xmpp.png b/gnome-2-22/data/icons/hicolor_apps_32x32_im-xmpp.png
new file mode 100644
index 000000000..18e54bf12
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_apps_32x32_im-xmpp.png
Binary files differ
diff --git a/gnome-2-22/data/icons/hicolor_apps_48x48_empathy.png b/gnome-2-22/data/icons/hicolor_apps_48x48_empathy.png
new file mode 100644
index 000000000..393015ba3
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_apps_48x48_empathy.png
Binary files differ
diff --git a/gnome-2-22/data/icons/hicolor_apps_48x48_im-ekiga.png b/gnome-2-22/data/icons/hicolor_apps_48x48_im-ekiga.png
new file mode 100644
index 000000000..d301aad5e
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_apps_48x48_im-ekiga.png
Binary files differ
diff --git a/gnome-2-22/data/icons/hicolor_apps_48x48_im-gizmo.png b/gnome-2-22/data/icons/hicolor_apps_48x48_im-gizmo.png
new file mode 100644
index 000000000..212907c58
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_apps_48x48_im-gizmo.png
Binary files differ
diff --git a/gnome-2-22/data/icons/hicolor_apps_48x48_im-google-talk.png b/gnome-2-22/data/icons/hicolor_apps_48x48_im-google-talk.png
new file mode 100644
index 000000000..de3cc4bce
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_apps_48x48_im-google-talk.png
Binary files differ
diff --git a/gnome-2-22/data/icons/hicolor_apps_48x48_im-irc.png b/gnome-2-22/data/icons/hicolor_apps_48x48_im-irc.png
new file mode 100644
index 000000000..a27149115
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_apps_48x48_im-irc.png
Binary files differ
diff --git a/gnome-2-22/data/icons/hicolor_apps_48x48_im-local-xmpp.png b/gnome-2-22/data/icons/hicolor_apps_48x48_im-local-xmpp.png
new file mode 100644
index 000000000..9e8141abe
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_apps_48x48_im-local-xmpp.png
Binary files differ
diff --git a/gnome-2-22/data/icons/hicolor_apps_48x48_im-msn.png b/gnome-2-22/data/icons/hicolor_apps_48x48_im-msn.png
new file mode 100644
index 000000000..124b27b98
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_apps_48x48_im-msn.png
Binary files differ
diff --git a/gnome-2-22/data/icons/hicolor_apps_48x48_im-sip.png b/gnome-2-22/data/icons/hicolor_apps_48x48_im-sip.png
new file mode 100644
index 000000000..84d2609c1
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_apps_48x48_im-sip.png
Binary files differ
diff --git a/gnome-2-22/data/icons/hicolor_apps_48x48_im-xmpp.png b/gnome-2-22/data/icons/hicolor_apps_48x48_im-xmpp.png
new file mode 100644
index 000000000..d0a69c00a
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_apps_48x48_im-xmpp.png
Binary files differ
diff --git a/gnome-2-22/data/icons/hicolor_apps_scalable_empathy.svg b/gnome-2-22/data/icons/hicolor_apps_scalable_empathy.svg
new file mode 100644
index 000000000..875c0ef0a
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_apps_scalable_empathy.svg
@@ -0,0 +1,261 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://web.resource.org/cc/"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="120"
+ height="120"
+ id="svg2"
+ sodipodi:version="0.32"
+ inkscape:version="0.43"
+ sodipodi:docbase="/home/kikidonk"
+ sodipodi:docname="telepathy.svg"
+ version="1.0">
+ <defs
+ id="defs4">
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient2299">
+ <stop
+ style="stop-color:#729fcf"
+ offset="0"
+ id="stop2301" />
+ <stop
+ style="stop-color:#204a87"
+ offset="1"
+ id="stop2303" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient2277">
+ <stop
+ style="stop-color:#729fcf"
+ offset="0"
+ id="stop2279" />
+ <stop
+ style="stop-color:#204a87"
+ offset="1"
+ id="stop2281" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient2248">
+ <stop
+ style="stop-color:#729fcf"
+ offset="0"
+ id="stop2250" />
+ <stop
+ style="stop-color:#204a87"
+ offset="1"
+ id="stop2252" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient2316">
+ <stop
+ style="stop-color:#000000;stop-opacity:1;"
+ offset="0"
+ id="stop2318" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0;"
+ offset="1"
+ id="stop2320" />
+ </linearGradient>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2316"
+ id="radialGradient1455"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.446154,-9.531266e-14,218.1391)"
+ cx="37.5"
+ cy="393.86218"
+ fx="37.5"
+ fy="393.86218"
+ r="32.5" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2316"
+ id="radialGradient1457"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.446154,3.441346e-14,218.1391)"
+ cx="37.5"
+ cy="393.86218"
+ fx="37.5"
+ fy="393.86218"
+ r="32.5" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2248"
+ id="radialGradient1459"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.868658,-0.148746,0.168018,2.110777,-257.031,-963.2931)"
+ cx="152.6485"
+ cy="532.39001"
+ fx="152.6485"
+ fy="532.39001"
+ r="29.863501" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2248"
+ id="radialGradient1461"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.550415,-4.746643e-6,6.036308e-6,1.971663,-152.6655,-900.8159)"
+ cx="209.66589"
+ cy="518.98993"
+ fx="209.66589"
+ fy="518.98993"
+ r="21.839567" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2277"
+ id="linearGradient1463"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-35,-392)"
+ x1="156.27637"
+ y1="519.47235"
+ x2="168.11945"
+ y2="588.41528" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2299"
+ id="linearGradient1465"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-35,-392)"
+ x1="210.31523"
+ y1="513.20483"
+ x2="218.00374"
+ y2="561.11133" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1"
+ inkscape:cx="391.86649"
+ inkscape:cy="58.28661"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ fill="#edd400"
+ stroke="#edd400"
+ inkscape:window-width="1014"
+ inkscape:window-height="693"
+ inkscape:window-x="0"
+ inkscape:window-y="25" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1">
+ <g
+ id="g1350"
+ transform="translate(-86.71068,-84.05382)">
+ <path
+ sodipodi:type="arc"
+ style="opacity:0.34302326;fill:url(#radialGradient1455);fill-opacity:1;stroke:none;stroke-width:5;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path2324"
+ sodipodi:cx="37.5"
+ sodipodi:cy="393.86218"
+ sodipodi:rx="32.5"
+ sodipodi:ry="14.5"
+ d="M 70 393.86218 A 32.5 14.5 0 1 1 5,393.86218 A 32.5 14.5 0 1 1 70 393.86218 z"
+ transform="matrix(0.553846,0,0,0.769231,155.2308,-139.4549)" />
+ <path
+ transform="matrix(0.753846,0,0,1,103.2308,-206)"
+ d="M 70 393.86218 A 32.5 14.5 0 1 1 5,393.86218 A 32.5 14.5 0 1 1 70 393.86218 z"
+ sodipodi:ry="14.5"
+ sodipodi:rx="32.5"
+ sodipodi:cy="393.86218"
+ sodipodi:cx="37.5"
+ id="path2314"
+ style="opacity:0.34883722;fill:url(#radialGradient1457);fill-opacity:1;stroke:none;stroke-width:5;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ sodipodi:type="arc" />
+ <path
+ sodipodi:type="arc"
+ style="fill:#babdb6;stroke:none;stroke-width:3.83500004;stroke-miterlimit:4;stroke-dasharray:none"
+ id="path2284"
+ sodipodi:cx="466.5"
+ sodipodi:cy="225.86218"
+ sodipodi:rx="13.5"
+ sodipodi:ry="13.5"
+ d="M 480 225.86218 A 13.5 13.5 0 1 1 453,225.86218 A 13.5 13.5 0 1 1 480 225.86218 z"
+ transform="matrix(0.239488,0,0,0.239488,6.4093,56.699)" />
+ <path
+ style="fill:url(#radialGradient1459);fill-opacity:1;stroke:#204a87;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 150.2161,142.69583 C 144.93306,149.11959 157.74053,160.99323 155.32886,164.76875 C 151.71258,170.43013 145.72673,166.37911 146.5107,170.91369 C 147.10639,174.35931 146.90129,177.59442 143.94504,179.55357 C 146.05169,185.93861 138.60199,192.13547 135.06149,192.88614 C 120.89943,195.8888 101.90698,167.7371 98.90432,153.57504 C 95.90165,139.41298 104.95855,125.4822 119.1206,122.47955 C 133.28265,119.47688 147.21343,128.53378 150.2161,142.69583 z "
+ id="path2286"
+ sodipodi:nodetypes="csscsssc" />
+ <path
+ sodipodi:nodetypes="csscsssc"
+ id="path2288"
+ d="M 161.93542,131.68159 C 165.74994,136.31974 156.62403,144.65072 158.36534,147.37677 C 160.97641,151.46447 165.17688,148.78167 164.61083,152.05578 C 164.18072,154.54363 164.32882,156.87948 166.46332,158.29405 C 164.94226,162.90425 170.26698,167.13724 172.82334,167.67925 C 183.04881,169.84727 196.81615,149.76218 198.98416,139.53672 C 201.15218,129.31126 194.61282,119.25279 184.38736,117.08478 C 174.16191,114.91676 164.10344,121.45613 161.93542,131.68159 z "
+ style="fill:url(#radialGradient1461);fill-opacity:1;stroke:#204a87;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ transform="matrix(0.448469,0,0,0.448469,-80.909,-3.4852)"
+ d="M 480 225.86218 A 13.5 13.5 0 1 1 453,225.86218 A 13.5 13.5 0 1 1 480 225.86218 z"
+ sodipodi:ry="13.5"
+ sodipodi:rx="13.5"
+ sodipodi:cy="225.86218"
+ sodipodi:cx="466.5"
+ id="path2290"
+ style="fill:#babdb6;stroke:none;stroke-width:3.83500004;stroke-miterlimit:4;stroke-dasharray:none"
+ sodipodi:type="arc" />
+ <path
+ sodipodi:type="arc"
+ style="fill:#babdb6;stroke:none;stroke-width:3.83500004;stroke-miterlimit:4;stroke-dasharray:none"
+ id="path2292"
+ sodipodi:cx="466.5"
+ sodipodi:cy="225.86218"
+ sodipodi:rx="13.5"
+ sodipodi:ry="13.5"
+ d="M 480 225.86218 A 13.5 13.5 0 1 1 453,225.86218 A 13.5 13.5 0 1 1 480 225.86218 z"
+ transform="matrix(0.376714,0,0,0.376714,-29.9988,8.3624)" />
+ <path
+ transform="matrix(0.269082,0,0,0.269082,35.2264,38.422)"
+ d="M 480 225.86218 A 13.5 13.5 0 1 1 453,225.86218 A 13.5 13.5 0 1 1 480 225.86218 z"
+ sodipodi:ry="13.5"
+ sodipodi:rx="13.5"
+ sodipodi:cy="225.86218"
+ sodipodi:cx="466.5"
+ id="path2294"
+ style="fill:#babdb6;stroke:none;stroke-width:3.83500004;stroke-miterlimit:4;stroke-dasharray:none"
+ sodipodi:type="arc" />
+ <path
+ sodipodi:type="arc"
+ style="fill:#babdb6;stroke:none;stroke-width:3.83500004;stroke-miterlimit:4;stroke-dasharray:none"
+ id="path2296"
+ sodipodi:cx="466.5"
+ sodipodi:cy="225.86218"
+ sodipodi:rx="13.5"
+ sodipodi:ry="13.5"
+ d="M 480 225.86218 A 13.5 13.5 0 1 1 453,225.86218 A 13.5 13.5 0 1 1 480 225.86218 z"
+ transform="matrix(0.197327,0,0,0.197327,75.481,66.2218)" />
+ <path
+ id="path2268"
+ d="M 123.28125,123.9375 C 108.01533,124.16246 96.09738,141.26171 101.5625,155.78125 C 106.70498,169.34648 115.09976,183.17694 128.25,190.0625 C 135.00162,194.17566 144.81961,185.96654 141.5625,178.71875 C 146.27103,177.08945 143.82074,171.72239 144.9375,168.21875 C 146.8342,165.06946 153.71771,167.38783 153.46875,162.65625 C 150.74411,156.2047 144.57132,149.09618 147.96875,141.84375 C 145.2653,131.11182 134.46054,123.15696 123.28125,123.9375 z "
+ style="opacity:1;fill:none;fill-opacity:1;stroke:url(#linearGradient1463);stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path2291"
+ d="M 179.75,118.6875 C 172.45096,118.90303 164.83544,124.65883 164.375,131.90625 C 166.6736,137.32257 160.94739,141.95547 160.375,146.71875 C 162.45612,148.7109 167.71064,148.079 166.59375,152.46875 C 165.32221,155.0163 168.12471,156.86409 168.52359,158.40373 C 166.89871,163.94225 174.72741,168.088 178.96875,164.46875 C 188.37541,158.20668 195.59314,147.55282 197.375,136.46875 C 198.06704,126.67227 189.35755,118.04285 179.75,118.6875 z "
+ style="fill:none;fill-opacity:1;stroke:url(#linearGradient1465);stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ </g>
+ </g>
+</svg>
diff --git a/gnome-2-22/data/icons/hicolor_apps_scalable_im-ekiga.svg b/gnome-2-22/data/icons/hicolor_apps_scalable_im-ekiga.svg
new file mode 100644
index 000000000..78a9e7344
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_apps_scalable_im-ekiga.svg
@@ -0,0 +1,441 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://web.resource.org/cc/"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ id="svg2"
+ sodipodi:version="0.32"
+ inkscape:version="0.43"
+ width="48"
+ height="48"
+ version="1.0"
+ sodipodi:docbase="/home/vinicius/tango-icon-theme-code/protocols/scalable"
+ sodipodi:docname="ekiga.svg"
+ inkscape:export-filename="/home/vinicius/tango-icon-theme-code/protocols/48x48/ekiga.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90">
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title>Ekiga Icon</dc:title>
+ <dc:date>2006-12-05</dc:date>
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Vinicius Scopel Depizzol</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ <dc:subject>
+ <rdf:Bag>
+ <rdf:li>Ekiga</rdf:li>
+ <rdf:li>VOIP</rdf:li>
+ <rdf:li>protocol</rdf:li>
+ </rdf:Bag>
+ </dc:subject>
+ <dc:source>vdepizzol@gmail.com</dc:source>
+ <cc:license
+ rdf:resource="http://creativecommons.org/licenses/GPL/2.0/" />
+ <dc:contributor>
+ <cc:Agent>
+ <dc:title>Original Artwork by Jakub Steiner &lt;jimmac_at_ximian.com&gt; and Andreas Kwiatkowski &lt;post_at_kwiat.org&gt;</dc:title>
+ </cc:Agent>
+ </dc:contributor>
+ </cc:Work>
+ <cc:License
+ rdf:about="http://creativecommons.org/licenses/GPL/2.0/">
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/Reproduction" />
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/Distribution" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/Notice" />
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/ShareAlike" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/SourceCode" />
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <defs
+ id="defs5">
+ <linearGradient
+ id="linearGradient4182">
+ <stop
+ style="stop-color:#c03b00;stop-opacity:1;"
+ offset="0"
+ id="stop4184" />
+ <stop
+ style="stop-color:#e74700;stop-opacity:1;"
+ offset="1"
+ id="stop4186" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient9234">
+ <stop
+ style="stop-color:#f57900;stop-opacity:1;"
+ offset="0"
+ id="stop9236" />
+ <stop
+ style="stop-color:#f57900;stop-opacity:0;"
+ offset="1"
+ id="stop9238" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient9208">
+ <stop
+ style="stop-color:#ffe000;stop-opacity:1;"
+ offset="0"
+ id="stop9210" />
+ <stop
+ style="stop-color:#ffe000;stop-opacity:0;"
+ offset="1"
+ id="stop9212" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient9200">
+ <stop
+ style="stop-color:#ffe84a;stop-opacity:1;"
+ offset="0"
+ id="stop9202" />
+ <stop
+ style="stop-color:#ffe84a;stop-opacity:0;"
+ offset="1"
+ id="stop9204" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient6839">
+ <stop
+ style="stop-color:#000000;stop-opacity:0.40170941;"
+ offset="0"
+ id="stop6841" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0;"
+ offset="1"
+ id="stop6843" />
+ </linearGradient>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6839"
+ id="radialGradient6845"
+ cx="14.980188"
+ cy="24.437885"
+ fx="14.980188"
+ fy="24.437885"
+ r="10.15484"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient4175">
+ <stop
+ style="stop-color:#fff6b8;stop-opacity:1;"
+ offset="0"
+ id="stop4177" />
+ <stop
+ style="stop-color:#ffef81;stop-opacity:1;"
+ offset="1"
+ id="stop4179" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4201">
+ <stop
+ style="stop-color:#fcaf3e;stop-opacity:1;"
+ offset="0"
+ id="stop4203" />
+ <stop
+ style="stop-color:#fce94f;stop-opacity:1;"
+ offset="1"
+ id="stop4205" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4189">
+ <stop
+ style="stop-color:#e26f00;stop-opacity:1;"
+ offset="0"
+ id="stop4191" />
+ <stop
+ style="stop-color:#ffae19;stop-opacity:1;"
+ offset="1"
+ id="stop4193" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4189"
+ id="linearGradient4195"
+ x1="1.9788086"
+ y1="7.5118856"
+ x2="14.918759"
+ y2="7.5118856"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4201"
+ id="linearGradient4207"
+ x1="7.2169476"
+ y1="13.272759"
+ x2="7.2169476"
+ y2="4.5926571"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4175"
+ id="linearGradient4181"
+ x1="3.0193484"
+ y1="10.118958"
+ x2="18.965513"
+ y2="10.118958"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.386673,0,0,1.476386,40.03261,-0.243111)" />
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="9.3426504"
+ x2="7.2169476"
+ y1="15.416203"
+ x1="7.2169476"
+ id="linearGradient6051"
+ xlink:href="#linearGradient4201"
+ inkscape:collect="always" />
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="7.5118856"
+ x2="14.918759"
+ y1="7.5118856"
+ x1="-0.48486361"
+ id="linearGradient6049"
+ xlink:href="#linearGradient4189"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient6043">
+ <stop
+ id="stop6045"
+ offset="0"
+ style="stop-color:#f57900;stop-opacity:1;" />
+ <stop
+ id="stop6047"
+ offset="1"
+ style="stop-color:#edd400;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient6037">
+ <stop
+ id="stop6039"
+ offset="0"
+ style="stop-color:#fcaf3e;stop-opacity:1;" />
+ <stop
+ id="stop6041"
+ offset="1"
+ style="stop-color:#fce94f;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4189"
+ id="linearGradient7026"
+ gradientUnits="userSpaceOnUse"
+ x1="1.9788086"
+ y1="7.5118856"
+ x2="14.918759"
+ y2="7.5118856" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4201"
+ id="linearGradient7028"
+ gradientUnits="userSpaceOnUse"
+ x1="7.2169476"
+ y1="13.272759"
+ x2="7.2169476"
+ y2="4.5926571" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4175"
+ id="linearGradient7030"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.834083,0,0,1.952742,2.880761,0.516054)"
+ x1="3.0193484"
+ y1="10.118958"
+ x2="18.965513"
+ y2="10.118958" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9200"
+ id="radialGradient9206"
+ cx="18.627844"
+ cy="11.901631"
+ fx="18.627844"
+ fy="11.901631"
+ r="0.75130093"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9208"
+ id="linearGradient9214"
+ x1="22"
+ y1="4.8000002"
+ x2="22"
+ y2="14.141901"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9234"
+ id="linearGradient9240"
+ x1="20.4"
+ y1="38.666668"
+ x2="20.4"
+ y2="27.292307"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6839"
+ id="radialGradient10116"
+ gradientUnits="userSpaceOnUse"
+ cx="14.980188"
+ cy="24.437885"
+ fx="14.980188"
+ fy="24.437885"
+ r="10.15484" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4182"
+ id="linearGradient4188"
+ x1="6.4635968"
+ y1="13.196473"
+ x2="6.4635968"
+ y2="2.4294622"
+ gradientUnits="userSpaceOnUse" />
+ </defs>
+ <sodipodi:namedview
+ inkscape:window-height="714"
+ inkscape:window-width="1014"
+ inkscape:pageshadow="2"
+ inkscape:pageopacity="0.0"
+ borderopacity="1.0"
+ bordercolor="#666666"
+ pagecolor="#ffffff"
+ id="base"
+ showgrid="false"
+ fill="#fce94f"
+ showborder="false"
+ inkscape:zoom="8.6290323"
+ inkscape:cx="23.5"
+ inkscape:cy="25"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:current-layer="svg2" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1;fill:url(#radialGradient10116);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path5964"
+ sodipodi:cx="14.980188"
+ sodipodi:cy="24.437885"
+ sodipodi:rx="10.15484"
+ sodipodi:ry="10.15484"
+ d="M 25.135029,24.437885 A 10.15484,10.15484 0 1 1 25.134977,24.405482"
+ sodipodi:start="0"
+ sodipodi:end="6.2799944"
+ sodipodi:open="true"
+ transform="matrix(2.067979,0,0,0.608807,-6.97872,24.95253)" />
+ <path
+ transform="matrix(2.840536,0,0,2.792929,3.5,1.019835)"
+ sodipodi:open="true"
+ sodipodi:end="6.2799944"
+ sodipodi:start="0"
+ d="M 14.433895,7.5118856 A 7.2169476,7.3399639 0 1 1 14.433858,7.4884645"
+ sodipodi:ry="7.3399639"
+ sodipodi:rx="7.2169476"
+ sodipodi:cy="7.5118856"
+ sodipodi:cx="7.2169476"
+ id="path7012"
+ style="opacity:1;fill:url(#linearGradient7026);fill-opacity:1;fill-rule:nonzero;stroke:#ce5c00;stroke-width:0.35503393;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="arc" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient7028);stroke-width:0.37376186;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path7014"
+ sodipodi:cx="7.2169476"
+ sodipodi:cy="7.5118856"
+ sodipodi:rx="7.2169476"
+ sodipodi:ry="7.3399639"
+ d="M 14.433895,7.5118856 A 7.2169476,7.3399639 0 1 1 14.433858,7.4884645"
+ sodipodi:start="0"
+ sodipodi:end="6.2799944"
+ sodipodi:open="true"
+ transform="matrix(2.697833,0,0,2.653355,4.547512,2.079533)" />
+ <path
+ sodipodi:nodetypes="cccc"
+ id="path7016"
+ d="M 8.190342,20.708311 C 8.1703537,6.3038993 26.116033,6.5569734 32.543918,12.445493 C 34.538426,14.694763 39.001539,13.044543 36.468666,10.166093 C 26.135035,-1.3618941 6.8962804,7.319666 8.190342,20.708311 z "
+ style="fill:url(#linearGradient9214);fill-opacity:1.0;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ style="fill:url(#linearGradient9240);fill-opacity:1.0;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 39.50447,27.299343 C 34.800073,42.327963 18.308682,36.589906 13.714704,29.331934 C 12.405002,26.672122 7.6414067,27.175936 9.2985796,30.574998 C 16.11864,44.234304 37.082702,40.547881 39.50447,27.299343 z "
+ id="path7018"
+ sodipodi:nodetypes="cccc" />
+ <g
+ id="g9460"
+ transform="matrix(2.817613,0,0,2.817614,5.536697,-0.485289)"
+ style="fill:url(#linearGradient4188);fill-opacity:1.0">
+ <path
+ sodipodi:nodetypes="ccczccz"
+ id="path7707"
+ d="M 9.4516821,8.5573773 C 8.0906341,14.152458 5.7954321,13.026127 5.7954321,13.026127 C 5.4199681,12.717591 5.5573131,10.821517 5.9204321,10.338627 C 6.4032901,10.359871 6.8077121,10.615882 7.5766821,8.2448773 C 8.3364881,5.9021301 7.7927181,5.5778374 7.2641821,5.3073773 C 7.2333031,4.3181647 7.9730301,3.1933083 8.5141821,2.9323773 C 8.5141821,2.9323773 10.805552,2.9918052 9.4516821,8.5573773 z "
+ style="fill:url(#linearGradient4188);fill-opacity:1.0;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="cczc"
+ id="path8582"
+ d="M 7.6134826,2.5599675 C 7.0256447,3.2228687 6.6494921,4.0864896 6.3947326,4.9974675 C 6.3947326,4.9974675 5.3695628,4.2706896 5.9122078,3.1548276 C 6.4668958,2.0142026 7.6134826,2.5599675 7.6134826,2.5599675 z "
+ style="fill:url(#linearGradient4188);fill-opacity:1.0;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ style="fill:url(#linearGradient4188);fill-opacity:1.0;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 5.1155026,10.157887 C 4.6936596,10.9488 4.6380996,11.855502 4.9488216,12.877993 C 4.9488216,12.877993 3.8683676,12.975254 3.8070878,11.427205 C 3.7458441,9.8800695 5.1155026,10.157887 5.1155026,10.157887 z "
+ id="path9458"
+ sodipodi:nodetypes="cczc" />
+ </g>
+ <path
+ sodipodi:nodetypes="czzzzzzzzzzzzz"
+ id="path7020"
+ d="M 9.0604191,23.857192 C 9.4543105,22.162722 9.4344575,16.50586 10.635981,17.079314 C 11.837503,17.652767 12.731187,25.407262 13.866507,26.151005 C 15.001827,26.894747 14.438966,21.832866 15.177262,20.054285 C 15.915553,18.275704 15.88434,20.392276 16.819675,19.036687 C 17.755007,17.681096 17.884277,12.955766 18.918593,14.631925 C 19.952902,16.308085 19.832506,23.646286 20.956926,25.741328 C 22.081347,27.836373 22.25529,23.090771 23.416275,23.012099 C 24.577258,22.933426 24.929877,26.000093 25.600857,25.426642 C 26.271839,24.853188 25.668633,23.149805 26.100195,20.718288 C 26.531758,18.286769 26.152362,14.544639 27.327114,15.700572 C 28.501863,16.856505 29.420674,23.876311 30.799196,25.342011 C 32.177721,26.807713 31.28522,21.96476 32.841205,21.563372 C 34.397188,21.161984 35.977646,23.193191 37.02313,23.736462"
+ style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient7030);stroke-width:1.00000072;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="cccccccccccccccccccccccccccccc"
+ id="path7022"
+ d="M 37.354566,22.429081 L 35.878767,15.933146 L 36.999491,22.549082 L 35.244302,17.836985 L 36.640127,22.723508 L 31.971965,19.448256 L 36.21416,23.113311 L 29.851342,23.675425 L 35.99771,23.515425 L 32.274504,24.939635 L 36.094205,23.981004 L 32.162301,26.240773 L 36.265875,24.585235 L 36.83261,24.952157 L 35.63968,29.523554 L 37.467078,24.881774 L 38.860759,29.323486 L 38.035952,24.944655 L 40.463772,27.383077 L 38.487522,24.373507 L 42.36968,25.221191 L 38.647464,23.785811 L 41.969642,21.32736 L 38.607989,23.439655 L 42.891947,17.680662 L 38.365424,22.939468 L 40.066242,19.55044 L 37.893045,22.553891 L 38.035952,19.486981 L 37.354566,22.429081 z "
+ style="fill:#ffea53;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1;fill:url(#radialGradient9206);fill-opacity:1.0;fill-rule:nonzero;stroke:none;stroke-width:0.69999999;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path8325"
+ sodipodi:cx="18.627844"
+ sodipodi:cy="11.901631"
+ sodipodi:rx="0.75130093"
+ sodipodi:ry="0.75130093"
+ d="M 19.379145,11.901631 A 0.75130093,0.75130093 0 1 1 19.379141,11.899234"
+ sodipodi:start="0"
+ sodipodi:end="6.2799944"
+ sodipodi:open="true"
+ transform="matrix(4.922224,0,0,4.923363,-54.3699,-34.85069)" />
+ <path
+ transform="matrix(1.952289,0,0,1.952741,0.95358,0.504567)"
+ sodipodi:open="true"
+ sodipodi:end="6.2799944"
+ sodipodi:start="0"
+ d="M 19.379145,11.901631 A 0.75130093,0.75130093 0 1 1 19.379141,11.899234"
+ sodipodi:ry="0.75130093"
+ sodipodi:rx="0.75130093"
+ sodipodi:cy="11.901631"
+ sodipodi:cx="18.627844"
+ id="path7024"
+ style="opacity:1;fill:#fcf5c7;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.69999999;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="arc" />
+</svg>
diff --git a/gnome-2-22/data/icons/hicolor_apps_scalable_im-gizmo.svg b/gnome-2-22/data/icons/hicolor_apps_scalable_im-gizmo.svg
new file mode 100644
index 000000000..0c6aa4a56
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_apps_scalable_im-gizmo.svg
@@ -0,0 +1,269 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://web.resource.org/cc/"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ id="svg2"
+ sodipodi:version="0.32"
+ inkscape:version="0.43"
+ width="48"
+ height="48"
+ version="1.0"
+ sodipodi:docbase="/home/vinicius/tango-icon-theme-code/protocols/scalable"
+ sodipodi:docname="gizmo.svg"
+ inkscape:export-filename="/home/vinicius/tango-icon-theme-code/protocols/48x48/gizmo.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90">
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title>Gizmo Icon</dc:title>
+ <dc:date>2006-12-03</dc:date>
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Vinicius Scopel Depizzol</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ <dc:source>vdepizzol@gmail.com</dc:source>
+ <dc:subject>
+ <rdf:Bag>
+ <rdf:li>Gizmo</rdf:li>
+ <rdf:li>VOIP</rdf:li>
+ <rdf:li>Protocol</rdf:li>
+ </rdf:Bag>
+ </dc:subject>
+ <cc:license
+ rdf:resource="http://creativecommons.org/licenses/GPL/2.0/" />
+ </cc:Work>
+ <cc:License
+ rdf:about="http://creativecommons.org/licenses/GPL/2.0/">
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/Reproduction" />
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/Distribution" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/Notice" />
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/ShareAlike" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/SourceCode" />
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <defs
+ id="defs5">
+ <linearGradient
+ id="linearGradient3297">
+ <stop
+ style="stop-color:#77d916;stop-opacity:1;"
+ offset="0"
+ id="stop3299" />
+ <stop
+ style="stop-color:#5eae12;stop-opacity:1;"
+ offset="1"
+ id="stop3301" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient3289">
+ <stop
+ style="stop-color:#a9ea6a;stop-opacity:1;"
+ offset="0"
+ id="stop3291" />
+ <stop
+ style="stop-color:#a9ea6a;stop-opacity:0;"
+ offset="1"
+ id="stop3293" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3281">
+ <stop
+ style="stop-color:#4e9a06;stop-opacity:1;"
+ offset="0"
+ id="stop3283" />
+ <stop
+ style="stop-color:#3f7e04;stop-opacity:1;"
+ offset="1"
+ id="stop3285" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient6839">
+ <stop
+ style="stop-color:#000000;stop-opacity:0.44444445;"
+ offset="0"
+ id="stop6841" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0;"
+ offset="1"
+ id="stop6843" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient5083">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0.12820514;"
+ offset="0"
+ id="stop5085" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop5087" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3306">
+ <stop
+ style="stop-color:#2e3436;stop-opacity:1;"
+ offset="0"
+ id="stop3308" />
+ <stop
+ style="stop-color:#6a6c67;stop-opacity:1;"
+ offset="1"
+ id="stop3310" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3298">
+ <stop
+ style="stop-color:#8c9d24;stop-opacity:1;"
+ offset="0"
+ id="stop3300" />
+ <stop
+ style="stop-color:#bed341;stop-opacity:1;"
+ offset="1"
+ id="stop3302" />
+ </linearGradient>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6839"
+ id="radialGradient6845"
+ cx="14.980188"
+ cy="24.437885"
+ fx="14.980188"
+ fy="24.437885"
+ r="10.15484"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3306"
+ id="linearGradient7738"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.990582,0,0,1.956825,2.169514,0.111554)"
+ x1="12.148149"
+ y1="18.03125"
+ x2="9.9537039"
+ y2="4.03125" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5083"
+ id="linearGradient7742"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.999449,0,0,1.932483,2.134045,0.270066)"
+ x1="6.7731481"
+ y1="11.25"
+ x2="6.7407408"
+ y2="5.0682869" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3281"
+ id="linearGradient3287"
+ x1="2.7307715"
+ y1="1.6338818"
+ x2="13.049995"
+ y2="14.486959"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3289"
+ id="linearGradient3295"
+ x1="3.371383"
+ y1="1.314895"
+ x2="12.589786"
+ y2="14.155007"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3297"
+ id="linearGradient3303"
+ x1="2.2912731"
+ y1="2.4371991"
+ x2="12.330816"
+ y2="14.125467"
+ gradientUnits="userSpaceOnUse" />
+ </defs>
+ <sodipodi:namedview
+ inkscape:window-height="714"
+ inkscape:window-width="1014"
+ inkscape:pageshadow="2"
+ inkscape:pageopacity="0.0"
+ borderopacity="1.0"
+ bordercolor="#666666"
+ pagecolor="#ffffff"
+ id="base"
+ showgrid="false"
+ fill="#3465a4"
+ showborder="false"
+ inkscape:zoom="1"
+ inkscape:cx="36.161682"
+ inkscape:cy="23.420561"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:current-layer="svg2" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1;fill:url(#radialGradient6845);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path5964"
+ sodipodi:cx="14.980188"
+ sodipodi:cy="24.437885"
+ sodipodi:rx="10.15484"
+ sodipodi:ry="10.15484"
+ d="M 25.135029,24.437885 A 10.15484,10.15484 0 1 1 25.134977,24.405482"
+ sodipodi:start="0"
+ sodipodi:end="6.2799944"
+ sodipodi:open="true"
+ transform="matrix(2.051199,0,0,0.608807,-6.897747,25.47255)" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1;fill:url(#linearGradient3303);fill-opacity:1.0;fill-rule:nonzero;stroke:url(#linearGradient3287);stroke-width:0.37600183;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path2396"
+ sodipodi:cx="7.7705202"
+ sodipodi:cy="7.8194256"
+ sodipodi:rx="7.6885095"
+ sodipodi:ry="7.7295151"
+ d="M 15.45903,7.8194256 A 7.6885095,7.7295151 0 1 1 15.458991,7.7947615"
+ sodipodi:start="0"
+ sodipodi:end="6.2799944"
+ sodipodi:open="true"
+ transform="matrix(2.666592,0,0,2.652552,3.27862,1.260023)" />
+ <path
+ transform="matrix(2.535942,0,0,2.522469,4.288207,2.275743)"
+ sodipodi:open="true"
+ sodipodi:end="6.2799944"
+ sodipodi:start="0"
+ d="M 15.45903,7.8194256 A 7.6885095,7.7295151 0 1 1 15.458991,7.7947615"
+ sodipodi:ry="7.7295151"
+ sodipodi:rx="7.6885095"
+ sodipodi:cy="7.8194256"
+ sodipodi:cx="7.7705202"
+ id="path3283"
+ style="opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient3295);stroke-width:0.39538249;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="arc" />
+ <path
+ id="path7736"
+ d="M 21.080049,8 L 21.080049,14.543129 L 16.29021,9.8956732 L 12.06022,14.053922 L 16.787857,18.701379 L 10.131844,18.701379 L 10.131844,24.571849 L 16.850061,24.571849 L 12.06022,29.280455 L 16.29021,33.438705 L 21.080049,28.7301 L 21.080049,35.39553 L 27.051797,35.39553 L 27.051797,28.7301 L 31.77943,33.438705 L 36.009418,29.280455 L 31.219579,24.571849 L 38,24.571849 L 38,18.701379 L 31.281785,18.701379 L 36.009418,14.053922 L 31.77943,9.8956732 L 27.051797,14.543129 L 27.051797,8 L 21.080049,8 z M 23.257248,15.827294 C 23.505421,15.796251 23.809218,15.827294 24.065922,15.827294 C 27.345091,15.827294 29.964999,18.413075 29.975465,21.636614 C 29.975465,24.866732 27.351765,27.507084 24.065922,27.507084 C 20.780079,27.507084 18.094175,24.866732 18.094175,21.636614 C 18.094174,18.658849 20.328807,16.193583 23.257248,15.827294 z "
+ style="opacity:1;fill:url(#linearGradient7738);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <path
+ id="path7740"
+ d="M 21.128819,8.06039 L 21.128819,14.522131 L 16.317642,9.9324832 L 12.068812,14.03901 L 16.817504,18.628659 L 10.131844,18.628659 L 10.131844,22.010504 C 12.983457,21.92907 15.635553,21.59813 18.129644,21.044263 C 18.357342,18.321118 20.535092,16.132273 23.315717,15.790324 C 23.346875,15.786492 23.407977,15.792419 23.440683,15.790324 C 23.657296,15.781469 23.91849,15.790324 24.127992,15.790324 C 25.70283,15.790324 27.131406,16.403207 28.189376,17.360466 C 28.203204,17.372979 28.238154,17.347826 28.251859,17.360466 C 30.661586,16.090491 32.883787,14.549219 35,12.951988 L 31.87586,9.9324832 L 27.127167,14.522131 L 27.127167,8.06039 L 21.128819,8.06039 z "
+ style="fill:url(#linearGradient7742);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+</svg>
diff --git a/gnome-2-22/data/icons/hicolor_apps_scalable_im-google-talk.svg b/gnome-2-22/data/icons/hicolor_apps_scalable_im-google-talk.svg
new file mode 100644
index 000000000..53d543309
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_apps_scalable_im-google-talk.svg
@@ -0,0 +1,301 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://web.resource.org/cc/"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ id="svg2417"
+ sodipodi:version="0.32"
+ inkscape:version="0.43"
+ width="48"
+ height="48"
+ version="1.0"
+ sodipodi:docbase="/home/vinicius/tango-icon-theme-code/protocols/scalable"
+ sodipodi:docname="google-talk.svg"
+ inkscape:export-filename="/home/vinicius/tango-icon-theme-code/protocols/48x48/google-talk.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90">
+ <metadata
+ id="metadata2422">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title>Google Talk Icon</dc:title>
+ <dc:date>2006-12-03</dc:date>
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Vinicius Scopel Depizzol</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ <dc:source>vdepizzol@gmail.com</dc:source>
+ <dc:subject>
+ <rdf:Bag>
+ <rdf:li>Google Talk</rdf:li>
+ <rdf:li>GTalk</rdf:li>
+ <rdf:li>VOIP</rdf:li>
+ <rdf:li>Protocol</rdf:li>
+ </rdf:Bag>
+ </dc:subject>
+ <cc:license
+ rdf:resource="http://creativecommons.org/licenses/GPL/2.0/" />
+ </cc:Work>
+ <cc:License
+ rdf:about="http://creativecommons.org/licenses/GPL/2.0/">
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/Reproduction" />
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/Distribution" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/Notice" />
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/ShareAlike" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/SourceCode" />
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <defs
+ id="defs2420">
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient6020">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop6022" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop6024" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3299">
+ <stop
+ style="stop-color:#000000;stop-opacity:0.11764706;"
+ offset="0"
+ id="stop3301" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0;"
+ offset="1"
+ id="stop3303" />
+ </linearGradient>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3299"
+ id="radialGradient3305"
+ cx="15.993708"
+ cy="26.722889"
+ fx="15.993708"
+ fy="26.722889"
+ r="15.912521"
+ gradientTransform="matrix(1,0,0,0.295918,-3.769888e-16,18.8151)"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient3527">
+ <stop
+ style="stop-color:#90ba1f;stop-opacity:1;"
+ offset="0"
+ id="stop3529" />
+ <stop
+ style="stop-color:#638205;stop-opacity:1;"
+ offset="1"
+ id="stop3531" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3518">
+ <stop
+ style="stop-color:#e7d000;stop-opacity:1;"
+ offset="0"
+ id="stop3520" />
+ <stop
+ style="stop-color:#c4a000;stop-opacity:1;"
+ offset="1"
+ id="stop3522" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3486">
+ <stop
+ style="stop-color:#ef2929;stop-opacity:1;"
+ offset="0"
+ id="stop3488" />
+ <stop
+ style="stop-color:#cc0000;stop-opacity:1;"
+ offset="1"
+ id="stop3490" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3510">
+ <stop
+ style="stop-color:#3465a4;stop-opacity:1;"
+ offset="0"
+ id="stop3512" />
+ <stop
+ style="stop-color:#204a87;stop-opacity:1;"
+ offset="1"
+ id="stop3514" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3286">
+ <stop
+ style="stop-color:#d1d1d1;stop-opacity:1;"
+ offset="0"
+ id="stop3288" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="1"
+ id="stop3290" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3527"
+ id="linearGradient4249"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.465389,0,0,2.513895,-105.5963,47.11115)"
+ x1="55.483334"
+ y1="-14.40625"
+ x2="55.483334"
+ y2="-7.9999866" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3518"
+ id="linearGradient4252"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.901968,0,0,2.518653,-127.7063,47.25387)"
+ x1="53.162479"
+ y1="-14.322747"
+ x2="53.162479"
+ y2="-9.9868765" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3486"
+ id="linearGradient4255"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.48585,0,0,2.48585,-103.0483,47.16833)"
+ x1="49.45462"
+ y1="-12.934268"
+ x2="49.45462"
+ y2="-8.0529032" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3510"
+ id="linearGradient4258"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.48585,0,0,2.48585,-100.3774,47.19573)"
+ x1="45.5"
+ y1="-14"
+ x2="45.5"
+ y2="-8.1156492" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3286"
+ id="linearGradient4262"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.99378,0,0,2.99378,9.552849e-2,-0.965622)"
+ x1="8"
+ y1="15"
+ x2="8"
+ y2="0.9916327" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6020"
+ id="linearGradient6026"
+ x1="11.466431"
+ y1="11.008693"
+ x2="11.466431"
+ y2="15.000141"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6020"
+ id="linearGradient6030"
+ gradientUnits="userSpaceOnUse"
+ x1="11.466431"
+ y1="11.008693"
+ x2="11.466431"
+ y2="15.000141"
+ gradientTransform="matrix(1,0,0,1.75,0,-1.25)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3286"
+ id="linearGradient6052"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.99378,0,0,2.99378,-59.90447,-0.965622)"
+ x1="8"
+ y1="15"
+ x2="8"
+ y2="0.9916327" />
+ </defs>
+ <sodipodi:namedview
+ inkscape:window-height="714"
+ inkscape:window-width="1014"
+ inkscape:pageshadow="2"
+ inkscape:pageopacity="0"
+ borderopacity="1"
+ bordercolor="#666666"
+ pagecolor="#ffffff"
+ id="base"
+ showgrid="false"
+ showguides="true"
+ inkscape:guide-bbox="true"
+ inkscape:zoom="1"
+ inkscape:cx="27.558407"
+ inkscape:cy="20.353863"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:current-layer="svg2417"
+ showborder="false"
+ inkscape:showpageshadow="false" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1;fill:url(#radialGradient3305);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path2424"
+ sodipodi:cx="15.993708"
+ sodipodi:cy="26.722889"
+ sodipodi:rx="15.912521"
+ sodipodi:ry="4.7088075"
+ d="M 31.906229,26.722889 A 15.912521,4.7088075 0 1 1 31.906148,26.707864"
+ sodipodi:start="0"
+ sodipodi:end="6.2799944"
+ sodipodi:open="true"
+ transform="matrix(1.45896,0,0,1.538545,0.742037,-1.869655)" />
+ <path
+ id="path3264"
+ d="M 21.80045,3.5250496 C 10.471905,4.3704822 1.592428,11.452408 1.592428,19.990844 C 1.592428,26.29506 6.3896918,31.807945 13.473996,34.585527 C 13.301077,37.113716 12.611393,40.274075 10.57377,42.444203 C 16.402876,42.263357 20.689781,39.28536 23.484452,36.456639 C 23.677129,36.460226 23.851935,36.456639 24.045787,36.456639 C 36.451938,36.456639 46.499142,29.098509 46.499142,19.990844 L 46.499142,19.897289 C 46.459634,10.808172 36.426737,3.5250496 24.045787,3.5250496 C 23.270404,3.5250496 22.555687,3.4686875 21.80045,3.5250496 z "
+ style="fill:url(#linearGradient4262);fill-opacity:1;fill-rule:nonzero;stroke:#797979;stroke-width:0.99999946;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <path
+ sodipodi:nodetypes="ccccccccccccccccc"
+ id="path3552"
+ d="M 14.063569,10.992619 L 10.975162,10.992619 L 10.975162,15.008301 L 9,15.008301 L 9,18.010155 L 10.975162,18.010155 L 10.975162,24.823081 C 10.975162,28.316382 16.413217,26.749332 16.906897,25.946127 L 16.765885,23.742745 C 16.14428,24.364355 14.063569,24.882059 14.063569,24.09267 L 14.063569,18.010155 L 16.089796,18.010155 L 16.089796,15.008301 L 14.063569,15.008301 L 14.063569,11.090553 L 14.063569,11.090553 L 14.063569,10.992619 z "
+ style="fill:url(#linearGradient4258);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ style="fill:url(#linearGradient4255);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 20.513467,15.031036 C 20.138171,15.089956 19.656414,15.165467 19.228078,15.318859 C 17.702481,15.865192 16.671718,16.778263 16.671718,16.778263 L 17.928902,19.157272 C 19.392632,18.022338 22.111019,16.595753 21.828421,20.24551 C 16.134551,19.714196 14.746648,23.348506 16.160515,25.369297 C 17.612211,27.444158 20.173876,27.641863 21.329645,26.185476 C 21.514145,25.952987 21.740964,25.678231 21.873764,25.369297 C 22.016347,25.75349 22.226874,26.072865 22.417883,26.321505 C 22.574471,26.517581 23.312178,27.152657 24.004897,27.137684 C 24.806193,27.120365 25.583813,26.58185 26,25.958759 C 25.645136,26.22137 24.252362,25.650216 24.231613,24.779835 L 24.231613,18.29575 C 24.142462,16.667478 22.425687,14.730825 20.513467,15.031036 z M 21.193616,23.328851 C 21.034551,24.122851 19.396586,24.681233 18.790423,24.326402 C 17.894487,23.801947 19.229645,22.393776 20.377437,22.376643 C 21.417389,22.361119 21.33274,22.634384 21.193616,23.328851 z "
+ id="path3554"
+ sodipodi:nodetypes="cscccsscsscccccsss" />
+ <path
+ id="path3558"
+ d="M 29,11 L 26.098032,11 L 26.098032,27.104637 L 29,27.104637 L 29,11 z "
+ style="fill:url(#linearGradient4252);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="ccccccccccccc"
+ id="path3560"
+ d="M 30,10.895363 L 30,19.851112 L 30,27 L 32.963722,27 L 32.963722,22.924045 L 36.561805,27.064163 L 38.705904,25.193137 L 34.676855,20.715264 L 38.705904,16.23739 L 36.754295,14.238037 L 32.968278,18.187047 C 32.968278,18.187047 32.963722,10.895363 32.963722,10.895363 L 30,10.895363 z "
+ style="fill:url(#linearGradient4249);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+ d="M 21.84375,4.03125 C 16.273135,4.4469767 11.295199,6.3799921 7.75,9.25 C 4.204801,12.120008 2.09375,15.904106 2.09375,20 C 2.093752,26.050562 6.709849,31.401486 13.65625,34.125 C 13.889662,34.247612 13.966606,34.430582 13.96875,34.625 C 13.8154,36.867085 13.233839,39.586592 11.6875,41.78125 C 16.756159,41.27394 20.580438,38.669315 23.125,36.09375 C 23.324492,35.928053 23.831229,35.96875 24.03125,35.96875 C 30.135475,35.96875 35.660367,34.1562 39.625,31.25 C 43.589633,28.3438 46,24.369973 46,20 L 46,19.90625 C 45.981043,15.545078 43.55655,11.604324 39.59375,8.71875 C 35.63095,5.8331761 30.123683,4.03125 24.03125,4.03125 C 23.381564,4.0312499 22.681539,3.982177 21.84375,4.03125 z M 24.03125,5.03125 C 29.927599,5.03125 35.264412,6.757119 39.03125,9.5 C 42.798088,12.242881 44.982638,15.911852 45,19.90625 L 45,20 C 45,24.002253 42.800008,27.674883 39.03125,30.4375 C 35.262492,33.200117 29.937773,34.96875 24.03125,34.96875 C 23.079654,34.946683 22.695929,35.117383 22.40625,35.40625 C 20.316957,37.520999 17.387178,39.593629 13.59375,40.46875 C 14.470139,38.520138 14.848653,36.443413 14.96875,34.6875 C 15.010593,33.903846 14.715478,33.607465 14.03125,33.1875 C 7.360656,30.572123 3.093751,25.543254 3.09375,20 C 3.09375,16.250753 5.042528,12.754344 8.40625,10.03125 C 11.769972,7.3081563 16.52295,5.4329977 21.90625,5.03125 C 22.667268,4.9737265 23.342191,5.0312499 24.03125,5.03125 z "
+ id="path6054"
+ sodipodi:nodetypes="csscccccsccssccsccscscccsscs" />
+</svg>
diff --git a/gnome-2-22/data/icons/hicolor_apps_scalable_im-irc.svg b/gnome-2-22/data/icons/hicolor_apps_scalable_im-irc.svg
new file mode 100644
index 000000000..a4ee660e3
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_apps_scalable_im-irc.svg
@@ -0,0 +1,785 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://web.resource.org/cc/"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="48"
+ height="48"
+ id="svg2"
+ inkscape:label="Pozadí"
+ sodipodi:version="0.32"
+ inkscape:version="0.44+devel"
+ version="1.0"
+ sodipodi:docname="online.svg"
+ sodipodi:docbase="/home/cornelius/GFX/ikony/gajim/sources/iconsets/transports/irc/48x48"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape"
+ sodipodi:modified="true">
+ <defs
+ id="defs3">
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient5702">
+ <stop
+ style="stop-color:#000000;stop-opacity:1;"
+ offset="0"
+ id="stop5704" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0;"
+ offset="1"
+ id="stop5706" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient4726">
+ <stop
+ style="stop-color:#729fcf;stop-opacity:1;"
+ offset="0"
+ id="stop4728" />
+ <stop
+ style="stop-color:#3465a4;stop-opacity:1"
+ offset="1"
+ id="stop4730" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4726"
+ id="linearGradient4732"
+ x1="3.7946429"
+ y1="7.0267859"
+ x2="13.392858"
+ y2="20.10984"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.8668106,0,0,2.8602375,1.0644378,6.9881155e-2)" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5702"
+ id="radialGradient5708"
+ cx="15.625"
+ cy="29.767857"
+ fx="15.625"
+ fy="29.767857"
+ r="13.839286"
+ gradientTransform="matrix(1,0,0,7.0967742e-2,0,27.655299)"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ r="21.035482"
+ fy="14.618562"
+ fx="24.687721"
+ cy="14.618562"
+ cx="24.687721"
+ gradientTransform="matrix(1.0297263,0,0,1.1788768,1.0605466,-1.8584828)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient4947"
+ xlink:href="#linearGradient5816"
+ inkscape:collect="always" />
+ <radialGradient
+ r="19"
+ fy="23.537582"
+ fx="16.488304"
+ cy="23.537582"
+ cx="16.488304"
+ gradientTransform="matrix(1.451479,0,0,1.326922,19.216439,-40.879303)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient4944"
+ xlink:href="#linearGradient3103"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="42.285942"
+ x2="15.571428"
+ y1="29.99917"
+ x1="15.571428"
+ gradientTransform="matrix(0.721659,0,0,0.722208,31.336441,-26.878246)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4941"
+ xlink:href="#linearGradient3106"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="42.285942"
+ x2="15.571428"
+ y1="29.99917"
+ x1="15.571428"
+ gradientTransform="matrix(0.721659,0,0,0.722208,32.779758,-26.878246)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4938"
+ xlink:href="#linearGradient3106"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="42.405006"
+ x2="38.465416"
+ y1="2"
+ x1="16"
+ gradientTransform="matrix(0.909689,0,0,0.916448,27.52517,-27.353841)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4935"
+ xlink:href="#linearGradient3951"
+ inkscape:collect="always" />
+ <radialGradient
+ r="9"
+ fy="22.17857"
+ fx="21.142859"
+ cy="22.17857"
+ cx="21.142859"
+ gradientTransform="matrix(0.764705,0,0,0.71453,30.987315,-32.88594)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient4931"
+ xlink:href="#linearGradient3128"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="31.587952"
+ x2="32.927006"
+ y1="2"
+ x1="16"
+ gradientTransform="matrix(0.725295,0,0,0.682879,31.90823,-22.96952)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4927"
+ xlink:href="#linearGradient3951"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="38.499996"
+ x2="30.00001"
+ y1="31.785711"
+ x1="24.000008"
+ gradientTransform="matrix(0.514307,0,0,0.531053,37.022732,-26.679004)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4924"
+ xlink:href="#linearGradient3223"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="24.431168"
+ x2="27.055439"
+ y1="3.860764"
+ x1="17.725422"
+ gradientTransform="matrix(0.587733,0,0,0.453793,35.234662,-18.026032)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4921"
+ xlink:href="#linearGradient3951"
+ inkscape:collect="always" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient3106">
+ <stop
+ style="stop-color:black;stop-opacity:1;"
+ offset="0"
+ id="stop3108" />
+ <stop
+ style="stop-color:black;stop-opacity:0;"
+ offset="1"
+ id="stop3110" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient3121">
+ <stop
+ style="stop-color:black;stop-opacity:1;"
+ offset="0"
+ id="stop3123" />
+ <stop
+ style="stop-color:black;stop-opacity:0;"
+ offset="1"
+ id="stop3125" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient3103">
+ <stop
+ style="stop-color:#73d216;stop-opacity:1"
+ offset="0"
+ id="stop3105" />
+ <stop
+ style="stop-color:#4e9a06;stop-opacity:1"
+ offset="1"
+ id="stop3107" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient3223">
+ <stop
+ style="stop-color:#729fcf;stop-opacity:1;"
+ offset="0"
+ id="stop3225" />
+ <stop
+ style="stop-color:#396ea7;stop-opacity:1"
+ offset="1"
+ id="stop3227" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3128"
+ inkscape:collect="always">
+ <stop
+ id="stop3130"
+ offset="0"
+ style="stop-color:#fef291;stop-opacity:1" />
+ <stop
+ id="stop3132"
+ offset="1"
+ style="stop-color:#edd400;stop-opacity:1" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient3112">
+ <stop
+ style="stop-color:white;stop-opacity:1;"
+ offset="0"
+ id="stop3114" />
+ <stop
+ style="stop-color:white;stop-opacity:0;"
+ offset="1"
+ id="stop3116" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient3096">
+ <stop
+ style="stop-color:black;stop-opacity:1;"
+ offset="0"
+ id="stop3098" />
+ <stop
+ style="stop-color:black;stop-opacity:0;"
+ offset="1"
+ id="stop3100" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient3080">
+ <stop
+ style="stop-color:#ad7fa8;stop-opacity:1"
+ offset="0"
+ id="stop3082" />
+ <stop
+ style="stop-color:#75507b;stop-opacity:1"
+ offset="1"
+ id="stop3084" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3951"
+ id="linearGradient3957"
+ x1="16"
+ y1="2"
+ x2="32.927006"
+ y2="31.587952"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.725295,0,0,0.682879,-1.432029,1.826073)" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient3951">
+ <stop
+ style="stop-color:white;stop-opacity:1;"
+ offset="0"
+ id="stop3953" />
+ <stop
+ style="stop-color:white;stop-opacity:0;"
+ offset="1"
+ id="stop3955" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3951"
+ id="linearGradient3092"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-1,3)"
+ x1="18.107143"
+ y1="53.76825"
+ x2="8.4828358"
+ y2="3.3976703" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3096"
+ id="radialGradient3102"
+ cx="23.081985"
+ cy="42.747208"
+ fx="23.081985"
+ fy="42.747208"
+ r="16.010918"
+ gradientTransform="matrix(1,0,0,0.119874,0,37.62294)"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3080"
+ id="radialGradient3104"
+ cx="17.309582"
+ cy="24.508204"
+ fx="17.309582"
+ fy="24.508204"
+ r="17.031612"
+ gradientTransform="matrix(2.13216,1.122823e-2,-1.1822e-2,2.244913,-18.75993,-30.16344)"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3112"
+ id="linearGradient3118"
+ x1="24.260687"
+ y1="2.5335035"
+ x2="24.832115"
+ y2="22.012075"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3128"
+ id="radialGradient3120"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.705883,0,0,1.667238,-17.94118,-19.21085)"
+ cx="21.142859"
+ cy="22.17857"
+ fx="21.142859"
+ fy="22.17857"
+ r="9" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3128"
+ id="radialGradient3221"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.764705,0,0,0.71453,-2.352944,-8.090347)"
+ cx="21.142859"
+ cy="22.17857"
+ fx="21.142859"
+ fy="22.17857"
+ r="9" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3223"
+ id="linearGradient3229"
+ x1="24.000008"
+ y1="31.785711"
+ x2="30.00001"
+ y2="38.499996"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.514307,0,0,0.531053,3.682473,-1.883411)" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3103"
+ id="radialGradient3109"
+ cx="15.269456"
+ cy="24.907877"
+ fx="15.269456"
+ fy="24.907877"
+ r="19"
+ gradientTransform="matrix(1.989063,0,0,1.427178,-17.28077,-7.054682)"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3951"
+ id="linearGradient3111"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.258493,0,0,1.2607,-6.203794,1.409664)"
+ x1="16"
+ y1="2"
+ x2="38.465416"
+ y2="42.405006" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3951"
+ id="linearGradient3115"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.909689,0,0,0.916448,-5.815089,-2.558248)"
+ x1="16"
+ y1="2"
+ x2="38.465416"
+ y2="42.405006" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3103"
+ id="radialGradient3117"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.451479,0,0,1.326922,-14.12382,-16.08371)"
+ cx="16.488304"
+ cy="23.537582"
+ fx="16.488304"
+ fy="23.537582"
+ r="19" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3121"
+ id="radialGradient3127"
+ cx="23.991123"
+ cy="44.514973"
+ fx="23.991123"
+ fy="44.514973"
+ r="20.85965"
+ gradientTransform="matrix(1,0,0,0.16707,0,37.07785)"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3106"
+ id="linearGradient3113"
+ x1="15.571428"
+ y1="29.99917"
+ x2="15.571428"
+ y2="42.285942"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.721659,0,0,0.722208,-0.560501,-2.082653)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3106"
+ id="linearGradient3116"
+ x1="15.571428"
+ y1="29.99917"
+ x2="15.571428"
+ y2="42.285942"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.721659,0,0,0.722208,-2.003818,-2.082653)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3951"
+ id="linearGradient3122"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.587733,0,0,0.453793,1.894403,6.769561)"
+ x1="17.725422"
+ y1="3.860764"
+ x2="27.055439"
+ y2="24.431168" />
+ <radialGradient
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.0297263,0,0,1.1788768,1.0605466,-1.8584828)"
+ r="21.035482"
+ fy="14.618562"
+ fx="24.687721"
+ cy="14.618562"
+ cx="24.687721"
+ id="radialGradient5822"
+ xlink:href="#linearGradient5816"
+ inkscape:collect="always" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3951"
+ id="linearGradient7539"
+ x1="16"
+ y1="2"
+ x2="32.927006"
+ y2="31.587952"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.993546,0,0,0.998054,0.154891,5.053486)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3951"
+ id="linearGradient7531"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-1,3)"
+ x1="18.107143"
+ y1="53.76825"
+ x2="8.4828358"
+ y2="3.3976703" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3096"
+ id="radialGradient7529"
+ cx="23.081985"
+ cy="42.747208"
+ fx="23.081985"
+ fy="42.747208"
+ r="16.010918"
+ gradientTransform="matrix(1,0,0,0.119874,0,37.62294)"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3080"
+ id="radialGradient7527"
+ cx="17.309582"
+ cy="24.508204"
+ fx="17.309582"
+ fy="24.508204"
+ r="17.031612"
+ gradientTransform="matrix(2.13216,1.122823e-2,-1.1822e-2,2.244913,-18.75993,-30.16344)"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3112"
+ id="linearGradient7525"
+ x1="24.260687"
+ y1="2.5335035"
+ x2="24.832115"
+ y2="22.012075"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3128"
+ id="radialGradient7523"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.705883,0,0,1.667238,-17.94118,-19.21085)"
+ cx="21.142859"
+ cy="22.17857"
+ fx="21.142859"
+ fy="22.17857"
+ r="9" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3128"
+ id="radialGradient7521"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.999999,0,0,1.000342,1.223408e-6,-8.326495)"
+ cx="21.142859"
+ cy="22.17857"
+ fx="21.142859"
+ fy="22.17857"
+ r="9" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3223"
+ id="linearGradient7519"
+ x1="24.000008"
+ y1="31.785711"
+ x2="30.00001"
+ y2="38.499996"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.679906,0,0,0.709362,7.683475,1.608315)" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3103"
+ id="radialGradient7517"
+ cx="15.269456"
+ cy="24.907877"
+ fx="15.269456"
+ fy="24.907877"
+ r="19"
+ gradientTransform="matrix(1.989063,0,0,1.427178,-17.28077,-7.054682)"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3951"
+ id="linearGradient7515"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.258493,0,0,1.2607,-6.203794,1.409664)"
+ x1="16"
+ y1="2"
+ x2="38.465416"
+ y2="42.405006" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3951"
+ id="linearGradient7513"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.258493,0,0,1.260118,-6.203794,-0.58013)"
+ x1="16"
+ y1="2"
+ x2="38.465416"
+ y2="42.405006" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3103"
+ id="radialGradient7511"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.989063,0,0,1.76923,-17.28077,-17.61162)"
+ cx="16.488304"
+ cy="23.537582"
+ fx="16.488304"
+ fy="23.537582"
+ r="19" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3121"
+ id="radialGradient7509"
+ cx="23.991123"
+ cy="44.514973"
+ fx="23.991123"
+ fy="44.514973"
+ r="20.85965"
+ gradientTransform="matrix(1,0,0,0.16707,0,37.07785)"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3106"
+ id="linearGradient7507"
+ x1="15.571428"
+ y1="29.99917"
+ x2="15.571428"
+ y2="42.285942"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(1,0)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3106"
+ id="linearGradient7505"
+ x1="15.571428"
+ y1="29.99917"
+ x2="15.571428"
+ y2="42.285942"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-1,0)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3951"
+ id="linearGradient7503"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.993546,0,0,0.998054,0.154891,5.053486)"
+ x1="17.725422"
+ y1="3.860764"
+ x2="27.055439"
+ y2="24.431168" />
+ <linearGradient
+ id="linearGradient5816">
+ <stop
+ id="stop5818"
+ offset="0"
+ style="stop-color:#ffffff;stop-opacity:1" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0.39655173"
+ id="stop5856" />
+ <stop
+ id="stop5820"
+ offset="1"
+ style="stop-color:#eeeeec;stop-opacity:1" />
+ </linearGradient>
+ <radialGradient
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.309375,0,18.245309)"
+ r="14.288518"
+ fy="26.418547"
+ fx="15.538764"
+ cy="26.418547"
+ cx="15.538764"
+ id="radialGradient6773"
+ xlink:href="#linearGradient6767"
+ inkscape:collect="always" />
+ <radialGradient
+ gradientUnits="userSpaceOnUse"
+ r="6.1172719"
+ fy="6.093667"
+ fx="13.980121"
+ cy="6.093667"
+ cx="13.980121"
+ id="radialGradient6743"
+ xlink:href="#linearGradient6737"
+ inkscape:collect="always" />
+ <linearGradient
+ gradientTransform="translate(0,-1)"
+ gradientUnits="userSpaceOnUse"
+ y2="32.797932"
+ x2="21.490084"
+ y1="14.441401"
+ x1="13.751941"
+ id="linearGradient6733"
+ xlink:href="#linearGradient6725"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient6725"
+ inkscape:collect="always">
+ <stop
+ id="stop6727"
+ offset="0"
+ style="stop-color:#89afd7;stop-opacity:1" />
+ <stop
+ id="stop6729"
+ offset="1"
+ style="stop-color:#3465a4;stop-opacity:1" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient6737"
+ inkscape:collect="always">
+ <stop
+ id="stop6739"
+ offset="0"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ <stop
+ id="stop6741"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:0;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient6767"
+ inkscape:collect="always">
+ <stop
+ id="stop6769"
+ offset="0"
+ style="stop-color:#000000;stop-opacity:1;" />
+ <stop
+ id="stop6771"
+ offset="1"
+ style="stop-color:#000000;stop-opacity:0;" />
+ </linearGradient>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5816"
+ id="radialGradient4949"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.0297263,0,0,1.1788768,1.0605466,-1.8584828)"
+ cx="24.687721"
+ cy="14.618562"
+ fx="24.687721"
+ fy="14.618562"
+ r="21.035482" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5816"
+ id="radialGradient4957"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.0297263,0,0,1.1788768,1.0605466,-1.8584828)"
+ cx="24.687721"
+ cy="14.618562"
+ fx="24.687721"
+ fy="14.618562"
+ r="21.035482" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5816"
+ id="radialGradient4965"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.0297263,0,0,1.1788768,1.0605466,-1.8584828)"
+ cx="24.687721"
+ cy="14.618562"
+ fx="24.687721"
+ fy="14.618562"
+ r="21.035482" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="7.5424727"
+ inkscape:cx="8.4772054"
+ inkscape:cy="23.21386"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ width="48px"
+ height="48px"
+ showgrid="true"
+ inkscape:window-width="872"
+ inkscape:window-height="832"
+ inkscape:window-x="0"
+ inkscape:window-y="26" />
+ <metadata
+ id="metadata6">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Vrstva 1"
+ inkscape:groupmode="layer"
+ id="layer1">
+ <path
+ sodipodi:type="arc"
+ style="opacity:0.15283843;color:#000000;fill:url(#radialGradient5708);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.00000083;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="path4731"
+ sodipodi:cx="15.625"
+ sodipodi:cy="29.767857"
+ sodipodi:rx="13.839286"
+ sodipodi:ry="0.98214287"
+ d="M 29.464286 29.767857 A 13.839286 0.98214287 0 1 1 1.7857141,29.767857 A 13.839286 0.98214287 0 1 1 29.464286 29.767857 z"
+ transform="matrix(1.5927335,0,0,2.1126475,-0.928756,-17.814065)" />
+ <path
+ style="color:#000000;fill:url(#linearGradient4732);fill-opacity:1;fill-rule:nonzero;stroke:#204a87;stroke-width:1.00000012;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="M 11.710498,1.5000001 L 11.335402,7.5101883 L 4.5662103,7.5101883 L 3.5695431,16.50653 L 10.772758,16.50653 L 9.6988854,30.506095 L 3.4468149,30.506095 L 2.5909602,38.50606 L 9.1779384,38.50606 L 8.7097247,44.489767 L 17.934439,44.489767 L 18.402655,38.50606 L 26.102306,38.50606 L 25.634091,44.499999 L 36.497679,44.499999 L 36.965895,38.50606 L 42.592344,38.50606 L 43.496352,30.506095 L 37.48684,30.506095 L 38.560714,16.50653 L 44.535561,16.50653 L 45.500001,7.5101883 L 39.123357,7.5101883 L 39.498452,1.5000001 L 28.634867,1.5000001 L 28.25977,7.5101883 L 20.560118,7.5101883 L 20.935214,1.5000001 L 11.710498,1.5000001 z M 19.997472,16.50653 L 27.697124,16.50653 L 26.623253,30.506095 L 18.923602,30.506095 L 19.997472,16.50653 z "
+ id="rect4737"
+ sodipodi:nodetypes="cccccccccccccccccccccccccccccccccc" />
+ <path
+ style="opacity:0.26200873;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1.00000012;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="M 12.662293,2.5180902 L 12.290327,8.5240213 L 5.4649928,8.5155529 L 4.6994408,15.495028 L 11.859082,15.495028 L 10.637401,31.50383 L 4.3121668,31.50383 L 3.7128969,37.498846 L 10.249669,37.498846 L 9.8112881,43.482303 L 17.022528,43.482303 L 17.491948,37.497074 L 27.200365,37.497074 L 26.738481,43.505582 L 35.56437,43.505582 L 36.026255,37.503304 L 41.699959,37.503304 L 42.364358,31.518008 L 36.406999,31.518008 L 37.604901,15.487939 L 43.665365,15.487939 L 44.377785,8.5141728 L 38.03532,8.5141728 L 38.44715,2.501924 L 29.615827,2.5368429 L 29.186539,8.4967134 L 19.465706,8.5141728 L 19.831433,2.5077438 L 12.662293,2.5180902 z M 19.077577,15.487939 L 28.791039,15.487939 L 27.56016,31.518008 L 17.840881,31.518008 L 19.077577,15.487939 z "
+ id="rect5703"
+ sodipodi:nodetypes="cccccccccccccccccccccccccccccccccc" />
+ </g>
+</svg>
diff --git a/gnome-2-22/data/icons/hicolor_apps_scalable_im-local-xmpp.svg b/gnome-2-22/data/icons/hicolor_apps_scalable_im-local-xmpp.svg
new file mode 100644
index 000000000..eb63de9c5
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_apps_scalable_im-local-xmpp.svg
@@ -0,0 +1,1723 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448) -->
+<svg:svg
+ xmlns:i="http://ns.adobe.com/AdobeIllustrator/10.0/"
+ xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
+ xmlns:xapMM="http://ns.adobe.com/xap/1.0/mm/"
+ xmlns:xapGImg="http://ns.adobe.com/xap/1.0/g/img/"
+ xmlns:xap="http://ns.adobe.com/xap/1.0/"
+ xmlns:x="adobe:ns:meta/"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://web.resource.org/cc/"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ version="1.0"
+ id="Calque_1"
+ width="48"
+ height="48"
+ viewBox="0 0 37.982 43.529"
+ overflow="visible"
+ enable-background="new 0 0 37.982 43.529"
+ xml:space="preserve"
+ sodipodi:version="0.32"
+ inkscape:version="0.45.1"
+ sodipodi:docname="hicolor_apps_scalable_im-local-xmpp.svg"
+ sodipodi:docbase="/home/zdra/programmation/empathy/data/icons"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape"
+ inkscape:export-filename="/home/zdra/utilities-avahi1.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90"><svg:defs
+ id="defs266" /><sodipodi:namedview
+ inkscape:window-height="725"
+ inkscape:window-width="1280"
+ inkscape:pageshadow="2"
+ inkscape:pageopacity="0.0"
+ borderopacity="1.0"
+ bordercolor="#666666"
+ pagecolor="#ffffff"
+ id="base"
+ inkscape:zoom="5.6568542"
+ inkscape:cx="23.353073"
+ inkscape:cy="29.563951"
+ inkscape:window-x="0"
+ inkscape:window-y="25"
+ inkscape:current-layer="g34"
+ width="48px"
+ height="48px" />
+<svg:metadata
+ id="metadata3"><xpacket />
+<x:xmpmeta
+ x:xmptk="3.1.1-111">
+
+<svg:metadata
+ id="metadata268"><rdf:RDF>
+ <rdf:Description
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ </rdf:Description>
+ <rdf:Description
+ rdf:about="">
+ <xap:CreatorTool>Adobe Illustrator CS2</xap:CreatorTool>
+ <xap:CreateDate>2005-11-18T17:59:54+01:00</xap:CreateDate>
+ <xap:ModifyDate>2005-11-18T17:59:54+01:00</xap:ModifyDate>
+ <xap:MetadataDate>2005-11-18T17:59:54+01:00</xap:MetadataDate>
+ <xap:Thumbnails>
+ <rdf:Alt>
+ <rdf:li
+ rdf:parseType="Resource">
+ <xapGImg:width>224</xapGImg:width>
+ <xapGImg:height>256</xapGImg:height>
+ <xapGImg:format>JPEG</xapGImg:format>
+ <xapGImg:image>/9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA
+AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK
+DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f
+Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgBAADgAwER
+AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA
+AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB
+UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE
+1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ
+qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy
+obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp
+0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo
++DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FVK7u7Wztp
+Lq7mS3toVLzTysERFHUszUAGAkDcpAt4d56/5ybsrSSSy8o2q3si1U6lchlhr/xXEOLv82K/IjNf
+m14G0XMx6QneTx7W/wA2fzF1mRmvNeukRj/c2zm2jp2HGHgD9NcwJ6nJLmXKjhgOiQDX9dEnqDUr
+oSUpz9aStBvSvLK+OXe2cI7mT+Xfzm/MfQpVaDWJryFftW18TcxkDt+8JdR/qMMuhqskerVLBCXR
+6Nc/85WXx0+NbXy/Euo8f30ss7NCGHdY1VWofd9vfMo9omthu0DRi+bDdW/5yG/M+/ZvSv4dPjbr
+HaQRgD5NKJXH/BZRLW5D1ptjpYBi99+Ynny+JN15h1Bwf2Bcyqnf9hWC9/DKTnmeZLaMUR0CTz6p
+qc9fXu5peQ4tzkdqjwNTlZkSyoIXAlUiuJ4STDI8ZbrwYrX7sQVpMrTzZ5qsyDaazfW5FADFczJ0
+2H2WGTGSQ5EsTCJ6Mh0386vzQ0+no6/PKo6rciO4r9Myu345bHVZB1azp4HozTRP+cpPNVuyrrGl
+2l/EOrwl7aT7/wB6n/CjL4doSHMW1S0cehZNrP8AzlNoo0cPo2lTvq77GK74rBGf5i0bFpB7fD9G
+XS7QFbDdrjoze52eP+YPzd/MTXZGN3rdxDCx2trRvq0QH8tIuJYf6xOYM9TklzLlRwQj0Y6Nf10S
+eoNRuhIRQuJpK0HavLKuOXe2cI7mR6F+cH5kaLIrW2uXM8Y6wXjfWkI8KTcyo/1SMthqckerXLBA
+9HtHkP8A5yV0bU5I7HzTAulXb0UX0RLWjE/zBqvF9JYeJGZ+HXg7S2cTJpCN47vaYpYpYklidZIp
+FDRyKQysrCoII2IIzYOGuxV2KuxV2KuxV2KuxVD6lqNlpthcahfTLb2dqjSzzOaKqKKk4JSAFlIB
+JoPkX81/zd1XztftbW7PaeXYW/0ayrQyFTtLPTqx7L0X51J0mp1JyH+i7TDgEB5sKsNJuLv4x8EP
++/D3+Q75rsucQ97m48Jl7kyfT9Nsouco5U7vuSfYdMxhlnM0G844QG6U3V6stViiWOP2A5H6cy4Y
+65m3HnkvkFK3tri4f04I2kfwUVycpiIslrAtO7PybqEoBndYAe322/Db8cxJ62I5C2wYim9v5L01
+KGVpJT3qeI/Df8cx5ayZ5bMxjCPi8t6RGNrVD/rfF+uuUnPM9Sy4AiBpNgv2beMfJRkDOR6lNONh
+bf76T/gRgs96VCTTrU9YUP8AsRg45DqikJLo+nt1to/+BA/Vk46iY6lHCEDP5d01h8KFD4qx/jXL
+46uYYmAS6fyz19Gbf+Vx/Ef0zIjrO8MDjS260y9tqmSM8B+2u4/DMmGaMuRYGJCGRuLBqA07EVGW
+EWgGk4sbiyuKRvGiSdlIFD8sxMsJR3vZyscoy2pEy6LZyjZfTbxX+mVR1Eh5szgiUnvtMubQ1cco
+z0kHT6fDMvHmE/e42TEYvR/ye/ObUPKV5DpOrStceWZWoytVntSx/vIup4V3ZPpG/XZabVGBo/S4
+OfAJbjm+r7e4gubeO4t5FmgmUSRSoQysjCqspHUEZuQbdYQqYVdirsVdirsVdir5x/5yX/MCS4v4
+/JthKRbWoWfVSp+3MwDRRH2RaMfcjuuarX5rPAPi7DSYtuIvG9F0o3sxeQf6PGfi/wAo/wAv9c0u
+pz8Aoc3Z4MXEd+TIb24gsrb1GFFX4UQbVPYDNfjgZmnNnIRDEru7mupjJIf9VR0A8Bm2x4xEUHXT
+mZGynGk+WTKgub8+lABy9OtCR4sT9kZiZtXvww3KYw6lWufOeg6Yv1fT4frBX/fdEjr/AK5BJ+dM
+ycHYubL6sh4ftLj5NfCO0d0ub8ytS5fBaQBewPMn7wRmwHYGLrKX2ON/KU+4Iuy/M8g0vbEFe7wv
+Qj/Yt/zVlOXsDb0S+f6/2M4dp/zh8mV6Z5i0/VIy9k6uR9uM1Dr812zQarTZcBqYr7vm7PDlhkHp
+KMM8vgB9GYnG38Cm003t92HiXhUXnm9vuyQKOFQe5k7qPxyXCCiku1DW7GxTldNwr9lRux+S5laf
+R5MpqAtozZY4xcixu789AsRa2vw9nlbf/gV/rm8w9g7euXy/H6HWz7S/mhDL53vq/FbxFe4HIfxO
+XHsLH0lL7Gsdoz7gu/S2jX5pIhsLg9H+1ET70pT7spn2dmxfSeMfIt8NbCXP0lTmglgcK/fdWU1B
+HYqR1GY4kC5Kd6NqnqkW85/e/sOf2vY++YOowVuOTmYct7FOmhSVDHIoZGFGU98wxIg2HKMQRuxT
+V9MaxuKCphfeNj+IPyza4M3GPN12bFwHye+f84z/AJgS3EM/k7UJSz26m40lmNT6df3sP+xJ5L7c
+uwzd6DNfoPwdVq8X8Qe9ZsnCdirsVdirsVUL68hsrG4vZzSC2ieaU+CRqWb8BgJoWkCy+DdY1S71
+fVrzU7o8rq+mknl7/FIxYgewrQZzc5WSS7qMaFBl9hZraWUcPQqtXPix3Y5ocuTjkS7jHDhjTE9Y
+1A3l2Sp/cx/DEPbufpzbafFwR83XZsnFLyTXy3oy0F9cgU6wq3QAftn+GYur1B+iP48lhHqUq1PU
+dU8z6vHo2kKzxSPwijXb1COrueyild+2+b7Q6LHpMfiZPq6+XkHVajPLNLgjy+96/wCR/wAiNDs4
+Y59aUajemhZWr6KnwVP2vm33DNTqu2smQ1A8Eft+fT4ORj0kID1eqX2PTrXydodvEI4bCCNB0VY1
+A+6ma05SdySfi2eJXJKPMH5V+TtXhdbvS4RI1f38SiOUHx5pQ5kYdblxn0yP6PkxkIT5gPBPzA/L
+DWvI9yuraZO8+lhwFuRtLCWNAsoGxB6cuh6EePRaTXY9VE48gF93Q+5wsmGWI8cDsnHlXXYtb0/1
+CAl3DRbmMdKnow9mzlu09AdNkrnA8j+j4O70epGWN/xDmmzxZrhJyqQ8kWWAopIvMmrxaTZ+oQGn
+kJWCM9z3J9hmz7O0Z1E6/hHMuJq9QMUb69EB5B/LXWfO922o30zwaWHpJc0q8pB3SEHYAdK9B750
+uq1uPSR8OA9Xd3e902LDLMeKR2e/eXfyq8naPEi2umRNKtK3EyiWUnx5vUj6M5zNrsuT6pH7h8g5
+sYwhyATu48n6JPEY5bCB0PVWjUg/RTMbxSNwT82XiPNvO/5DaBfQST6Mg02+FSoSvosfBo+gH+rT
+6c2Ol7Zy4j6jxx+35/rap6aGTl6T9jwuWLUNE1CXRdZjaIRtRlO5jJ6SIe6n26jN9mxQ1EPFxfV9
+/kfxs4uLLLFLhlyVJEkgmKk0dDUMPvBBzUg2HZsv0e9F7aK5/vU+GUe47/Tmo1GPglXR2eGfFG1+
+sWQutPlSlXQc4/mu/wCPTBp8nDMJzQ4olI/JevyeXvNmlayjFRZXMcktO8RPGVf9lGWGb7FPhkC6
+jJHiiQ+6wQQCDUHcEZ0TpXYq7FXYq7FWM/mdI8f5d+ZGQ0b9HXK19miZT+BynUf3cvc2YfrHvfFG
+nqGv7ZW6NKgPyLDObymoH3F3eMeoe9lnmK6+raa4U0eY+mvyP2vwzVaSHFP3Ox1M+GPvYtplmby9
+jg/YJq5/yRuc2mbJwRJdbEWWQeb702OgtHF8LXBEC07KQS3/AAoplHY2DxM9n+Hf49GGuycOOh12
+Zn+QnlSKDSn12ZAbm+YxwMRusMbUNP8AWcb/ACGT9odYTMYxyj9/9jToMXDDi6n7mY/mL5+u9BMO
+i6JxGrzxiae5ZQ4toSSqkKQVaRyp4g7ACpHTMfsnQjKDkyfQPtLXqMpuhzePaw2p3PO6vr+6uZ6b
+yzTSO3yFTsPYbZujq4Y/TGIA9zCOlMuav5L/ADa82eVr6Nb65m1XRCQs9ncOZHROnKB3JZSo/Zrx
+P4inJhxagVQjPoR+lZQlj8w+h9Rh0vXNEDgLdabqMAZaj4ZIZlqDvvupzm/Elin3SiftDl4yJDyL
+5c0+1n8p/mJLpEjExesbUk7co5aGFj96nOs7QiNVouMcwOL4jn+kOHpScOfh86+fJ6XJFnCCT0lI
+WWPLIliXnF/azeZvPkGkRsQhmW1DDfiqmsr09viP0Z3PZ0Rp9JxnmRxfq/Q87qicufh+H631Fo1p
+pWiaKKBbTTdPgLMf2Y4olqzH5AVOclLLLLPvlI/aXPyVEUOQeAedvzf80+aNQli0q5m0nQlJW3t4
+HMcsi9Oc8iGpLfyA8R036npcelxaaPqAnk+z4OvAlkPcEHobanBwubS/ura4AoJoZ5Ef3FQ248Qd
+sl+dhP0yiD8GZ0pHJ7L+XH5gXuszSaFrzK+qRxmWzvFAT6zGtA4ZAAokSoPw7Eb0FDmo7U0UccfE
+x/R1Hd+xlhyEGixb8/fKUN1oo1yFKXensokYdWgdqEH/AFWIb23yXs9rTHL4Z+mf3tmtx8WPi6x+
+549aE3WipMd5bRvRc9yh3Q/RWmbTWw8PPXSYv49f1o0k+LH7kx8tXZh1ARE/BOOJ/wBYbr/TNdrI
+XC+52OmnUq72Yhc1DsnnUoCyOB0BIH350I5OlPN94+WZZZvLekyygiWSzt2kDGpDNEpNSffOkx/S
+Pc6SfMplk2LsVdirsVS/zFpY1fy/qelGgF/az21T29aNkr/w2RnHiiR3somiC+D3Se0umSRTHcW7
+lXRhQq6GhBHsRnNSj0LuweoTbzLfpdfVDGaoY/Up4FjSh+XHMPR4jHivvcnU5OKqRHlK3HKecjfZ
+FP4n+GV6+XINeIKH5iBvqtj/AC83r86CmbH2d+qfw/S4PafKL3P8qvRHkjRjF9n6utf9avxdf8qu
+c726SM8/e5OD+6j7mBecubfmDrpmpz9S340r/d/VIeHX6a+9c6Hs6V6GBHn/ALouBX702kWtj/Rh
+TpyHL5b5r7PG7TEAxa/CemczMJNteoAp9F/lO8v/ACq7RBNXnwmC8uvD6xJw69uFKe2aLtnJ/hUg
+PL/chx9KPS8U/NoL/wArST0f70/VOVOvPan4Uzreyf8AEd+VScXU/wB/t5PQpkABJ2A755+Hpix3
+y7qp1bSEvGpzZ5FIGwornj/wtM2vaOlGnzGA5UPu/W4ulzeJDi97GvywC/8AK1x6n2xJeca9eXF6
+/hXOs13+ICv5sf0Okwf4wffL9L278z2uv+VZa6tpy9X0F5cK19L1U9Xp29PlX2zkux5j83AS7/0G
+vtcvWA8BfOGmBOAzodUTxFOlAplmhj9y1enLb7hmsmfWHLnTJPKJZfPmgGP+8+sS9OvD6rLz/wCF
+zN1cq0eS+4feHWTH7wU9D/M8wt5L1wy/Z+pzU/1uB4f8NTOc7FkTqIEfzh97mZf7uXuL5x8nwmaz
+1GI/ZcIF/wBajf2Z2PbcqljPv/Q4fZw2l8P0oeGVoZklX7UbBh8wa5iyjYpzImjbPNQvY7Wwkua/
+s/u/dj9nNHixmUxF2+TIIxthmj6Xc6tq9nplsK3F9PHbxd/ilYKCfvzfxjZADppSoW+9bW3jtraK
+2iFIoUWNAf5UFB+AzpAKdISqYVdirsVdirsVfMX/ADkP+Wdxpesy+bNNhLaVqL8tQCAn0blju7U6
+LKd6/wA1fEZqNbgo8Q5F2Oly2OE83i+YDlsu8qoBp1f5pGP6h/DNTrT6/g34+S3zvZNdaNVBV7dv
+Wp34gUb8DXMnsXOMeajylt+po12Lix7dN2X/AJEebEm0aTQpHAubBmkgU9Whkapp/quTX5jIe1Gj
+kJeJHlL7/wCxq7PyCUeE8x9zJvPvk671mWLWdJCtqkMfoz2zEILiIEsoDEhVdCx4k7GtCemaDsPt
+waYnFmvwpHn/ADT+o/2MtTpyTxR5vLtWa8hDW15aXFtNTeKaJ0b5io3+Y2zrRixZfVjnGQ8iGmOo
+MdiKb8q/lp5l8yXkbXdvLpukAhprudTG7p4Qo4BYt/NTiPwOv1va2DSRNEZMvSIN7/0iOVd3P72X
+ry7cg94ubyw0XSAoZbbTdOgCrX7McUS0A8dlGcdozm1Gb+dKR+0ucIRhHuAfOmiy3PnD8ypNWkU+
+isxu2r+xFCQIUP3Kuena+Q0mi4OtcPxPP9JdVpYnNqOLpd/Lk9I8y3ItdFv560McEhXt8XEhfxzi
+tDj49RCPfIO/1M+HHI+TCfyznrpN3bHrFMH+iRQP+NDm/wDaXHWWMu+NfI/tdb2TL0EdxSTVbi48
+r+fYdXhUlPWW6AH7SsaSpX3+IfTm37NkNTo+A8wOH9X6HC1cTiz8Xx/W+j7HULDWtIBBW507UISr
+D9mSKVaMp+YNDnm3aAzYMtj0yiftDtjGM43zBeF+a/yw8x+XL6R9Pt5dS0ZiWguIVMkiL14zIgqC
+v8wHE+3Qddo+2cGsiOKUcebqDsD5xJ7+7n97ruGeI98VPRXvJeNvbWlxcT02hihkdvpCg069TmXL
+Bjx+vJOMR3kgJOpMtgHqvkHybe6VcPreshU1F0MVpaAh/QjahcswqpkelPh2A2qanOT7c7bjnAw4
+P7scz/OP6h58z02bcGA3xS5pD+evm1LXQBokbj63qRBdB1WCNuRY/wCsyhR475ufZTRznPxZfTD7
+/wAfoY6/IIw4RzLzvyjZtb6UJHFHuGMn+x6L+qubHtjOJ5qHKO3x6p0OPhx33pLcrxuZV/ldh9xy
+yBsBtKte6lc3ixJIaRwqFRB02FKn3OQx4YwsjqznlMqvo9x/5xx/LK5a7XzpqsJS3jVl0aJxu7sC
+rT0/lUVVPE79hm30On34z8HXarN/CH0Tm0cB2KuxV2KuxV2KqV1a213bS2t1Ek9tMpSaGRQ6OrCh
+VlNQQcBF7FINPjX85PLGl+WvP+oaZpUTQWAWKaCJiWC+rGGYKW34hq0zRarGITIHJ22CZlGyoeWG
+H6NUeDsM0Gt+tzcfJNrkA8K7gggg5iwbQwe/sNU8s6tHrOkO0ccb84pF39MnYo47qa036jbOt0Ws
+x6vH4WX6vv8AMebpNTp5YZ8cOX3PWPJ3506DqMMcGruumX4oGLk+g58Vc/Z+Tfec5ftT2WmCZY/V
+H7f2/BzMOvhMVL0n7HoNv5i02aMSQ3kEkbdHSRGB+kHOVydkZomjE/IuWDE9Uq1z8wvK2kxM17qc
+Kuv+6I2EkpPhwTk2Zuj9ntRlO0TXyHzLXPPjhzLxTzr+Yes+drtNH0i3kj053HC3G8sxG4aUjYKv
+WnQdSfDv+zOyMOgh4kyOIdeg9zq8+plnPBAbM18meWIPLmlGIkSX1xR7uYdKjoi/5K1zmu1u0jqc
+ljaA5D9Pxd1otKMMa/iPNLvzIvxFoDW4Px3cixgd+Knmx/4UD6cyPZ3Bx6ni6QF/PZp7UycOKv5z
+Efy/uxb6rLbsaLcx/D7unxD/AIXlm+9osHFhEv5p+w/tp13ZeSshHeGSeadDi1ix9IkJcREtbyHs
+e4Ps2c92Zrjpsl84nmPx3O11emGWNdeiQeSfzC1fyXdNpmowvNpvOr29fjiJO7xE7EHrTofbOj7R
+7Lw6+HHAji7+/wB7psGpngPDIbfjk9t0H8xPK2rRI1nqUPNqfuJWEUoJ7cHofuzgNb7O58R+k18w
+7WGfHPkU5m8w6dFGZJbyGONd2dpFAHzJOa6PZOYmhE/IthMR1YF5u/Ory9psLxaXINUv9wgjJ9BT
+4tJ0Yf6lfozpuzPZTLIiWX0R+35frcTNroQHp9ReMoNU8zaw+p6rI0vquDLIdgabBEA6AdNs7HUZ
+8ekxeHj5jl5eZcHBhlmlxS5M1VQqhVFFAoAOwGcoTe5dyAwy8Nbuc+Mjf8SObjH9I9zjnm+hPyr/
+AOcetHksNO8xeZJ/r/1uGK7t9LQFYVWVBIonJ+JyA26igr/MM2+n0QoSlu6/NqjZAe9IiRoqIoRE
+AVVUUAA2AAGbJwm8VdirsVdirsVdirsVfLX/ADk/p5g8/Wl2B8F5p8ZLeLxySIR/wPHNPr41O/J2
+WkPp+LBvKktbWWPuj8voYD+mc9ro+oF2GMp7PvGp8D+vMGPNvDk4spVgGUihB3BBxNg2GdWkmoeQ
+tKu2Mlq7Wch6hRzj/wCBJFPoObbT9vZcYqY4x8j83X5ezYS3j6UrP5ZamWPC7gK9i3MH7gDmxHtJ
+i6xl9n63F/kmfeEdYflWSwa+vwF7pAu5H+u3T/gcxs/tOK/dw+f6h+tsx9kfzpfJnOiaJpGjQmOw
+gEbMKSSn4pG/1mO/0dM5rWa7NqDcz8OjtcGnhiFRCYTXcccbSSMEjQFnY7AAbknMSGMyIA3JbpSA
+Fl5R5l1t9Z1EyiotoqpbIf5e7H3bPRuy9ANNi4f4jvL8eTy+s1JyzvoOSWwtLbzJPCxSWMhkYdiM
+z8kBOJjLcFxoyMTY5h6BpurRajZrOu0g2lj/AJW7/R4ZwWs0UtPkMTy6HvD02n1Ayxsc+qE1bTLD
+UI+F1EHI+y42Zfkwyel1WTCbga+5c2CGQVIMUu/JQViba5+Hssg3/wCCH9M3+Ht3+fH5fj9LrJ9m
+fzT80EfKV4D8U0dPbkf4Zkfy1DpEtf8AJs+8I208s2cRDTMZ2HY/Cv3D+uYeftbJLaPp+9ycXZ8I
+7y3Tu1jUSIqgBV6AbAAZqckjRJc6qCYswVSx6AVP0ZjAIYQeUkhoKs52A3JJObsBxn3vo1j9Q0ex
+sf8Alkt4oP8AkWgXxPhnSxFAB0kjZtGZJDsVdirsVdirsVdirsVeG/8AOVGhtNoeja0i1+pTyW0x
+H8twoZSfYNDT6c13aENgXM0ctyHgnlm49O9aI9JV2+a7/qrnPayFxvudpjO7LPtxle5G2arkXIBU
+YnycgzCMikykhkio5cqITaISbIGLJUE2Q4Vtg/nXzL68h0u1f90h/wBKcftMP2Pkvf3zr+wezOAe
+NMbn6fd3/H7ve6PtHV2fDjy6sZiIzpXUqkhWm2KV+marJp12JV3ib4Zk8V/qO2YWu0Yz46/iHIt+
+m1BxSvp1Zj9YjmjWWNgyOKqw7g5xksZiTE7EPRxkJCxyQ0r5OIUoVzU5aELcKEVZJuz+GwyrIeiC
+t1ef0dPlNd3HBfm236sOnjcwwmdlH8sdDOuef9C07jyje7SWdf8AiqD97J/wiHN5p4cUwHEzSqJL
+7ezoHTuxV2KuxV2KuxV2KuxV2Ksc/MTywPM/kvVdGABnuIS1rXtPERJFv2q6gH2yrPj44ENmKfDI
+F8RxvLa3KsVKSwv8SMKEFTuCDnOTjYILuQWcW1wksSSoaq4BH05o5xo0XJBWyjhJUfZbcYY7hmCq
+RyZEhkiElysxZK6zZAxW0n81eYDpun8YmpdXFUhP8o/af6M2fZOg8fL6vojuf1OHrtT4cNvqLz2N
+ZWQyUJXuxzuaebVklpilcZdsVU+LyV4CtO2Kpn5c1YxS/UZT8DkmKvZu4+nNJ2vouIeLHmObsuz9
+RR4DyPJP5HznwHcKOTQ4AkgDqemKplFGI4wv3/PMaRssUh8x3fOZLZTtH8T/AOsen3DM/SQocTVk
+L2D/AJxb8rNLqGqeZ5k/dWyfUbMkbGSSjykHxVAo/wBlm97Px7mTrtZPYRfRmbVwHYq7FXYq7FXY
+q7FXYq7FXYq+Tf8AnIPyMfL3nFtUtY+Ol62WuEIHwpcV/fp9JPMfP2zS63Dwzsci7PTZOKNdQwry
+5qFK2jnxaL+I/jmk1eL+IOdjl0ZCwEicT9B98wOTcChgzKxVtiMsq2YKskuQMU2qrNkDFNsA85Xb
+y67IjH4YERFHzUOf+JZ2XYuIR04P84k/o/Q892jMnKR3I6azUWqxpsvAAH6OubVwUhYvGxVxRh1G
+KteocVTXTLduNWG7GtPbFUu1Y/V9TcxGjIVcU7NQH9eCURIEHkUgkGwy9JPURX6cgDT5jOIIo09R
+E2LbwJRdpB/uxh/qj+OVZJdEFfe3aWtu0z9tlXxY9BkccDI0xJpitrbXup6jFa28bT3t5KscMa7s
+8kjUVR8yc3MIcgHHJ6l9ueQvKdv5T8p6focJDvbR1uZgKepO55SP8uR29qZ0OHHwRAdNknxStkGW
+sHYq7FXYq7FXYq7FXYq7FXYqxz8wfJVj5x8sXWjXVEkcepZ3B/3VcIDwf5b0b2JyrNiE40WzFkMJ
+W+K9V0vU9D1e406/ia21CykMcsZ6qy9we4PUHuN85+cKJiXbxkCLDINK1JbuGvSZP7xf4j2zUZ8P
+AfJyIytGSIJB1o46HKQabAUNzZG4tscsq2VrxNg4VtjfmrRpbiT69bLzcKBNGOpA6MPHN72TrowH
+hz2HQur1+lMjxx+KXWGuoluttdqf3Y4pINzQdmHtnSOnUL+/s5ARGC57EilPvxVC2t1FG9XWo8R1
+xVM/09bQxn0UZ5KbctlHz74qhdP0661K6M0tfSLcpZDtX2XMDW62OKND63K02lOQ/wBFlwAAoOmc
+o9Aibe1Jo7ig7L45XOfcglFO6IhdyFVRUk9ABlQFoYrquoteT/DtCm0a/wATm0wYeAebRKVvdP8A
+nG/8s3Df411WKgo0ejRONzX4XuKH6VT6T4ZutDg/jPwdfqsv8IfQebNwXYq7FXYq7FXYq7FXYq7F
+XYq7FUNqWp6fpdjNf6jcR2llbrzmuJWCoo9yclGJkaHNBNPkX87PzG8t+cvMMNxo1iY0tEML6m9V
+kuVr8NY6fCq78eXxb9umW6vsOU8fEP7wdP0e9On14jKj9LAbe4lglWWJuLL0PjnI5Md3GQd5GXUM
+o07VYbxKfYnH2o/4jNXmwGHub4ytGOiuKMK+B75SDTNDSQSruvxD8csEgU2gdRnljtXKEq4oK9xv
+l+KIMt2MzskE5juVIuI1d+0oFHH0jr9ObLFknj+k15dGiAxmV5IiY+X2hB/o62puzg+OzD8BmYO0
+MncHb4uyeys24nPGe4kfq/S4abag7u7bbACn4kYf5RydwZz7C7LgLOaR9xH6IlXt7a0gBIjEkh6N
+J8QA9l6ffmPk1WWfWh5Oo1GLTCX7qGw6yNk/oTnR2uZ5nSvJQtd9gN81uoAiLTjKexWqJu3xN+GY
+Mpktlqks0UMZklYIi9ScjGJJoIJYzqmrPdt6cdUtwdh3b3ObPBgENzzaZStLTMI2U0DEEHiehp45
+0PZPZR1EuKW2Mfb5D9LrdbrBjFD6vufWH5R/nh5e80W9tot7HFo+uRosUNovwW0wUUUW1fsmg/uz
+v4Vzd6nQHFvHeP3Osx5xLnzerZgtzsVdirsVdirsVdirsVdirsVY/wCd/PXl/wAm6O2p6zNxU1W2
+tkoZp3A+xGpIr7noO+XYcEskqiwnMRFl8h/mP+anmTz1f871zbaXExNnpcbH0ox0DOdvUen7RHyA
+GdDp9LHENufe4OTIZJJoflm91Rw1DFbd5D3+WZJ2aDJld95GtGslWyPp3MY2Zvsv7Hw+eaHtTsmO
+o9cPTk+/3/rc7Ra+WLaW8fuYbcW13ZXJinRoZ4zWh2I8CD/HOKzYZQkYzFF6PHkjMXE2E0sfMLKA
+l2OQ7Sr1+kZr8uk6xbxPvTqC5gnTnC4dfbt8xmFKBjzbAbdcW8U8TRyCoYUr3HyxhMxNhJDEryzm
+tJjHKP8AVbsw8Rm2x5BMWHHIpD5Yh2KrkRnYKoLMdgBuScBNJZRpFh9TtiZNpZN5PYDoPozV58vG
+duTdGNLb3XbSAFYj60ngv2R8z/TJY9NKXPYIMwx+8vrm7flM1QPsoNlHyGZ+PFGA2aibTnQvKs92
+VuLxTFa9VQ7O4/gPfOh7N7GllqeT0w+0/s8/k6rWdoiHphvL7ky1vyha3Kc7NRDOo2UfZNM7XHGM
+IiIFAPPGZJs7sIuLa6srj05VaKZDUHoajoQcspmDb6B/Jz/nIQloPL3nOetaR2etyH6FS6J/5Of8
+F/Nmn1nZ/wDFD5fqcvFn6F9EKysoZSCpFQRuCDmnct2KuxV2KuxV2KuxV2KsX/MP8w9D8j6G2o6i
+3qXElVsbFSBJPIB0Hgo/abt86A36fTyyyoMJzERZfGnnHzlrvm/W5dW1iYyTSGkMK1EUMdfhjiXs
+o+89TvnSYcMccai6+czI2Uw8s+T3uON3fqVh6pEep+eWE00mXczyKKKGIKoCRoPkAMr5sUFdamTV
+LfYd5P6ZZGHewMkqvLOG+j4XIMlPssT8S/I5Rq9Di1EamPj1Dbg1M8RuJY7feWLyGr237+PwGzj6
+O/0ZyGt9n82PfH64/b8uvw+Tv9N2tCe0/SfsSn9/bykfFFKuxG6sD+vNBOFbSDtYyBFhGwa9qEez
+MJR/ljf7xTMeWlgfJsEyiW8wQzR+nc2odT1+Kv6xlQ0pBuJTxoKVtIY1RJo/8kFWH475eBkHOix2
+Uq2APSVx4VVf4NkvX5LsrxaoLcH6rbpET1dqu/3nISwcX1G08VckPcX13cf30rMP5eg+4bZOGOMe
+QYkkorTdA1TUCDBCREf93P8ACn3nr9GbLSdm5s/0R27zsPx7nEz63Fi+o793VmWjeULCxKzT/wCk
+3I3BYfAp/wAlf4nOs0HYWLD6p+uf2D4fr+x0Gq7Unk2j6Y/asvLudL6Vo3ICsQBXbbbpm/oOtBRt
+pfxXA4n4Jf5ex+WVSjTMFD6xotpqUBSVaSD7Eg6g4g0kPPNT0u6064MM67fsP2YZJsBt7H+SH56T
+6NLbeWPM03PRmIisb9z8VqSaKkjHrD7/ALH+r01et0PF6o/V97lYc1bHk+oFZWUMpBUioI3BBzRu
+a7FXYq7FXYq7FUj85+cNH8o+X7jWtVekMI4xQr9uaUj4IkH8zfh1O2W4cMskuEMZzERZfFXnXznr
+XnDX59Z1WSssnwwQKT6cMQ+zHGD0A/E7nfOmw4Y448IddOZkbKaeU/KlSl9fLt1iiP6zlhNNEpWz
+Vnihj5MQqL/nQZCrQlN1eyXBoPhiHRfH3OWxjTWSpKuSQqquKqqpgVFzWFjfQqLqBJtqVYAkfI9R
+mNn0mLKKnESbcWeeP6SQk115F0mUkwPJbnsAeaj6G3/HNNm9nMEvpMo/aP1/a7HH2xlH1ASS6X8v
+7kf3N4j/AOuhX9RbNfP2ZmPpmD7xX63Lj23HrE/NCS+R9VQ09aA/7J6/8Qyr/Q1qP50Pmf8AiWz+
+WcXdL7P1tL5Mvv254l8ePI/rAyUfZnN1lH7f1BjLtrH0iUdY+SbRn43N05PYIoX8TyzMx+zER9cy
+fcK/W48+2pfwxA9/4Cf2XlrRbMho7ZXcftyfGf8Ahth9GbXT9kafFyjZ7zv+xwMuvzT5y28tk0zZ
+OG07BEZz0UEn6MKsVkJZix6k1P05NKkag1GxHQ4VTOx1LmRFOaP0V/H2PvlUodzIFfqem21/btDO
+ta/Zbup8RkAaZPOdV0u4065MMoqOqP2YZNsBt7n/AM4+/nK1vLb+TfMM1beQiPRr2Q7ox2W3difs
+npH4H4elKanX6O/XH4/rczBl6F9IZpXLdirsVdiqyeeGCGSed1ihiUvLI5CqqqKszE7AAYQLV8Zf
+nJ+Ztx538yM0DsuhWBaLTIDUchWjTsD+1JT6FoPHOk0emGKP9I83X5cnEfJJ/KHl363KL25X9wh/
+dqf2iO+ZZNONI9Ges8cMRZqKij/OmV82KT3N3JcyVOyD7K+GXRjTAlaowsVVRiqsoxVVUYFRlsfh
+K+HTAVVsVaJoMVQ7rU1PXFVJlwqpEUO2Ko22m9RN/tr1/rgVWxVB6pLwtio+1JsPl3whUiYZJKi2
+KqTYVTLT9R50gmPx9Ec9/Y5VOPVmCu1fS4NRtWhkFGG8b9wciCyec3lpPZ3LwSjjIh/zIyTYDb6v
+/IL81T5r0c6Jq03LzBpkY/eOatc24+ES+JdNlfx2Pc05/X6Xw5cQ+k/Y5+DJxCjzetZr292KuxV4
+X/zk1+YjafpcXk/T5eN3qKiXU2U7pbV+GOo7ysN/8keDZtezdPZ4z05ONqMlCnznomlyalfJCB+7
+G8reAzduDI09QtoYreBIowFjjFB26ZWTbWlV9em4k4qf3S/ZHifHLoxpgSpLkkKy4EKqYqrLgVVT
+FVeJuJrgVFYqtZh0xVSY4qothVSbFWoJfTmU9jsfkcVTPAqSahcetMaH4F2X+uSCoFsKVJsVUWwq
+pN1xSnGnX/rp6ch/ep3/AJh45VKNMgUu8z6OL22M8S/6RCKj/KXuMESyBpjHlnzFqflvXrPWtNf0
+7yykDqD9lh0ZHH8rrVTkcuMTiYnq3RlRsPuXyl5n07zP5dstc09q215Hy4E1aNxs8be6MCDnLZcR
+hIxPR2UZcQtN8rZIXVtUs9K0u71O9f07Syhe4nfqQkalmoO5oNslCJkQBzKCaFvg/wA1+Yr3zJ5j
+1DXL01uL6ZpOPUIvRIx7IgCj5Z1WLGIRER0dZKVm2X+U9LFlp6yOKTzfE3iB2GTkejSTZRuq3nBB
+Ah+J93Pt4fThhHqwJSxTljFVU4qrKcUKqnAqsrYqqq2BVRXxVEQzD7J+g4FWGTc4qtZ8KqbNiqkz
+YqpM2FUVe3tIhEh+JgOZ8PbAAqVOcklSY4qpMcVUmOFVFsUrEleKRZENGU1GJFqyCC4SeBZV6N1H
+ge4ygiizYV5o0wWl560YpDPU7dA3cZJnEvWP+cYfPj2GuT+UryT/AEPVKzWHI7JcxrVlFf8AfqL9
+6jxzV9p4LjxjmHM086NPp3NG5jxr/nJ/zW2meTLfQ4H43GtzUlod/q9vR3+9yg+Vc2XZmLinxfzX
+H1EqFd75m0Cx+uapDGR8Cnm/yGb9wJHZ6SXSKMsdkQV+gZW1sfkmaaVpG6sa/wBBl4FMFynChVU4
+FVVbFVVWwIVFbFVRXxVUD4FXB8VdzxVoviq0viqmz4VU2bFVJmwqpM2KVJjiqkxwqh7ib0l5kVUH
+4vYHvkZGkgWsLAioNQehyQVTY4VRek3fpz+ix+CXp7N2+/ITDIIvWbFb2wkip8YHKM/5QysFkGD6
+ff3mmajb39o5iu7OVJoHHVZI2DKfoIxlEEEFtB6vvHyp5gtfMXlvTtbtqCK/gSbiDXgxFHSvijgq
+flnKZcZhIxPR2cZWLfLn/OS+unUfzJksVasWkW0NsF7c5B67n5/vQD8s3vZsKxX3uHqJXJi3ke1p
+HPckbsQin2GZ0uTiS5p5rE/C3WMHeQ7/ACG+GA3YFKFbLWKqrYoXtKsaF3NFHU4CaSAutZmkjEjC
+nI1UeA7ZGJsWpCIV8khUD4oXh8Crw+Kt+pirfqYq0ZMVWl8VWl8VU2fCqmzYpU2bFVJmwqps2KqE
+oDqynoRQ/TgIsJCV21yYZDDIfhrQHwOUY58Jotso3ujGOZLUplypBBoRuDilklvOJ4ElH7Q3+ff8
+coIosmFeYrP6tqclBRJfjX6ev44WyL6N/wCcV/MrXnlbUdAlasmlTiaAH/fN1U8R8pEcn/WzR9qY
+6mJd7naaW1Pn78wdROpeevMF6TVZtQuTGT/IJWCDfwUDNvp48OOI8nFmbkWQeWYvS0iDxern6csk
+0Hmp6zLyugnZFH3nfLMY2YFBq2TQqq2BUvurk3Eywxn4K0HufHMacuI0G2IoWm8ZCqFHQCg+jMim
+lUD4qvD4qvD4quEmKt+pihvnirXqYq0XxSsL4qsL4qsZ8VWM2FVNmxVSZsUqbNhVKNSTjPyHRxX6
+RtmLmjRboHZfZ3XNfTY/Ev2T4jLMU72YzirMcuYJxoU1YZIj+waj5H/ayvIGQQHnG3BhguAN1JQn
+2O4yIZR5su/5xn1k2P5lx2Rakeq2s9vx7cowJ1P3QkfTmB2lC8V9xcvTmpPK7iZp55Jm2aVmdgPF
+jXM8Cmh6FpI46dbr4IMEubSlWoyVvpT7gfcAMtjyYlRVskhQvrrgnpqfifr7DKcs6FM4RtS0xeU/
+Lsgr9J2yrCLLKZ2ThXzKaV4fFV4fFVwfArYfFW+eKu54q7nirRfFVpfFVpfCqwviqxnxVTZsUqbN
+hVTZsVQWoryh5d0NfoyrMLDOB3SxXZGDA7jpmKDRbimcUgkQOO/Ue+Z0ZWLaCKTPRH43ZXsykfdQ
+4J8lCJ8yxh9Il/yCrfccqDIc0B+Vd81j+ZHlqdTxrqFvEzVpRZnETVPhxc5Tqo3il7nIxmpBjVxC
+0FxLCxq0TshPuppl4NsGfaW/LT7dh/IPwwS5tKUaieN9KPcH7wDlseTEqBlVFLE7AVOEmlASqSZp
+JC7dTmFI2bbwKTLTBxhL93P4DMjCNmqZ3RwfLmC8PgVcJMVXCTFC7nirueKt88Va54q0XxVoyYqs
+L4pWl8VWF8KrC+KrC+KqbNilSko6sp6EUxIsKEmYEEg9RscwKchE2MvF/TPRunzy7DKjTCYTvSa/
+X4/9lX/gTl8+TWE01wA6TdA/yfxyoMgxfyg7R+bNEkVS7Jf2rBB1YiZTQfPIZvoPuLdHmEZ+YumN
+pfnzzBYkUEV/cemP+K3kLx/8IwyOnlxY4nyTkFSKbeW5hLpMQ7x1Q/Rl0mg80PrcZW6V+zr+I2yc
+DsxKR381AIh33b+GV55dGcB1QYOY7YncHwRKvgBXM6IoOOeaqHwoXh8VXB8VbD4q3zxVvn74Fdz9
+8Vdz98Va54VaL4qtL4qtL4qtL4qsL4pWF8VWE4VdiqWXicZ28G3+/MPKKk3ROyiCQQR1HTK2TJdA
+Pq3KyDshJ+fTMsyuNtNUUf5hkCaRPX9oBR9JyMUhJPy+tnuvPnl23TYyanaCvWg9dCT26DKtQaxy
+9xb4D1B6B/zk75dOnef49VRKQazbJIW7GaD91IP+AEZ+nMPszJeOu5t1EalbA/KF4FeW1Y/a+JPm
+M2J5OJJPNWt/VtCw+1F8Q+XfGBosSwiaT1JGfxO3yyiUrNtoFBu3XlMi++/0b4wFkLI7JuGzOaFw
+fAq4Piq4PirYfFW+eKHc8Vb54q1zxV3PFWi+KVpfFVpfFVpfFVpJwq7FXYq7FUFqC/Yf5g5j5xyL
+ZBB5jtjJvKYpDMT1Ygr8h1/HLIS6MJBrzfchbaO3B3c8iPYdMtHJEeae/wDOPejNqf5paY5XlFp6
+TXs3sI0KIf8AkbImYXaE+HEfPZycAuT3v/nILyY3mTyDPcWyF9R0Zje24HVo1FJ0/wCRfxe5UZqt
+Bm4MlHlLZys8Li+QrO5e2uY506oQfozow68i2cTXscmm+vGdpQAPmeuVZdgwiN2H31sYZagfu23X
+29soibbS6wWsxP8AKMvwjdrnyTHMtqdirsVdU4q3yOBW+eKu54q7nirueKtc8VdyOFWqnFXYq7FX
+Yq7FXYq7FUPerW3J/lIP8MqzD0s4c0FbwNNKEX/ZHwGYZNNrJ9IT05Sw+GKNDzPgP8xjislE+THd
+bvjeX7uPsL8Kj2GZZREPon/nFbym1roupeZ50o+oOLSzJG/owGsjD2aQ8f8AYZo+1MtyEO5ztNHa
+3u5AIIIqDsQc1TkvjP8AO78uX8m+bZDaxFdD1MtcaawHwpU1kg/55k7f5JGdJotR4kN/qHN1+bHw
+nyYZYam8SC3kP7ktUex6ZfmFhqA3TOSOOWMq26t/nUZiskNb2MsAkenKOoAcfxzN05u2nIq5ktbs
+VdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVXfU5rmGQIvwgEs56Cm+V5T6SyjzXWdmEpFE
+OTt1PcnNfuS38m9Z1GO0tvqVu1ZG3lceOZmOHCGvmUJ5P8ral5p8x2Wh6etZ7uQK0lKrHGN5JW/y
+UXf8OuQzZRjiZFthHiNPufQdFsdD0Wy0iwThaWMKQQjuQgpybxZjuT45y2SZlIyPMuyiKFI/IJY7
+598kaV5z8uXGi6gOHP47W5ABeCZR8Ei/qI7ioy7BnOOXEGE4CQp8VebvKWs+VtbuNG1iAxXEJqjf
+sSxk/DJG3dW/sO4zpcWWOSNjk6+UTE0UDY6o1uRFPvF+y/hlU4UoZjorRS2bMpDqzkeI6DJ4uTVP
+m3caNbSEmMmJvbcfdmQJlhSBk0W7X7BVx7Gh/HJiYRSg2nXy9YW+jf8AVh4gtLDZ3Y/3RJ/wJ/pj
+xBDvqd3/AL4k/wCBb+mGwrvqd3/viT/gW/pjYV31O7/3xJ/wLf0xsK76nd/74k/4Fv6Y2Fd9Tu/9
+8Sf8C39MbCu+p3f++JP+Bb+mNhXfU7v/AHxJ/wAC39MbCu+p3f8AviT/AIFv6Y2Fd9Tu/wDfEn/A
+t/TGwrvqd3/viT/gW/pjYV31O7/3xJ/wLf0xsKuXT71ukLfSKfrwcQTSIj0W8b7XFB7mv6q4OMLS
+Ng0W3Qgykynw6D7sgZlNIudY1tnSqxJxK16AA7ZAi0jZjV/rVvbI0Fj8TnZ5z1+jwxhjEWW5Sazs
+7/U7+G0tIXur26cRwwxgs7uxoAAMMpACyzA6B9gfkv8AlPB5G0dri9Cy+Yr9R9dmWjCJK1EEbeA6
+se59gM53WarxZUPpDn4sXCPN6PmE3OxV2KsX/MD8uvLvnfSfqOqxlLiIE2V/GB60DGm6k9VNPiU7
+H50Iv0+oliNhhPGJDd8lfmF+U/mvyVcuNRtzcaWzUg1SEFoHBPwh/wDfb/5LfRXrnQYNVDKNufc4
+M8ZixTT766sCTbyFQTUqdxmRGNNUhaf2vnAUAuYd/wCZD/A4aDDhTOHzJpEg/vuB8HBGCkUUSmp6
+c/2bmL/ggP140qp9btD/ALuj/wCCH9caVv63a/7+j/4If1xpXfW7X/f0f/BD+uNK763a/wC/o/8A
+gh/XGld9btf9/R/8EP640rvrdr/v6P8A4If1xpXfW7X/AH9H/wAEP640rvrdr/v6P/gh/XGld9bt
+f9/R/wDBD+uNK763a/7+j/4If1xpXfW7X/f0f/BD+uNK763a/wC/o/8Agh/XGlWPqFgn2riMf7Mf
+1xpULN5h0iL/AHeHI7ICcaWktuvOCAEW0JJ7M/8AQYaCeEpHe6tfXh/fSHj2UbDDbIRTfyb+X3mv
+zhei20SyaVFNJrx6pbxf68pFP9iKsewyjNqIYxci2QgZcn1V+V35NeX/ACNbi5NL/X5FpPqLqBwq
+N0gU/YXxPVu+2w0Oq1ksu3KPc52PEI+96FmG2uxV2KuxV2KrJoIZ4XhnjWWGQFZI3AZWU7EEHYjC
+DSvKfN//ADjZ5E1t3uNL9TQbxySfqwD25J7+gxHH5IyjM/D2jkjsfUGiWnieWzybXf8AnGL8w7Bm
+bTWtdXi34iKUQy091m4KPoc5sIdp4zzsNEtPIcmFaj+V35i6eSLry5qACmheOB5kG9PtxB1/HMmO
+qxnlINZxyHRIp9G1eBuM9jcRNStHidTT6RlomD1Y0UJkkOxV2KuxV2KuxV2KuxV2KuxV2KuxVWt7
+K8uCBbwSTEniPTRm3PbYHfASBzWk7078uvPuo0+peXtQlU9JPq0qp/wbKF/HKpajHHnIMhjkejNt
+C/5xo/MnUSrX0dtpER+0bmYSPT2SD1d/YkZjT7SxDlu2x08i9V8pf84x+S9KZJ9cnl1y5U19Nv3F
+tX/jGhLt9L0PhmBl7SnL6fS3R04HPd65Y2Fjp9rHaWFvFaWsQpHBAixxqPZVAAzXSkSbLeBSvgS7
+FXYq/wD/2Q==</xapGImg:image>
+ </rdf:li>
+ </rdf:Alt>
+ </xap:Thumbnails>
+ </rdf:Description>
+ <rdf:Description
+ rdf:about="">
+ <xapMM:DocumentID>uuid:0A41642B59EE11DA9346CE657E5F1B06</xapMM:DocumentID>
+ <xapMM:InstanceID>uuid:0A41642C59EE11DA9346CE657E5F1B06</xapMM:InstanceID>
+ <xapMM:DerivedFrom
+ rdf:parseType="Resource">
+ <stRef:instanceID>uuid:c939d50e-5853-11da-9437-000a95dac8e4</stRef:instanceID>
+ <stRef:documentID>uuid:FDEFD071588811DA91E5E11227A4C4DF</stRef:documentID>
+ </xapMM:DerivedFrom>
+ </rdf:Description>
+ <cc:Work
+ rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title>AVAHI</dc:title><dc:creator><cc:Agent><dc:title>Inkscape</dc:title></cc:Agent></dc:creator><dc:publisher><cc:Agent><dc:title>izo@aucuneid.net</dc:title></cc:Agent></dc:publisher><dc:subject><rdf:Bag><rdf:li>avahi tango freedesktop</rdf:li></rdf:Bag></dc:subject><cc:license
+ rdf:resource="http://creativecommons.org/licenses/by-nc-sa/2.0/" /></cc:Work><cc:License
+ rdf:about="http://creativecommons.org/licenses/by-nc-sa/2.0/"><cc:permits
+ rdf:resource="http://web.resource.org/cc/Reproduction" /><cc:permits
+ rdf:resource="http://web.resource.org/cc/Distribution" /><cc:requires
+ rdf:resource="http://web.resource.org/cc/Notice" /><cc:requires
+ rdf:resource="http://web.resource.org/cc/Attribution" /><cc:prohibits
+ rdf:resource="http://web.resource.org/cc/CommercialUse" /><cc:permits
+ rdf:resource="http://web.resource.org/cc/DerivativeWorks" /><cc:requires
+ rdf:resource="http://web.resource.org/cc/ShareAlike" /></cc:License></rdf:RDF></svg:metadata></x:xmpmeta>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<xpacket />
+ </svg:metadata>
+<svg:switch
+ id="switch5">
+ <svg:foreignObject
+ requiredExtensions="http://ns.adobe.com/AdobeIllustrator/10.0/"
+ x="0"
+ y="0"
+ width="1"
+ height="1"
+ id="foreignObject7">
+ <i:pgfRef
+ xlink:href="#adobe_illustrator_pgf">
+ </i:pgfRef>
+ </svg:foreignObject>
+ <svg:g
+ i:extraneous="self"
+ id="g9">
+ <svg:g
+ id="g11">
+
+ <svg:radialGradient
+ id="path2329_1_"
+ cx="38.7061"
+ cy="-110.314"
+ r="18.9916"
+ gradientTransform="matrix(1,0,0,-0.6819,-21.9902,-50.4182)"
+ gradientUnits="userSpaceOnUse">
+ <svg:stop
+ offset="0"
+ style="stop-color:#729FCF"
+ id="stop14" />
+ <svg:stop
+ offset="1"
+ style="stop-color:#3465A4"
+ id="stop16" />
+ </svg:radialGradient>
+
+ <svg:path
+ id="path2329"
+ nodetypes="cczcczc"
+ d="M 12.021,42.829 L 26.871,42.829 C 31.079,42.829 35.244,41.287 36.769,36.89 C 38.221,32.715 37.018,24.763 27.612,18.328 L 10.042,18.328 C 0.638,24.268 -0.537,32.391 1.628,37.137 C 3.833,41.972 7.566,42.829 12.021,42.829 z "
+ style="fill:url(#path2329_1_);stroke:#204a87;stroke-width:1.39999998;stroke-linecap:round;stroke-linejoin:round" />
+ <svg:path
+ id="path3812"
+ nodetypes="cccc"
+ d="M 19.12,22.039 C 19.12,22.039 16.108,24.363 16.368,27.164 C 13.511,24.643 13.429,19.812 13.429,19.812 L 19.12,22.039 z "
+ style="fill:#729fcf" />
+
+ <svg:path
+ id="path3838"
+ nodetypes="cczcczc"
+ enable-background="new "
+ d="M 12.168,41.339 L 26.61,41.339 C 30.307,41.339 33.965,39.984 35.308,36.121 C 36.579,32.455 35.174,25.469 26.913,19.816 L 10.779,19.816 C 2.519,25.033 1.137,32.17 3.038,36.339 C 4.977,40.587 8.256,41.339 12.168,41.339 z "
+ style="opacity:0.21520003;fill:none;stroke:#ffffff;stroke-width:1.39999998;stroke-linecap:round;stroke-linejoin:round" />
+ <svg:path
+ id="path3810"
+ nodetypes="cccc"
+ d="M 20.491,22.039 C 20.491,22.039 23.5,24.363 23.24,27.164 C 26.097,24.643 26.179,19.812 26.179,19.812 L 20.491,22.039 z "
+ style="fill:#729fcf" />
+
+ <svg:linearGradient
+ id="path4368_1_"
+ gradientUnits="userSpaceOnUse"
+ x1="84.215797"
+ y1="80.128899"
+ x2="86.967102"
+ y2="79.569199"
+ gradientTransform="matrix(0.9834,0.1816,0.1816,-0.9834,-93.3736,97.3126)">
+ <svg:stop
+ offset="0"
+ style="stop-color:#000000"
+ id="stop23" />
+ <svg:stop
+ offset="1"
+ style="stop-color:#000000"
+ id="stop25" />
+ </svg:linearGradient>
+ <svg:path
+ id="path4368"
+ nodetypes="cccc"
+ enable-background="new "
+ d="M 5.982,41.38 C 4.236,40.617 3.454,38.779 3.454,38.779 C 4.632,33.082 8.662,28.914 8.662,28.914 C 8.662,28.914 5.471,37.891 5.982,41.38 z "
+ style="opacity:0.22780002;fill:url(#path4368_1_)" />
+
+ <svg:linearGradient
+ id="path4370_1_"
+ gradientUnits="userSpaceOnUse"
+ x1="-698.33789"
+ y1="-77.105003"
+ x2="-700.1275"
+ y2="-76.193901"
+ gradientTransform="matrix(-0.9777,0.2101,-0.2101,-0.9777,-667.8553,105.2513)">
+ <svg:stop
+ offset="0"
+ style="stop-color:#000000"
+ id="stop29" />
+ <svg:stop
+ offset="1"
+ style="stop-color:#000000"
+ id="stop31" />
+ </svg:linearGradient>
+ <svg:path
+ id="path4370"
+ nodetypes="cccc"
+ enable-background="new "
+ d="M 32.451,40.18 C 34.174,39.367 34.974,37.377 34.974,37.377 C 33.632,31.717 29.41,27.795 29.41,27.795 C 29.41,27.795 32.861,36.675 32.451,40.18 z "
+ style="opacity:0.22780002;fill:url(#path4370_1_)" />
+ </svg:g>
+
+ <namedview
+ showgrid="false"
+ pagecolor="#ffffff"
+ window-x="472"
+ bordercolor="#666666"
+ cy="24.622653"
+ zoom="9.8994949"
+ pageshadow="2"
+ cx="25.799661"
+ grid-bbox="true"
+ window-height="695"
+ document-units="px"
+ window-width="770"
+ showpageshadow="false"
+ borderopacity="0.17254902"
+ pageopacity="0.0"
+ window-y="167"
+ current-layer="layer1">
+ </namedview>
+ <svg:g
+ id="g34">
+
+ <svg:linearGradient
+ id="XMLID_1_"
+ gradientUnits="userSpaceOnUse"
+ x1="-147.7383"
+ y1="-97.484398"
+ x2="-137.5947"
+ y2="-97.484398"
+ gradientTransform="matrix(-0.7135,-0.7006,-0.7006,0.7135,-141.2909,-25.0322)">
+ <svg:stop
+ offset="0"
+ style="stop-color:#C17D11"
+ id="stop37" />
+ <svg:stop
+ offset="0.2735"
+ style="stop-color:#BD7A10"
+ id="stop39" />
+ <svg:stop
+ offset="0.5694"
+ style="stop-color:#B0700C"
+ id="stop41" />
+ <svg:stop
+ offset="0.8747"
+ style="stop-color:#9A6105"
+ id="stop43" />
+ <svg:stop
+ offset="1"
+ style="stop-color:#8F5902"
+ id="stop45" />
+ </svg:linearGradient>
+ <svg:path
+ d="M 25.182,1.811 C 23.599,3.424 23.934,6.324 25.93,8.286 C 27.929,10.25 30.832,10.531 32.418,8.918 C 34.003,7.305 33.668,4.406 31.669,2.443 C 29.672,0.48 26.768,0.197 25.182,1.811 z "
+ id="path47"
+ style="fill:url(#XMLID_1_);stroke:#6f4709;stroke-width:1.39999998" />
+
+ <svg:linearGradient
+ id="XMLID_2_"
+ gradientUnits="userSpaceOnUse"
+ x1="-49.540501"
+ y1="-1.0635"
+ x2="-39.397499"
+ y2="-1.0635"
+ gradientTransform="matrix(0.7135,-0.7006,0.7006,0.7135,41.6581,-25.0322)">
+ <svg:stop
+ offset="0"
+ style="stop-color:#C17D11"
+ id="stop50" />
+ <svg:stop
+ offset="0.2735"
+ style="stop-color:#BD7A10"
+ id="stop52" />
+ <svg:stop
+ offset="0.5694"
+ style="stop-color:#B0700C"
+ id="stop54" />
+ <svg:stop
+ offset="0.8747"
+ style="stop-color:#9A6105"
+ id="stop56" />
+ <svg:stop
+ offset="1"
+ style="stop-color:#8F5902"
+ id="stop58" />
+ </svg:linearGradient>
+ <svg:path
+ d="M 12.801,1.811 C 14.384,3.424 14.049,6.324 12.053,8.286 C 10.054,10.25 7.151,10.531 5.565,8.918 C 3.98,7.305 4.315,4.406 6.314,2.443 C 8.311,0.48 11.215,0.197 12.801,1.811 z "
+ id="path60"
+ style="fill:url(#XMLID_2_);stroke:#6f4709;stroke-width:1.39999998" />
+
+ <svg:radialGradient
+ id="path2327_1_"
+ cx="159.8369"
+ cy="-47.0518"
+ r="12.3745"
+ gradientTransform="matrix(0.788,0,0,-0.788,-109.7853,-28.1509)"
+ gradientUnits="userSpaceOnUse">
+ <svg:stop
+ offset="0"
+ style="stop-color:#E9B15E"
+ id="stop63" />
+ <svg:stop
+ offset="1"
+ style="stop-color:#966416"
+ id="stop65" />
+ </svg:radialGradient>
+
+ <svg:path
+ id="path2327"
+ type="arc"
+ ry="8.6620579"
+ cx="31.112698"
+ rx="8.6620579"
+ cy="19.008621"
+ d="M 30.77,9.777 C 30.773,16.473 25.348,21.907 18.649,21.909 C 11.951,21.912 6.52,16.486 6.516,9.788 C 6.516,9.785 6.516,9.78 6.516,9.777 C 6.513,3.078 11.938,0.704 18.637,0.7 C 25.334,0.696 30.767,3.067 30.77,9.763 C 30.77,9.769 30.77,9.771 30.77,9.777 z "
+ style="fill:url(#path2327_1_);stroke:#6f4709;stroke-width:1.39999998;stroke-linecap:round;stroke-linejoin:round" />
+
+ <svg:path
+ id="path3834"
+ type="arc"
+ ry="8.6620579"
+ cx="31.112698"
+ rx="8.6620579"
+ cy="19.008621"
+ enable-background="new "
+ d="M 29.279,9.777 C 29.282,15.65 24.521,20.415 18.648,20.418 C 12.774,20.422 8.01,15.661 8.006,9.788 C 8.006,9.782 8.006,9.78 8.006,9.777 C 8.003,3.901 12.764,2.356 18.637,2.353 C 24.511,2.35 29.277,3.889 29.28,9.766 C 29.279,9.769 29.279,9.771 29.279,9.777 z "
+ style="opacity:0.12660002;fill:none;stroke:#ffffff;stroke-width:1.59619999;stroke-linecap:round;stroke-linejoin:round" />
+ <svg:radialGradient
+ id="XMLID_3_"
+ cx="19.202101"
+ cy="17.4814"
+ r="1.9231"
+ gradientUnits="userSpaceOnUse">
+ <svg:stop
+ offset="0"
+ style="stop-color:#EF2929"
+ id="stop70" />
+ <svg:stop
+ offset="0.4553"
+ style="stop-color:#DD1414"
+ id="stop72" />
+ <svg:stop
+ offset="1"
+ style="stop-color:#CC0000"
+ id="stop74" />
+ </svg:radialGradient>
+ <svg:path
+ d="M 21.547,16.603 C 21.547,17.848 20.496,18.86 19.202,18.86 C 17.908,18.86 16.857,17.848 16.857,16.603 C 16.857,15.354 17.908,16.84 19.202,16.84 C 20.496,16.84 21.547,15.354 21.547,16.603 z "
+ id="path76"
+ style="fill:url(#XMLID_3_);stroke:#cc0000;stroke-width:0.16240001;stroke-linecap:round;stroke-linejoin:round" />
+ <svg:g
+ id="g78">
+ <svg:g
+ id="g80">
+ <svg:radialGradient
+ id="XMLID_4_"
+ cx="19.250999"
+ cy="12.7207"
+ r="4.7763"
+ gradientUnits="userSpaceOnUse">
+ <svg:stop
+ offset="0"
+ style="stop-color:#555753"
+ id="stop83" />
+ <svg:stop
+ offset="0.4309"
+ style="stop-color:#424645"
+ id="stop85" />
+ <svg:stop
+ offset="1"
+ style="stop-color:#2E3436"
+ id="stop87" />
+ </svg:radialGradient>
+ <svg:path
+ d="M 16.056,14.185 C 16.81,13.081 17.732,11.991 18.281,11.139 C 18.868,10.297 19.079,7.218 19.253,7.225 C 19.425,7.218 19.637,10.297 20.224,11.139 C 20.771,11.991 21.693,13.08 22.449,14.185 C 23.2,15.292 23.44,16.268 22.843,17.004 C 22.281,17.733 20.881,18.221 19.254,18.217 C 17.625,18.221 16.225,17.733 15.664,17.004 C 15.062,16.268 15.305,15.292 16.056,14.185 z "
+ id="path89"
+ style="fill:url(#XMLID_4_)" />
+ </svg:g>
+ <svg:g
+ id="g91">
+
+ <svg:linearGradient
+ id="XMLID_5_"
+ gradientUnits="userSpaceOnUse"
+ x1="35.154301"
+ y1="-75.928703"
+ x2="36.964802"
+ y2="-75.928703"
+ gradientTransform="matrix(-0.8133,-0.5818,-0.5818,0.8133,6.2482,98.8567)">
+ <svg:stop
+ offset="0"
+ style="stop-color:#EEEEEC"
+ id="stop94" />
+ <svg:stop
+ offset="0.173"
+ style="stop-color:#D2D3D2"
+ id="stop96" />
+ <svg:stop
+ offset="0.5467"
+ style="stop-color:#8B8E8F"
+ id="stop98" />
+ <svg:stop
+ offset="1"
+ style="stop-color:#2E3436"
+ id="stop100" />
+ </svg:linearGradient>
+ <svg:path
+ d="M 20.774,15.892 C 20.295,16.532 19.112,16.501 19.778,16.959 C 20.444,17.417 21.37,17.27 21.847,16.63 C 22.321,15.988 22.166,15.096 21.502,14.638 C 20.835,14.18 21.25,15.249 20.774,15.892 z "
+ id="path102"
+ style="opacity:0.3;fill:url(#XMLID_5_)" />
+
+ <svg:linearGradient
+ id="XMLID_6_"
+ gradientUnits="userSpaceOnUse"
+ x1="29.1709"
+ y1="-80.1465"
+ x2="30.9785"
+ y2="-80.1465"
+ gradientTransform="matrix(0.8133,-0.5818,0.5818,0.8133,39.576,98.8567)">
+ <svg:stop
+ offset="0"
+ style="stop-color:#EEEEEC"
+ id="stop105" />
+ <svg:stop
+ offset="0.173"
+ style="stop-color:#D2D3D2"
+ id="stop107" />
+ <svg:stop
+ offset="0.5467"
+ style="stop-color:#8B8E8F"
+ id="stop109" />
+ <svg:stop
+ offset="1"
+ style="stop-color:#2E3436"
+ id="stop111" />
+ </svg:linearGradient>
+ <svg:path
+ d="M 17.728,15.944 C 18.205,16.586 19.39,16.552 18.724,17.012 C 18.059,17.468 17.133,17.321 16.658,16.681 C 16.183,16.041 16.336,15.148 17,14.689 C 17.665,14.232 17.252,15.304 17.728,15.944 z "
+ id="path113"
+ style="opacity:0.3;fill:url(#XMLID_6_)" />
+ </svg:g>
+ </svg:g>
+ <svg:ellipse
+ cx="13.243"
+ cy="7.4829998"
+ rx="3.6570001"
+ ry="3.5209999"
+ id="ellipse115"
+ sodipodi:cx="13.243"
+ sodipodi:cy="7.4829998"
+ sodipodi:rx="3.6570001"
+ sodipodi:ry="3.5209999"
+ style="fill:#ffffff;stroke:#2e3436;stroke-width:1.39999998" />
+
+ <svg:radialGradient
+ id="XMLID_7_"
+ cx="9.3857002"
+ cy="22.077101"
+ r="3.7695"
+ gradientTransform="matrix(0.9241,0,0,0.8901,4.5696,-12.1687)"
+ gradientUnits="userSpaceOnUse">
+ <svg:stop
+ offset="0"
+ style="stop-color:#FCE94F"
+ id="stop118" />
+ <svg:stop
+ offset="0.3535"
+ style="stop-color:#FBE651"
+ id="stop120" />
+ <svg:stop
+ offset="0.6"
+ style="stop-color:#F7DD57"
+ id="stop122" />
+ <svg:stop
+ offset="0.8134"
+ style="stop-color:#F1CE61"
+ id="stop124" />
+ <svg:stop
+ offset="1"
+ style="stop-color:#E9B96E"
+ id="stop126" />
+ </svg:radialGradient>
+ <svg:ellipse
+ cx="13.243"
+ cy="7.4829998"
+ rx="3.483"
+ ry="3.355"
+ id="ellipse128"
+ sodipodi:cx="13.243"
+ sodipodi:cy="7.4829998"
+ sodipodi:rx="3.483"
+ sodipodi:ry="3.355"
+ style="fill:url(#XMLID_7_)" />
+
+ <svg:radialGradient
+ id="XMLID_8_"
+ cx="9.5366001"
+ cy="20.9419"
+ r="3.1631"
+ gradientTransform="matrix(0.9241,0,0,0.8901,4.5696,-12.1687)"
+ gradientUnits="userSpaceOnUse">
+ <svg:stop
+ offset="0"
+ style="stop-color:#EEEEEC"
+ id="stop131" />
+ <svg:stop
+ offset="0.2125"
+ style="stop-color:#EBEBE9"
+ id="stop133" />
+ <svg:stop
+ offset="0.3608"
+ style="stop-color:#E2E2E1"
+ id="stop135" />
+ <svg:stop
+ offset="0.4895"
+ style="stop-color:#D3D3D2"
+ id="stop137" />
+ <svg:stop
+ offset="0.6072"
+ style="stop-color:#BDBEBD"
+ id="stop139" />
+ <svg:stop
+ offset="0.7172"
+ style="stop-color:#A0A3A2"
+ id="stop141" />
+ <svg:stop
+ offset="0.8216"
+ style="stop-color:#7E8181"
+ id="stop143" />
+ <svg:stop
+ offset="0.9197"
+ style="stop-color:#555A5B"
+ id="stop145" />
+ <svg:stop
+ offset="1"
+ style="stop-color:#2E3436"
+ id="stop147" />
+ </svg:radialGradient>
+ <svg:path
+ d="M 9.898,7.684 C 9.898,5.83 11.459,4.33 13.382,4.33 C 15.305,4.33 16.865,5.831 16.865,7.684 C 16.865,9.537 15.304,8.055 13.382,8.055 C 11.459,8.055 9.898,9.536 9.898,7.684 z "
+ id="path149"
+ style="opacity:0.1566265;fill:url(#XMLID_8_)" />
+
+ <svg:radialGradient
+ id="XMLID_9_"
+ cx="9.3857002"
+ cy="22.077101"
+ r="2.1484001"
+ gradientTransform="matrix(0.9241,0,0,0.8901,4.5696,-12.1687)"
+ gradientUnits="userSpaceOnUse">
+ <svg:stop
+ offset="0"
+ style="stop-color:#8F5902"
+ id="stop152" />
+ <svg:stop
+ offset="0.273"
+ style="stop-color:#8C5804"
+ id="stop154" />
+ <svg:stop
+ offset="0.4635"
+ style="stop-color:#835408"
+ id="stop156" />
+ <svg:stop
+ offset="0.6288"
+ style="stop-color:#744F11"
+ id="stop158" />
+ <svg:stop
+ offset="0.7799"
+ style="stop-color:#5E461C"
+ id="stop160" />
+ <svg:stop
+ offset="0.9198"
+ style="stop-color:#423C2B"
+ id="stop162" />
+ <svg:stop
+ offset="1"
+ style="stop-color:#2E3436"
+ id="stop164" />
+ </svg:radialGradient>
+ <svg:ellipse
+ cx="13.243"
+ cy="7.4829998"
+ rx="1.985"
+ ry="1.911"
+ id="ellipse166"
+ sodipodi:cx="13.243"
+ sodipodi:cy="7.4829998"
+ sodipodi:rx="1.985"
+ sodipodi:ry="1.911"
+ style="fill:url(#XMLID_9_);stroke:#2e3436;stroke-width:0.1367" />
+ <svg:linearGradient
+ id="XMLID_10_"
+ gradientUnits="userSpaceOnUse"
+ x1="11.3965"
+ y1="7.4829001"
+ x2="13.6787"
+ y2="7.4829001">
+ <svg:stop
+ offset="0"
+ style="stop-color:#EEEEEC"
+ id="stop169" />
+ <svg:stop
+ offset="0.2125"
+ style="stop-color:#EBEBE9"
+ id="stop171" />
+ <svg:stop
+ offset="0.3608"
+ style="stop-color:#E2E2E1"
+ id="stop173" />
+ <svg:stop
+ offset="0.4895"
+ style="stop-color:#D3D3D2"
+ id="stop175" />
+ <svg:stop
+ offset="0.6072"
+ style="stop-color:#BDBEBD"
+ id="stop177" />
+ <svg:stop
+ offset="0.7172"
+ style="stop-color:#A0A3A2"
+ id="stop179" />
+ <svg:stop
+ offset="0.8216"
+ style="stop-color:#7E8181"
+ id="stop181" />
+ <svg:stop
+ offset="0.9197"
+ style="stop-color:#555A5B"
+ id="stop183" />
+ <svg:stop
+ offset="1"
+ style="stop-color:#2E3436"
+ id="stop185" />
+ </svg:linearGradient>
+ <svg:path
+ d="M 13.06,7.483 C 13.06,8.478 14.301,9.285 13.268,9.285 C 12.235,9.285 11.397,8.478 11.397,7.483 C 11.397,6.487 12.235,5.68 13.268,5.68 C 14.301,5.68 13.06,6.487 13.06,7.483 z "
+ id="path187"
+ style="opacity:0.15;fill:url(#XMLID_10_)" />
+ <svg:ellipse
+ cx="24.877001"
+ cy="7.4829998"
+ rx="3.658"
+ ry="3.5209999"
+ id="ellipse189"
+ sodipodi:cx="24.877001"
+ sodipodi:cy="7.4829998"
+ sodipodi:rx="3.658"
+ sodipodi:ry="3.5209999"
+ style="fill:#ffffff;stroke:#2e3436;stroke-width:1.39999998" />
+
+ <svg:radialGradient
+ id="XMLID_11_"
+ cx="-179.37601"
+ cy="22.077101"
+ r="3.77"
+ gradientTransform="matrix(-0.9241,0,0,0.8901,-140.8831,-12.1687)"
+ gradientUnits="userSpaceOnUse">
+ <svg:stop
+ offset="0"
+ style="stop-color:#FCE94F"
+ id="stop192" />
+ <svg:stop
+ offset="0.3535"
+ style="stop-color:#FBE651"
+ id="stop194" />
+ <svg:stop
+ offset="0.6"
+ style="stop-color:#F7DD57"
+ id="stop196" />
+ <svg:stop
+ offset="0.8134"
+ style="stop-color:#F1CE61"
+ id="stop198" />
+ <svg:stop
+ offset="1"
+ style="stop-color:#E9B96E"
+ id="stop200" />
+ </svg:radialGradient>
+ <svg:ellipse
+ cx="24.878"
+ cy="7.4829998"
+ rx="3.484"
+ ry="3.355"
+ id="ellipse202"
+ sodipodi:cx="24.878"
+ sodipodi:cy="7.4829998"
+ sodipodi:rx="3.484"
+ sodipodi:ry="3.355"
+ style="fill:url(#XMLID_11_)" />
+
+ <svg:radialGradient
+ id="XMLID_12_"
+ cx="-179.22459"
+ cy="20.9419"
+ r="3.1616001"
+ gradientTransform="matrix(-0.9241,0,0,0.8901,-140.8831,-12.1687)"
+ gradientUnits="userSpaceOnUse">
+ <svg:stop
+ offset="0"
+ style="stop-color:#EEEEEC"
+ id="stop205" />
+ <svg:stop
+ offset="0.2125"
+ style="stop-color:#EBEBE9"
+ id="stop207" />
+ <svg:stop
+ offset="0.3608"
+ style="stop-color:#E2E2E1"
+ id="stop209" />
+ <svg:stop
+ offset="0.4895"
+ style="stop-color:#D3D3D2"
+ id="stop211" />
+ <svg:stop
+ offset="0.6072"
+ style="stop-color:#BDBEBD"
+ id="stop213" />
+ <svg:stop
+ offset="0.7172"
+ style="stop-color:#A0A3A2"
+ id="stop215" />
+ <svg:stop
+ offset="0.8216"
+ style="stop-color:#7E8181"
+ id="stop217" />
+ <svg:stop
+ offset="0.9197"
+ style="stop-color:#555A5B"
+ id="stop219" />
+ <svg:stop
+ offset="1"
+ style="stop-color:#2E3436"
+ id="stop221" />
+ </svg:radialGradient>
+ <svg:path
+ d="M 28.22,7.684 C 28.22,5.83 26.662,4.33 24.741,4.33 C 22.816,4.33 21.258,5.831 21.258,7.684 C 21.258,9.537 22.817,8.055 24.741,8.055 C 26.662,8.055 28.22,9.536 28.22,7.684 z "
+ id="path223"
+ style="opacity:0.15;fill:url(#XMLID_12_)" />
+
+ <svg:radialGradient
+ id="XMLID_13_"
+ cx="-179.375"
+ cy="22.077101"
+ r="2.1484001"
+ gradientTransform="matrix(-0.9241,0,0,0.8901,-140.8831,-12.1687)"
+ gradientUnits="userSpaceOnUse">
+ <svg:stop
+ offset="0"
+ style="stop-color:#8F5902"
+ id="stop226" />
+ <svg:stop
+ offset="0.273"
+ style="stop-color:#8C5804"
+ id="stop228" />
+ <svg:stop
+ offset="0.4635"
+ style="stop-color:#835408"
+ id="stop230" />
+ <svg:stop
+ offset="0.6288"
+ style="stop-color:#744F11"
+ id="stop232" />
+ <svg:stop
+ offset="0.7799"
+ style="stop-color:#5E461C"
+ id="stop234" />
+ <svg:stop
+ offset="0.9198"
+ style="stop-color:#423C2B"
+ id="stop236" />
+ <svg:stop
+ offset="1"
+ style="stop-color:#2E3436"
+ id="stop238" />
+ </svg:radialGradient>
+ <svg:path
+ d="M 22.892,7.483 C 22.892,8.538 23.781,9.394 24.88,9.394 C 25.975,9.394 26.862,8.538 26.862,7.483 C 26.862,6.427 25.974,5.569 24.88,5.569 C 23.78,5.569 22.892,6.428 22.892,7.483 z "
+ id="path240"
+ style="fill:url(#XMLID_13_);stroke:#2e3436;stroke-width:0.1367" />
+
+ <svg:linearGradient
+ id="XMLID_14_"
+ gradientUnits="userSpaceOnUse"
+ x1="-183.62109"
+ y1="7.4829001"
+ x2="-181.33791"
+ y2="7.4829001"
+ gradientTransform="matrix(-1,0,0,1,-156.8955,0)">
+ <svg:stop
+ offset="0"
+ style="stop-color:#EEEEEC"
+ id="stop243" />
+ <svg:stop
+ offset="0.2125"
+ style="stop-color:#EBEBE9"
+ id="stop245" />
+ <svg:stop
+ offset="0.3608"
+ style="stop-color:#E2E2E1"
+ id="stop247" />
+ <svg:stop
+ offset="0.4895"
+ style="stop-color:#D3D3D2"
+ id="stop249" />
+ <svg:stop
+ offset="0.6072"
+ style="stop-color:#BDBEBD"
+ id="stop251" />
+ <svg:stop
+ offset="0.7172"
+ style="stop-color:#A0A3A2"
+ id="stop253" />
+ <svg:stop
+ offset="0.8216"
+ style="stop-color:#7E8181"
+ id="stop255" />
+ <svg:stop
+ offset="0.9197"
+ style="stop-color:#555A5B"
+ id="stop257" />
+ <svg:stop
+ offset="1"
+ style="stop-color:#2E3436"
+ id="stop259" />
+ </svg:linearGradient>
+ <svg:path
+ d="M 25.062,7.483 C 25.062,8.478 23.821,9.285 24.853,9.285 C 25.886,9.285 26.726,8.478 26.726,7.483 C 26.726,6.487 25.886,5.68 24.853,5.68 C 23.82,5.681 25.062,6.487 25.062,7.483 z "
+ id="path261"
+ style="opacity:0.15;fill:url(#XMLID_14_)" />
+ <svg:path
+ d="M 22.559,18.449 C 22.559,19.856 21.078,20.996 19.251,20.996 C 17.424,20.996 15.944,19.856 15.944,18.449 C 15.944,17.044 17.424,18.874 19.251,18.874 C 21.078,18.874 22.559,17.044 22.559,18.449 z "
+ id="path263"
+ style="fill:#6f4709" />
+ </svg:g>
+ </svg:g>
+</svg:switch>
+<i:pgf>
+
+ eJzs/eda68ySAAp/N6B7sAGDwUnBkWxZssnR5OggwOCEw7v3Oz/O9Zy5jrmxUx0ktWQlhz17Zr5F
+P4tlrFbHyl3VFQlfXCeKzV5dS0hJPsRFIqWBVhv1Bpsh/G3osN0eD0cD9FX0aj0kiEkeKhUP82+0
+4q02GLZ63U38KCnAwzJ6OyoIkpAQBD6fyPC5bEJM82IiI/FSosALwrrfc2im2hq1NWio9lftq5UQ
+krXWuj486E+pjeChkE8JQorPwIdNHg1M7o27zVb3U+79czMk5fmQmMuH0kIhJIkiPD5oXWlDe51k
+VsrmUMWklMmmoXY+mRUKArwiJPP5TA7eU3qNcUfrji4GvYY2HJZ67d5guBkq/V3rhk5rn/CkFnrQ
+2u3eP0Jyu9b44WCFMm/lVluDxejURqE8WrbioSC+yeNWu3k27tQ1WCWRz6CvpTfc4s0QmoJW0Wf0
+de7tsAPfXGujEQwX+kMzvKrIJdiRXgdXg+9wiT5daf3/+s8BVH8JoeVDjVa1Tr8N60QmWigkMyGJ
+59Fv8zOtCSPFtRKFZKHAi1JIyCQzfLoQyvM5/E0ok88m04WMQF4wF0T7q6X9YzN01utqZNbFwei6
+9R8wjzSsfJ58dzVua4ObbmsEk8iirwpkxqe9ptaGbTTeLLdreKK4COZvUqFaG3xqI9jCXns8wkCX
+5+kjWNGT2t8a2hWBdHDe17rV3i0eXUIAGMmKWWhM4AUxlM2KIfgLNZ8N5STch4ALrw8GvY5e1ltF
+YHABy3s+aH22upsSQEpCzOfJPlUGraa5TTkxlCe/8NiTeeZfQf9HBgnzHY20Lh00gEfplNluPnl6
+Dd2q3Wap10HLPUQgrkH/AIjt3id5ZnzGT+D1cZ9MAf/9BjtzMWh1UZvcGX6Sf7toj+FRZdAb9w+7
+Hz0uSpC9Oqg1oFrovP6tNUaApLfwX2/QGmKUs/8NGNlf92zvuoFmNwjJg/HwK1Tt9drQBuw5QENI
++yc86WqUzCA00ULN1sfHeKhBJcvf/4M6uqiNvgDFtW5zONmD8iwK2c9BrYn+DzW10AdqfEh6huqW
+58NAnaGGz7uk16Bz00Kd3qj1YUyuNhi1hqPW7zjY/P67uwSsD9CdvV1jUf8XdFiqtdst2Pf+V6sR
+oM+GWX2yX+tD/76BwAxgW/FD1Aj6E/4/qLV7AdDq7069124NO/CG8dkckfmVf1OKhpDBHIgjNKnd
+v7R2r99HjRufQ9oohDHmA7NSH8KD9vWj1W0CMbget0bMwvU6/d4QtWNOQIXeu0h6CZmvBcCRdq1b
+G4Tw95MzudCA1o5hzZt/d2sdvIPNNb3Dk9ZfCMeghtFN5g1IOEukEwlOEEJyl6HhFaAZLSD/IA3d
+dKFVrRn6pF8hZu/0JbAeMSQ3uSdum+NLcxTFVuA7tkEVirWCavmuTP9W4VNZ/0vgyV/Ai/EnDn3A
+RaC/yY+Ii4RLGkpWyEDJQsnR3zkhD6Ug5LldNNFM4JKbKFkoeaYU+SKHfkGRaWEnrdIJkB8Jxpk2
+xojGVYAiC0WhJKhQykIZpiJxoiimxYwIooiYh1IQZVGBooLgK0qSlJFyUlbKSwWpKJUkRSqn+bSY
+Tqcz6Wy6kC6m5bSCJ1rKTF3SlmL7nmMeSY5FpEWgBa+DXIaiQlHgXwkX9FOUixz8Ksh5OQclCyUD
+BUYvS1Bgzmgxi+WiCkWBIhfRT6GYg5IpSkWxKBTKMFEeplouzVHkycIxfxQnSsFS8kbJMSVLS4YU
+rpymRcJFpEXAhQB9GQr5UaCUcEELh1agoBbwnqIPAUveseSYklWzHPoFJUNLmhYJFxEXDJsYXcu4
+oOGhnxIU2FTYmwKUPJSckuWUrJJR0lAkBLOKAMQArbIKtUuw98VSAUq+lCtlMVxJGFx4DCIlDBZk
+ounytMUVjTE94Mh/uIhMkYySpkX/yeKSwyWPSwEXAD4EqBz8QrgBs8VLB7uMiAOiOAhxQV0E6R+3
+gX5y2TyUQrYIRc6WsrBKWRUmmg5F3uQBEGA+yadzfAZJ/bxQACIDH3I5MQPaFdIOCvm8KGXQB0GC
+b+GDxBfyfBrody6XzIh5pERAU6AJvC2iKXmIRlRIC0IeV4B24OtkFt4UaTP627TlZBoIMGhJoASC
+esSzo5mrGRiJrBg8UGdyQfke78j4eCvn8/oReQlDURaIfwHT+RJmWISqE3quc5s8pudFDki6jAmg
+ghCH4G0eMLIIyFwC7FHVMuFsmARIBHoR/GDKQWgJoS2E3pi0SCdZCldWmEL6AJgqAEqWAVUlQOkC
+9KZCLyK0noUWi+i98hQ/nO3PXe+1EpgiMkWiJY1LBrPQLGWneQ5z0QJd2iJZqzImgYT8FTEly1Ei
+lcZECZMjTIgIGUIkqIhJUA7hFUN/BER/OEqACAkq4T6AqebFHOBpBlitBAxXEHmgxCq8UMIcGaQF
+LD9k8A4jzi1gMUTF0g1mTTDoPBUJMhxMDU1SxNPn/5v6MKkHwiSCxXwSJAOkWuLvEHIh7BJgxfNp
+84MYSiPbTSbLkI152sD0QhBy2XQOvVJANZBhI8nThpBdA8okdZjmpflogbMQDFIwb9KCCZlGsRTC
+F/X/VcLLYVfwb1zQVoq4SOgfB/+lsWyGpDP0DyabzuN/eSytIXkNlRLALPqnAjVQDW5G2JVEWRU0
+wDHcifAmnSshnoTALu/0U7CV4kSRaSnhov8POMXlFVpU+FfGYgT8BsAsA7mjvxHhK4jwD3YO/0vD
+7zQudICFbCGH/+U59AuK/lPERQa5AP7hKZRVhzLHD+dfZYENEkJZniwCP1GclBhdkUlTeQUzF45q
+MZTH4KIzGYXqDjxuRcLgh9SHHBSiPsgglYMCgdkND+2LUpoDmQcJKTmsScgY1FUMwAhssf4g2IpF
+5TOYkkoLlgUZAR+L+CDfF7CMD1I+5yjmI2bJCvogIRqifh4L+1mQuBCiYJEfsQngjCqInCUOmkag
+UwBgQrCVwVAnEqjEU8gpDqVkK7JRirQUaMnTQn5AiOPgF0E7wOCchAtaZqTMEf0QCf2IWSFGBCIu
+mi8W+gpYAERtoJ8MogOw+iIHkiLaYB5rCSqWJkuwQEjIJIKw4PczCVS8rjJbClWxOZvuTdV1c1+N
+UjRKgRZd62W14SyHeBMthAjqHB8A0iriShlYAwkJgIjqZzCtR3CaRuwlo7MXKY2OEoALoL+dBMr5
+msGsCgugqFZGQj8m+4H6GRCQ0aOc3g00BIIreoRFeWgqW0gi5GVl7oW1OB+TEx2ZnGgReKmoKlMJ
+FREOEcgGIRl5sYjJhWqQCklKY1qRozYHWacWlO0JHOZ2hMXlbKytRJmaztJ0/UvXuFhNS9exihzD
+zvD3hL+VsKqF0KSMFS2RqlhEvTKVK6JgqQgXAUoFjKESDAzhLaAwxmT4ncc4XgS8R1RAAY24jMFb
+yIv4H0wXZpJBeAtEIE/5poy5YokyRJCrOcz9RDxYQBsBaJqE6VsGcD8PxK8IpBARRRXkdx7IqIhN
+K2mgDjlgsQUgeDKSS0E6VUFC50FslbAAm0HadA76KQJhLWFZV8XSvQAycBqr61mQjPOGXqFrFkSn
+wNPHmgSR/FWGcfnJ8qw8b5Xj04Ycn6FyvCHAc9T8pTBmLxHzsoyhHulsi4W7NIa7AoY7ZDOwsaic
+bvggaoCpBOgqQInaIIj4nzFEf95mdrAYHThsdVAxx5INO1QWsybClghLUig7IsyIsCLKiHQ2hLlQ
+gSNMiIDB5Nt+77twMSxzlTgsmRUB/vIAiVmAyTTAJoJSHjRGFfM0wr8KmFtlMYOSMGPiMUPSmRFh
+RDmO8CCCYCrLcwDZgEoBUqYxioqArjyWSBWMyjIgdQHLr1mM8Gks5gpYBCaicYkD8lAEQpHHZsos
+tJIGEiLClvLY5qXCFpdgq4tYP7JrSHYdCbQkjqhJNmuJTkGlNGICiBnQb1ijQtYwPcCsxRxhAhbT
+xBytYEZi8KIMMWBgXiSgL9F3uqkF6TMZpOTwqIGMF0+brZ25mIYjzxAtepGQWWxxazA3dSFCcZ7T
+P0yUgkspOhTZLBz9oNikYJVYdWgpm4W1eYgCU+gPh4mdXtJGyWL4z2BpXTf556nhn5QiLTKV5ElR
+OHIqQAqWt8pUfSB9kJ80Llkq6+cwF0eliAvh5VTR5Yhma9NkSQumEosK4fCm+lqifJ5yep3Xcwyz
+N1VWg81jps7aT1nLKbGaEsZewIwd2DpHObuKObvO2ylnx0J6HrN0lqmrlLELlKnjwetsnbNxdqLz
+qtQGhxk7VmRNFZZorkX8T8ZaKzJ/q9haxxcFDgOSiFcXLU8GaD4aUB7zAPQjYxUHmaxUbNzjsdCA
+xAZdaMhSfQRR/QJnyA8KLWUsqAuEh6uLLe4NOuiznkUl0gPnrp+46jPiRBFM1ZijH/SjNL1IFjqi
+HwOadCVrFJ1yZE3KoZ/FFfBXhBaQsznCg0qYG+lmXV3rLtFzO/S5TAgC4l4cPsYjdEA0KICAkVI0
+iECaqukZetJH1PUcRvi8ge74N0exXmEQnmjyPF4L3kD3NOa1GYzw+jEh4sMFjPAFHeU5w7SlG7N0
+AxZBehbZiUBvInvRQHQFoTn8AwmBo0aqNGObyuN/RYzoJSq9K1R2Nw9KJExQMlgeyZnHJByWVXRB
+XjEQnqB8mhaE9HmM9HkqycusNE/RHkv0nCHOZ7A4T9A+T01hMhXrKepjbVfAxNe0YiE6pJurAPE5
+dI5l4L5K0R4QP5jWPuWPe4OTyOJXBBaNnIodtZxRTEc0G0fPUouViW1Wrp61MOccw5DzBhumxyhF
+in863pnYJ2OcMzFQxRhYxliIGbFhDdNZMU8YsGDgYRqLnBIWPXUmnLVgIsuE7QwYoyKHZVmFsF+M
+kYKBk6hIFrxMYzU6Y5jddFZcwAVjJmfwY8URL3mDIdvxkyjcBYqfiCFj/OQYUzIS5SWMpxmMpzlG
+5y7qFmR64E/0bPNIU6SMOc0RXR3zZl3tzhv8Gf0mirdqqN6ChUkTnCWsGukqBc6BXysG6gp4DyTK
+sU1V3GTZBG9l3VidVzkDhREYpfHqYgQOovNO/fOnwT8NLqxBq4Dkdn6asZyhUuuL6YRUov5VrAVG
+ojJQntpgWAuMQGlhhrH9lUSVw9RMxDQrh6UHmTobEQEhi0mOjIUAgYr3eczpVRiaiAX4PBCEUlaF
+YQL6c5hXFwHJyzAM0GgBfUvo8IiYdxb849agMnUhfjglTv8wUWSXUnQojH8O5+Kmk7O76Bglw5Q0
+U+hZJGc47JhOO9Rxh3HeKTNz039KtMjUnYeUAmf49RDfnhw9Xkc2tgw9ZE/Tk1GROvvgA3d8pFBm
+Tt0VevKOTXHIGFc0/IDy9BQmi01zGca9THckM8+a9FMmw4WMowdMeWq8m3Qh08+WrKdLpkmOGOWM
+EyaO2uaIdY7Y54iFDtv4DBsdsdLpdjrdUodtdYypLo/0S2KtM+x1jMWuZLHY2W12ug==
+
+
+ 1c6w2VGTHTk3okdGpunOarizmu10o112wmCHzXWmsY6Y6oihTv1vxcuZMdMdL2fETM7Vgc4dM91w
+08BLKSBuln1wE2MnRz3uTOxkcTM4dqo6dnIEPcnR7fTYaXHxxNjJWY5/8xMuniZ2CjYnT/b01zz/
+zXLMEfCs+Elt6RhDixwWIHVrum5PZy3qioGfVpu63apO5N4CZ6Iog59zYChnoig2qBsYSvDSHepn
+KtOzN68Cm8k5YpkDH/T1WaUIx7ninhX7rLzR4I42FAQk5OxY6IiHnphI/c4oKnIBsdGbW6o6t0T8
+0sTIgoGReQtGZhh3bF+OyXngpA0rGZ45iZUG1+ToeZbBNempFjnXYk+2ZsBL/ZzLPOlyOuuynnZN
+YCbHMk+KmbPwzpyOm5yFfTJHXdbzKeOoP6v7ssFkJAE7CJBTJD4Jk4KH6KAH/Y8/EIeGyeOhxTRH
+vHrRWZKE3RJ0DwnihECc/XTnBeMDPo5ydjOet6W5Tq0kp1MryeLogC0a8xVLeARni5dwqGIYUKyF
+JVBls3DUFsoW3XJGbC76/+RYRMIwLFEjDHEtzxpHJblsnjOMqMQZoqifnNCi6tYZw57KUwuNgHlb
+mtpoiJUGNDaOGlcL1DWqhBFQyakIIamNRmAsq1nDrirToxTVepBCvP8KxC+MWE+BbKADkyymLOh4
+RMVHIhIsbg4qyfjMg+iJhdLcRWYLZ/2T0vKgzSiT9dkGnXu2/120jIpal+knKJzlUYF9ZJSC8bRg
+/J+n/xcMT0vyf56zfwEbolNo8hf5rP9PKLdOv0khfgr0E0c/ZoyH5qt5Yyz6xMl+C4al/L/VNfP/
+XxpE/rJEpkBiMolIQvSGOGCgxyXg7UiUIgISknyQZIMEFxBNOCyLIK8kJGqkQazgsURfAHxM08As
+GXA1i4VyHjBAhl3OURtrWpq7WH446580TicboOi2cf24mhYOH2UVGedr2YhsU4xTbFU/y8YWdHvc
+EBsrlOVsZ9tFWmR6vm09+OIt8UE6+c5T3MIiGUcN6Sq2nhESrZNn3XheMI68SkQqpt6ZAnUfIPMm
+FDnPYXtbEdvcDFM5KvSoi3XfFukn/A1xKS/PXSwiPecYm6Y4lJKtyExhvNc5xrVd/9G9d7O00CAu
+ui4SFSxFqvYJ1LOVIIvK0YMIhfEQLhraoC53Zi2uwIwjsMUJmMqhpg+wxQOYkUd1idSUSVmp1CaX
+coxgajXsmDqju10nU1hssTeYn6rkJgvH/JF1LJM/aVuR2MJZ0Fe0nGKa/stmPKFJAhSj6EQCkwwO
+6wak6KRFJzbkfFonQxnqKpfGm0QKOf8nB6s8iSDhqA+dStXEEt5FGe9kkR4TkuP8nOFah3aWWAQs
+MVcLKJzl8MGvpF2Lsbhs4LVd6LUGWbMB1gWmmA7p2GmGs4Rbl2yx5YbHii3WwhppYYmz4Bj3ENNz
+zPQMMz0/DOcvw9lLNFw7dLcOQG3OOEfWz5DN02OVCccQ6EGxfkScXYjbvIPGNndLWIP8n6rbzq5L
+pp10ybTVaf6PB+QfD8g/HpB/PCD/eED+8YD84wH5xwPyjwfkHw/IPx6Q/2ud7f40+D+wwT8ekP9y
+T6s/HpB/PCD/eED+8YD84wH5xwPyjwfkHw/IPx6Qfzwg/yUekP+z/Az/L55aZZxOrTL2ezuyjNpD
+FB/VUHwEegEPuS9OP6aU9SNK4wIoCdtTQQviqAHVvC0O3xdHb5/WraSyfpMhvfJJpOpRzjj3kKkh
+VOCoBdR0gjGNnmXDOVH3e8kbFzYRO4luJTEtJFnOMG0WDaMI6+linmbonmqGQdN+kkFMXpzlJCMb
+4CRDxITE8SwDXQeln2co+EZsFd/ryp5n4JMBnqqu5AIlyTDhk2uU8nQndTWWqLICY97L6HcAkmtI
+zUsAFeZmL4HeJ07u9jLv99KvvVTJ/V7G4Re+u5KjW1xkNlm/pJLd5iKmLMatXYYdLc3c2oV3nDO2
+nN6LbFjOJMPGrW9/nnF6UkwbtwEGGBA4m41bBwV3G7dp3zadFovG/9hLtMRABm+3dPPUyGBe2UgO
+ZnPGKSs5MSnpB6YU9wR61bt+XyM2t3JWPwF8qql7CaQNL4EsNZ/qRxpF/U42vGM8tpRSvOTopaM6
+asq2nRPo5aLEgpFnkFS3hOrXW9PjSQ5vYBqjLXtCWWTut2YvXzOvYDOtn0SqpI7FnMX6SbcUm0nc
+rJ/s3upW0JK5qxzeWP1aUvH/pg3UbikzrWQZ5n42ZCErcNR9hrmhjSEw7P1sLIMgzEG3ixWJXYyY
+xTiLXYxYxQihcLOLIZKPDrglfM5FLWMAJMizMZPLITN4idrGJCfrmK7w6hfi56kgnKFCrvO90AXL
+xXDG1XCc76X05rX0ipGxwHpJnOWaOM73pjfmrrjJm97Mu9502wnneNObymhl7je92SwmWOgTufmk
+PqvNBBEczmY1Ee12k8kd06/w0y/x06/x0y/yM6/ym9gzjmoJ+p6xd/pZUglYdq3ovmuc5bpZdtcm
+b+hz3jfLHX15mTNu6FvIHX3ZLGfTpSf9Q4PtnbF7nEWfLjhp1Pa9csYv/dpF+26Zly9SHNN1uUkc
+Y1M/uO+X5TJGfcf0/bLjmf+dio475nCromXP3C2UFvsHc6+iZc888c0P44gNxGHX/o9Hm2WkpJRD
+mSvm1gLNlubStbJOulbW4iFoKBOGsIgFReILpftB5bHmIGOtQcUag35hbBbrCAVDOVA5475YCd8Y
+i+6LLRj3xeq3xQrkvlgSecFKdbo8V6Dct4T5r35vrn5rLhHXTG8yJKQR8ayYK3H0VlyiYBGRWhe4
+sBBN9SkkOtPkSgJNTyCS+5/xb5RBQ6K5H9jfuYnfSEjJ498FLKzg5EpIYikaN1KTv/Rbq/XfKvpN
+kwEFYIZenHCClnJ+jHCCklpvhjVokMPNro7XutqZRpFz4RmOUyR3t5sJL2QL8bWSXysBtgo65oES
+LAJn3tVO7WL2m9p1Ygzk2EqbMvqdpUb6F55SDHQRtp6pRk8Jk8wzVITB/rlawZQojxLLILKRMe/l
+5gs4w4RJwyT9WRbnoXGgjfM1MxcNyjnRoBxj74HR4ati8QcYFOIM+OpYTgDMQIXZF1I1RKuG9Ko0
+oapTqo7Ab5D1DlJ72tbnXMG80wrmLVTc4qsqGxYe1aDWgmHdYS08unWngDGohHEJm3c4m32HMUmV
+DX1VV1GJkqoHURJbRBFbIoo04FQ3QyDuIiAOw2HRR8Rnt7h9PVOH0QexMVvCvATqWC1RqUh3EhIZ
+d6E0IewcHhC2mJHIIR5rdWnKW7C/g6HXZWngcYlGrun8BCn6snHFuoi1eaK/l9CCEE5C1iewNuJE
+hlmFhKoknHnxtH6fvGtMlaUfltybPel9FfVgHM645Jpepy3R4CKehhGxF2cXaGwQe3m2aEQAqUwP
+Rh8cjfjJ2mW+rC4GGf+jBASIMkpGYi9dGDKut5aoVDSZ/WdR7f0vtrU7ZEF2Srzp+UKBPEH5rUd/
+t7Uhlzru9v7RxX+ENrno00VtEGr+139+1Majl/VQ6gxoUSjOpa5bnX5b06vxoXOONxJco3Jfgy+u
+ApDVe5CZzD/+hj+O4MM3fPWPUDp0Gnp64UNN+Pb+isPtNrkUzjUa2uJCKUX7gP/xNGDe5iR8V+Ki
+1tZGIw0P+qIeYJi2XOR4nvf/wdlTlF80oC2cOoNkoULgmNHBEX2PBABYm+hZb/yX1obF645r3YZm
+vkvSySHQwfk5UANpXUpI6zk7RBToRDJP4W+cWhRxixeysRj6nKeBh5PWcGQHgon1xpVmAT6BJ49I
+zl3UzP+Pfg0N2b50aZyOV0/drtRGNUDBlP43wCb6q9VAKXZrg7/x30IoJfd67VAUuhJCFwNtqA3+
+0kJV7Z+jkNpsjWr1Vrs1+nsd4BylGUsdQjukrtEsTkgeOql1P8ew9aGLXh+lzY07dCZlQ6krrQa9
+9WvNptEmGUCnNvwhXxljGvZ7I1utWrs1JF+BIEdG0+y3kuSrNP2m0WsPyDdbaLCh4njUC13VhiNt
+0PoPzdYinkxTn8xPt9f46Y1HIGL09GkAP9DHDYscOtWGX0ZrOF9xyMxYT94QjYUqhEaDWnfYrw20
+buNvaLXVDA2NQQhMvdpgVO/VBs0QjL5Hh49OF/KudYA81ttjLWDVz4GmdQPWHWh0d4DdAuK71hSY
+AfhWNRoFQoETpNMlC3V6f2vdroZI6vVogPLTO0JYuY1yl3e1AQHTUQjRX8/NbEEXtZEGg9S6TWiX
+VJZ4y3aej0d92G/vDWU6KIT6tT4MYtjqjNs1s4rv/JkNYLGOD30YE+vr+Nf7Sxv0EXIPJyfIvgCQ
+2m51tdBwNOj9aLQyYpgGorK1B3iOib+0xghGVK+1EXH0HlGj3erj1Npt7Z+wg58w3YBDGgEJcSYD
+qeJgUCMfAT+vtfZBbQR7fdJr1NpoT4f4OX3XuS7MThscKmxN9nG1BluOerVN7qd4COQbuoC3hyWY
+Faz30NhBHRstte6+Wo2vi0Hvo9XWjjUbIbTUVDt1rWmv6dz1hVJGvQP0sORVMAHTUvt6XAdwL/cA
+Gq4QwBmNp+5PT856Tc2RssN6/LPT7sLjBGzNoFUfj3QAYRb1X93EAtpnajW+Wu3mQLNRWf0p+jX6
+u08hOrraHb79VRsMtxi6wlb9q2bQLvz90KVe1yAzdCRDy1//S1en2+tqARamDewQ0W3/ldFrLggw
+Z51XvYVJvRBgbgAcwFkIF/GfH1t7Qds/50oInisRaP4tRCiDAL7vrv5vQvTNvwKjOqr6b4ZoNL3G
+eDjqdf69lOxfB4ebwxoSMJDCAigWFBz/5XgBY/kfNJT/C1g6/PjH/2Bu/G9Gg2G71fjfTovFXB5d
+VGPo+W5z/TvI7i5Oyp1xNlIe2Z6yeb/Z/DMQrP67Z2OoIm7TqPdGwGROtI/R+aD12eoGmdXkO//e
+SaYl5Dhe8NuxL631+RWEuhs1/82QmEsWkE3WZ1r/aDVHX0FmRSv+D2D+mOpd98aDhib3xt3mv537
+A4/6dw8B1P5aE4ShecdRmHMcy7olLQhIMZXJNwCrjd6gqTUJLLHoEkqd9UaWxxYbqyCGioch/ZQn
+VOs2qdHVZpWzWPLISyfI9FQckJewFdv+kmlzJW+c20xtQa2T6sW1l0nSalhHlUvIlFaiprQr1pQ2
+WfecGtGuWbse71qtatjacqYJktYhhs3ULTH6yRajn2XRSfVpV5285b/sc50dTMKL3lzKpFmpQXMw
+TAJQgrzcXPeu9THuNtyr9IfJttDABjr3Sv/sJ3v9Rs+nwlDzqdAcu1dodJK6Rbg3+tIGE+tvG/Tw
+q9bUBgy4OM0MwBQZa7va0IQ+x9astQzAss3AYkWWeJd5DgZ2LMy41Py013Sp1+h1AXFHppVZ8KxH
+DOTeNQE/A+1Fo/P3j52ETkAY0ditvN3WHtAcrdUdeewCgVVKZPSdiAIluum2GkCAXQ==
+
+
+ e691uz2PdYHOO/A6be8meZ0M3Wl1IE61EeDXc/T67vzieT30l+jdFV4TbO/WSafthNzr3V67rWEM
+t9DMiaEOR+1kU4MG2yNMpXUs8FkF9Bqtb3KpIO/0m2hl2t3Ag+o3AzdOYMJ4wxFB+wML6Dj1jurQ
+3kmlTCGdLBQc0RiqMrJePi2AHOlWkRV1gTe61Gp1gFIn2yDxB6s56lGsyuRFj1GSygNzBHmx4DFW
+Up1oH4HWH71kbqojBW3YVsu9ErtSHk31Pj6Gmm+1L1u1SWxFtfAxsnud714dYGLY+uzWvEknqogR
+o06lbd+KDIJ71qsN661Rp+ZBQ1FVUsdO5H02D71o2bzJNWoPGJLmVkNnBv3eyGPmqKZxAFtv1xo/
+unHDsfagmewNkMjks/Ko4gfwmK/e4D8oRrjU6veGLUtbDpCDe/1MeoIqrUNN2IKz3IBqDRu1tqa3
+5VvvL+85Dhv9duNvd/JF6jS6Qy+QhzqjVts4s3efH+xTu9b3Xwdaz2Ps/c/Oj7/4iGsNkatPMLKD
+qhOCzvDJAO8AyI9aIwPxkmLGkRSiqsALkBZgpVzOA4e5+U6uMeh54DCu0gfi2+p+eAi/uBryFwDB
+ywcvSKfISaJeGww99tGcAVBMhgMFqDxipuRXd+BD2621WRaUda3eqQ1+htZRB6hsjDpAXWbUAWqz
+o3bC0Y/uKNlsexNUUqc/+Oh1vagpqjYc13Vsd5KFkb6l/aW1PfWWegvpgp5VutonwNpfHmOGSg27
+24drPWB9XUOyvfqv/3QyCXigMagUFgMJ9bBD/ppFvVbIdFIJZnfAJouAZgdcN5jVgVhC/IwOllrO
+NgdcxcvkwDpSdXumo1Oo1cV+Roj1aYFMAM7KFxZHgDyBuPTpIcGjasOfVh/Ye/fHW2IZAGgOhhrq
+eOBdE+k0tZHjjh/16odAMEMWpySrocZuiPK3gExieav70x6OQLP8EZK19ggkGYFCV+nvWjf0O641
+B61155Uz3+V9hC2zpkhEP1I17cii2GZhT9peEjjbMBm+NFVtMVBtybo03jPk2Rn6LZyQRKKlaVxK
+uzfdAPFbp9e+s/sYaL9j5EAabMTAcvumnde7tqQLxYGWjrduS/Ss1xoEhSqJhapkzpFLsUvZ1LrD
+Cddjt6anmTJvm3JS8BmLaB2L337xDvsVBFXTU21BOshUBdvC+KGoYENRbzBj1zvIkIVg6ydNuX6S
+dUX84FAMjqQGaLHEP5l1tNWx050CdMUpsXUKasTbJho9qo2BcQdEVzHpbQOzAJl5UOm3mAEnKiRb
+Q9POKiRzfiBgX/Ig8CgGG4mFWngvBW+HFn+iaN0j7/UTJ4AxGGUJNFHRsuR+lEJiKYVfZZGt7KQB
+WKZoepMEoG3TL4YUjAoJU1IhcRq6LFnWOnoKAmt3VAuKmkJg+Yy39BNwBsJUVDeYhCZNB4l2mcQT
+DBiSqAvdh92fEAqXcpS3C/bzx36tqyufeRT7zWgzILeHzvtIDB+Gro24nSh2zgd1LTcaaKH+AClu
+TfTro9VthYrNXl0LXShlZMTpkZftWhzbrqm9peSWLu4Xr0uHh/mMoiH1Ej1M752vPsW273bWtmr3
+8SNp9Twh7w8qna/Nz274qByOR9dKrVpyuJK9OVCzy5v7N5Xd0/Te5snz2un+YNzIlVXxNB8R0ull
+nh8q38pnnF/Z33pNbuxvx/vD/eGxmOIi+1sn4YFe6Wgkfx5cnuxvp7XrUmtnt6Ekk2ufE12dNB+g
+v5xSjmzmHisj5ftFTj8m4sVO72RYPLwefcV2s8vjspJeuZO/22t3XET54I/qjo2t5AofudvLp+di
+tZS8de+Urbf5sr/9U37Z3xwmOzElHhmXo5XmBxfBi1V+fzsfKx8vdzm5vd++3/yQv0alr9yjYFmO
+91WlIZz87m/vrd2RdmDIw9Lr52sPPq3+KofNw7CcyH+vFK8Ty10yhvtac8xFCt/RWENtZC6jpa/0
+29Z2MSKtxuSz+Htsv7R2Uy5p443d26Plr61Go/aDPrVi6sfJF+lZ4FO13KC18r7Zej1qyu3I3lpi
+EHseF0+uV3/R+Nf3t46+JC6S3bp92S92G2ud2M7pVirXed5p5XKp4YdUHDQOhdjPpmC02FCOhrew
+bLk1LXcn8c3NVilVg/0VTneiibgmt3MXHTKDh5PIfulwe/lOjRcyQ9iXw6fs8m6u1HuNbd82nzbF
++vILbna3G4EJ7WY3ltGWPGXvspddtE678s96NkFB87Z5wgsvy6dKqra9Wg7HHgeolyx68IpbwVW4
+CF9fOkzjz7Hd8jb9tH2nHpPqpbj6ThoTH8RDAN17Pra7q8ZFZe9zh7Zzt7O91fw+e8U7aQwY2juX
+M7QXqCQfGQN4MQcgRHeuUCUtjb/LhGXlDS+1og330tnH7HejWFW+Y8pH6vhXrdXWVuRs/eaycBG5
+vymel+QL5eO69bv/+7L5yUXk9EP1jSzmY7b5qL4JsVs5fV88Lyvfd2+l1nc2tfXRiXyWSx8bAizg
+7nsud9Xsmf3lr387x8Xzk43jsrLePCZroy80gX3Y/VE/eRnbu639kgntZvO1/a3qaKlYPRqNJ6dm
+W1lmHfSNuB+E9aauAXPOSyMuoj42I5/i+/aewpef9yUMAtvv22UFoGMjHpN7hVf7XllXlt1YfSMI
+5Ox9Dcd4lWAu7DodnVSKb0cChpjtWH/rvRz9OE4W+e3qo7i+8rpNBmJdjuz4qqCVo6v99dJX9upH
+jZ0kyyakAgI89BCFuVabCEL3Aak6qzC15fXS55c6zG01bq6KuUfxzr4HFwftW0vbSxU1Ea8XnLak
+8KMdl7hIsXrajAGF2S0o8snDj9NocU2mXuUh9wFIo4q8WEmfTkLO6KK8ftHeKiuZRzG2W3lPcBFz
+XjCrxkdZVTI5OZs4v8UEJykc3MZxp0rqvb8hf4+aHbndve0Vq1/3K9DE8YbRQF+N987E8moi91S8
++vhag9fOVoFdRVuAL6SJ2lm8vD5KNTEJZ2gkvP1biVReCmSxqiefX/nq6tpp5TmqJC316j+IjF5m
+f/n7Jxjh+4rJUwD3jedKs/30tD9Yvh+ZNBtvCdDSbo3Zl+rRuKA2fn5X6WJdbRCS6foUaHK73Ptw
+fD64PDgrVsWrJCzw3UbhYlV+KL3/KPvk6eh4tFN+aydHxevxSkutV9UoTPLuRTk+DF8bT1M6JI9O
+yidQ6RizFomlgketjdjeXew1d/Wx1sCQLCoHnV3xrbO2Tz6VjzOXucx4VBXfNySZPujwsvgeThSF
+eLRUEN8e+7tcxHyRfKs0N4q57EbkRlTD2RJ5+i4VSrgds4oQ/+zQFsvVrSumA3VjWxHV7YMy7gq/
+Br2Yz9HImBedmsX9oafkAR4IblF5WtkXVUlW6Z+oFWPoXERoPGUVsSynLsgvMm59FMzq4D/LL8Vr
+duL6kMzRkCq4UzIkGDpascnBC/XPp232ncvhHq5HGkM7JDQSnT2hsb9SFJLb7TP64GqNDg5PCI8a
+fYJe8LhxV7Xj+DkdFBqKwzbOsPuoK+jFWATS31szvEfmag4eUWxSz1hPpmf0LoEXpt7dZcUcOuyL
+uaJmsxgOyGKhB3j+zE5btnbiXbT4zJCgZ31fDIA1p8m8GBCUaH94KfE+63OeE8aMITODc9gBtPsB
+98BYGFLFBi8EqNBC471iuiJYaZv1ghcLjxXBGPrWbJbAKoYdPCgd5il0G2tHBo+GbMNKGwzZ8cUR
+nU0swfQJ10tuvJ/QgaL+yBvGxppNGUiBIBnoEwUB1DbCaROzKBCjDvBTswPbxmPyYC6lOcwFYKV9
+tdGiGqtIn8I6QC8MkXagNeaKWYkG/m4C+AwEILvG9OK6lyZ4GdXtK487MJfNDSAtkJzcKRYQB62m
+f5OtIogd8R5oScNodvcmfVYspNp5hl+PTg7P9wej6LPaGC/nkR6wyh9VhBwVNgpv9/LlM7+iHB5m
+f7kIaIlX5fLbevgLSRIbymdifY/IyVRuJzJhxypxWOp9Nk5cVNjECpZVQbZE0qpVxIgxerMgv2nF
+q+56qdQc7D6X1fzVgTmh3NbjSbmYhl42zwSlBYrw7Y6lF355/3YtWgFpPHbWax4sX+1s2Z7L7Xat
+mL17etlUjnbCKzbNmMq3z/EDi/LMLEsMtLzqL54pFzHnyspwcv1T0TbUK4uebm2icXUhp+/ELV06
+zm6AEp6MbdU3v3JIsC/vDwZfN+nN07s9pIuBKpHPtAbZ+VUJ1NRWbGccLSttQeaPMpvwq8KDBKsr
+NPXeQnQjAz7x1Ih9YQtg7P3t/IcoFe+56DKSZbuV/lI9vdns/LyTPTDF0wnFjmnMXXlGkOyiPi9Q
+eeYirurz1MpzAhTlTN1BP3sESK7z2xuKNhjEee1iZwvv1uQ6HTwrx3J2DQBkvY7Bnhf3Kms62DPL
+5qjRgS6m63TMUJDylWGxm+7GBYXzm8gPRYB77Vyp/EQ00Dsut7E4z39s3vVsw4RekJa4dTjsfZRa
+w1ZW+UjJrdLXU2kdxnj6PtnshDpHq3wufaFOj5XU/cEePLiMS6tnd5eGltRb5XM/4/oFf3Jc7wPh
+SohOmEWQgd/bekcaX4n/KJQO6e6PHyLF8758IKfHMi/Eb4aGvv+ShH15gt0vFraOE8YjA9yRiaK6
+ocE2/aQZrXvCBFHN7W8dPywB7H+FDcjaRDas8+J1pfld3lZ3BkD592/CBWJLiK+knnaiY1GTD6qr
+H+SBYRnIt5ODA8xG8Hpnht0rOWjPxNZn73vGnnWAzMrQynPSmFoOsPL1ZWO5rHbH72Kk0Mmbbedz
+jZMj+fJi/0Jcf+icMXtweXZ9i0GOPrj7lggIiInNXulQad8DbFwmitXSzY1ae/+MwVzU2/sDHfAr
+o8pj6r1Xjh5XWmjjj/gj9beExiOZ1BnY5M6jfHDdpjYQMVtcVepp7doJXgqJ3Y99alUw8JdtzIq/
+rtjLcEA37EW3kpFpHCSUo8HGu79FhhmI3XQin7x96SYWpj3glXI7+/lkIppp8Nw8EhNRW7Ms9iae
+roz1TAONuBqqsY3sh8mgEv03+XX/dmU00vnLznH1V0mVpRQxvEClKixMMmWxk55qhcY4tYTXiTD6
+1NJ2wip2ZMpKPBvbFPLhs/L6w8UI8yu6L/C8mWKIPj98uCteVWPP6nu2P0KfvtnGCMUmppNPwq9X
+n9YOAZ4+BiznpvUAxtTG5foOsnXW4J36Ji9tXa8q5dXUGf5ObufX1pnuheN6s6wq6xKA6X5VORpe
+xrc+Duqf+5t3qbtiVfncKOZePtcZQYXaYHez29H9QaIwBnGjfYcqXaj16tqGw+BTIJacQDvPp9dK
+5WH/Qzk+rgpyYlPrG8JNlsgR1dWV6/Lb8uorbGIxAzBm7RY6PRoryatmYn/z7PuHYW9or7JL5W6J
+mtfpdyeJ3+stFQDtcqyUDpYjzIPe9oWA95mj3xr8Fe8g7Or6Z+nz87NelEbhC1h5YA==
+
+
+ BJNTY+ulC9td1yrAkXGlTOXx3aFSQW6nwikkcdwiU1wGGagyMF11SU5nNn91yKEUZhKG0KFPrAGS
+EkKbbbWeeuw7QAcIkwC42zE+e1E831SP97fkPiMdUogoxdf3t15uLqCpRG9yBwpRkJOPhhev+9vZ
+8NNWJS9VDSGYbmO+JdfU98RnG5jMcVJ9rV1fFK8+JqAIwVAYg1w+M9i6w6dd2b3sfaV0VroV2BMr
+OrLPyA8ARmEJaHJ6DwA296B8fFyKDusp7W8nwn2lcv5zi+hrwQoqz+yZBVTfOzQGD4PayUomnBj2
+chuAAL7c7v3sb+/2FSBhW3n1sVF/ZMYqZpeXAIe0z/3ciL8Dabz4dZouh9d/nhwr5b+27kvCTWcY
+2zl6NMWzp8JPUa0Wc4WrT2BGle/i8Z18amsAQGX5CW37KVDLzvluxnWulplSMc/azjvoHWKez2S2
+gUVebP7o23SQ2L89vm8BBfl8hn3Z3pM6yEJdYpvY/e0Aon2G93/3Gpql07VxMV/vfxpUlaBrbnAa
+zVci6obELP7OsRThD58q2zpWmscZ+NjqjG+/7a5e7wy24w/b8cLX83JfOT76+DnYeU6LdngRL6Ot
+4sXT7nPxelwdU0Ete8mrjcauILe/mz9GL3c7+eJ1ez9VPC985kunySdgTNG39CTAPsYRasYxLUXN
+pu3oI45Ha/vbOz9VgP29fHZlKRVBJ4m/tSvEVd+RaqNhE7g6Wj0M682+F4rnNwfl4lVv562YOdyq
+4wNBqwJIlmD7QHmTt9dXIg0QDPnV7MpyXSqXii9AYcqlva0sg4u6GJRlRCzUBBDKE9i/HP9Z+B6s
+3Tv1gqp0yanZTrl7Yz171alJMXe9eqR8FFWQJD7ediYXa/mnmDl4OSxerDTOlZfWw/JkL6fR4nX6
+rWJrQO9lN7s6Kl4vl46K3YON3/J2uTEMgqkBwR6fWdCzD3JS07jbu90U30+2leOXqlSO9i4Flv4U
+ih10uLBCRRF6rnsD0sXlONGNVw2dbWcDUGGYUA4P71fQiVVKbiva9utS8XIjdYvOZ5aRkCRk+okb
+xXyHUWdOD9Z5ud3uvxOjhik20mWRkHZ6s6ocdlp1JMaBPMaKtLTFLH5ULrZrmtEpDzB2MlLi579N
+XSP6GRuL+k1UBb2XVbWxlH0BzAgPsLUDSRcWUp/7Pbg6wSepWx+d1VXQSr+zxeOH664bZz9VPgpq
+Eqhz0omdEkkBaXzPW3dq7HwtJrdzrwkvmWL3tFz6OF6BnstJz57v9rfb5XUT2HWpz1LpiR73g/I8
+Cc6VEQLTNoVF9fCModMYkVbHfQ1rZfwRaNIW2wWu1Inme3I7qbbl7++LfeWweTlSjqLRMsLpw/3b
+6mEN7RWGsQ0LefCTemDFbHJPf7DcBBBJxwHk3hrlUqMjsGT2aDzCZNaRyDabjerm2Wt9XH5/FTuw
+vHsSBnYkjUf2HovX9f4HMdGIO9rNBME9qF6VzpThI+IQ8tbxivKslIurR/vbB6WkpfLzMvBmOQ+U
+L6HgOWM41zULnTKmgbp99ItX3dTqzrOy2TOXjZzbX27ftgBL0rViMv/zOfnacyq7WT9fLeYrwxHx
+87iq1rpcZLvS7sJu/TSbzKCkjeh6dnx5dQ/rfRNHdku1yO8edRig0qnqkCpkF6uxnf3EVx66ilcq
+j/nqM3CI4p3ymVmF3S/2vs43TKXDIFI6fTJIEyFmdCNUvAeY3Za+nrZ/y8WL/f7m6XDcsyoa2eyv
+ULgCCtMo1X6UjVaqkduWVE19/DhUDZMernQNUsp1ubzPj2rFfCK5hBSkin7AfPGYq74fpMrKuIiO
+rL8vgbWswZ50i6dIVl+Xf7a2E1yEkjhbi5/7bcQIm6ajjKXZyyU5s15Oqc1NBfSX869ty9Pqcnl/
+Tasaa3cDKwb06T27+7v+w9gt8SrLa9snavxFDsPborklZLG24+PnFry2caTU77UrwLDdg8rDW//d
+Kv89m1YF68obm0PEPJgkEKnyMjpW3lM+1vZWYSV+ZXZIl9FROXpY287eXDRTGF7KESH6icAnrhyF
+P3igyRPV+0L29vejSNh75CS36db2uLz6+NlVPnovMWzFcDRIIxyCXggWleRqZZzsvxaPH9fz5u5j
+HqA2xkuv+fMDqVqQ4kdb5bf47aalPwMXq2oPqGHiwQZoxNaH23kH3b68Bgyul3duop+tFHu/w5QD
+31eBkMQ/Qa8cbmwe1W5PzdljcmtaFS5BwD4tr1Ui5QMQK5UayGt5ECeqdytJ5Si2nGF7bo9W1EY9
+3kRW6z36XWdpFW38m/LBP25bzC4vOaRZvCbGSIF4AzbSXAUGnagVe0WtbA6PtCNFi1tIGZJz3cOq
+oLx8vohETqSNgdx20QTsa23DdC3cR4V9Wa2c9E33r2R4tXCbzR61PrPVxMOjqIYTcuqr26ytFD7v
+BjDag6jc1mSh1Ao/ramxjcavwq8kutiKnAmXNgRQOTqgDz7c1CvIDBkRpP9n1/CMtDoeKviOoQCx
+RtGnw3Z7jEM5e4NQf65LHnyCX9EgL5Ty2xWJHf3b+3YIvTYIKaMWCX2/6LVbXoEyyD8UvVIdtDqn
+KB5Sd2H2qnza6/aU3j+65KLKQ3T5QLHe84o09L0V2zHmRO/vHF8JUB70OsXB6B+9wc+VGd7p5BWt
+v+dwq7SjY65eX0ZhrLJPMGjgK8GdL3XR+6oMan+ba2i/H2i65Tgxr59wvHJGf9G8OhvfnE0XMJP1
+XMJ2b1BttTXT3df7BTQva32/2szN48etbtNz5Z1euhzXzP0VRadrBCyzcYdc7x2zvWzfslmCYvWm
+aQgrPCchrFPTB3Jtf6nXbeKrEg6bWnfU+mjpsQBeq4mQufEFwKSZczP3weV6pcCpAqYaP4wRxk0v
+jfcldQ5oZI57OgRicd4LBMow1zutftvS/uFfGWg2Q1Hd7iywE+A762Uqrq1fkOt80CtVzygi4wWA
+9UP2lgIfOsgQFQ9WQzfrsNsAjmjjNwH3nuFWZ56BHPoL1UGt39cCEAoyj1b3JzA1d84g4cNiEB0q
+eoVn6AO/GWp426rMXR6ON4kFz1ThFK43idmOJNaX1sneF1BYVpnhyMw9enaSESBZjBewuVAJFua8
+XseTKuFYGjuoOl/V5kUi3W70c8ZVclVasTHo1Wujk9rf2iAAbOmvMdImSkIEoFOq9UkqopYW7Bo0
+Fz4RgOIRIKwyaXtmIbBV5u4Ob6CbWhqwsWXzJW9RwMo4JiSBKYZpkT9ILNR//b8jeMiqBqHmmtal
+N8BoONiquTbuhj5ajS/g0iFWodC6Zs4eM3gqdINuABpq/xFqkJaNXmA0w9+xFvqrN4YHg//6z79A
+9viPUFMDIaSJhQD0uYuSgNXGobZmdNqEPbX03BtbG2tqf0FDrU6/NwCMnXgVhc8CJQYsIqiMeoQR
+ogmgOyfiIN6jrGO/47VDZBdvfXbjqIt6CypY+oF2Gr1ut9Yaovn1azCnGrRmsAXotluDlppjfQDJ
+wKylMWj1fakLgQhEa2sjrfo17tRhMG1vFMUdXI9qoIwOAoCpcZ9FUIpqoAzoqvAlEQxLhgpp7fH6
+toLEepQ0iLma1HwIbzdak7l96GvVyVux0TufH1b6AN8pVcX4zqiIgRSnKurXGtpEDzgTECH6k52g
+ZGTH2sCeCQqe3Ot3p4nWwRIlZsRehmW8U9UAmY07R6xP/jk6717U9Duh0majOFNddSLMFo28CwBm
+dLQ1aQkwMwxa08yhjSTp51C/+jMObzD7jWNoY2w3o/yk987fd/nm6vU+/nO3cLDybT6Q5LyUzz5m
+O4/bifdyD8e1Ma8dvGmlwWC31q20b7/r8vvpZbEY7wovW3vCbV5Zbo5VLqKUDp5fhI1irpsJl9Yv
+00NpBbkV1VN8KnYqprcvN7ekvepIVj4KlR/kw1JTPviHXeOpGNu5yn6F1/rV33D86/sgHGskI+H4
+W/MpHBfL1+HowRDmgr54SEonhXBsd6cfob18jaTd/vp2H4Z81KFDrl3J9NP70R6eSzI1zPzCp+v+
+RBWY3zBf7lbFaOFhhYvAOgl4GufmyAbPw8889Jwfx3Yr4dX0UBye6s3mK9Ld1vIH/Flpw7sPij7x
+k+FgsDV8HLxsXZzzqfR1FI8Vdwq9kG4rwnP6/usk7tjpy6d84NppVvxOhd06rQ9eU7E76MXaLe30
+TF5fvum3T5w6HS6/ZmW3Tg92L3PdW1unqBfcbXr9PrbVOD916nQwft+MbkS2w+9OnfJlfm/bpdPs
+8kp+66OAIdlhrumHZ75clS8dZ7pU7m9GzlunV46dVpZ7J7ZOKb7gbteOTtKnbgt8M3huiEeo0/WJ
+5a0s3UmRzGgNXkv3JvZ0cwV2n3Z7sbZm29V0NVdp404Bm+qqtdOXwctt/cql0823zE3zM2V2ykWY
+bl8T1TPXTnOpj+s15063w+uD4WZs6NzpRe4VeqHwOzHX4drug+DSaeZrfU3WKs6dptdfYttbHWam
+OETb3NVaZvk3Oz516pQvH1/KLp1mlyOZfGbPpdOHN4Dkcq9adZzrUmVlZ/VE+7px7LRymb91W96D
+1UQ4+UU6VZ9/ygBj7AIvrQ/X9uN4gTcmOj1462R+N/o8dJrr2zs9OTx7oZ0+JKK2mXKRXCaZfDS7
+tcz1UeZPOpc5504Pl8b5k4dG3rHT87Z2YHYK+2Lt9jj524+7dPoU469PfsfOnR5Lryfl8l7YqVPY
+l+ph69B1rten2eq7W6cKf8u/Fpw7PUksV5tvG1u4Uy5in+vt687QtdPbqPbWd+v0lL9L7MlOnXIR
+6FaN3e3nByXHBX6MV19dO/1eqp7ILp0+Z/mX2nsMd4pgzDbXs5vWz2bkLO7Y6evr/Ztrpz1tL/rp
+1CkXQd2e8u/qieK8wOUbYel+dHno1OlgcJZYpp3WpXUb0sQKG6qEO+UiQm1pVLFSpc3BWCrxqNP4
+RKfnO9HfV/V+HzrdGdg6jW32HuK005/Chtkp0GTUbeTjaYmwclF+EA6tBOKKV8+eKqjTxCRPPUus
+dKWtC+i0NLIvr6p+J3GnaF+iatxGCteaMUqVpJXN0rGVFGqxnfzZE+o0NdlpNrK083BwAJ0ehc1O
+oRcsTony+ReZ697mZdK2wN+9HfWHdLp3c3JiXV7Y2O+vHuapIEJdlNin4qgTFje7dSpdTD4fr4al
+Zqfv/DS9Dkizm9Hcng4AGE5b5lMrtUw/XPDq9rlKnk/IAo87/Mm+JOKnkwT+cY8/udpLOz3FkPxY
+5E+ax1m3t0v8afgu7/ZU5c8bh1duT9/469LPiK7Y5POnOH99uxx2e5rkq/unUbenGf4m/Js0n9r4
+S5gfjMM5+nySUh3wtzfhHfLUjmbppyP+9jOx5/QUr9jTCX+3Uii6vX3G32XVktvTC/5xOffi9vSb
+f7l/3NBXbOL5c45/+f6Iuz0t8K83W5Lb033+LftWMJ/aYOxtICQ3jjMub9eiQuFdPA==
+
+
+ dXlaXxbk1dey64rVr4Xjy6Ujl7cbPeHsR2y5PG2uCw/fx6vOTzOv3erW9ujRbcXE4UV4bf3oDD8V
+13ajB9anxXDyYH+XPLVTPnHUDm+nj77Np7BipcTGFauBRZvVmNwbnhGyR/SzdPwKUSUZ4E6TnVRP
+qlzuCZH91GitVK7u5R6Ux/JDVXlUt5Mc+pYvl+Rko1SSU8cxVn97j7TReCTSH9PzsrSGVUFM5ZCe
+82RSvtRpvrvGp3buxwgznoA4fmybu3+6nGrt1NcBi5bUYf5y88JCcAdL4trORYKwEaTnMFSe7TTz
+hfScnq1TtC+42/TDPe7WsdOlcjPl2inWc1w6BdEW9JwaK4+xc00/vHt0WkkUmE6bq6vLZqdY+jc6
+lXCnWEuiC4yk/y2900rbssBLUbbT9PWK2Snog0LStVMs/TPymGSbK5L+n507TT88uXYKy9sRbZ1y
+EXaBQfp37RRJ/023TjX3TvNnl/cWecw6VyxTuHSaP0AyxZtbp5e2PeUiqdbyZpwOAH+ikL45sfvO
+9bYC1CNS30mgFtPrF6QeoRbiSdZqFbIgbnkMmvbaU8mwkNSuZCzDEeKir62J8ftC/EaIG7+eWGUd
+Vhstap/FpvdYFzVwZYzhEkHyxWoPDa9k2sdMCxF/lIlE8C+0oXesEEw7ODdGoyDdr4yr2GxPXGS3
+ULm5gC9WI/RX7Z6RmKnNTEdcqPykCOrLsMJM1xgyCjmN0F/x0x5ZG10X08mxOQOAwZJlAdmVl1Nf
+mhJBvwAg9/hD7yHhKoS/uAwqrsbJL7qegpM58BIt+dh7ybmIufJ0hlivdpzfRdh/fvjXlW3/LBof
+3kGQk0+ddpDdv7fxhj54otM4za9nbLGk22H8d9BlfluxAPDJWRbLo7H4PMCuz4WAe+WhvxjI4j+E
+pQdz3RHuz77yRn8+mMMFWCx+jsXqWy1X78mejfhAz/G+pQMD7qYkPUjmh2lUmCYYYz9DetZXMVw6
+r91DfOQ9Gspf8C+6dthw6rB26vNt2I1sO2MlUWwcsBK+FY5P5pxaYtk2NWNfLEuNok1XyWmCwyrD
+dC86/rNaJbMy52IF91eV14Y/d/PuVd/kEAQrJWdIrxyv2mR1yzYpqQAQiJcF4Yv7wry5c2leG92k
+KOQYkEz0E2dIrtSHczRmZflCfwLr6uIv0V/mxrsyMiIduu4kPuUZr4Gsdxo3qFLUhQrWyuLLWD42
+puuynegXHToxQ18afN8yQysVtDQWl6N0SOy4Yq7j4j9KySd6/jI5zfNLJynMa0vSvxNb8pMf4Fnh
+0zdnWhuU9MCs7odubIlIjOgqIw+Z0dzfip2q2tmS1+6yuhhUb1aE2srawQKkp59C2IReywkvs1g7
+9agvyDUrovxYOHIekjEa9MvEF/dBLbvySnPrvPePyvywoj8rnoLFcuD9cxDo6IoF2EHbYvFa7e0m
+KDCwZ6/OjX1rtzNCFmu1po1ZGcpsjZGmPtZ+7xe2Yla5bs4V+9iMPi5sxRBNm7kxatfS7TCj3V9T
+ccUgzEVE+f7VlQxNIx1/HriqglxkQpVwZtAH6ITlIKBiY5cUdKyU73+WFoKVB+gM5NgTxiYU5XXX
+1ZFWto5PAinKsDbUDjMxnuBqn6McBWvzlvSjyYxM4TYXP6JgGYizvo+GElxrcR2IQQVM/WWGNRGD
+DoTZl8mheKO9XTPc/HVmUKPdIcJKV37npJPjY0mrk5H+RgIPyTRnw2i+D4EK1FRPC4mtAxejhvgy
+7PoYNTgb+XBDkO9DP7HDa0islgSDGi0vhAAc2giAm74fhAB8HwYlAJyPJUl8GcXWpqHYjkPC/AUg
+wUdWsEMtleXtULsXVUbChvxdts0P+1xND1RfgRGS4r6pldt3cLfy/Dv3YuGlgrlMieIei+WK4A68
+cnKxrCienETxzhFGcVcljZvswMW6JK1sLi1NZUsw187klZ0jDz1vGqViTyBmAn8Lib9JFqYmrAWd
+mivl7xxJe7fVUz992Mu8Ia0UfnmbXulh4HCTno6gl9tegAlxEafdYmDHJltPb/fZE47GyB+Gpegz
+LkzGz9Znt4G4WGyOPO01TqSAsTRwEbswvbd5MbIJ09LeTSSAMdFdlDbxpX9sFaZnWbu9GyHiNBro
+ZVpGeGyXhJ0hgmWDrvjSP7YywtmmtrOOp2aciU9BlcyB2JmfG5xzEQ9I37wMWznfbBOKpAPZ+jwJ
+wPEEt5tcFi7QwtgYnePCeMmyOt9Hq2NldS6rE0iWXYOel9fMo1gCySX4NhrA3O2vwt5fO51OOGl8
+njbvykVnem5nWOAdGpvN3urUFBeZG/kQ0giBaLInrKJdW4/OA/Hm7q9vzIs5uJWYUyv6+f4U7cSn
+H439LAm3k5jO9u/C93BTyUDSRbCTivX1SXnzvmqeMOjymJ1oBLbHQWP+7IYLqHehkXkc+jif8Rmz
+n9yX5qoY6CSKET+9KBooLpl1AslnZi/w7WYAQS4ARbsxKZrbvgShaLe9oBTN3wKPGpuXohl6JTS2
+AIo2/JEWgPvoIH4GSjQBY5PeD7NQNNQKQ0Es52LTtpMMOhr3s1fcTspVrU999WI7OhQ5ywKs1Rpt
+WczrUIg5Okw5SinU0YuiCtJ4NiZs4+jbIBvhfwBbggeHjkSIkcb9JbP7W++DXFci63S+D41NLdW7
+jwv5PrievQYlMw/9ALo054fOaNdMt6YZiQLd/blFe9KKmzJntfb4tzObQm2xkKB2groeeaMhacpA
+woD+Y57csLZUidl5YW3phNFpLFbrabnhXVDvIy+ND+lYi7FmYUiGxhYl3z//OvFCBxusN6AJSz42
+l2BcrLZ0ugAuBq3YT6xmbWcBHkS4HX4hsxJs+v7M3BBtWMLTnjw9N9yMxm3cEH3nLgawfrABuCEM
+5GkUyHXKdMOA2TufJKKRuSuklqU0EdLt9A1UBeRpvxBbNWrMFbetlD8Idr8NAkm6FnhxX7HsYpRL
+2MnbxBReai6E+d7TdE0gwvDqDDSogBAxgVzUbmljTKJ8/5CwMaYJz4kp2JLN5+r+wYsxBfFcO7eM
+6yvsbh11Ry9nUCklHXWjWbxtUWOBWIvD2Y01Upg2tigglh+WVoPYkx3PBiZ20tf5lj0Td0H2+tDL
++ZaFCNchmXZLPCh3w3BgX1WTn/Gp8tuGs2ZB94BcxnL+VWnf1t7w7Svlwsr+a7m6e6E6xdB5R9DZ
+pb5ZY+jYOKDJCDrz9ob5Yui8I+jwafUCYui8I+hcogWnjqGLeUbQGdGCc8bQuXRKI+hMajlfDJ13
+BJ0ZLThfDJ17pyiCzjVacMoYOu8IOuvuzx5D5x1BZ8TxzRlD5x1BRywk88fQeUfQMefIUV9F8klx
+cnbx0tloHJCDD/zF6q+3s0vgIRnGATdNHKSdQOGBVhOTm8spIye7WfKfFKv8679O7pbei7XwYtbJ
+amJy8lMKuk42Rj/pZ2ZRuPSbW5zD8CzuOoHhyakpxF+8gTPw/Dzi5gwZxjJD10H5xhQ4D2ky8tF+
+mOO76K5D8rdceayTldYECpmb8FMKBrCv6lSuIC7RterzuavCPZUriIqNxgEsvQHMxq+qt0bLBbFX
+wdSel/3VMHe7OvaERMFuwZxBfILd3OzFwS29KNgt8IGLzcTExL2qAZxBfA8cYFkcXEFMzSKQIsI2
+Zo1m8NRpiMxvacwWz1AXezYhwmYsdoLzgDS5Lo699yBwiGlt6W2Jc/TEChBkakW+sncAIzoXm0K3
+R1ZIcXrDmWXFrIZDJOvGrWaSCloYNYA4EeDEqlnx4GyWODDfKLD8aIFxfK9jb440TRyfn+y1wRqt
+LEOy+MCv7WiuQTABRGlLaJqXD/z5lUOIpntslJ8P/DRxfO7m86D7Z8bx3SbmbsxoKmlryoHvB2/M
+/cTc1pQRNeDRmE+8zXQrJixuxeze/nOtmDTfilkNv+SKSIur0+eBn6xuERsB910E7AP/oF0d2X2j
+5dyinwI04UdwMG4LASIfPw/mVvYMSWm054vduuzsEkW1t+rdAOffxO7Q6kXgsdNuK4I4sl/8rO8O
+2U5GnPiLIdS4hrj5oqvvYtj9+WdYDv/Q2A0uiOcBmlB6GmuAXYq06JV7UWVgkyPFl+HnaAo10xWS
+gXlOZbaYITyOjeVh1FX3iKhg5p0A8tj34WIwHq3Sqr88FmydnMw7NiDlIoHWaTrzjqvlyi02zt3S
+4DGkCYsMo/EFhksypGksMt4RdlNZZDyG5B/36rFOVovMzshukUEhSX5e0MEsMp2jABYZPy81aWUz
+ujK3RYbYxo8W5sjXOVqABxFMLR2d3vBgOxPvHM1vkUF7brPIMCcjU4Wh+RyC2ywyjvH7R4uwyKDo
+PJ2Jenp0+4eao9UJEJzjwZGtwnJqUljuH3vHoZoYTS2KbsLy8fz3hu1tXkb8PFWCKhrS3k3OPXSU
+i0xj1Dme8d4wCyTD5NYXET424bpg5y/B4uqmvTds8lwMx9UtIAYywjiczOo9eBwwhGTZzW5pC65z
+N4L6Yq9hb6M2WEQj1+wnqfCdDzAEY3T31wu5r883Ho6bxqdu5ng4h7NXaGzR8XAze6hOFQ/n4aG6
+wHi4+SNSg8TDBY4WnCsejqFjTETcouPhGJ+r6oyhGg5oaI+HY7WkqUM1AsfDcY4RcfZ9mTcezoBk
+IwYARcRNHQ/nc+rLxovNzVUQe3OcMxsvFtgnEhrzCae1LSC+C9r5RgvUmPuJzhQRX9eBTqy8Y5Vu
+AntC+rcT6FoL7xNe3I5VfZ51Vs5C/HSRXDcz3kXqqFmUvO8ADhBOYENCbLXe3bCjofpc8l7AYM4X
+sA0YCRmvzhkjq3xCMaidP5Br8tpvIMxxu1bGHmM1nb7ouKcOjg3TS+MoZHARtwHjduZDQ70VioTz
+3N2B2wmkS3vfdYPbCS7auwr2hMLcTlwx43fblJd3A8zPZsOi8WJBVWpPhRrFIF05hi9MR8fuFhmR
+ere4iNS7xUSkPv8uJCJVWEosJCIV2llARCpqZRERqaidRUSkovi1YNdAO0evWTfM1K+dTkX9PZbs
+aPg2mHDuQ98ZSOh2q3kwNAwaCmflYq7ROnOGwlmtoyh+7V8RCud5D/zCQuECnSTOHQrH6pWTjiSL
+CoVjepnqmvrpQuG4IDeWzBYKxwiGWHt1FQ3rQw/9bIob4QlHfrBfKDxfXN2P/SbEidO3gF5VqLFf
+7+Mfxnys28ZdDMiosVEAdS2QDPNgv2R4xsMFEsI2eYDjcJuW1+28iJinPFieC3NwvU0LBmW763u6
+uDrKHNiYdxnf7eHQH5sxPHq1kkMZw6/DIC+dhBP5xFt443hLCMeVq7tw/Pb1GiUNr4Y3qsUs+nSB
+6pXCieO3DNKS7n9ylB3t9H7YIetnLdZgt6hHsNtFimfXWI86o7k4h2srPTYBqjXYLVpfufpxiTtb
+f/ZKF/easPJ9W7CbnD136TS7bAmLsge7vXpG2FXCGae50lzIlcGD0ak9Fssjc9t2+A==
+
+
+ xRpjZQsBu9y/Yjq1BbtttW/OXDrNfG3s32303SLs0g8PXsFun7xrp3z55cA9wi7yk7qtu0fY1Tw6
+rfCbrp0Ohp9Hy7ZO2Qi78PNy9sZtgeNeMz1cte0pQtcE7h5/0nc/fzZuetek9c6XtSD1ls53wlZP
+SJeag/HbDxtFjuY8IYjqiAvvxqM2dup9l5q/y61Ngr1Y7djd5K32VGIdnTGOpu9qdrJZTQLksdr3
+vqo5yJBIprzBYkLFXO/JMX2uFpVJzsm65JopzyeTXMCtW1uazufKIy+ab8YRm1/fnEnk2HWyNMXq
+lQGSyAWen/VCZId74G2O+R7zs7uHuw6JWEe9BuXrTBlgSJha+uWPC75OJ+lnpyEZmSWd3V1niKZz
+GiETkbqgaDqXFVtwNJ2TNOqei3PWaDqnqU3cqjF3NJ1TLJ3reeXM0XRTRT7OHE3HbJNhbZ7Hau0c
+TeekfDCQvKBoOl8v6IVE07lx5MVG0wWxWs8fTecUS4fnstBoOg/fngVG002CT7PiGSc+UzSdE/8w
+7lVYWDSdE2l1PBWdK5rOMiQaS8dYRxcUTecUS0eiORYZTee0f1ZL7yKi6Zxi6dyy/s0eTTfzCe9U
+0XQB4isXEE3nFEs3/4r55M6ZbsUCR9M5r9iio+mcjlEI5V9kNJ1TA1xk0dF0TrhtWkcXFU3nFEvn
+cROFWxM+0XRODVgpzCKi6Zxi6ew5H+ePpnOKpbPg/kKi6ZzCb1xuoXFdjukUQNsNh9YJzR5NZxuS
+rgBOF5FqVQA3hxPBO1HFUcSwetwFDKRzS1PpGmPkKF0c+uWqtC2/e7Yzmq3OUbqYK1+dU4KyoHkT
+/PPVecWsMedih35ZKwOv05edffvcqOM+Nf88tMyQPPwtA6SqCzok4t3hnYQ26Dq5I7PjLWce6+Sb
+fdZxSJMUBgaVnYFkWm8XkVYKPylTH9Jj32wa0aT/URAzmGuau6m8oWZOc+cQ/zKZ6G4qf0TL1Gia
+u3lsF8HT3JGoAZ9Ed3MYY0iau7n9kwOlueMCRRjOm+YOZWXyTXQX8DJb9zR3dkgO5IU4dZq7Ke6F
+A76wPCMwMPzleGFxFv1jW2SRW6xogID2zcsFxPIcB/LF8At6DOOn8/laoz0P4tHM+QfSze2C3z+e
+5JWzLYx/VFqwRBhodXIzYi+xwdoiiqKTijLKTTc7o7NISlrtzTHV2bSBXWm7bXhmbygs8y/KGwpH
+/8/rp44iH+dGPuR47x3EbkjjAdqZNqbWKfoJ2pk7tytpZRL/ZsmTOH2iSY88iYsJrKWaBbI1RCcC
+a781n7Ok4GFf3xofLL7SX8JDjW24EjPXTBOunnvX3UBLyaqRMWu+V7sP9e3kkS76bupABtfop/15
+71VAAVmLy2B4s8gMhjczXhBgw/3b3tyJqnHaNadAhmlzDKF2pg9kmMwBgdtZRDxnzH579qzteKTW
+sviqcv5oCAjioX/PcMILstckGsJ388YT0UysrjnupgzschHnGR+SoGg4Q4Y717zVNMfdnKyTZrib
+P/IxSIa7QJny5o4n0jPlzY2GnhnupsyUN2OGO4csM5Ycd1M1xriAGtETOMPdZL7XhThaYCcVcxtm
+p2Mg3PmEpJtijt+9o6ixQLGwnmKObueHxtJzqy6w2ppj7MXUkY/TBtYatj57O/MH1t7ZVGv3PIn+
+7QS/pMqdWt553gs3XRATunnS7lwzX3y7g2tNCftd3HgzsIBo+DbwjK+cIoyJRoRNG8SEV8w1Iqzu
+br6bSm3HK/YVwF0wgDMWGtdPIKwMkITrfvogJle98m0Q6B467yCmzWgS81k3vj9djCsMyTOIiblv
+PGCMa33ixBV/5ykYcsFjXOX75tgNSnzy0TnmfZvPz846ScbXet4YV2jM82oqiwzjF+NaH06f7tF9
+xWY1T07u5FvSFjUwQ4zrgyfLs0U9BxpUQIhwZg66Bd7E393MadexP7oHJ8PBQByt0CC9o8IDiu2r
+ol/74VgjeYTC+ko4ti8pnRRWGB151TY8+skSmjYYCpEBi5/WPGxL4mbBJc3d0ioXcQ3DG4zfkwkW
+Nqxp7rbFT/eMc7bcerAvliixR6/Yv2/BtVO+/HF27dopF1kVjt4abrF/Ta88bPI106k1NG24/KUx
+8XAIKy0LvPu70jHmaouHW3cPwoPl3XHPOAe7Xy7wbrF/2eWVq4746haE9+IVDzdMW+RkW+xfJf5+
+69rpmhbNfbkF4SVdO+Ui0O3JmutcB8Ob3bBrp+H9l0TVsqdaQe8ef6LbwEXWS4/NToCa66/jTte3
+Xnb591W9P7fVo6cJlpqZLwp3lE2iuJ3nok3o1C0y0c4E6yyPBzZyxJ6/mKzO1U5slVYdToOeFCe3
+ydmymF2slV1MTI4Wkg1Xmf9Jmc61yn1IIO5a71GcNdqq7H0bT/DMLEoA1ypXc65N43tSpnOtcl0n
+q5A7V1TahqtyNW1Umk++g0l4cmoK2/pQY1P4aXnOzzG/i7v3oFeI21ReWjAk1yjOLV939KBDKiWf
+FoMvW+6OrUaE3aR3rJVcrU+Sq1d1Khuze84UdQHX0T7E7bmfZo9GUp9vvXXpCBdUAVYXcsrzkJjV
+pcYS7OZs15rKPoaiAGc6srZ63aAowHktyygG0H5h54TvaLCFmfLKRnc7jOrqpxXQPta3SH0H78Lk
+2U5d/PUz4wahMLXy4nTkurTkPSQu8Kk3sgnOetmVw13QsFgel+EHMNnZbCo/+T6iMNa0MnYD48yu
+3hVTbnO85Wy6tGy+chvOyBYsFNDnnoOpYqzq09xz4J4pbsk2pCmlccuQrOZOr0BAypE9QgGt9H62
+UE4sKTUrvllvAodyDpzCdGyaxRSN+UV3sU1hjuzRmG8WnUDjQvuCGvOH+aCTDBDLE7wxv5PLqVbM
+N5/ONCvmEZA2ES7sKh26xwBaTqxm0oiCxAAa95DMFAUYNAbQRxr3iQI0F8Y7BnAae/LsGfUMSJ4p
+CtAyBo8YwMksZm5rMk9GPSNWdKYoQIYReMYATkTZuC7HPBn1MOWfOQrQYUKOYUPuOnKQKEAHyeTG
+aVZIHrMFHvwLkvKZGdn+lUn5vKxwi0vK52qFW2hSPi4w0fCJJfQUTyZPEv8VSfms+ZL+VUn5Atyl
+toCkfD4+8AtKyofzVyqjOZLyWYekOWIvocn7ZDx+ocEeef28tdwAd0MFyuvnH8m1iLx+JJJrcXdD
+Oef1m9Lbdsa8ft5Z/Wa6G8ohr5/3hJxtsNPn9XPcpoXcDcXm9fN2M/H1HA6Y18/bV4qhlnPl9fMU
+2I8XkV8M5fXzsykFVfC98/p5+zNZfK3l2fP6WadmT+Q2g93SMa+fN3w6ZWeYJa+fU9TdAjxUbXn9
+vBHXK75yIck/jJjEhYUfuWb1889fGSyvnzfWBY9Kmyc9gC3XwMx5/ZzGZXK7OaI5am+BEnMFyMcX
+OBbYO6vfgvLx+QR/Bs7H55PXz7sVGjMyd14/65Ds0XnO1HL6vH4G5jhm9bPfQTRrXj/v8BRiH5s/
+rx/DuxyWUt+XefP6eWf10yOG5s3rZ4ZKOYnuM0Sl+czZSY5wli2nz+vnndVvAbiP8/oFOa2eP6+f
+dytmPr754x7cs/pNn49vluTc9miOybx+s8c9mDczO9/RPX3cg3dWP3f9Zbq8fvNHpQXJ6+ctzhsR
+Q3Pm9bOOy64tziCNO+b1m14anyWvn0srt725tVc2r593KwHy8c2ChrZWMIz5WMCCBpO4Z/Wb6UYd
+h7x+Mc+sfpMnI57BFq55/aaOSltU+mImq59bZP20ef28ZSbfW5sC5vULlI8vQBxukDx6btasafPx
+zWbBnMjHN/edVg5Z/USrxjd7Xj+HU6UAd6dPm9fP266lW+DnzevnFPPkwMXmzOtnm6RNbXe452qm
+vH7eaju3oLx+3qeZzIrNldfPspMTWf289EoXwuWY129W78Hp8vp5C4ZES5o/r5+XYFgfIp/eReT1
+2/XM6oc1iwXk9fM+scHS+ALy+nkemKHo2oXk9dv1zOpnPUuaPa+fm6XT7eaW2fL6uQ8JueW7Zvud
+PumrNnHOiL+z+SlZh0w4g88lpvzHzWbKbtqF7+zIbPVRxM26Od7bwhYt8NS32bBgcy5Kpj5o3Zf3
+WJddBBwmYIRA1Za6JbqeemP0tTetNBjsXrX2U6Pto6KQv7sW13aXFFwFRVOhWJ7qRW0QjjzHVsPI
+FBReez34Cid3vouxrd3fQmx76+ohVm399HhV/U7x6ndiky8fXyp8udc64SuXhQR/cnj2xp90Pj75
+87b2xV+fSgW+eti65W+GXx/8LT9CWHn7ujPm7xK3Uf4xfrPOv9SXzvnX1/sP/u1KGvHv0v0a/34a
+vRwMBmpqMHzubQ3GQvd2MH7LR4druVUkEFyNUGTnWqLVPDg/OCt87N++PH6GN1Yj9xcr+a02SH2R
+i+vK0erXT2RpqZA6iy63G5HDdGH1vP59r2xv6KGA4XG8nz57x1tCwt6K5Wo1wq9oTfjuoudIQei+
+nAC1hFEMhyig9CSckB/STApImkdwU3ZZrM00LMf4l3/ffl0fDM4SMdeZol7S6/exbWltny/LxzJf
+/mgc8ZXzs85w+TVbR7GrYdrf7q8a28mfPfGp8lsYxSRe8upt7g2n+eNT51rchk0m+uhxryygRTum
+vZWZmsl9jJVAu7EaXm+1d8OJ7uVzONZIXIZjj9H98IqSP0cBuEfo1xYXCSeKmfVwIrV2Fk7k428k
+nyb8eYueK+GN32WYde03T6GbJNIUY4iCrggbJWGr1KqlBDS/t/2tk/AAb1NZFU/z8Om6L8Q/P3cx
+hbn9xQo+n/pZSuK3pZVCZ8Tz0WQK/4nIY5R++tY24I2DddLfx9pvDP0Zo39uRhPozwT98yRNGkCa
+xc3mSG38/Bb4VOaQL3Z6J8Pi8d3dC9CDUYEOdDe3bj5gZ7C7E2Me1FZKO/qDUsJ8gPjL482e/ugw
+ZT4CKeyzqD84F4wHr7B1kTafquxsmN+xPVdKceYB6pmL6I8Ok7De8Q1gas8xaGd5XXwZfo/hwZWA
+/5T2bsLw58W+2fYbFhbhu3IcVdkAaVuTMV1BJDEPVPUkD4TpfIBg7OI8hazMccyC4c8b3OwG2ZzU
+xZOUOr3+keDtKiz/8vYyehqDDpIdPvVwYi7Mu97LO2x89jGhpGrbq5uf3bUbLlLeVtPfJvmkxLVy
+f8mqsLoeq/Phk4JOPCdadGqPWEd9WtQpLG5x/Sh/WchXyvtrWlU5bNI0lTCre0GH36oYU+KRcTl6
+cHgorrfflrkIBa+HWtqYeo0Fr/p5Ai1RHBY114U/b1IU7Ov3vFA/OVyHT08CkX5T9Vdxt3Aowl7V
+axL+ZFgVKA8ssUwPoIglAAZWTksAnjEBANyH//YQsh+F47/9c1LJkQDYM+mmVtEko1SzAGJNJ3Su
+bWBcBLZ7vYHXAeF+edxGd5mjPJ8ZHjch7d2ptfLb+tMxQvskQucoSbmpDX+Qs/PBBg==
+
+
+ xW5hKSUqiacYYPROXN8XhPsgOMB3pSQSVO516yj8WqcSc6accjaTAGXQQQVZO3STB+BsOopnxTej
+0U0djzfxNKKC+rq5bWDl7j7GLCRdXP3Cn+WkSQVgpvUfub3ULQvxfolXjrZ7/CQ9ACWcbCIQBQEk
+g12Y1VmMUn5WXsPyCpJlzU3e3embjp8YsDN2a50d13TZAwsWsZ1rtYmk8UhXGQx2GtbMsEgs2T4m
+qhSuLpaq9bQpiuHvUKLfU72B94i9gXH94hfYYH5M8yOHVx/FI4Zj4+/COw8dXXQY3liuQkDwm364
+wE3QBjK9Mgv76WsSG49pIPaEPBORmR4BxkEMfUoa36WM7wD44tewYaPogOAxcJ9HY7FWjTl/bUS2
+w+/M/QQIxLmIkc35GUhTugKPhKSNQdMJpddfGTFgWxle6xIAvgqhsOyQ15jknKX7MlwqN1Mx53sO
+lB9yIGEkgTZuPHiyXiixwUzoaSDV9QltCjYJNv3rPG7b3Raj3V+y5+P3fSlmJmCGxeqZg0MIkKS3
+N+AmjFsg0IUMhSU69cb5KaIXSxPXQ8ROky7jxp1iwTDztR7de3rB2wDy2MRG7P9/7V17QxNJEv8E
++Q7jKisIGaa7p1+6qxJAYEUEBAUfYAgROHltCOd6f9xnv6rqnp6e8Eqie+zeua6S1PRUv+rxq+oH
+5982Ee7qVcfgPTHwkgyg+2g1sNi4jgVdGzlgG3punnz/e08rBm3DducyBjgvfbOgS46GGcriXuvH
+c/tXzAa0oSL9768YsR4xXN6OxJVubrmSYzs0ni5b8eUA+P+yXCl3cufKFlInHea/VnU7P4WqjqKq
+5l9stirh4fsgWZvv4yZ9mO+9d3T5qPL11XFPrF35enin0prXlcLLmyeVvQqPl3cqN+Us71eYLX8+
+L6JgdMvdJ+PoZFSPocza3aeGrEDp2Uq4hFm4e0fvyceDm9yUDhc0NrbJdda9v5bvz/DrZIEk5u+H
+T6MEHBAQPKgCAsIHE/TV7R8j/JCGFyfHZ19vzGN73osnr08bhdPOR6OIoOrjI+CPjr508/SgNuI8
++/0ni4+LR1WXf771tHiwGMUdcfVzD8fIWcU1zz0tQ44tzPWVdc89K7H1Fp2ABdripMdZcy8zBFPj
+HqbPrXNC7TEQXZ4eJ2DvgejyQj1kejHJ5Nzo8mLq0P/9XzdAVZZXM7TeDP7Zxa8bjq14snbsYjY+
+di8d84B2c4FmcjyOZDZfpr4W0TDCPGpvjX2a3lfPXjYOzV0TARSaWoS2jlnvinKxCAwcVyeJ42X8
+KqcG+ue4npUc1fqvD6en1n9+9HF6Xz8/nVqbOn7jQoXGuwdbJL0Q8Y21Ng6K6HZNBPH6GM/vzuJE
+FBG4AGlnNXXBwOz7mTH3qfnTaxcglBAZAkq8uQVh3iaI0i8LrrXo6krgT5DHR91T5j6JUiHxyyde
+LDY+jxdqtnXmIu2Dn5Z/DpH2WYhfZOpS1z5UlPkY7TWChj7Frw/HC1AKiha0Cd54nTldw+Q7bgRP
+CUCzua30rVO9RvhtJtWU7XxG6dmwiPpz8eD5KGkym8iOPxZj/PyBp02P7ATahKetM9T35ynYsWBt
+2MTer5MF1F7MMrnzHFe5nrOoyFzjdwWisvcSoTZUsHlCkzPmrikq8zAn/35c09ryxOTwz+Tq+WG7
+87JzsHdwnEzUHtUmpxYYWz/ePXnWabfX2n90Z05a50ft427yMJmcejW9sGDkTLt1sttOJiq/ljJK
+rVZSgU4O36qjt7/UPz470W9EtnsxUdg8njt8/Y+dxscXK1NTE8fsw6Mn7LWZubt7PlsbmZmef/+B
+FP2SVC/pxyPQ4W5j5pOd+zx/d/XX5synbPNxpD0Esu+frv2OybN5vI1tBCPBd3cm+LNXd0bnz6Av
+SNh0LsuFINWEKqZ7yuxrz2ojRQ2P1cirkWf23uru9Iff7s6PW3m6PDUv9leeflo7fTT7pvECgtKn
+n9bXlj6v3H1zf2petV6OW2Xfzrx91t6gvk5/WPh4QNmkqmqMsvHPGm/h2twqBObFcZkRKVUWvNth
+SkvddycKH7TZ8SatO4qitd316gRKUnxio5iGGfXGVGrSXLyXeOGUIlP6CvrxrkNBabElFKPQELRm
+sbze3w/5sudj8QPbbYYH4/GDxfFWeFCvONqJLd0Ojybjd06n98KDHl144NQgoq2PBmVbmogf7OUQ
+LoZHKZlasA9PM2eP5uvPEJgvMaeg809W8etKzHtnbxxHdsXrcOuefuitNoTxLlPeqv/KSF9WJikQ
+Yq0nCzhsK55ta2Wd2IooDTW/3RnxfqmeY1JwrR4nbJ48fRRkf7VxmO49mFpufVoEfXm+cOdVKZw0
+tcE8XTBehWlo8LH5Z79cxvEyfn6z5k0cVxZ/LfVTdpfvtec+vDV7U6/O7x3Mvt1dRnu7xkr5jbHG
+5paojYRcVR51feaJDsLyxiVK+czKNEaUbyYLsX8DvHc+4H7dN6xwJW8om3SCn4T7VNlKVUlRlwnq
+wgAErRzUAMycNx+BCyQT0Bg77Cw/neyq+cYsX5u5wgAEWzOob6QFwsu943f0je6Xk13qHb+jbyy1
+8oJ3/I6+sXpo9sbEJAn2hY2XF3RtKXI892a3JC0QumTQyoVkED+rx8mglnl+IZvUHT0LDJYvZpMe
+zKX5/NRRmfY6eXAx7VV/EaW9Ru2mqKS91N07I417Mz15s0L2ISByKVEKS0BYHtXFz4/eMfARMxMo
+Am5VlmgoLKmjfTjbFhQGFXq83a2sO969XwbBPYmUIiVxXSrl/kCplIuJlPHjMC/Xh9CbE8f9JK7w
+Iv84geA79L73AtbxK1NXlebpTj8ZA3cqHhpHqSJgUaaunr550IS5Gn/mrnlFexHG5LD3l2hebPdW
+nNE6XF+iaSiTBVGHJr9xIsbiZB5mJ0HGqvnJG7OTY1cN6jVt6EkUjk1cnyO9uQ31yxjQvPTNYrD0
+YMmgvPJpLLuCReUq2vmPE32K4UQ0LLWRazmGxoNu6NWxpeI+2r2sWo5d3cIoGX2dxEzwsion566q
+uefTlXKTD6ImHYtHy0WTjriffVqAAMP99MxBtXCvq7NPj+feuIWTyKFEmYyX7WPvWDc+1/n2/O4E
+Ll3VHW7DZSGHxlO/MLT+E7me+8W6DXzCjXTkhx3oDn7YgW63BiOf1t3XD2dth8bFvV9++ejWmD5t
+Pd2LfGXc0B7XGj2oxp7Rg3W2Gx70+NlPUS0x3K/fW9gPANota7O5xZ8C0l+KkT74hQDelurxg9OH
+KLhLk2F7q1zKHFieV4s43UtuhY7tbI0E3ivjrsjOKUPlW6kHm3SP3388ijvCVlIPudU0clnJyGSC
+hWnNvySCZ9t6+44V2Z9n42Fl2GEPPqYehoFZS10t2dg9k/HDVyOzE3YMQrPs9b0KKhg9chuDVj0o
+vXBkMezRWZvsl+Nl/GqXccwijmzy7tkv4+uPOurxer40pT/sjnqE/vbVnWLR9x0v17tL8eJj57uf
+qeMUv7yZiIH4/K+o8W9Sj8HfLjAn+DOtlz4lOnO4zv2n83dbhK347Fhzu9gCtah7Eq/FUUMIdt2G
+CdCIKdLAB4VYvDr1RUDRigA3Hy0D3BCT3nerOu1/tGmLxZhbhMUdF9QX3HPhsSAo2tM7H7w+TROa
+WZ6gdNXkwUY3dbj1YOLhOFkLce/R7G+XHRQRT14vPXcy5I6A+mMfo7vrHsv3bNCggLtnbwZF3Y+n
+624RtrofI+Bb0Az9en764+cpiF57MrEoLC9obMG4GDclGAAbB4IdjJ369+Pao9oI5nu2Z49341xP
+bWQEKK/a3fNTLCC3G+29g+PF5td2p8YS9yeDP/ivtgnjJuFSwheJ1MWd2uh08/D383bCxpJFMObb
+k1Od7sxBq3twctzsfE0eImnjxeL6wkzyMPGFt6Hwo2QU2pNtQ3F4NoYppm1o43YtS6bg78aX2jk0
+YAY+voS/q7UstZxJZZMs1VIZJeADyxnTCj5kgglNFC5zLMJtxiw+kdzmjCcbyBP7wOHvxlfg/Bt8
+/UfC0jz5kuTJi+TdhyzZxYpXa8LyVEnNE65tmkmlkqNanulUZsqUtMUa1J5qlke0nMnUaGsTbqBq
+a5Ci0zyTAih5aq1iyTS8Z1IjdQ40mzKdWSqlZA6lrIY+iCTPTMqBs8hEKiXwmYZWZanSWpe0xZow
+LOVa5PSeYoYnAirOsGLknVvJgMJTroSmFmiJnOBDrqymdlsYRCgD1cEglj25OAbTtcZOLUvcn8Y+
+DOHo+vFx86i9m+x1mrsHmDhUY0kd6lecGY2zICT0CqUnZUZK62UJiijDbFLnDIYk4wkTCjpnrJJJ
+Y68Go2MtU07seGpllkNzdCokl9TRzDCWNI5qOzWeNBo3ytxps7vPBbeXyxwWXMIcJ711CZcrHwK3
+P44Oj+Fxvdntdg52zrvtM890qtNpXijV2j843O20j10ZnkwuwJCFp/hP9+tp2z0dbbX+hf+PJZOv
+gPfxXrXgP5uH50XJs5Pdg1P4+7DgcHbFSzhZXtGSS9+a+PZesWt7dXNnXr2e217bPzibPWyjeeqn
+JxdeQbr27cCHr/abp+210IjKPCaTSyfd1XbrpLMLgux6cJOMTq62m4cvmtCuP7BPo9NTC3NeA9Y+
+nXSO3KPQvqndk5329tSCRbl71f162N4uWxAZPjS1G7s9WsaH1jL3L+hThkqiktGxZOMNfAGTCqYJ
+bCm+K9BMMrSgGWg8GscszXOdSTSiCjhz/GDQzMpkowmv/wZlwG4mX8AgWTLFoJM2NbnSYCaFVanO
+weqgnkoOCouam2VglMEQp5oznbyGUjnYbu20mecCzBZQMuyFyHiaaaBsXsJ/sfapL20Hs8j/btre
++qHq31/VvV7NOAThtcqBGkIEoDxMskJjenEBAQGT5dq5c3CZHgjwXLOShkAA0EmO7rug5SxPVYb+
+Cjw0mA9B0MDmBARkqlWuCAgAL4YSjs5aZNoBCMZQM1QKjxPCHTIzTjGUFYQEoHngIAMJgYBImUTu
+8J5BR4nQQBM0AN6aSeAAZZRGuAItoFYiFJCAG4SgdnJrDEEBY7kq+3JxFKZrZ33qoTB/Nz384XX/
+RFUkMP8t3ieC8LEryjPwfYBUY1eUZ+BkBHwMrigH4Gy0jj1RnoG/EnleeiKkGKYqnugi+wE8UfZ3
+04AfnujPE/8Z53S4NmCHg9cRRoEVtt6noPgfUZBmtDfMEO8mSMhshuYbbH0GErpJ5psecrTaGQR5
+Aqw92XEOVttqEPJNYs8yijcFgFmKCXsrfI2487KQThPYBMHnqJUJhLy5JdipoT4Ksa0BLwOht8GY
+zf2oe2qd5Tm8APgvgTgZvB0oskJMCsElvI0FILjMAF5DC8GDAsyWqVDMuS8JBoBaCEgwTzaOalop
+/ALGoC4yg2Ei+M7eN+saRjc14NUSAZjdlW+0hqmy0WeVODUMLBgFyyKHUYH6Pjng3Q==
+
+
+ j5XIhfrb+ckfVuK/H5oOoWt/UqyahVj1sgD1JptxXYCKaD1nIs0M+lsEsRlABHDngKjBmSKi5ilg
+dklYWTHmUmsAkQ16aijFlUX8DMOjDCJxgBcIWtHrk/3cJP7QIgLCnFH+rbfC6+whZhUZdQgGXcKb
+PEMQI8C+AJLA+cA0HcYWQK+XP4nMAHlgHRB05ACm4SF4Asx6YU5PQGQC7VcaxgiabQAT1RmHSeXa
+AxMhXUcgBkCLKAGYp7mEiYaQxKQ5mKuLb9YlBuEq59AKMFvwgtBkEoeos9FnnZjAFNBVeBOMZAZw
+b1CTqH8Apx8m8UaTOIy23ZZNvN5uXGcU12vWfzqHzzfpz/YfYnp7p3nWhg+z25drEcx84+Tk0A35
+dKfd7LZ3G18Xjk5POt12pw9N60/y/qrK+ql5eAafJ9ePD3CD841Ku3/yZa9zsHv9G1WNDa98p6Ec
+tqt3P9F//Xf2tLkHGnZ40hmgt9E7t9zdXPP+u3pw/PmsBebm4ZeD492TL/U/BujyJe/ectdR5Qfo
++yDS/FeQY0X/9d/BHfQSnUElufLWLXcZoJriXEkxhES3vg4jy62vt95pmxqIveHPEJ3+18nJ0TDd
+du/d9mwP0WG0u2f7TbA/w3Q7fvu2Oy9Tba1SbBhRH8pst27fYHc754MY7KLlCCvqOzsnQ3U7evmW
+ew9h+vCeer99sLff/QZ3XTC45UE4vWESLx2DXb95q35+fNA9G2YQejnc8ihoDPaHFYUvB7vd/W+Q
+BP/+LQ/BgBFJ6ATGGd/mBXo53PJAZCkE7TK32QD+0IG2k9Nm66A7CO7pee/Wez6MFuDUDd7zy1+/
+5QFgSg9vBobqffnuLXf9EHfcDgV+zjsdNOTEYCgcVGXwF8gqlslOTKH986D9pY/E4sSf2aLvleek
+PGGZymPJ1KlfFMYNznmxi1nhzgfKCKZ5sQsid7QsxbVjQZsmHCVsbS62MNHWpTzDjUQmTwSHklpy
+vyMC2AEN0/aK2QQpUmcCKDKVivZIKPiA2x+YSFWWqaRVw1w+bTEUjEHbFG5TgloU7haCD0JK6VZQ
+ZK6BwlOLj1q0GKNwvUfAB2k47YoSGRXSaW4yfI271QHBbJrnIqfXcGcIrnhz5vZO4yYoaKogCvDG
+ZvZ2r3XVgg0DrSo2ftWzVONyBv7EvhU/PZlZaaD7mbCJyXAxTUqGudi6hnHTUL/GhXdobR0GJMet
+5/BBWZvltINbcMWpa/CX1qvrUnOdWmw5DC70Pc8ve1exXEIFMBx1KaCrGQcpaLSGq7bRd7W0MmaM
+hTHMUc4M1nntnuobU/EDD+73T8WDF9VagfRGStpoTLUA766edJtYNtJFdm3OPhad69Lzwgq3phYp
+m7ASE/yyVDbc46qMlKWy0SZ7Y2WsbLTNH6cnKJswOtVGs1LZcPsGzxiPlQ33IChGkuCUDQlWMl4q
+G75mZcZjZcPtfjbXolQ23F1oJFOlsl3sXl/K1iMOVWmoC5FnqVEgdRVVI5HPjBN5LhKSWmu81HJF
+uzSsyAqJN6RoUlsQeA1UqaCxLBfq4pt1+K5SGFnQMg3mg0NHQOKHqLHRZ424GQcwjfQaln+rhg0+
+ov8b+pU5P3nx/A4dwQGXJUgTWAZzc+RpFuYLnAQ4GEbewhra5Wdh0kikbcoN7vUhinIHbDgojt/l
+Z7VQpHlMIndgQDuCHIW7+jKrNalQRGM4Iz0U0tgKBdo57d7LrXPHJtPu0I3UOSfVo80d1E7cxeso
+wKlFrh0kT3sa7YTAHgvhOKGEVseFwxi0esYKgqyeUiDDycXxbPVx7Ad324NQMrB3GrEKg0HPNW3n
+NJwbJ6NgpfzBCvwIloq7rQXg/PDMEkAfnHfc8o97OrBo8RkPFZhMFOZu8KM/+u+1k6DZGWgjgXtz
+gD0EZVW32EmwkQrco7aDdBWN0AAd7dx+XCcYaoOyZpBuUkK7/27+BTLZw83mYN3s3H43ATdlEJlw
+NtBsDia0xRLc//3Wnv58xm0fxrvZ912PbC45kwT2AgF8eSgplVYxQ1E9HthVFbRDJIziIHKn6B7x
+AaMIIANnTkChQDtEUdoQ2gFQzxjzNIjKMBRQuZKOE8+Vp3BVRTsRjWVCJj0UeYHi0Y4pkgHagTFq
+QUaRjsVz2iJCO0gRnOMZKewNnhV0NIknNLDHgjlOeICkMiy4rb1VHSnCOhUCQp3esWz1f6op/wEo
+fgCKH4DiLzebPwDF/zWg8J6bkgV40BAPDqIvRi+RaTpwhbvYOR2ecNCiN3uOpwY4eCZytuAYDKYB
+wAVxI1wKPdBwQ7xB3wMKKbi7qiPjmDnHQ4KCPLKnYFYPk0O5jUvpFIJ/VnKKKL4+fC/QlPOIESeZ
+Zrm0cX2e0qpFrfK0qOWe08X+9RXrZ1fmbFhqOR5iJshWfIlal7skfhm+n8Of6o0CKlWW49lLnWpM
+cB65EcgpB4NZElwqgBEQivAN7hVDvAEUy3ARAYAins1u0eUBlGvGpKmkLDdeJ4DbvzFBqpRxLTNG
+ewJzsAEvVqCsrSuEBK4xV1vwQYqRlLYJteFwu7RJ0SQcXBh/VjYbT58izAh9w9cEjI0DXNIKQ+sx
+lGDFKaH7XLBIrhH+wCNjGK2rAG9CLnjCVQpBMiiZVCRdSsmoa0Qw1osgl9ZEhZTvSMEHKe4QeFkZ
+5rExm1k2CSkgknnZ7Ivz1s9lMeZKQcopxcidIBVfXJ/o/hvMqkqUI3+gZJ2qAriuwtIaGgCOm+s9
+Z1BtmiSHeKEDqFRHNN9WcKcDAJ7d0GmvXgJPaWKRnLkJsFwZP910CQ3JNObfcUoyvB4IKZSGR0pO
+MBe1S3qtxOtsnFIaq52UuGObeA7ZKymBZLploKgrx3OcbmyVszjGKPeSW4670LMrE/Syshhm8Og/
+/JQ418VPT2ZW4tU/uE6hBF0CpOnoZh3bg7lzPEcpYPZhhjKOclQHAeHaaBLj3JCEGLA+RtBimFJa
+4+lpGBsNn8Aq5Ze8qzPjNacOao8HLkHDcDFsmGobfVdL2pmR6IN0ZezmI5w3LoYNPLh/QrJeIozi
+WvWVrL/+AIvsdy0MrXPucuZkJo6IZvLMCT631imVc4OoZsKFfkJlzhjhuWdnsJTFFSmcV9QAi4ca
+rVNFqXJ3uQwEjk5beZY7y6/80jBqWe7Nk9XcaxkusdN5OFpbA6ViVhXVQSxsiKacOdSFFVVuSe1C
+3/rRsx5JqApCXTADUawCXa9oGUXuTJC0M1RxFNi8EFhspcWhRPef+SgYdAxkHSwMqgDIunCL9hfe
+rMMP7VYiUcVwLdIKdxxw4DobfdZJ9wKBjyX1ynIwdd+mXoOP6f+EcpXnwMpPPSmkpt9MEi7JUwXg
+lbhvBHeQ4BOu6fwwomHcU+Lv30i5v2vj0j0lqA9S0EI0QjkuPDzzNPB3hM4kbeAneGRMZinPYzQi
+sILSoitsDKl7WQrvReA6YhQIvja3OO5pyh20jxjBlHN0rmV1nuJAjG9UKBXaHTj19g7Xah0s9VcA
+VPodaICZJMFJgLzS7W3RUvc0hCi+IeTwy1IabAqt3QVGgRJ1PNA4wH/rdNFzYk6jovo8xY2za1Qo
+FNodGPX2rq8wILZvAP28sMAoZyzBTSdoww1edcQ1LewDjDUi95hO4D4GRF3UZGt93UJEoG44s3Bj
+U/70w5835Yv703RURlliV5wkSn7iQPGMMy+CnqbAxpHKYJrWy6B01ziCKWa0w8RTnAzanOdxKbzc
+ktuYU6D4+pwMehovVCZwwkAGAWhZn6e0alGrQqnQ8sCpt3/9CGE+qBByDEqdCOJKgszDCNGmnBzv
+wvyfl8C8300X392NZHQhU+5sKpgv5Sc82NRAAwORY6gHk0O7M8gpWNzMVBo5T3ECpk3O41LgFWwu
+Y06BEhnVQIO5J6cQGIFToEugyuo8pVWLGhVKhYYXjHp71484i0HFGWy7AZcVEi6MC365Tf2mTUe3
+JdF9r8GJ/m1qlA9wYiggxlCiKoaBhgtU2t1OaWkDHONunx6WoQ2WgeLE0GjG4lJg+YTgMadAicQw
+0HCXEUYuJSfc6IcXNpX1eYqXQ9eqqJRveeDU278rIxZ+5SDylBte2E2IHDJKP5atNq52iD8MAm+i
+VsrWtbayLEiXMfXFsnElS+w89DKvcPV2+7+HiCkVI2m3dBCfiOaALKXwMFgKWBfXNCHCUjEipose
+BdmeUApvh2Y2YhQIYTIjmsexESOPdaPqAiKOGhVKhXYHTr29KxAx7gi31la7XZA8jKVN28LIEupW
+2uEBMbZDWowQy1IoBZmIOQVK1O9A8zg24uSxblRfAMRRq0KpouGBUU/nBsTD9YsWk0mJt7cZZSv2
+u06g2OgIFKui2bn6XqC4z/bcNiwZDhjjZAUZ9cA4onk4S5e2UmK7gLw4yEJHSNmrhOQsLoQAQaiY
+UaAEnBrReKE4gZNHvGV1ARZHbQqFTGk5PKPe3g0IiweQRcTGqCwBHeMVs67d8nuh47+JKP4lEDLZ
+M25E1cgGmse1eZEbLaBvZPQCQMZDPXRTWlQK1xVtzKcgRCa2IDlQG3HxuDeqK6DjskGhUGhzwae3
+YwOC4wGE+lKE7JotdPKdEPLtSvV/ASXjgClreFUUA81jW5p5qUv4i0VyYysgmc6X0b3wZSlMbXER
+MwqUijB6moe2EScPf6P6AkguGxUV8u0OjHp71w9GrhdjyBQzeNcd7v7zhpQW0ytwNWp+iZbrEKUB
+isGF20phQ4shyDAGt33ybVzNFzuaacsuw8xDyf2lQ3Art6tdHbxULfawZyx77p5GE8bc0hQejQJD
+fhTTYPBxOyMCA81odQohvVXxGranuHWnjG6RLUvhchMt53pOEcXX59a5ZLEIbXJaZAmcBEw/03F9
+nuLgim+Vp0Ut95wu9g8FpVxzWGy4XxY0e7xLvyqoXq+NjCw399prnebBYbtT2ztr/rOdNI+PcSGk
+jWfMYa7aZ92TTjsp7huAV4riIyOzL5/V/gOEepm2
+
+</i:pgf>
+</svg:svg> \ No newline at end of file
diff --git a/gnome-2-22/data/icons/hicolor_apps_scalable_im-msn.svg b/gnome-2-22/data/icons/hicolor_apps_scalable_im-msn.svg
new file mode 100644
index 000000000..eb6511638
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_apps_scalable_im-msn.svg
@@ -0,0 +1,302 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://web.resource.org/cc/"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ id="svg2"
+ sodipodi:version="0.32"
+ inkscape:version="0.43"
+ width="48"
+ height="48"
+ version="1.0"
+ inkscape:export-filename="/home/vinicius/tango-icon-theme-code/protocols/msn-48.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90"
+ sodipodi:docbase="/home/vinicius/tango-icon-theme-code/protocols/scalable"
+ sodipodi:docname="msn.svg">
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title>MSN Protocol</dc:title>
+ <dc:date>2006-11-29</dc:date>
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Vinicius Scopel Depizzol</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ <dc:source>vdepizzol@gmail.com</dc:source>
+ <dc:subject>
+ <rdf:Bag>
+ <rdf:li>MSN</rdf:li>
+ <rdf:li>Protocol</rdf:li>
+ </rdf:Bag>
+ </dc:subject>
+ <cc:license
+ rdf:resource="http://creativecommons.org/licenses/GPL/2.0/" />
+ </cc:Work>
+ <cc:License
+ rdf:about="http://creativecommons.org/licenses/GPL/2.0/">
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/Reproduction" />
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/Distribution" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/Notice" />
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/ShareAlike" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/SourceCode" />
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <defs
+ id="defs5">
+ <linearGradient
+ id="linearGradient3286">
+ <stop
+ id="stop3288"
+ offset="0"
+ style="stop-color:#c7d9ec;stop-opacity:1;" />
+ <stop
+ id="stop3290"
+ offset="1"
+ style="stop-color:#dfe9f4;stop-opacity:0;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient7013">
+ <stop
+ style="stop-color:#c7d9ec;stop-opacity:1;"
+ offset="0"
+ id="stop7015" />
+ <stop
+ style="stop-color:#dfe9f4;stop-opacity:1;"
+ offset="1"
+ id="stop7017" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4380">
+ <stop
+ style="stop-color:#000000;stop-opacity:0.60344827;"
+ offset="0"
+ id="stop4382" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0;"
+ offset="1"
+ id="stop4384" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient16408">
+ <stop
+ style="stop-color:#87b2e0;stop-opacity:1;"
+ offset="0"
+ id="stop16410" />
+ <stop
+ style="stop-color:#3f7ab9;stop-opacity:1;"
+ offset="1"
+ id="stop16412" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient14652">
+ <stop
+ style="stop-color:#badcff;stop-opacity:1;"
+ offset="0"
+ id="stop14654" />
+ <stop
+ style="stop-color:#729fcf;stop-opacity:1;"
+ offset="1"
+ id="stop14656" />
+ </linearGradient>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient14652"
+ id="radialGradient14658"
+ cx="24.80966"
+ cy="3.1118734"
+ fx="24.80966"
+ fy="3.1118734"
+ r="4.045774"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.143376,-1.546375e-15,1.755727e-15,1.33519,-3.557111,-1.043069)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient16408"
+ id="linearGradient2630"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.56247,0,0,2.753017,3.471512,0.653917)"
+ x1="7.3585782"
+ y1="10.033006"
+ x2="7.4242849"
+ y2="15.283006" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4380"
+ id="radialGradient4386"
+ cx="11.403918"
+ cy="11.820429"
+ fx="11.403918"
+ fy="11.820429"
+ r="3.9179103"
+ gradientTransform="matrix(1,0,0,0.4375,-9.43595e-18,6.648991)"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4380"
+ id="radialGradient4390"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.4375,4.14469e-15,6.648991)"
+ cx="11.403918"
+ cy="11.820429"
+ fx="11.403918"
+ fy="11.820429"
+ r="3.9179103" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7013"
+ id="linearGradient7019"
+ x1="27.18845"
+ y1="8.5750885"
+ x2="23.755941"
+ y2="1.5480845"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3286"
+ id="linearGradient7027"
+ x1="14.197828"
+ y1="20.762081"
+ x2="5.7143059"
+ y2="8.1650333"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.045145,0,0,2.025318,0.739154,0.465862)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient16408"
+ id="linearGradient7946"
+ x1="7.0555573"
+ y1="33.672562"
+ x2="11.832954"
+ y2="35.06567"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.927935,0,0,1,1.147813,0)" />
+ </defs>
+ <sodipodi:namedview
+ inkscape:window-height="714"
+ inkscape:window-width="1014"
+ inkscape:pageshadow="2"
+ inkscape:pageopacity="0.0"
+ borderopacity="1.0"
+ bordercolor="#666666"
+ pagecolor="#ffffff"
+ id="base"
+ showgrid="false"
+ fill="#729fcf"
+ showborder="false"
+ inkscape:zoom="1"
+ inkscape:cx="37.5"
+ inkscape:cy="19"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:current-layer="svg2"
+ showguides="true"
+ inkscape:guide-bbox="true" />
+ <path
+ transform="matrix(4.526985,0,0,3.006648,-28.23745,5.709214)"
+ sodipodi:open="true"
+ sodipodi:end="6.2799944"
+ sodipodi:start="0"
+ d="M 15.321829,11.820429 A 3.9179103,1.7140858 0 1 1 15.321809,11.814959"
+ sodipodi:ry="1.7140858"
+ sodipodi:rx="3.9179103"
+ sodipodi:cy="11.820429"
+ sodipodi:cx="11.403918"
+ id="path4388"
+ style="opacity:1;fill:url(#radialGradient4390);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.48917751"
+ sodipodi:type="arc" />
+ <path
+ style="fill:url(#linearGradient7946);fill-opacity:1;fill-rule:evenodd;stroke:#3465a4;stroke-width:1.00000048px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
+ d="M 15.46346,24.414244 C 10.785493,28.476792 1.6101807,34.975993 7.2307622,38.679967 C 12.779079,42.336318 14.894624,28.872343 14.894624,28.872343"
+ id="path8525"
+ sodipodi:nodetypes="czc" />
+ <path
+ sodipodi:nodetypes="czc"
+ id="path7071"
+ d="M 15.353246,25.591713 C 11.734612,29.238525 3.2531464,35.09652 7.7417982,37.899128 C 12.001173,40.558581 14.043096,28.138937 14.043096,28.138937"
+ style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#c7d9ec;stroke-width:1.00000012px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1" />
+ <path
+ style="fill:url(#linearGradient2630);fill-opacity:1;fill-rule:evenodd;stroke:#3465a4;stroke-width:1.00000048px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 24.292455,17.301321 C 16.935857,17.428878 -2.1890432,43.377295 23.394922,43.377293 C 28.775671,43.377293 32.295389,42.22196 34.344814,40.402607 C 34.359882,40.38923 34.389733,40.416057 34.404649,40.402607 C 35.545703,40.890781 38.571551,39.598037 39.909512,38.693744 C 45.082133,35.19771 36.500579,26.909532 31.532546,22.301325 C 31.401541,22.179808 26.294466,17.48873 24.531797,17.364612 C 24.447957,17.358794 24.379687,17.299808 24.292455,17.301321 z "
+ id="path5023"
+ sodipodi:nodetypes="cssssssc" />
+ <path
+ style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:url(#linearGradient7027);stroke-width:1.00000083px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 23.624857,42.414249 C -0.59814104,42.64502 18.255106,18.509032 24.039065,18.512059 C 26.410046,18.588582 38.20781,29.175081 40.119099,34.372181 C 41.916319,37.111847 36.635193,40.539824 34.716977,38.456356 C 33.320614,40.39141 29.993406,42.401612 23.624857,42.414249 z "
+ id="path5900"
+ sodipodi:nodetypes="ccccc" />
+ <path
+ style="fill:#000000;fill-opacity:0.12987013;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 30.401802,32.658992 C 30.401802,32.658992 29.835279,40.428683 33.786549,40.24678 C 36.824985,40.104721 30.583172,32.660882 30.401802,32.658992 z "
+ id="path5265"
+ sodipodi:nodetypes="csc" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1;fill:url(#radialGradient4386);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.48917751"
+ id="path3505"
+ sodipodi:cx="11.403918"
+ sodipodi:cy="11.820429"
+ sodipodi:rx="3.9179103"
+ sodipodi:ry="1.7140858"
+ d="M 15.321829,11.820429 A 3.9179103,1.7140858 0 1 1 15.321809,11.814959"
+ sodipodi:start="0"
+ sodipodi:end="6.2799944"
+ sodipodi:open="true"
+ transform="matrix(2.166658,0,0,3.055838,-1.154206,-14.5643)" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1;fill:url(#radialGradient14658);fill-opacity:1;fill-rule:nonzero;stroke:#3465a4;stroke-width:0.34177133;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path2396"
+ sodipodi:cx="26.385618"
+ sodipodi:cy="4.5758967"
+ sodipodi:rx="3.595403"
+ sodipodi:ry="3.595403"
+ d="M 29.981021,4.5758967 A 3.595403,3.595403 0 1 1 29.981003,4.5644242"
+ sodipodi:start="0"
+ sodipodi:end="6.2799944"
+ sodipodi:open="true"
+ transform="matrix(2.924455,0,0,2.927415,-53.17815,-0.370312)" />
+ <path
+ transform="matrix(2.645712,0,0,2.622481,-45.82115,0.928673)"
+ sodipodi:open="true"
+ sodipodi:end="6.2799944"
+ sodipodi:start="0"
+ d="M 29.981021,4.5758967 A 3.595403,3.595403 0 1 1 29.981003,4.5644242"
+ sodipodi:ry="3.595403"
+ sodipodi:rx="3.595403"
+ sodipodi:cy="4.5758967"
+ sodipodi:cx="26.385618"
+ id="path2398"
+ style="opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient7019);stroke-width:0.37964022;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="arc" />
+ <path
+ sodipodi:nodetypes="cc"
+ id="path14660"
+ d="M 34.763497,38.506802 C 32.960413,37.064271 31.152443,33.19781 31.176374,32.550651"
+ style="fill:none;fill-opacity:0.92941176;fill-rule:evenodd;stroke:#c7d9ec;stroke-width:1.00000036px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" />
+ <path
+ style="fill:none;fill-opacity:0.92941176;fill-rule:evenodd;stroke:#3465a4;stroke-width:1.00000036px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
+ d="M 36.615639,40.197689 C 31.377707,39.46 30.570319,32.555681 30.570319,32.555681"
+ id="path10279"
+ sodipodi:nodetypes="cc" />
+</svg>
diff --git a/gnome-2-22/data/icons/hicolor_apps_scalable_im-sip.svg b/gnome-2-22/data/icons/hicolor_apps_scalable_im-sip.svg
new file mode 100644
index 000000000..309fbf37b
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_apps_scalable_im-sip.svg
@@ -0,0 +1,251 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://web.resource.org/cc/"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/s odipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="48"
+ height="48"
+ id="svg2"
+ sodipodi:version="0.32"
+ inkscape:version="0.43"
+ version="1.0"
+ sodipodi:docbase="/home/hbons/Desktop/Gaim Refresh/protocols/48"
+ sodipodi:docname="sip.svg"
+ inkscape:export-filename="/home/hbons/Desktop/Gaim Refresh/sip.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90">
+ <defs
+ id="defs4">
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient2227">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop2229" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop2231" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient2264">
+ <stop
+ style="stop-color:#eeeeec;stop-opacity:1;"
+ offset="0"
+ id="stop2266" />
+ <stop
+ style="stop-color:#eeeeec;stop-opacity:0;"
+ offset="1"
+ id="stop2268" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient3150">
+ <stop
+ style="stop-color:#2e3436;stop-opacity:1;"
+ offset="0"
+ id="stop3152" />
+ <stop
+ style="stop-color:#2e3436;stop-opacity:0;"
+ offset="1"
+ id="stop3154" />
+ </linearGradient>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3150"
+ id="radialGradient3156"
+ cx="10.748654"
+ cy="10.457643"
+ fx="10.748654"
+ fy="10.457643"
+ r="6.6449099"
+ gradientTransform="matrix(-1.017285,3.152773e-16,-5.511361e-9,-0.35721,21.6831,14.19321)"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient2316">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop2318" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop2320" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2316"
+ id="linearGradient2322"
+ x1="11.5"
+ y1="-1.7001089"
+ x2="11.5"
+ y2="6.1576657"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-0.526317,6.411502)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2264"
+ id="linearGradient2270"
+ x1="-13.576514"
+ y1="7.5"
+ x2="-9"
+ y2="7.5"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2264"
+ id="linearGradient2272"
+ x1="5"
+ y1="-15.5"
+ x2="14"
+ y2="-15.5"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2264"
+ id="linearGradient2274"
+ x1="5"
+ y1="-21.5"
+ x2="10"
+ y2="-21.5"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2264"
+ id="linearGradient2276"
+ x1="16"
+ y1="5.5"
+ x2="21"
+ y2="5.5"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2264"
+ id="linearGradient2278"
+ x1="16"
+ y1="9.5"
+ x2="21"
+ y2="9.5"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2264"
+ id="linearGradient2280"
+ x1="5"
+ y1="-11.5"
+ x2="14"
+ y2="-11.5"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2264"
+ id="linearGradient2282"
+ x1="1"
+ y1="13.5"
+ x2="8"
+ y2="13.5"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2264"
+ id="linearGradient2284"
+ x1="1"
+ y1="9.5"
+ x2="8"
+ y2="9.5"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2264"
+ id="linearGradient2286"
+ x1="-10"
+ y1="1.5"
+ x2="-5.4234858"
+ y2="1.5"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2264"
+ id="linearGradient2288"
+ x1="1"
+ y1="5.5"
+ x2="8"
+ y2="5.5"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2227"
+ id="linearGradient2233"
+ x1="25.0156"
+ y1="8.8961887"
+ x2="25.0156"
+ y2="21.733829"
+ gradientUnits="userSpaceOnUse" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="13.788817"
+ inkscape:cx="34.924917"
+ inkscape:cy="22.006439"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="true"
+ fill="#eeeeec"
+ inkscape:window-width="1268"
+ inkscape:window-height="971"
+ inkscape:window-x="6"
+ inkscape:window-y="21" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1">
+ <path
+ sodipodi:type="arc"
+ style="opacity:0.4;fill:url(#radialGradient3156);fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path3140"
+ sodipodi:cx="10.748654"
+ sodipodi:cy="10.457643"
+ sodipodi:rx="6.6449099"
+ sodipodi:ry="2.3675451"
+ d="M 17.393564 10.457643 A 6.6449099 2.3675451 0 1 1 4.1037445,10.457643 A 6.6449099 2.3675451 0 1 1 17.393564 10.457643 z"
+ transform="matrix(3.376861,0,0,1.900703,-12.73565,10.62313)" />
+ <path
+ style="fill:#729fcf;fill-opacity:1;stroke:#3465a4;stroke-width:1.00000095;stroke-miterlimit:4;stroke-opacity:1"
+ d="M 2.4375,10.5 L 2.4375,22.5 L 13.75,22.5 L 13.75,26.5 L 2.4375,26.5 L 2.4375,30.5 L 17.5,30.5 L 17.5,18.5 L 6.21875,18.5 L 6.21875,14.5 L 17.5,14.5 L 17.5,10.5 L 2.4375,10.5 z M 21.46875,10.5 L 21.46875,30.5 L 25.5,30.5 L 25.5,10.5 L 21.46875,10.5 z M 29.5,10.5 L 29.5,30.5 L 33.5,30.5 L 33.5,22.5 L 45.5,22.5 L 45.5,10.5 L 29.5,10.5 z M 33.5,14.5 L 41.5,14.5 L 41.5,18.5625 L 33.5,18.5625 L 33.5,14.5 z "
+ id="rect2212" />
+ <path
+ sodipodi:type="inkscape:offset"
+ inkscape:radius="-1.0424688"
+ inkscape:original="M 2.4375 10.5 L 2.4375 22.5 L 13.75 22.5 L 13.75 26.5 L 2.4375 26.5 L 2.4375 30.5 L 17.5 30.5 L 17.5 18.5 L 6.21875 18.5 L 6.21875 14.5 L 17.5 14.5 L 17.5 10.5 L 2.4375 10.5 z M 21.46875 10.5 L 21.46875 30.5 L 25.5 30.5 L 25.5 10.5 L 21.46875 10.5 z M 29.5 10.5 L 29.5 30.5 L 33.5 30.5 L 33.5 22.5 L 45.5 22.5 L 45.5 10.5 L 29.5 10.5 z M 33.5 14.5 L 41.5 14.5 L 41.5 18.5625 L 33.5 18.5625 L 33.5 14.5 z "
+ xlink:href="#rect2212"
+ style="fill:url(#linearGradient2233);fill-opacity:1.0;stroke:#ffffff;stroke-width:1.00000095;stroke-miterlimit:4;stroke-opacity:1;opacity:0.35"
+ id="path1352"
+ inkscape:href="#rect2212"
+ d="M 3.46875,11.53125 L 3.46875,21.46875 L 13.75,21.46875 C 14.316987,21.474875 14.775125,21.933013 14.78125,22.5 L 14.78125,26.5 C 14.775125,27.066987 14.316987,27.525125 13.75,27.53125 L 3.46875,27.53125 L 3.46875,29.46875 L 16.46875,29.46875 L 16.46875,19.53125 L 6.21875,19.53125 C 5.6517628,19.525125 5.1936251,19.066987 5.1875,18.5 L 5.1875,14.5 C 5.1936251,13.933013 5.6517628,13.474875 6.21875,13.46875 L 16.46875,13.46875 L 16.46875,11.53125 L 3.46875,11.53125 z M 22.5,11.53125 L 22.5,29.46875 L 24.46875,29.46875 L 24.46875,11.53125 L 22.5,11.53125 z M 30.53125,11.53125 L 30.53125,29.46875 L 32.46875,29.46875 L 32.46875,22.5 C 32.474875,21.933013 32.933013,21.474875 33.5,21.46875 L 44.46875,21.46875 L 44.46875,11.53125 L 30.53125,11.53125 z M 33.3125,13.46875 C 33.374873,13.463118 33.437627,13.463118 33.5,13.46875 L 41.5,13.46875 C 42.066987,13.474875 42.525125,13.933013 42.53125,14.5 L 42.53125,18.5625 C 42.525125,19.129487 42.066987,19.587625 41.5,19.59375 L 33.5,19.59375 C 32.933013,19.587625 32.474875,19.129487 32.46875,18.5625 L 32.46875,14.5 C 32.464991,13.997926 32.819624,13.564486 33.3125,13.46875 z " />
+ </g>
+</svg>
diff --git a/gnome-2-22/data/icons/hicolor_apps_scalable_im-xmpp.svg b/gnome-2-22/data/icons/hicolor_apps_scalable_im-xmpp.svg
new file mode 100644
index 000000000..a0a9eb866
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_apps_scalable_im-xmpp.svg
@@ -0,0 +1,632 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://web.resource.org/cc/"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="48"
+ height="48"
+ id="svg2"
+ sodipodi:version="0.32"
+ inkscape:version="0.45.1"
+ sodipodi:docbase="/home/baze/Desktop/jabber/scalable"
+ sodipodi:docname="jabber.svg"
+ version="1.0"
+ inkscape:export-filename="/home/baze/Desktop/jabber/scalable/jabber.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape">
+ <defs
+ id="defs4">
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient6156">
+ <stop
+ style="stop-color:#000000;stop-opacity:1;"
+ offset="0"
+ id="stop6158" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0;"
+ offset="1"
+ id="stop6160" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient6339">
+ <stop
+ style="stop-color:#cc0000;stop-opacity:1;"
+ offset="0"
+ id="stop6341" />
+ <stop
+ style="stop-color:#cc0000;stop-opacity:0;"
+ offset="1"
+ id="stop6343" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient6305">
+ <stop
+ id="stop6307"
+ offset="0"
+ style="stop-color:#cc0000;stop-opacity:0;" />
+ <stop
+ id="stop6309"
+ offset="1"
+ style="stop-color:#cc0000;stop-opacity:0.61176473;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient1311">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop1313" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop1315" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient1311"
+ id="linearGradient5100"
+ gradientUnits="userSpaceOnUse"
+ x1="27.943266"
+ y1="1.5"
+ x2="27.943266"
+ y2="25.500046" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6305"
+ id="linearGradient5121"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.8271607,0,0,0.4916824,67.476312,197.10085)"
+ x1="274.33041"
+ y1="394.74817"
+ x2="279.77005"
+ y2="394.74817" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient1311"
+ id="linearGradient5125"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-0.7618383,0,0,0.6527934,502.60091,134.89766)"
+ x1="278.50909"
+ y1="391.67624"
+ x2="273.50909"
+ y2="391.73898" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6305"
+ id="linearGradient5128"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.8271607,0,0,0.4916824,68.20175,195.70886)"
+ x1="273.4534"
+ y1="397.57925"
+ x2="278.89304"
+ y2="397.57925" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient1311"
+ id="linearGradient5131"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-0.7618383,0,0,0.6527934,502.60091,133.50572)"
+ x1="278.50909"
+ y1="391.67624"
+ x2="273.50909"
+ y2="391.73898" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient1311"
+ id="linearGradient5134"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-0.7618383,0,0,0.6527934,502.60091,133.41933)"
+ x1="278.50909"
+ y1="391.67624"
+ x2="273.50909"
+ y2="391.73898" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient1311"
+ id="linearGradient5137"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-0.7618383,0,0,0.6527934,502.60091,133.33292)"
+ x1="278.50909"
+ y1="391.67624"
+ x2="273.50909"
+ y2="391.73898" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6305"
+ id="linearGradient5140"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.8271607,0,0,0.4916824,68.201735,195.89128)"
+ x1="273.4534"
+ y1="397.20825"
+ x2="278.89304"
+ y2="397.20825" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6305"
+ id="linearGradient5143"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.8271607,0,0,0.4916824,68.201735,195.90514)"
+ x1="273.4534"
+ y1="397.18005"
+ x2="278.89304"
+ y2="397.18005" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6305"
+ id="linearGradient5146"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.8271607,0,0,0.4916824,68.201764,196.05741)"
+ x1="273.45337"
+ y1="396.87036"
+ x2="278.89301"
+ y2="396.87036" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient1311"
+ id="linearGradient5150"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.8923776,0,0,0.9986827,270.78512,364.22471)"
+ x1="28.032001"
+ y1="3.8257253"
+ x2="28.032001"
+ y2="29.140774" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6339"
+ id="linearGradient5153"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.4184829,0,0,1.4000056,-75.308126,-131.49921)"
+ x1="262.54434"
+ y1="363.74292"
+ x2="256.31683"
+ y2="368.26056" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6156"
+ id="radialGradient6162"
+ cx="13.992072"
+ cy="29.030083"
+ fx="13.992072"
+ fy="29.030083"
+ r="6.9228339"
+ gradientTransform="matrix(1,0,0,0.2960725,0,20.435073)"
+ gradientUnits="userSpaceOnUse" />
+ <filter
+ inkscape:collect="always"
+ x="-0.030158492"
+ width="1.060317"
+ y="-0.10186184"
+ height="1.2037237"
+ id="filter6184">
+ <feGaussianBlur
+ inkscape:collect="always"
+ stdDeviation="0.17398519"
+ id="feGaussianBlur6186" />
+ </filter>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6156"
+ id="radialGradient6224"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.2960725,0,20.435073)"
+ cx="13.992072"
+ cy="29.030083"
+ fx="13.992072"
+ fy="29.030083"
+ r="6.9228339" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6339"
+ id="linearGradient6226"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.4184829,0,0,1.4000056,-75.308126,-131.49921)"
+ x1="262.54434"
+ y1="363.74292"
+ x2="256.31683"
+ y2="368.26056" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient1311"
+ id="linearGradient6228"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.8923776,0,0,0.9986827,270.78512,364.22471)"
+ x1="28.032001"
+ y1="3.8257253"
+ x2="28.032001"
+ y2="29.140774" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient1311"
+ id="linearGradient6230"
+ gradientUnits="userSpaceOnUse"
+ x1="27.943266"
+ y1="1.5"
+ x2="27.943266"
+ y2="25.500046" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6305"
+ id="linearGradient6232"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.8271607,0,0,0.4916824,68.201764,196.05741)"
+ x1="273.45337"
+ y1="396.87036"
+ x2="278.89301"
+ y2="396.87036" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6305"
+ id="linearGradient6234"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.8271607,0,0,0.4916824,68.201735,195.90514)"
+ x1="273.4534"
+ y1="397.18005"
+ x2="278.89304"
+ y2="397.18005" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6305"
+ id="linearGradient6236"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.8271607,0,0,0.4916824,68.201735,195.89128)"
+ x1="273.4534"
+ y1="397.20825"
+ x2="278.89304"
+ y2="397.20825" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient1311"
+ id="linearGradient6238"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-0.7618383,0,0,0.6527934,502.60091,133.33292)"
+ x1="278.50909"
+ y1="391.67624"
+ x2="273.50909"
+ y2="391.73898" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient1311"
+ id="linearGradient6240"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-0.7618383,0,0,0.6527934,502.60091,133.41933)"
+ x1="278.50909"
+ y1="391.67624"
+ x2="273.50909"
+ y2="391.73898" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient1311"
+ id="linearGradient6242"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-0.7618383,0,0,0.6527934,502.60091,133.50572)"
+ x1="278.50909"
+ y1="391.67624"
+ x2="273.50909"
+ y2="391.73898" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6305"
+ id="linearGradient6244"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.8271607,0,0,0.4916824,68.20175,195.70886)"
+ x1="273.4534"
+ y1="397.57925"
+ x2="278.89304"
+ y2="397.57925" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient1311"
+ id="linearGradient6246"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-0.7618383,0,0,0.6527934,502.60091,134.89766)"
+ x1="278.50909"
+ y1="391.67624"
+ x2="273.50909"
+ y2="391.73898" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6305"
+ id="linearGradient6248"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.8271607,0,0,0.4916824,67.476312,197.10085)"
+ x1="274.33041"
+ y1="394.74817"
+ x2="279.77005"
+ y2="394.74817" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6305"
+ id="linearGradient6251"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.2619512,0,0,0.7413853,-43.834448,110.10038)"
+ x1="274.33041"
+ y1="394.74817"
+ x2="279.77005"
+ y2="394.74817" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient1311"
+ id="linearGradient6255"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-1.1622926,0,0,0.9843171,618.12748,16.198336)"
+ x1="278.50909"
+ y1="391.67624"
+ x2="273.50909"
+ y2="391.73898" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6305"
+ id="linearGradient6258"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.2619512,0,0,0.7413853,-42.834449,108.10035)"
+ x1="273.4534"
+ y1="397.57925"
+ x2="278.89304"
+ y2="397.57925" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient1311"
+ id="linearGradient6261"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-1.1622926,0,0,0.9843171,618.12748,14.198414)"
+ x1="278.50909"
+ y1="391.67624"
+ x2="273.50909"
+ y2="391.73898" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient1311"
+ id="linearGradient6264"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-1.1622926,0,0,0.9843171,618.12748,14.16705)"
+ x1="278.50909"
+ y1="391.67624"
+ x2="273.50909"
+ y2="391.73898" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient1311"
+ id="linearGradient6267"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-1.1622926,0,0,0.9843171,618.12748,14.135677)"
+ x1="278.50909"
+ y1="391.67624"
+ x2="273.50909"
+ y2="391.73898" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6305"
+ id="linearGradient6270"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.2619512,0,0,0.7413853,-42.834472,108.47434)"
+ x1="273.4534"
+ y1="397.20825"
+ x2="278.89304"
+ y2="397.20825" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6305"
+ id="linearGradient6273"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.2619512,0,0,0.7413853,-42.834472,108.59416)"
+ x1="273.4534"
+ y1="397.18005"
+ x2="278.89304"
+ y2="397.18005" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6305"
+ id="linearGradient6276"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.2619512,0,0,0.7413853,-42.834428,108.92266)"
+ x1="273.45337"
+ y1="396.87036"
+ x2="278.89301"
+ y2="396.87036" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient1311"
+ id="linearGradient6280"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.4173051,0,0,1.5768665,263.83554,361.89844)"
+ x1="28.032001"
+ y1="3.8257253"
+ x2="28.032001"
+ y2="29.140774" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6339"
+ id="linearGradient6283"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.1640972,0,0,2.1331674,-262.6967,-392.68034)"
+ x1="262.54434"
+ y1="363.74292"
+ x2="256.31683"
+ y2="368.26056" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient1311"
+ id="linearGradient6288"
+ gradientUnits="userSpaceOnUse"
+ x1="27.943266"
+ y1="1.5"
+ x2="27.943266"
+ y2="25.500046" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6156"
+ id="radialGradient6290"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.2960725,0,20.435073)"
+ cx="13.992072"
+ cy="29.030083"
+ fx="13.992072"
+ fy="29.030083"
+ r="6.9228339" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient1311"
+ id="linearGradient6294"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-1.1622926,0,0,0.9843171,619.12748,18.19834)"
+ x1="278.50909"
+ y1="391.67624"
+ x2="273.50909"
+ y2="391.73898" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ gridtolerance="1"
+ guidetolerance="0.4"
+ objecttolerance="0.4"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="16.904373"
+ inkscape:cx="36.723208"
+ inkscape:cy="13.602623"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer5"
+ showgrid="true"
+ inkscape:grid-points="false"
+ inkscape:window-width="1024"
+ inkscape:window-height="723"
+ inkscape:window-x="0"
+ inkscape:window-y="25"
+ width="48px"
+ height="48px"
+ gridspacingx="1px"
+ gridspacingy="1px"
+ inkscape:grid-bbox="true"
+ showguides="true"
+ inkscape:guide-bbox="true">
+ <sodipodi:guide
+ orientation="vertical"
+ position="11.001241"
+ id="guide6343" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:groupmode="layer"
+ id="layer5"
+ inkscape:label="Layer1"
+ style="display:inline"
+ transform="translate(-278.49946,-366.7429)">
+ <path
+ sodipodi:type="arc"
+ style="opacity:0.2;fill:url(#radialGradient6290);fill-opacity:1;stroke:none;stroke-width:16.60000038;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter6184)"
+ id="path5161"
+ sodipodi:cx="13.992072"
+ sodipodi:cy="29.030083"
+ sodipodi:rx="6.9228339"
+ sodipodi:ry="2.0496609"
+ d="M 20.914906 29.030083 A 6.9228339 2.0496609 0 1 1 7.0692382,29.030083 A 6.9228339 2.0496609 0 1 1 20.914906 29.030083 z"
+ transform="matrix(1.3000458,0,0,1.4636583,283.30913,369.25278)" />
+ <path
+ style="fill:#555753;fill-rule:evenodd;stroke:#2f312e;stroke-width:1.00000036px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 296.11675,408.3226 C 297.0139,407.8359 305.98507,407.8359 306.88215,408.3226 C 307.7793,408.80934 303.29371,411.24291 301.49948,411.24291 C 299.70529,411.24291 295.21967,408.80934 296.11675,408.3226 z "
+ id="path5592"
+ sodipodi:nodetypes="czzz" />
+ <path
+ style="fill:#edd400;fill-opacity:1;fill-rule:nonzero;stroke:#c4a000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
+ d="M 294.55231,397.1754 C 293.58927,397.59612 292.99947,398.09958 292.99947,398.65147 C 292.99947,399.024 294.45661,399.3503 294.92021,399.67061 C 294.45661,399.99097 292.99947,400.3524 292.99947,400.72498 C 292.99947,401.09749 294.45661,401.42381 294.92021,401.74412 C 294.45661,402.06445 292.99947,402.42593 292.99947,402.79846 C 292.99947,403.17099 294.45661,403.53243 294.92021,403.85278 C 294.45661,404.17311 292.99947,404.49942 292.99947,404.87198 C 292.99947,405.3804 294.70453,405.87718 295.53321,406.27775 C 295.36596,406.49377 294.31722,406.50981 294.31722,406.74421 C 294.31722,408.17684 297.39386,408.88494 301.49946,408.88494 C 305.60498,408.88494 308.79106,408.17684 308.79106,406.74421 C 308.79106,406.50981 307.73306,406.49377 307.56586,406.27775 C 308.39448,405.87718 309.99948,405.3804 309.99948,404.87198 C 309.99948,404.49942 308.60152,404.17311 308.13795,403.85278 C 308.60152,403.53243 309.99948,403.17099 309.99948,402.79846 C 309.99948,402.42593 308.60152,402.06445 308.13795,401.74412 C 308.60152,401.42381 309.99948,401.09749 309.99948,400.72498 C 309.99948,400.3524 308.60152,399.99097 308.13795,399.67061 C 308.60152,399.3503 309.99948,399.024 309.99948,398.65147 C 309.99948,398.10561 309.4314,397.59351 308.48744,397.1754 C 306.69453,398.16654 304.04176,398.49379 301.58831,398.55875 C 299.15979,398.62304 296.91696,398.33866 294.55231,397.1754 z "
+ id="path5590"
+ sodipodi:nodetypes="cscscscscssscscscscscsc" />
+ <path
+ style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient6283);stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1"
+ d="M 315.99092,380.18994 C 315.99092,387.67268 310.43033,391.38117 307.59632,396.93814 C 306.63787,398.81727 303.69021,399.2429 301.44323,399.2429 C 299.18267,399.2429 296.34335,398.83222 295.38594,396.93814 C 292.58466,391.39636 287.00372,388.41334 287.00372,380.18994 C 287.00372,371.96654 293.82138,367.24551 301.49763,367.24551 C 309.16091,367.24551 315.99092,372.70717 315.99092,380.18994 z "
+ id="path4659"
+ sodipodi:nodetypes="cssszsz" />
+ <path
+ style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient6280);stroke-width:1.00000095;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;display:inline"
+ d="M 288.07066,381.20002 C 288.3095,388.08935 295.41504,392.41305 296.77687,397.23419 C 299.93024,398.67946 303.14035,398.5193 306.18423,397.08848 C 309.47478,390.95505 314.30064,387.09849 314.98118,381.05927 C 315.41813,373.11194 307.93381,368.24291 301.93649,368.24291 C 293.56935,368.24291 287.25346,373.68738 288.07066,381.20002 z "
+ id="path5564"
+ sodipodi:nodetypes="ccccsc" />
+ <path
+ sodipodi:type="arc"
+ style="fill:url(#linearGradient6288);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.3233397;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
+ id="path5556"
+ sodipodi:cx="26.5"
+ sodipodi:cy="13.5"
+ sodipodi:rx="11.5"
+ sodipodi:ry="11.5"
+ d="M 38 13.5 A 11.5 11.5 0 1 1 15,13.5 A 11.5 11.5 0 1 1 38 13.5 z"
+ transform="matrix(0.7826087,0,0,0.3913042,280.76033,368.96029)" />
+ <path
+ style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient6276);stroke-width:1.00000072px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 302.95166,398.98428 C 306.73753,398.98428 307.99946,398.2429 307.99946,398.2429"
+ id="path6619"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient6273);stroke-width:1.00000072px;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="M 303.43041,400.87994 C 306.8572,400.87994 307.99946,400.2429 307.99946,400.2429"
+ id="path6621"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient6270);stroke-width:1.00000072px;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="M 303.43041,402.9843 C 306.8572,402.9843 307.99946,402.2429 307.99946,402.2429"
+ id="path6623"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="opacity:0.80349342;fill:none;fill-rule:evenodd;stroke:url(#linearGradient6267);stroke-width:1.00000048px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 299.64862,399.2429 C 296.16175,399.2429 294.99946,398.25859 294.99946,398.25859"
+ id="path6652"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="opacity:0.80349342;fill:none;fill-rule:evenodd;stroke:url(#linearGradient6264);stroke-width:1.00000048px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1;display:inline"
+ d="M 299.64862,401.2429 C 296.16175,401.2429 294.99946,400.25859 294.99946,400.25859"
+ id="path6654"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="opacity:0.80349342;fill:none;fill-rule:evenodd;stroke:url(#linearGradient6261);stroke-width:1.00000048px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1;display:inline"
+ d="M 299.64862,403.2429 C 296.16175,403.2429 294.99946,402.25859 294.99946,402.25859"
+ id="path6656"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient6258);stroke-width:1.00000072px;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="M 303.43041,404.83446 C 306.8572,404.83446 307.99946,404.2429 307.99946,404.2429"
+ id="path6695"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="opacity:0.80349342;fill:none;fill-rule:evenodd;stroke:url(#linearGradient6255);stroke-width:1.00000048px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1;display:inline"
+ d="M 299.64862,405.2429 C 296.16175,405.2429 294.99946,404.25859 294.99946,404.25859"
+ id="path6708"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:#fed12d;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline"
+ d="M 292.49946,378.7429 L 297.0611,394.715 L 297.03628,382.82739 L 306.06504,382.82739 L 305.98222,394.7429 L 310.49946,378.7429 L 306.63651,380.79208 L 296.33848,380.79208 L 292.49946,378.7429 z "
+ id="path6155"
+ sodipodi:nodetypes="ccccccccc" />
+ <path
+ sodipodi:nodetypes="cc"
+ id="path6126"
+ d="M 302.43041,406.83448 C 305.8572,406.83448 306.99946,406.2429 306.99946,406.2429"
+ style="color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient6251);stroke-width:1.00000072px;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <path
+ style="opacity:0.80349342;fill:none;fill-rule:evenodd;stroke:url(#linearGradient6294);stroke-width:1.00000048px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1;display:inline"
+ d="M 300.64862,407.2429 C 297.16175,407.2429 295.99946,406.25859 295.99946,406.25859"
+ id="path6292"
+ sodipodi:nodetypes="cc" />
+ </g>
+</svg>
diff --git a/gnome-2-22/data/icons/hicolor_status_16x16_empathy-available.png b/gnome-2-22/data/icons/hicolor_status_16x16_empathy-available.png
new file mode 100644
index 000000000..5435e02d5
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_status_16x16_empathy-available.png
Binary files differ
diff --git a/gnome-2-22/data/icons/hicolor_status_16x16_empathy-away.png b/gnome-2-22/data/icons/hicolor_status_16x16_empathy-away.png
new file mode 100644
index 000000000..7576a611f
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_status_16x16_empathy-away.png
Binary files differ
diff --git a/gnome-2-22/data/icons/hicolor_status_16x16_empathy-busy.png b/gnome-2-22/data/icons/hicolor_status_16x16_empathy-busy.png
new file mode 100644
index 000000000..90eab6077
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_status_16x16_empathy-busy.png
Binary files differ
diff --git a/gnome-2-22/data/icons/hicolor_status_16x16_empathy-extended-away.png b/gnome-2-22/data/icons/hicolor_status_16x16_empathy-extended-away.png
new file mode 100644
index 000000000..9dec477e1
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_status_16x16_empathy-extended-away.png
Binary files differ
diff --git a/gnome-2-22/data/icons/hicolor_status_16x16_empathy-offline.png b/gnome-2-22/data/icons/hicolor_status_16x16_empathy-offline.png
new file mode 100644
index 000000000..637be12cb
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_status_16x16_empathy-offline.png
Binary files differ
diff --git a/gnome-2-22/data/icons/hicolor_status_16x16_empathy-pending.png b/gnome-2-22/data/icons/hicolor_status_16x16_empathy-pending.png
new file mode 100644
index 000000000..0aa2c5f49
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_status_16x16_empathy-pending.png
Binary files differ
diff --git a/gnome-2-22/data/icons/hicolor_status_16x16_im-message.png b/gnome-2-22/data/icons/hicolor_status_16x16_im-message.png
new file mode 100644
index 000000000..be0e2e157
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_status_16x16_im-message.png
Binary files differ
diff --git a/gnome-2-22/data/icons/hicolor_status_16x16_user-typing.png b/gnome-2-22/data/icons/hicolor_status_16x16_user-typing.png
new file mode 100644
index 000000000..5c272a339
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_status_16x16_user-typing.png
Binary files differ
diff --git a/gnome-2-22/data/icons/hicolor_status_22x22_empathy-available.png b/gnome-2-22/data/icons/hicolor_status_22x22_empathy-available.png
new file mode 100644
index 000000000..ec8c4522b
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_status_22x22_empathy-available.png
Binary files differ
diff --git a/gnome-2-22/data/icons/hicolor_status_22x22_empathy-away.png b/gnome-2-22/data/icons/hicolor_status_22x22_empathy-away.png
new file mode 100644
index 000000000..6c068f2d4
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_status_22x22_empathy-away.png
Binary files differ
diff --git a/gnome-2-22/data/icons/hicolor_status_22x22_empathy-busy.png b/gnome-2-22/data/icons/hicolor_status_22x22_empathy-busy.png
new file mode 100644
index 000000000..0fe61fd23
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_status_22x22_empathy-busy.png
Binary files differ
diff --git a/gnome-2-22/data/icons/hicolor_status_22x22_empathy-extended-away.png b/gnome-2-22/data/icons/hicolor_status_22x22_empathy-extended-away.png
new file mode 100644
index 000000000..72c5b1985
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_status_22x22_empathy-extended-away.png
Binary files differ
diff --git a/gnome-2-22/data/icons/hicolor_status_22x22_empathy-offline.png b/gnome-2-22/data/icons/hicolor_status_22x22_empathy-offline.png
new file mode 100644
index 000000000..fe5de8288
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_status_22x22_empathy-offline.png
Binary files differ
diff --git a/gnome-2-22/data/icons/hicolor_status_22x22_empathy-pending.png b/gnome-2-22/data/icons/hicolor_status_22x22_empathy-pending.png
new file mode 100644
index 000000000..b79e7e56d
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_status_22x22_empathy-pending.png
Binary files differ
diff --git a/gnome-2-22/data/icons/hicolor_status_24x24_empathy-available.png b/gnome-2-22/data/icons/hicolor_status_24x24_empathy-available.png
new file mode 100644
index 000000000..95f25345a
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_status_24x24_empathy-available.png
Binary files differ
diff --git a/gnome-2-22/data/icons/hicolor_status_24x24_empathy-away.png b/gnome-2-22/data/icons/hicolor_status_24x24_empathy-away.png
new file mode 100644
index 000000000..3a7e01f16
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_status_24x24_empathy-away.png
Binary files differ
diff --git a/gnome-2-22/data/icons/hicolor_status_24x24_empathy-busy.png b/gnome-2-22/data/icons/hicolor_status_24x24_empathy-busy.png
new file mode 100644
index 000000000..7e5dced26
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_status_24x24_empathy-busy.png
Binary files differ
diff --git a/gnome-2-22/data/icons/hicolor_status_24x24_empathy-extended-away.png b/gnome-2-22/data/icons/hicolor_status_24x24_empathy-extended-away.png
new file mode 100644
index 000000000..968472e74
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_status_24x24_empathy-extended-away.png
Binary files differ
diff --git a/gnome-2-22/data/icons/hicolor_status_24x24_empathy-offline.png b/gnome-2-22/data/icons/hicolor_status_24x24_empathy-offline.png
new file mode 100644
index 000000000..bdfc8855b
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_status_24x24_empathy-offline.png
Binary files differ
diff --git a/gnome-2-22/data/icons/hicolor_status_24x24_empathy-pending.png b/gnome-2-22/data/icons/hicolor_status_24x24_empathy-pending.png
new file mode 100644
index 000000000..dc5bb5993
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_status_24x24_empathy-pending.png
Binary files differ
diff --git a/gnome-2-22/data/icons/hicolor_status_32x32_empathy-available.png b/gnome-2-22/data/icons/hicolor_status_32x32_empathy-available.png
new file mode 100644
index 000000000..5d04e0a23
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_status_32x32_empathy-available.png
Binary files differ
diff --git a/gnome-2-22/data/icons/hicolor_status_32x32_empathy-away.png b/gnome-2-22/data/icons/hicolor_status_32x32_empathy-away.png
new file mode 100644
index 000000000..712f68aea
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_status_32x32_empathy-away.png
Binary files differ
diff --git a/gnome-2-22/data/icons/hicolor_status_32x32_empathy-busy.png b/gnome-2-22/data/icons/hicolor_status_32x32_empathy-busy.png
new file mode 100644
index 000000000..be1280e75
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_status_32x32_empathy-busy.png
Binary files differ
diff --git a/gnome-2-22/data/icons/hicolor_status_32x32_empathy-extended-away.png b/gnome-2-22/data/icons/hicolor_status_32x32_empathy-extended-away.png
new file mode 100644
index 000000000..cf7ff2db7
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_status_32x32_empathy-extended-away.png
Binary files differ
diff --git a/gnome-2-22/data/icons/hicolor_status_32x32_empathy-offline.png b/gnome-2-22/data/icons/hicolor_status_32x32_empathy-offline.png
new file mode 100644
index 000000000..3c4d664f2
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_status_32x32_empathy-offline.png
Binary files differ
diff --git a/gnome-2-22/data/icons/hicolor_status_32x32_empathy-pending.png b/gnome-2-22/data/icons/hicolor_status_32x32_empathy-pending.png
new file mode 100644
index 000000000..ed195498a
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_status_32x32_empathy-pending.png
Binary files differ
diff --git a/gnome-2-22/data/icons/hicolor_status_48x48_empathy-available.png b/gnome-2-22/data/icons/hicolor_status_48x48_empathy-available.png
new file mode 100644
index 000000000..5bcae55c2
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_status_48x48_empathy-available.png
Binary files differ
diff --git a/gnome-2-22/data/icons/hicolor_status_48x48_empathy-away.png b/gnome-2-22/data/icons/hicolor_status_48x48_empathy-away.png
new file mode 100644
index 000000000..f9d7aeefa
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_status_48x48_empathy-away.png
Binary files differ
diff --git a/gnome-2-22/data/icons/hicolor_status_48x48_empathy-busy.png b/gnome-2-22/data/icons/hicolor_status_48x48_empathy-busy.png
new file mode 100644
index 000000000..b6c60c902
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_status_48x48_empathy-busy.png
Binary files differ
diff --git a/gnome-2-22/data/icons/hicolor_status_48x48_empathy-extended-away.png b/gnome-2-22/data/icons/hicolor_status_48x48_empathy-extended-away.png
new file mode 100644
index 000000000..3ca50e5a0
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_status_48x48_empathy-extended-away.png
Binary files differ
diff --git a/gnome-2-22/data/icons/hicolor_status_48x48_empathy-offline.png b/gnome-2-22/data/icons/hicolor_status_48x48_empathy-offline.png
new file mode 100644
index 000000000..b65080ba0
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_status_48x48_empathy-offline.png
Binary files differ
diff --git a/gnome-2-22/data/icons/hicolor_status_48x48_empathy-pending.png b/gnome-2-22/data/icons/hicolor_status_48x48_empathy-pending.png
new file mode 100644
index 000000000..405015597
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_status_48x48_empathy-pending.png
Binary files differ
diff --git a/gnome-2-22/data/icons/hicolor_status_scalable_empathy-available.svg b/gnome-2-22/data/icons/hicolor_status_scalable_empathy-available.svg
new file mode 100644
index 000000000..8d4cc585f
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_status_scalable_empathy-available.svg
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://web.resource.org/cc/"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="16px"
+ height="16px"
+ id="svg4908"
+ sodipodi:version="0.32"
+ inkscape:version="0.44+devel"
+ sodipodi:docbase="/home/andreas/project/gossip/16x16"
+ sodipodi:docname="status-avaible.svg"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape"
+ inkscape:export-filename="/home/andreas/project/gossip/16x16/status-avaible.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90"
+ sodipodi:modified="true">
+ <defs
+ id="defs4910">
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient5899">
+ <stop
+ style="stop-color:#7fe719;stop-opacity:1"
+ offset="0"
+ id="stop5901" />
+ <stop
+ style="stop-color:#67bc13;stop-opacity:1"
+ offset="1"
+ id="stop5903" />
+ </linearGradient>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5899"
+ id="radialGradient5905"
+ cx="9.466115"
+ cy="8.9839392"
+ fx="9.466115"
+ fy="8.9839392"
+ r="6.7474474"
+ gradientTransform="matrix(1.1671849,-3.2679277e-3,2.7524467e-3,1.0150183,-1.6222549,-0.2024225)"
+ gradientUnits="userSpaceOnUse" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="22.197802"
+ inkscape:cx="14.452639"
+ inkscape:cy="6.4458104"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:grid-bbox="true"
+ inkscape:document-units="px"
+ inkscape:window-width="1674"
+ inkscape:window-height="969"
+ inkscape:window-x="0"
+ inkscape:window-y="26" />
+ <metadata
+ id="metadata4913">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ id="layer1"
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer">
+ <path
+ sodipodi:type="arc"
+ style="opacity:1;fill:url(#radialGradient5905);fill-opacity:1;stroke:#376e01;stroke-width:0.97113216;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path4926"
+ sodipodi:cx="7.9737625"
+ sodipodi:cy="7.7221532"
+ sodipodi:rx="6.2618814"
+ sodipodi:ry="6.3632426"
+ d="M 14.235644 7.7221532 A 6.2618814 6.3632426 0 1 1 1.7118812,7.7221532 A 6.2618814 6.3632426 0 1 1 14.235644 7.7221532 z"
+ transform="matrix(1.0380267,0,0,1.0214918,-0.2769783,0.1118841)" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:0.4;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:1.14770162;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path5897"
+ sodipodi:cx="7.9737625"
+ sodipodi:cy="7.7221532"
+ sodipodi:rx="6.2618814"
+ sodipodi:ry="6.3632426"
+ d="M 14.235644 7.7221532 A 6.2618814 6.3632426 0 1 1 1.7118812,7.7221532 A 6.2618814 6.3632426 0 1 1 14.235644 7.7221532 z"
+ transform="matrix(0.8783303,0,0,0.8643392,0.996403,1.3254404)" />
+ </g>
+</svg>
diff --git a/gnome-2-22/data/icons/hicolor_status_scalable_empathy-away.svg b/gnome-2-22/data/icons/hicolor_status_scalable_empathy-away.svg
new file mode 100644
index 000000000..7e7b0ed6b
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_status_scalable_empathy-away.svg
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://web.resource.org/cc/"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="16px"
+ height="16px"
+ id="svg4908"
+ sodipodi:version="0.32"
+ inkscape:version="0.44+devel"
+ sodipodi:docbase="/home/andreas/project/gossip/16x16"
+ sodipodi:docname="status-away.svg"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape"
+ inkscape:export-filename="/home/andreas/project/gossip/16x16/status-away.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90"
+ sodipodi:modified="true">
+ <defs
+ id="defs4910">
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient5917">
+ <stop
+ style="stop-color:#f80000;stop-opacity:1"
+ offset="0"
+ id="stop5919" />
+ <stop
+ style="stop-color:#e70000;stop-opacity:1"
+ offset="1"
+ id="stop5921" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5917"
+ id="linearGradient5923"
+ x1="6.5096536"
+ y1="8.5893564"
+ x2="9.9108915"
+ y2="11.540099"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.9925682,6.043956e-8,1.1147803e-2)" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="22.627417"
+ inkscape:cx="13.206814"
+ inkscape:cy="4.0564985"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:grid-bbox="true"
+ inkscape:document-units="px"
+ inkscape:window-width="1674"
+ inkscape:window-height="969"
+ inkscape:window-x="0"
+ inkscape:window-y="26" />
+ <metadata
+ id="metadata4913">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ id="layer1"
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer">
+ <path
+ style="fill:url(#linearGradient5923);fill-opacity:1;fill-rule:evenodd;stroke:#8a0000;stroke-width:0.99999988px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
+ d="M 1.5,13.5 L 14.499999,13.5 L 7.9789933,1.4999999 L 1.5,13.5 z "
+ id="path4944"
+ sodipodi:nodetypes="cccc" />
+ <path
+ style="opacity:0.3;fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.00000012px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 3.2186016,12.488535 L 12.832121,12.488535 L 8.0098272,3.5671249 L 3.2186016,12.488535 z "
+ id="path4946"
+ sodipodi:nodetypes="cccc" />
+ </g>
+</svg>
diff --git a/gnome-2-22/data/icons/hicolor_status_scalable_empathy-busy.svg b/gnome-2-22/data/icons/hicolor_status_scalable_empathy-busy.svg
new file mode 100644
index 000000000..66fc70945
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_status_scalable_empathy-busy.svg
@@ -0,0 +1,140 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://web.resource.org/cc/"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="16px"
+ height="16px"
+ id="svg6941"
+ sodipodi:version="0.32"
+ inkscape:version="0.44+devel"
+ sodipodi:docbase="/home/andreas/project/gossip/16x16"
+ sodipodi:docname="status-busy.svg"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape"
+ inkscape:export-filename="/home/andreas/project/gossip/16x16/status-busy.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90"
+ sodipodi:modified="true">
+ <defs
+ id="defs6943">
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient5899">
+ <stop
+ style="stop-color:#fce94f;stop-opacity:1"
+ offset="0"
+ id="stop5901" />
+ <stop
+ style="stop-color:#edd400;stop-opacity:1"
+ offset="1"
+ id="stop5903" />
+ </linearGradient>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5899"
+ id="radialGradient5905"
+ cx="9.466115"
+ cy="8.9839392"
+ fx="9.466115"
+ fy="8.9839392"
+ r="6.7474474"
+ gradientTransform="matrix(1.1671849,-3.2679277e-3,2.7524467e-3,1.0150183,-1.6222549,-0.2024225)"
+ gradientUnits="userSpaceOnUse" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="15.696217"
+ inkscape:cx="17.665904"
+ inkscape:cy="9.7718474"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:grid-bbox="true"
+ inkscape:document-units="px"
+ inkscape:window-width="1674"
+ inkscape:window-height="969"
+ inkscape:window-x="0"
+ inkscape:window-y="26" />
+ <metadata
+ id="metadata6946">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ id="layer1"
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer">
+ <path
+ sodipodi:type="arc"
+ style="opacity:1;fill:url(#radialGradient5905);fill-opacity:1;stroke:#8d7300;stroke-width:0.97113222;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path4926"
+ sodipodi:cx="7.9737625"
+ sodipodi:cy="7.7221532"
+ sodipodi:rx="6.2618814"
+ sodipodi:ry="6.3632426"
+ d="M 14.235644 7.7221532 A 6.2618814 6.3632426 0 1 1 1.7118812,7.7221532 A 6.2618814 6.3632426 0 1 1 14.235644 7.7221532 z"
+ transform="matrix(1.0380267,0,0,1.0214918,-0.2769782,0.1118841)" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:0.6;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:1.14770162;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path5897"
+ sodipodi:cx="7.9737625"
+ sodipodi:cy="7.7221532"
+ sodipodi:rx="6.2618814"
+ sodipodi:ry="6.3632426"
+ d="M 14.235644 7.7221532 A 6.2618814 6.3632426 0 1 1 1.7118812,7.7221532 A 6.2618814 6.3632426 0 1 1 14.235644 7.7221532 z"
+ transform="matrix(0.8783303,0,0,0.8643392,0.996403,1.3254404)" />
+ <rect
+ style="opacity:1;fill:#eeeeec;fill-opacity:1;stroke:#888a85;stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect5886"
+ width="9.000001"
+ height="9"
+ x="5.5"
+ y="5.5"
+ rx="0"
+ ry="0" />
+ <rect
+ style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect5969"
+ width="7"
+ height="7"
+ x="6.5"
+ y="6.5"
+ rx="0"
+ ry="0" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1;fill:#8d7300;fill-opacity:1;stroke:none;stroke-width:1.46393549;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path5888"
+ sodipodi:cx="10.676733"
+ sodipodi:cy="7.8460393"
+ sodipodi:rx="1.4415842"
+ sodipodi:ry="1.4866337"
+ d="M 12.118317 7.8460393 A 1.4415842 1.4866337 0 1 1 9.2351488,7.8460393 A 1.4415842 1.4866337 0 1 1 12.118317 7.8460393 z"
+ transform="matrix(0.6936814,0,0,0.6726606,2.5937487,2.7222784)" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#888a85;stroke-width:0.99999994px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 7.4772272,10.5 L 11.522773,10.5"
+ id="path5883" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#888a85;stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 7.4872926,12.5 L 11.524094,12.5"
+ id="path5885" />
+ </g>
+</svg>
diff --git a/gnome-2-22/data/icons/hicolor_status_scalable_empathy-extended-away.svg b/gnome-2-22/data/icons/hicolor_status_scalable_empathy-extended-away.svg
new file mode 100644
index 000000000..3104dff54
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_status_scalable_empathy-extended-away.svg
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://web.resource.org/cc/"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="16px"
+ height="16px"
+ id="svg4908"
+ sodipodi:version="0.32"
+ inkscape:version="0.44"
+ sodipodi:docbase="/home/martyn/Desktop/16x16"
+ sodipodi:docname="status-away-extended.svg"
+ inkscape:export-filename="/home/martyn/Desktop/16x16/status-away-extended.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90">
+ <defs
+ id="defs4910">
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient5917">
+ <stop
+ style="stop-color:#d80000;stop-opacity:1"
+ offset="0"
+ id="stop5919" />
+ <stop
+ style="stop-color:#ca0000;stop-opacity:1"
+ offset="1"
+ id="stop5921" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5917"
+ id="linearGradient5923"
+ x1="6.5096536"
+ y1="8.5893564"
+ x2="9.9108915"
+ y2="11.540099"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.1538462,0,0,1.0752822,-1.2307693,-0.1129232)" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="42.866662"
+ inkscape:cx="8.0000008"
+ inkscape:cy="7.4533429"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:grid-bbox="true"
+ inkscape:document-units="px"
+ inkscape:window-width="1323"
+ inkscape:window-height="987"
+ inkscape:window-x="0"
+ inkscape:window-y="26" />
+ <metadata
+ id="metadata4913">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ id="layer1"
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer">
+ <path
+ style="fill:url(#linearGradient5923);fill-opacity:1;fill-rule:evenodd;stroke:#8a0000;stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
+ d="M 0.5,14.5 L 15.5,14.5 L 7.975762,1.5 L 0.5,14.5 z "
+ id="path4944"
+ sodipodi:nodetypes="cccc" />
+ <path
+ style="opacity:0.3;fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.99999994px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 2.2790289,13.5 L 13.779497,13.5 L 8.0106803,3.5000001 L 2.2790289,13.5 z "
+ id="path4946"
+ sodipodi:nodetypes="cccc" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1;fill:#ffe680;fill-opacity:1;stroke:#555753;stroke-width:0.8123197;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path4911"
+ sodipodi:cx="11.09375"
+ sodipodi:cy="11.890625"
+ sodipodi:rx="4.53125"
+ sodipodi:ry="3.640625"
+ d="M 15.625 11.890625 A 4.53125 3.640625 0 1 1 6.5625,11.890625 A 4.53125 3.640625 0 1 1 15.625 11.890625 z"
+ transform="matrix(0.983072,0,0,1.223563,-1.005946,-3.448939)" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1;fill:none;fill-opacity:1;stroke:white;stroke-width:1.01539958;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path5882"
+ sodipodi:cx="11.09375"
+ sodipodi:cy="11.890625"
+ sodipodi:rx="4.53125"
+ sodipodi:ry="3.640625"
+ d="M 15.625 11.890625 A 4.53125 3.640625 0 1 1 6.5625,11.890625 A 4.53125 3.640625 0 1 1 15.625 11.890625 z"
+ transform="matrix(0.786458,0,0,0.978852,1.175241,-0.539149)" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:black;stroke-width:0.91149789px;stroke-linecap:round;stroke-linejoin:round;marker-mid:none;stroke-opacity:1"
+ d="M 10.027723,8.0394381 L 10.027723,11.229682 L 6.8944493,11.229682"
+ id="path5884" />
+ <path
+ style="opacity:0.33695655;fill:white;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 5.8909083,11.545458 C 9.3617367,11.656825 9.9649551,9.8471677 13.714194,9.8750085 C 13.073853,8.0931929 11.598288,7.100202 9.8999937,7.0909217 C 8.1738593,7.0816413 5.9187492,8.9469795 5.8909083,11.545458 z "
+ id="path5886"
+ sodipodi:nodetypes="cczc" />
+ </g>
+</svg>
diff --git a/gnome-2-22/data/icons/hicolor_status_scalable_empathy-offline.svg b/gnome-2-22/data/icons/hicolor_status_scalable_empathy-offline.svg
new file mode 100644
index 000000000..975f7dc8f
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_status_scalable_empathy-offline.svg
@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://web.resource.org/cc/"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="16px"
+ height="16px"
+ id="svg6941"
+ sodipodi:version="0.32"
+ inkscape:version="0.44+devel"
+ sodipodi:docbase="/home/andreas/project/gossip/16x16"
+ sodipodi:docname="status-offline.svg"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape"
+ inkscape:export-filename="/home/andreas/project/gossip/16x16/status-offline.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90"
+ sodipodi:modified="true">
+ <defs
+ id="defs6943">
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient7922">
+ <stop
+ style="stop-color:#e8e8e6;stop-opacity:1"
+ offset="0"
+ id="stop7924" />
+ <stop
+ style="stop-color:#babdb6;stop-opacity:1"
+ offset="1"
+ id="stop7926" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7922"
+ id="linearGradient7928"
+ x1="0.67574239"
+ y1="0.81831664"
+ x2="9.8658419"
+ y2="10.594059"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.8666667,0,0,0.8666667,1.0666667,1.0666666)" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="22.197802"
+ inkscape:cx="15.038145"
+ inkscape:cy="7.8865336"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:grid-bbox="true"
+ inkscape:document-units="px"
+ inkscape:window-width="1674"
+ inkscape:window-height="969"
+ inkscape:window-x="0"
+ inkscape:window-y="26" />
+ <metadata
+ id="metadata6946">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ id="layer1"
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer">
+ <rect
+ style="opacity:1;fill:url(#linearGradient7928);fill-opacity:1;stroke:#555753;stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect6949"
+ width="13"
+ height="13"
+ x="1.5"
+ y="1.4999999"
+ rx="1.4641089"
+ ry="1.4641089" />
+ <rect
+ style="opacity:0.4;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect7920"
+ width="11"
+ height="11"
+ x="2.5"
+ y="2.5"
+ rx="0.45049509"
+ ry="0.45049506" />
+ </g>
+</svg>
diff --git a/gnome-2-22/data/icons/hicolor_status_scalable_empathy-pending.svg b/gnome-2-22/data/icons/hicolor_status_scalable_empathy-pending.svg
new file mode 100644
index 000000000..89c626c85
--- /dev/null
+++ b/gnome-2-22/data/icons/hicolor_status_scalable_empathy-pending.svg
@@ -0,0 +1,103 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://web.resource.org/cc/"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="22"
+ height="22"
+ id="svg4908"
+ sodipodi:version="0.32"
+ inkscape:version="0.44+devel"
+ version="1.0"
+ sodipodi:docbase="/home/andreas/project/misc icons/22x22"
+ sodipodi:docname="status-pending.svg"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape"
+ inkscape:export-filename="/home/andreas/project/misc icons/22x22/status-pending.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90"
+ sodipodi:modified="TRUE">
+ <defs
+ id="defs4910">
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient5898">
+ <stop
+ style="stop-color:#555753;stop-opacity:1;"
+ offset="0"
+ id="stop5900" />
+ <stop
+ style="stop-color:#3b3c39;stop-opacity:1"
+ offset="1"
+ id="stop5902" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5898"
+ id="linearGradient5904"
+ x1="13.756032"
+ y1="6.1055899"
+ x2="11.815526"
+ y2="10.317804"
+ gradientUnits="userSpaceOnUse" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="32"
+ inkscape:cx="13.74062"
+ inkscape:cy="11.30699"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:grid-bbox="true"
+ inkscape:document-units="px"
+ width="22px"
+ height="22px"
+ inkscape:window-width="1680"
+ inkscape:window-height="973"
+ inkscape:window-x="0"
+ inkscape:window-y="26" />
+ <metadata
+ id="metadata4913">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ id="layer1"
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer">
+ <path
+ transform="scale(1.0248552,0.9757476)"
+ style="font-size:26.23629379px;font-style:normal;font-weight:normal;fill:url(#linearGradient5904);fill-opacity:1.0;stroke:#2e3436;stroke-width:1.00000024px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ d="M 11.275218,14.919035 L 7.3476583,14.919035 L 7.3476583,13.925219 C 7.3476538,13.224909 7.4885713,12.605727 7.7704111,12.067669 C 8.0522411,11.521089 8.3408215,10.829313 9.246116,9.9923373 L 10.066,9.2493173 C 10.552798,8.8052256 10.907227,8.3867434 11.129288,7.9938696 C 11.359871,7.6010219 11.475167,7.2081611 11.475176,6.8152861 C 11.475167,6.2174687 11.270196,5.7520141 10.860263,5.4189209 C 10.450313,5.0773184 9.8781028,4.9065094 9.1436305,4.9064933 C 8.4518474,4.9065094 7.7045578,5.0516971 6.9017597,5.3420567 C 6.0989529,5.6239073 5.2619887,6.0466597 4.3908644,6.6103151 L 4.3908644,2.5877583 C 5.4242572,2.2290778 6.3679772,1.9643238 7.222027,1.7934955 C 8.0760675,1.6227057 8.9002211,1.5373012 9.6944902,1.5372817 C 11.778353,1.5373012 13.366877,1.9643238 14.460067,2.8183508 C 15.553233,3.6638737 16.099822,4.9022392 16.099835,6.5334509 C 16.099822,7.3704297 15.933283,8.1219894 15.600218,8.7881324 C 15.267128,9.4457594 14.699188,10.154617 13.896397,10.914707 L 13.076512,11.644916 C 12.495751,12.174434 11.723583,12.601456 11.544243,12.925985 C 11.364884,13.24199 11.275209,13.592149 11.275218,13.976462 L 11.275218,14.919035 M 7.3040896,16.952301 L 11.275218,16.952301 L 11.275218,21.009531 L 7.3040896,21.009531 L 7.3040896,16.952301"
+ id="text4916"
+ sodipodi:nodetypes="cccsccsssssccsssssccsccccccc" />
+ <path
+ style="font-size:26.23629379px;font-style:normal;font-weight:normal;fill:none;fill-opacity:1;stroke:#eeeeec;stroke-width:1.00000024px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;opacity:0.3"
+ d="M 10.531174,13.500001 L 8.5164063,13.500001 C 8.5164063,12.945747 8.7402784,12.078404 9.502579,11.143944 C 10.535614,9.6270452 12.892911,8.6362695 12.800574,6.4913892 C 12.708237,4.3018572 10.841095,3.7491649 9.4251268,3.7085782 C 8.0538104,3.6679915 6.7663299,4.0790254 5.5,4.8038685 L 5.5,3.3107849 C 6.3825651,3.0144106 7.1885459,2.7956469 7.9179435,2.6544931 C 8.6473335,2.5133711 9.3511984,2.4428023 10.029541,2.4427861 C 13.078781,2.3815955 15.397539,3.3494535 15.500001,6.5710727 C 15.213972,9.3832031 12.116268,10.497789 10.531174,12.721162 L 10.531174,13.500001"
+ id="path4925"
+ sodipodi:nodetypes="ccczzccscccc" />
+ <rect
+ style="opacity:0.3;fill:none;fill-opacity:1;stroke:#eeeeec;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect5896"
+ width="1.9715405"
+ height="1.9651624"
+ x="8.5284595"
+ y="17.534838" />
+ </g>
+</svg>
diff --git a/gnome-2-22/data/icq.profile b/gnome-2-22/data/icq.profile
new file mode 100644
index 000000000..0f4622e75
--- /dev/null
+++ b/gnome-2-22/data/icq.profile
@@ -0,0 +1,11 @@
+[Profile]
+Manager=haze
+Protocol=icq
+IconName = im-icq
+DisplayName=ICQ
+ConfigurationUI = icq
+Capabilities = chat-p2p, supports-alias, supports-avatars, supports-roster
+VCardDefault = 1
+VCardField = X-ICQ
+SupportedPresences = away,hidden,do-not-disturb
+
diff --git a/gnome-2-22/data/irc.profile b/gnome-2-22/data/irc.profile
new file mode 100644
index 000000000..05bf5ed5a
--- /dev/null
+++ b/gnome-2-22/data/irc.profile
@@ -0,0 +1,9 @@
+[Profile]
+Manager = idle
+Protocol = irc
+DisplayName = IRC
+IconName = im-irc
+ConfigurationUI = irc
+VCardField = X-IRC
+Capabilities = chat-p2p, chat-room, chat-room-list
+SupportedPresences = away
diff --git a/gnome-2-22/data/jabber.profile b/gnome-2-22/data/jabber.profile
new file mode 100644
index 000000000..c3cb57aff
--- /dev/null
+++ b/gnome-2-22/data/jabber.profile
@@ -0,0 +1,12 @@
+[Profile]
+Manager = gabble
+Protocol = jabber
+DisplayName = Jabber
+IconName = im-xmpp
+ConfigurationUI = jabber
+VCardDefault = 1
+VCardField = X-JABBER
+Capabilities = chat-p2p, chat-room, chat-room-list, voice-p2p, contact-search, split-account, registration-ui, supports-avatars, supports-alias, supports-roster
+DefaultAccountDomain = jabber.org
+Default-fallback-conference-server = conference.jabber.org
+SupportedPresences = away,extended-away,hidden,do-not-disturb
diff --git a/gnome-2-22/data/msn-haze.profile b/gnome-2-22/data/msn-haze.profile
new file mode 100644
index 000000000..840dd2c42
--- /dev/null
+++ b/gnome-2-22/data/msn-haze.profile
@@ -0,0 +1,12 @@
+[Profile]
+Manager=haze
+Protocol=msn
+DisplayName=MSN (Haze)
+IconName = im-msn
+ConfigurationUI = haze
+SupportsInvisible = 0
+Capabilities = chat-p2p, supports-alias, supports-avatars, supports-roster
+VCardDefault = 1
+VCardField = X-MSN
+SupportedPresences = away,hidden,do-not-disturb
+
diff --git a/gnome-2-22/data/msn.profile b/gnome-2-22/data/msn.profile
new file mode 100644
index 000000000..7ebd78118
--- /dev/null
+++ b/gnome-2-22/data/msn.profile
@@ -0,0 +1,12 @@
+[Profile]
+Manager=butterfly
+Protocol=msn
+DisplayName=MSN
+IconName = im-msn
+ConfigurationUI = msn
+SupportsInvisible = 1
+Capabilities = chat-p2p, split-account, supports-avatars, supports-alias
+VCardDefault = 1
+VCardField = X-MSN
+SupportedPresences = offline,available,away,extended-away,hidden,do-not-disturb
+
diff --git a/gnome-2-22/data/salut.profile b/gnome-2-22/data/salut.profile
new file mode 100644
index 000000000..acd483ccc
--- /dev/null
+++ b/gnome-2-22/data/salut.profile
@@ -0,0 +1,9 @@
+[Profile]
+Manager = salut
+Protocol = local-xmpp
+DisplayName = Salut
+IconName = im-local-xmpp
+ConfigurationUI = local-xmpp
+VCardField = X-LOCAL-XMPP
+Capabilities = chat-p2p, contact-search, supports-alias, supports-roster
+SupportedPresences = away,extended-away,hidden,do-not-disturb
diff --git a/gnome-2-22/data/sipphone.profile b/gnome-2-22/data/sipphone.profile
new file mode 100644
index 000000000..4904a7481
--- /dev/null
+++ b/gnome-2-22/data/sipphone.profile
@@ -0,0 +1,16 @@
+[Profile]
+Manager = sofiasip
+Protocol = sip
+DisplayName = Sipphone.com (SIP)
+IconName = im-sip
+ConfigurationUI = sofiasip
+VCardDefault = 1
+VCardField = X-SIP
+Capabilities = voice-p2p, split-account, video-p2p
+DefaultAccountDomain = proxy01.sipphone.com
+Default-priority = 1
+Default-stun-server = stun01.sipphone.com
+Default-proxy = 198.65.166.131
+Default-discover-stun = false
+Default-transport = udp
+
diff --git a/gnome-2-22/data/sofiasip.profile b/gnome-2-22/data/sofiasip.profile
new file mode 100644
index 000000000..e49f9a09d
--- /dev/null
+++ b/gnome-2-22/data/sofiasip.profile
@@ -0,0 +1,10 @@
+[Profile]
+Manager = sofiasip
+Protocol = sip
+DisplayName = SIP
+IconName = im-sip
+ConfigurationUI = sofiasip
+VCardDefault = 1
+VCardField = X-SIP
+Capabilities = chat-p2p, voice-p2p, split-account
+
diff --git a/gnome-2-22/data/yahoo.profile b/gnome-2-22/data/yahoo.profile
new file mode 100644
index 000000000..f4173d1af
--- /dev/null
+++ b/gnome-2-22/data/yahoo.profile
@@ -0,0 +1,11 @@
+[Profile]
+Manager=haze
+Protocol=yahoo
+DisplayName=Yahoo
+IconName = im-yahoo
+ConfigurationUI = yahoo
+Capabilities = chat-p2p, supports-alias, supports-avatars, supports-roster
+VCardDefault = 1
+VCardField = X-YAHOO
+SupportedPresences = away,hidden,do-not-disturb
+
diff --git a/gnome-2-22/docs/.gitignore b/gnome-2-22/docs/.gitignore
new file mode 100644
index 000000000..a7316fb11
--- /dev/null
+++ b/gnome-2-22/docs/.gitignore
@@ -0,0 +1,8 @@
+html
+xml
+tmpl
+*.txt
+*.stamp
+
+version.xml
+
diff --git a/gnome-2-22/docs/Makefile.am b/gnome-2-22/docs/Makefile.am
new file mode 100644
index 000000000..2053a4567
--- /dev/null
+++ b/gnome-2-22/docs/Makefile.am
@@ -0,0 +1,2 @@
+SUBDIRS = libempathy libempathy-gtk
+
diff --git a/gnome-2-22/docs/libempathy-gtk/.gitignore b/gnome-2-22/docs/libempathy-gtk/.gitignore
new file mode 100644
index 000000000..51f581636
--- /dev/null
+++ b/gnome-2-22/docs/libempathy-gtk/.gitignore
@@ -0,0 +1,6 @@
+libempathy-gtk.args
+libempathy-gtk.hierarchy
+libempathy-gtk.interfaces
+libempathy-gtk.prerequisites
+libempathy-gtk.signals
+
diff --git a/gnome-2-22/docs/libempathy-gtk/Makefile.am b/gnome-2-22/docs/libempathy-gtk/Makefile.am
new file mode 100644
index 000000000..1a666bafb
--- /dev/null
+++ b/gnome-2-22/docs/libempathy-gtk/Makefile.am
@@ -0,0 +1,59 @@
+NULL =
+
+AUTOMAKE_OPTIONS = 1.6
+
+# The name of the module.
+DOC_MODULE=libempathy-gtk
+
+# The top-level SGML file.
+DOC_MAIN_SGML_FILE=libempathy-gtk-docs.sgml
+
+# Extra options to supply to gtkdoc-scan
+SCAN_OPTIONS=--deprecated-guards="G_DISABLE_DEPRECATED"
+
+# The directory containing the source code. Relative to $(srcdir)
+DOC_SOURCE_DIR=$(top_srcdir)/libempathy-gtk
+
+HFILE_GLOB=$(top_srcdir)/libempathy-gtk/*.h
+CFILE_GLOB=$(top_srcdir)/libempathy-gtk/*.c
+
+# Headers to ignore
+IGNORE_HFILES= \
+ empathy-gtk-enum-types.h \
+ stamp-empathy-gtk-enum-types.h \
+ ephy-spinner.h \
+ totem-subtitle-encoding.h \
+ $(NULL)
+
+# CFLAGS and LDFLAGS for compiling scan program. Only needed
+# if $(DOC_MODULE).types is non-empty.
+GTKDOC_CFLAGS = \
+ -I$(srcdir) \
+ -I$(top_srcdir) \
+ -I$(top_srcdir)/libempathy-gtk \
+ -I$(top_builddir) \
+ -I$(top_builddir)/libempathy-gtk \
+ $(EMPATHY_CFLAGS) \
+ $(NULL)
+
+GTKDOC_LIBS = \
+ $(top_builddir)/libempathy-gtk/libempathy-gtk.la \
+ $(top_builddir)/libempathy/libempathy.la \
+ $(EMPATHY_LIBS) \
+ $(NULL)
+
+# Extra options to supply to gtkdoc-mkdb
+MKDB_OPTIONS = --output-format=xml --sgml-mode
+
+# Images to copy into HTML directory
+HTML_IMAGES =
+
+content_files = \
+ version.xml
+
+extra_files = version.xml.in
+
+include $(top_srcdir)/gtk-doc.make
+
+EXTRA_DIST += \
+ version.xml.in
diff --git a/gnome-2-22/docs/libempathy-gtk/libempathy-gtk-docs.sgml b/gnome-2-22/docs/libempathy-gtk/libempathy-gtk-docs.sgml
new file mode 100644
index 000000000..7aeb88e4c
--- /dev/null
+++ b/gnome-2-22/docs/libempathy-gtk/libempathy-gtk-docs.sgml
@@ -0,0 +1,68 @@
+<?xml version="1.0"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
+<!ENTITY version SYSTEM "version.xml">
+]>
+<book lang="en" id="libempathy-gtk" xmlns:xi="http://www.w3.org/2003/XInclude">
+<title>libempathy-gtk Reference Manual</title>
+ <bookinfo>
+ <title>libempathy-gtk Reference Manual</title>
+ <releaseinfo>for libempathy-gtk &version;</releaseinfo>
+ </bookinfo>
+ <part>
+ <title>libempathy-gtk Overview</title>
+ </part>
+ <part>
+ <title>API Reference</title>
+ <chapter id="libempathy_api">
+ <title>libempathy-gtk API reference</title>
+ <xi:include href="xml/empathy-about-dialog.xml"/>
+ <xi:include href="xml/empathy-account-chooser.xml"/>
+ <xi:include href="xml/empathy-accounts-dialog.xml"/>
+ <xi:include href="xml/empathy-account-widget.xml"/>
+ <xi:include href="xml/empathy-account-widget-irc.xml"/>
+ <xi:include href="xml/empathy-avatar-chooser.xml"/>
+ <xi:include href="xml/empathy-avatar-image.xml"/>
+ <xi:include href="xml/empathy-call-window.xml"/>
+ <xi:include href="xml/empathy-cell-renderer-activatable.xml"/>
+ <xi:include href="xml/empathy-cell-renderer-expander.xml"/>
+ <xi:include href="xml/empathy-cell-renderer-text.xml"/>
+ <xi:include href="xml/empathy-chatrooms-window.xml"/>
+ <xi:include href="xml/empathy-chat.xml"/>
+ <xi:include href="xml/empathy-chat-view.xml"/>
+ <xi:include href="xml/empathy-chat-window.xml"/>
+ <xi:include href="xml/empathy-conf.xml"/>
+ <xi:include href="xml/empathy-contact-dialogs.xml"/>
+ <xi:include href="xml/empathy-contact-list-store.xml"/>
+ <xi:include href="xml/empathy-contact-list-view.xml"/>
+ <xi:include href="xml/empathy-contact-widget.xml"/>
+ <xi:include href="xml/empathy-geometry.xml"/>
+ <xi:include href="xml/empathy-group-chat.xml"/>
+ <xi:include href="xml/empathy-images.xml"/>
+ <xi:include href="xml/empathy-irc-network-dialog.xml"/>
+ <xi:include href="xml/empathy-log-window.xml"/>
+ <xi:include href="xml/empathy-main-window.xml"/>
+ <xi:include href="xml/empathy-new-chatroom-dialog.xml"/>
+ <xi:include href="xml/empathy-new-message-dialog.xml"/>
+ <xi:include href="xml/empathy-preferences.xml"/>
+ <xi:include href="xml/empathy-presence-chooser.xml"/>
+ <xi:include href="xml/empathy-private-chat.xml"/>
+ <xi:include href="xml/empathy-profile-chooser.xml"/>
+ <xi:include href="xml/empathy-smiley-manager.xml"/>
+ <xi:include href="xml/empathy-spell-dialog.xml"/>
+ <xi:include href="xml/empathy-spell.xml"/>
+ <xi:include href="xml/empathy-status-icon.xml"/>
+ <xi:include href="xml/empathy-theme-manager.xml"/>
+ <xi:include href="xml/empathy-ui-utils.xml"/>
+ </chapter>
+ </part>
+
+ <chapter id="libempathy-gtk-hierarchy">
+ <title>Object Hierarchy</title>
+ <xi:include href="xml/tree_index.sgml"/>
+ </chapter>
+
+ <index>
+ <title id="index-all">Index</title>
+ </index>
+</book>
diff --git a/gnome-2-22/docs/libempathy-gtk/libempathy-gtk.types b/gnome-2-22/docs/libempathy-gtk/libempathy-gtk.types
new file mode 100644
index 000000000..5cfb7b21a
--- /dev/null
+++ b/gnome-2-22/docs/libempathy-gtk/libempathy-gtk.types
@@ -0,0 +1,25 @@
+empathy_account_chooser_get_type
+empathy_avatar_chooser_get_type
+empathy_avatar_image_get_type
+empathy_cell_renderer_activatable_get_type
+empathy_cell_renderer_expander_get_type
+empathy_cell_renderer_text_get_type
+empathy_chat_get_type
+empathy_chat_view_get_type
+empathy_chat_window_get_type
+empathy_contact_list_store_get_type
+empathy_contact_list_view_get_type
+empathy_group_chat_get_type
+empathy_contact_widget_flags_get_type
+empathy_contact_list_store_sort_get_type
+empathy_contact_list_store_col_get_type
+empathy_chat_view_block_get_type
+empathy_presence_chooser_get_type
+empathy_private_chat_get_type
+empathy_smiley_manager_get_type
+empathy_status_icon_get_type
+empathy_theme_boxes_get_type
+empathy_theme_get_type
+empathy_theme_irc_get_type
+empathy_theme_manager_get_type
+
diff --git a/gnome-2-22/docs/libempathy-gtk/version.xml.in b/gnome-2-22/docs/libempathy-gtk/version.xml.in
new file mode 100644
index 000000000..d78bda934
--- /dev/null
+++ b/gnome-2-22/docs/libempathy-gtk/version.xml.in
@@ -0,0 +1 @@
+@VERSION@
diff --git a/gnome-2-22/docs/libempathy/.gitignore b/gnome-2-22/docs/libempathy/.gitignore
new file mode 100644
index 000000000..0a5b4cabb
--- /dev/null
+++ b/gnome-2-22/docs/libempathy/.gitignore
@@ -0,0 +1,6 @@
+libempathy.args
+libempathy.hierarchy
+libempathy.interfaces
+libempathy.prerequisites
+libempathy.signals
+
diff --git a/gnome-2-22/docs/libempathy/Makefile.am b/gnome-2-22/docs/libempathy/Makefile.am
new file mode 100644
index 000000000..7cf0108c2
--- /dev/null
+++ b/gnome-2-22/docs/libempathy/Makefile.am
@@ -0,0 +1,60 @@
+NULL =
+
+AUTOMAKE_OPTIONS = 1.6
+
+# The name of the module.
+DOC_MODULE=libempathy
+
+# The top-level SGML file.
+DOC_MAIN_SGML_FILE=libempathy-docs.sgml
+
+# Extra options to supply to gtkdoc-scan
+SCAN_OPTIONS=--deprecated-guards="G_DISABLE_DEPRECATED"
+
+# The directory containing the source code. Relative to $(srcdir)
+DOC_SOURCE_DIR=$(top_srcdir)/libempathy
+
+HFILE_GLOB=$(top_srcdir)/libempathy/*.h
+CFILE_GLOB=$(top_srcdir)/libempathy/*.c
+
+# Headers to ignore
+IGNORE_HFILES= \
+ empathy-filter-glue.h \
+ empathy-debug.h \
+ empathy-marshal.h \
+ tp-stream-engine-gen.h \
+ stamp-empathy-enum-types.h \
+ empathy-chandler-glue.h \
+ $(NULL)
+
+# CFLAGS and LDFLAGS for compiling scan program. Only needed
+# if $(DOC_MODULE).types is non-empty.
+GTKDOC_CFLAGS = \
+ -I$(srcdir) \
+ -I$(top_srcdir) \
+ -I$(top_srcdir)/libempathy \
+ -I$(top_builddir) \
+ -I$(top_builddir)/libempathy \
+ $(LIBEMPATHY_CFLAGS) \
+ $(NULL)
+
+GTKDOC_LIBS = \
+ $(top_builddir)/libempathy/libempathy.la \
+ $(LIBEMPATHY_LIBS) \
+ $(NULL)
+
+# Extra options to supply to gtkdoc-mkdb
+MKDB_OPTIONS = --output-format=xml --sgml-mode
+
+# Images to copy into HTML directory
+HTML_IMAGES =
+
+content_files = \
+ version.xml
+
+extra_files = version.xml.in
+
+include $(top_srcdir)/gtk-doc.make
+
+EXTRA_DIST += \
+ version.xml.in
diff --git a/gnome-2-22/docs/libempathy/libempathy-docs.sgml b/gnome-2-22/docs/libempathy/libempathy-docs.sgml
new file mode 100644
index 000000000..126a06744
--- /dev/null
+++ b/gnome-2-22/docs/libempathy/libempathy-docs.sgml
@@ -0,0 +1,57 @@
+<?xml version="1.0"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
+<!ENTITY version SYSTEM "version.xml">
+]>
+<book lang="en" id="libempathy" xmlns:xi="http://www.w3.org/2003/XInclude">
+<title>libempathy Reference Manual</title>
+ <bookinfo>
+ <title>libempathy Reference Manual</title>
+ <releaseinfo>for libempathy &version;</releaseinfo>
+ </bookinfo>
+ <part>
+ <title>libempathy Overview</title>
+ </part>
+ <part>
+ <title>API Reference</title>
+ <chapter id="libempathy_api">
+ <title>libempathy API reference</title>
+ <xi:include href="xml/empathy-avatar.xml"/>
+ <xi:include href="xml/empathy-chandler.xml"/>
+ <xi:include href="xml/empathy-chatroom-manager.xml"/>
+ <xi:include href="xml/empathy-chatroom.xml"/>
+ <xi:include href="xml/empathy-contact-factory.xml"/>
+ <xi:include href="xml/empathy-contact-groups.xml"/>
+ <xi:include href="xml/empathy-contact-list.xml"/>
+ <xi:include href="xml/empathy-contact-manager.xml"/>
+ <xi:include href="xml/empathy-contact.xml"/>
+ <xi:include href="xml/empathy-enum-types.xml"/>
+ <xi:include href="xml/empathy-filter.xml"/>
+ <xi:include href="xml/empathy-idle.xml"/>
+ <xi:include href="xml/empathy-irc-server.xml"/>
+ <xi:include href="xml/empathy-irc-network.xml"/>
+ <xi:include href="xml/empathy-irc-network-manager.xml"/>
+ <xi:include href="xml/empathy-log-manager.xml"/>
+ <xi:include href="xml/empathy-message.xml"/>
+ <xi:include href="xml/empathy-status-presets.xml"/>
+ <xi:include href="xml/empathy-time.xml"/>
+ <xi:include href="xml/empathy-tp-call.xml"/>
+ <xi:include href="xml/empathy-tp-chatroom.xml"/>
+ <xi:include href="xml/empathy-tp-chat.xml"/>
+ <xi:include href="xml/empathy-tp-contact-factory.xml"/>
+ <xi:include href="xml/empathy-tp-contact-list.xml"/>
+ <xi:include href="xml/empathy-tp-group.xml"/>
+ <xi:include href="xml/empathy-tp-roomlist.xml"/>
+ <xi:include href="xml/empathy-utils.xml"/>
+ </chapter>
+ </part>
+
+ <chapter id="libempathy-hierarchy">
+ <title>Object Hierarchy</title>
+ <xi:include href="xml/tree_index.sgml"/>
+ </chapter>
+
+ <index>
+ <title id="index-all">Index</title>
+ </index>
+</book>
diff --git a/gnome-2-22/docs/libempathy/libempathy.types b/gnome-2-22/docs/libempathy/libempathy.types
new file mode 100644
index 000000000..fed32f1e1
--- /dev/null
+++ b/gnome-2-22/docs/libempathy/libempathy.types
@@ -0,0 +1,20 @@
+empathy_contact_list_get_type
+empathy_contact_manager_get_type
+empathy_reg_ex_type_get_type
+empathy_message_type_get_type
+empathy_capabilities_get_type
+empathy_filter_get_type
+empathy_idle_get_type
+empathy_log_manager_get_type
+empathy_message_get_gtype
+empathy_tp_call_status_get_type
+empathy_tp_call_get_type
+empathy_tp_chat_get_type
+empathy_tp_chatroom_get_type
+empathy_tp_contact_factory_get_type
+empathy_tp_contact_list_get_type
+empathy_tp_group_get_type
+empathy_tp_roomlist_get_type
+empathy_irc_server_get_type
+empathy_irc_network_get_type
+empathy_irc_network_manager_get_type
diff --git a/gnome-2-22/docs/libempathy/version.xml.in b/gnome-2-22/docs/libempathy/version.xml.in
new file mode 100644
index 000000000..d78bda934
--- /dev/null
+++ b/gnome-2-22/docs/libempathy/version.xml.in
@@ -0,0 +1 @@
+@VERSION@
diff --git a/gnome-2-22/extensions/.gitignore b/gnome-2-22/extensions/.gitignore
new file mode 100644
index 000000000..09d7dbf50
--- /dev/null
+++ b/gnome-2-22/extensions/.gitignore
@@ -0,0 +1,2 @@
+_gen
+extensions.html
diff --git a/gnome-2-22/extensions/Channel_Handler.xml b/gnome-2-22/extensions/Channel_Handler.xml
new file mode 100644
index 000000000..80233e97d
--- /dev/null
+++ b/gnome-2-22/extensions/Channel_Handler.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" ?>
+<node name="/Channel_Handler" xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0">
+ <tp:copyright>Copyright (C) 2007 Collabora Limited</tp:copyright>
+ <tp:license xmlns="http://www.w3.org/1999/xhtml">
+ <p>This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.</p>
+
+<p>This library is distributed in the hope that 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.</p>
+
+<p>You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</p>
+ </tp:license>
+ <interface name="org.freedesktop.Telepathy.ChannelHandler">
+
+ <method name="HandleChannel">
+ <arg direction="in" type="s" name="Bus_Name" tp:type="DBus_Bus_Name">
+ <tp:docstring>
+ The bus name of the connection and channel
+ </tp:docstring>
+ </arg>
+ <arg direction="in" type="o" name="Connection">
+ <tp:docstring>
+ The object-path of the connection that owns the channel
+ </tp:docstring>
+ </arg>
+ <arg direction="in" type="s" tp:type="DBus_Interface" name="Channel_Type">
+ <tp:docstring>
+ The channel type
+ </tp:docstring>
+ </arg>
+ <arg direction="in" type="o" name="Channel">
+ <tp:docstring>
+ The object-path of the channel
+ </tp:docstring>
+ </arg>
+ <arg direction="in" type="u" tp:type="Handle_Type" name="Handle_Type">
+ <tp:docstring>The type of the handle that the channel communicates
+ with, or 0 if there is no associated handle</tp:docstring>
+ </arg>
+ <arg direction="in" type="u" tp:type="Handle" name="Handle">
+ <tp:docstring>The handle that the channel communicates with,
+ or 0 if there is no associated handle</tp:docstring>
+ </arg>
+ <tp:docstring>
+ Called when a channel handler should handle a new channel.
+ </tp:docstring>
+ <!-- FIXME: possible errors? -->
+ </method>
+ <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
+ <p>An interface exported by client applications which are able to
+ handle incoming channels.</p>
+ </tp:docstring>
+ </interface>
+</node>
+<!-- vim:set sw=2 sts=2 et ft=xml: -->
+
diff --git a/gnome-2-22/extensions/Makefile.am b/gnome-2-22/extensions/Makefile.am
new file mode 100644
index 000000000..ccf7bb593
--- /dev/null
+++ b/gnome-2-22/extensions/Makefile.am
@@ -0,0 +1,130 @@
+tools_dir = $(top_srcdir)/tools
+
+AM_CFLAGS = \
+ -I$(top_srcdir) \
+ -I$(top_builddir) \
+ $(WARN_CFLAGS) \
+ $(LIBEMPATHY_CFLAGS)
+
+EXTRA_DIST = \
+ all.xml \
+ misc.xml \
+ Channel_Handler.xml \
+ Stream_Engine.xml
+
+noinst_LTLIBRARIES = libemp-extensions.la
+
+libemp_extensions_la_LIBADD = \
+ $(TELEPATHY_GLIB_LIBS)
+
+# The client-specific parts are built into a separate .o file, so the linker
+# can discard them when linking services. The service-specific parts are
+# in svc-*.c, so we don't need an extensions-svc.c.
+libemp_extensions_la_SOURCES = \
+ extensions.c \
+ extensions-cli.c \
+ extensions.h
+
+nodist_libemp_extensions_la_SOURCES = \
+ _gen/signals-marshal.c \
+ _gen/signals-marshal.h \
+ _gen/signals-marshal.list \
+ _gen/register-dbus-glib-marshallers-body.h \
+ _gen/enums.h \
+ _gen/gtypes.h \
+ _gen/gtypes-body.h \
+ _gen/interfaces.h \
+ _gen/interfaces-body.h \
+ _gen/cli-misc.h \
+ _gen/cli-misc-body.h \
+ _gen/svc-misc.h \
+ _gen/svc-misc.c
+
+BUILT_SOURCES = \
+ _gen/all.xml \
+ _gen/misc.xml \
+ $(nodist_libemp_extensions_la_SOURCES) \
+ extensions.html
+
+CLEANFILES = $(BUILT_SOURCES)
+
+XSLTPROCFLAGS = --nonet --novalid
+
+# Generated files which can be generated for all categories simultaneously
+
+_gen/%.xml: %.xml $(wildcard *.xml)
+ $(mkdir_p) _gen
+ $(XSLTPROC) $(XSLTPROCFLAGS) --xinclude $(tools_dir)/identity.xsl \
+ $< > $@
+
+extensions.html: _gen/all.xml $(tools_dir)/doc-generator.xsl
+ $(XSLTPROC) $(XSLTPROCFLAGS) \
+ $(tools_dir)/doc-generator.xsl \
+ $< > $@
+
+_gen/gtypes.h _gen/gtypes-body.h: _gen/all.xml \
+ $(top_srcdir)/tools/glib-gtypes-generator.py
+ $(PYTHON) $(top_srcdir)/tools/glib-gtypes-generator.py \
+ $< _gen/gtypes Emp
+
+_gen/signals-marshal.list: _gen/all.xml \
+ $(tools_dir)/glib-signals-marshal-gen.py
+ $(PYTHON) $(tools_dir)/glib-signals-marshal-gen.py $< > $@
+
+_gen/signals-marshal.h: _gen/signals-marshal.list
+ $(GLIB_GENMARSHAL) --header --prefix=_emp_ext_marshal $< > $@
+
+_gen/signals-marshal.c: _gen/signals-marshal.list
+ ( \
+ echo '#include "signals-marshal.h"' && \
+ $(GLIB_GENMARSHAL) --body --prefix=_emp_ext_marshal $< \
+ ) >> $@
+
+_gen/register-dbus-glib-marshallers-body.h: _gen/all.xml \
+ $(tools_dir)/glib-client-marshaller-gen.py
+ $(PYTHON) $(tools_dir)/glib-client-marshaller-gen.py $< \
+ _emp_ext > $@
+
+_gen/enums.h: _gen/all.xml $(tools_dir)/c-constants-generator.xsl
+ $(XSLTPROC) $(XSLTPROCFLAGS) \
+ --stringparam mixed-case-prefix Emp \
+ $(tools_dir)/c-constants-generator.xsl \
+ $< > $@
+
+_gen/interfaces.h: _gen/all.xml \
+ $(tools_dir)/glib-interfaces-generator.xsl \
+ $(tools_dir)/c-interfaces-generator.xsl
+ $(XSLTPROC) $(XSLTPROCFLAGS) \
+ --stringparam mixed-case-prefix Emp \
+ $(tools_dir)/glib-interfaces-generator.xsl \
+ $< > $@
+
+_gen/interfaces-body.h: _gen/all.xml \
+ $(tools_dir)/glib-interfaces-body-generator.xsl \
+ $(tools_dir)/c-interfaces-generator.xsl
+ $(XSLTPROC) $(XSLTPROCFLAGS) \
+ --stringparam mixed-case-prefix Emp \
+ $(tools_dir)/glib-interfaces-body-generator.xsl \
+ $< > $@
+
+# Generated files which must be generated per "category". Each TpProxy
+# subclass you want to use with --subclass will need to have its own category,
+# although you can subdivide further if you want.
+
+_gen/cli-misc-body.h _gen/cli-misc.h: _gen/misc.xml \
+ $(tools_dir)/glib-client-gen.py
+ $(PYTHON) $(tools_dir)/glib-client-gen.py \
+ --group=misc \
+ --iface-quark-prefix=EMP_IFACE_QUARK \
+ $< Emp_Cli _gen/cli-misc
+
+_gen/svc-misc.c _gen/svc-misc.h: _gen/misc.xml \
+ $(tools_dir)/glib-ginterface-gen.py
+ $(PYTHON) $(tools_dir)/glib-ginterface-gen.py \
+ --filename=_gen/svc-misc \
+ --signal-marshal-prefix=_emp_ext \
+ --include='<telepathy-glib/dbus.h>' \
+ --include='"_gen/signals-marshal.h"' \
+ --not-implemented-func='tp_dbus_g_method_return_not_implemented' \
+ --allow-unstable \
+ $< Emp_Svc_
diff --git a/gnome-2-22/extensions/Stream_Engine.xml b/gnome-2-22/extensions/Stream_Engine.xml
new file mode 100644
index 000000000..0303a516d
--- /dev/null
+++ b/gnome-2-22/extensions/Stream_Engine.xml
@@ -0,0 +1,44 @@
+<!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN" "http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd">
+<node name="/Stream_Engine">
+ <interface name="org.freedesktop.Telepathy.StreamEngine">
+ <method name="SetOutputVolume">
+ <arg direction="in" type="o" name="channel_path" />
+ <arg direction="in" type="u" name="stream_id" />
+ <arg direction="in" type="u" name="volume" />
+ </method>
+ <method name="MuteInput">
+ <arg direction="in" type="o" name="channel_path" />
+ <arg direction="in" type="u" name="stream_id" />
+ <arg direction="in" type="b" name="mute_state" />
+ </method>
+ <method name="MuteOutput">
+ <arg direction="in" type="o" name="channel_path" />
+ <arg direction="in" type="u" name="stream_id" />
+ <arg direction="in" type="b" name="mute_state" />
+ </method>
+ <method name="SetOutputWindow">
+ <arg direction="in" type="o" name="channel_path" />
+ <arg direction="in" type="u" name="stream_id" />
+ <arg direction="in" type="u" name="window" />
+ </method>
+ <method name="AddPreviewWindow">
+ <arg direction="in" type="u" name="window" />
+ </method>
+ <method name="RemovePreviewWindow">
+ <arg direction="in" type="u" name="window" />
+ </method>
+ <signal name="Receiving">
+ <arg type="o" name="channel_path" />
+ <arg type="u" name="stream_id" />
+ <arg type="b" name="state" />
+ </signal>
+ <signal name="StreamStateChanged">
+ <arg type="o" name="channel_path" />
+ <arg type="u" name="stream_id" />
+ <arg type="u" name="state" />
+ <arg type="u" name="direction" />
+ </signal>
+ <method name="Shutdown">
+ </method>
+ </interface>
+</node>
diff --git a/gnome-2-22/extensions/all.xml b/gnome-2-22/extensions/all.xml
new file mode 100644
index 000000000..2a0e109e8
--- /dev/null
+++ b/gnome-2-22/extensions/all.xml
@@ -0,0 +1,14 @@
+<tp:spec
+ xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0"
+ xmlns:xi="http://www.w3.org/2001/XInclude">
+
+<tp:title>Extensions for Empathy</tp:title>
+
+<xi:include href="misc.xml"/>
+
+<tp:generic-types>
+ <tp:external-type name="Contact_Handle" type="u"
+ from="Telepathy specification"/>
+</tp:generic-types>
+
+</tp:spec>
diff --git a/gnome-2-22/extensions/extensions-cli.c b/gnome-2-22/extensions/extensions-cli.c
new file mode 100644
index 000000000..354f4c6dd
--- /dev/null
+++ b/gnome-2-22/extensions/extensions-cli.c
@@ -0,0 +1,25 @@
+#include "extensions.h"
+
+#include <telepathy-glib/proxy-subclass.h>
+
+static void _emp_ext_register_dbus_glib_marshallers (void);
+
+/* include auto-generated stubs for client-specific code */
+#include "_gen/signals-marshal.h"
+#include "_gen/cli-misc-body.h"
+#include "_gen/register-dbus-glib-marshallers-body.h"
+
+void
+emp_cli_init (void)
+{
+ static gboolean initialized = FALSE;
+
+ if (!initialized)
+ {
+ _emp_ext_register_dbus_glib_marshallers ();
+
+ tp_proxy_or_subclass_hook_on_interface_add (TP_TYPE_PROXY,
+ emp_cli_misc_add_signals);
+ initialized = TRUE;
+ }
+}
diff --git a/gnome-2-22/extensions/extensions.c b/gnome-2-22/extensions/extensions.c
new file mode 100644
index 000000000..eeda4623c
--- /dev/null
+++ b/gnome-2-22/extensions/extensions.c
@@ -0,0 +1,6 @@
+#include "extensions.h"
+
+/* include auto-generated stubs for things common to service and client */
+#include "_gen/gtypes-body.h"
+#include "_gen/interfaces-body.h"
+#include "_gen/signals-marshal.h"
diff --git a/gnome-2-22/extensions/extensions.h b/gnome-2-22/extensions/extensions.h
new file mode 100644
index 000000000..d97dc830c
--- /dev/null
+++ b/gnome-2-22/extensions/extensions.h
@@ -0,0 +1,20 @@
+#ifndef __EMP_EXTENSIONS_H__
+#define __EMP_EXTENSIONS_H__
+
+#include <glib-object.h>
+#include <telepathy-glib/channel.h>
+
+#include "extensions/_gen/enums.h"
+#include "extensions/_gen/cli-misc.h"
+#include "extensions/_gen/svc-misc.h"
+
+G_BEGIN_DECLS
+
+#include "extensions/_gen/gtypes.h"
+#include "extensions/_gen/interfaces.h"
+
+void emp_cli_init (void);
+
+G_END_DECLS
+
+#endif
diff --git a/gnome-2-22/extensions/misc.xml b/gnome-2-22/extensions/misc.xml
new file mode 100644
index 000000000..070ae85c3
--- /dev/null
+++ b/gnome-2-22/extensions/misc.xml
@@ -0,0 +1,10 @@
+<tp:spec
+ xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0"
+ xmlns:xi="http://www.w3.org/2001/XInclude">
+
+<tp:title>Channel extensions for Empathy</tp:title>
+
+<xi:include href="Stream_Engine.xml"/>
+<xi:include href="Channel_Handler.xml"/>
+
+</tp:spec>
diff --git a/gnome-2-22/libempathy-gtk/.gitignore b/gnome-2-22/libempathy-gtk/.gitignore
new file mode 100644
index 000000000..3e3f6f051
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/.gitignore
@@ -0,0 +1,2 @@
+empathy-gtk-marshal.*
+*.gladep
diff --git a/gnome-2-22/libempathy-gtk/Makefile.am b/gnome-2-22/libempathy-gtk/Makefile.am
new file mode 100644
index 000000000..1c1d5eda7
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/Makefile.am
@@ -0,0 +1,211 @@
+AM_CPPFLAGS = \
+ -I. \
+ -I$(top_srcdir) \
+ -DDATADIR=\""$(datadir)"\" \
+ $(EMPATHY_CFLAGS) \
+ $(WARN_CFLAGS)
+
+BUILT_SOURCES = \
+ empathy-gtk-marshal.h \
+ empathy-gtk-marshal.c \
+ empathy-gtk-marshal.list \
+ empathy-gtk-enum-types.h \
+ empathy-gtk-enum-types.c
+
+lib_LTLIBRARIES = libempathy-gtk.la
+
+libempathy_gtk_la_SOURCES = \
+ ephy-spinner.c ephy-spinner.h \
+ empathy-main-window.c \
+ empathy-status-icon.c \
+ empathy-conf.c \
+ empathy-contact-widget.c \
+ empathy-contact-dialogs.c \
+ empathy-accounts-dialog.c \
+ empathy-account-widget.c \
+ empathy-account-widget-irc.c \
+ empathy-profile-chooser.c \
+ empathy-cell-renderer-expander.c \
+ empathy-cell-renderer-text.c \
+ empathy-cell-renderer-activatable.c \
+ empathy-spell.c \
+ empathy-spell-dialog.c \
+ empathy-contact-list-store.c \
+ empathy-contact-list-view.c \
+ empathy-preferences.c \
+ empathy-theme.c \
+ empathy-theme-boxes.c \
+ empathy-theme-irc.c \
+ empathy-theme-manager.c \
+ empathy-smiley-manager.c \
+ empathy-chat-window.c \
+ empathy-chat.c \
+ empathy-chat-view.c \
+ empathy-private-chat.c \
+ empathy-group-chat.c \
+ empathy-geometry.c \
+ empathy-presence-chooser.c \
+ empathy-about-dialog.c \
+ empathy-account-chooser.c \
+ empathy-new-chatroom-dialog.c \
+ empathy-chatrooms-window.c \
+ empathy-log-window.c \
+ empathy-call-window.c \
+ empathy-avatar-chooser.c \
+ empathy-avatar-image.c \
+ empathy-ui-utils.c \
+ empathy-new-message-dialog.c \
+ empathy-irc-network-dialog.c \
+ totem-subtitle-encoding.c totem-subtitle-encoding.h
+
+# do not distribute generated files
+nodist_libempathy_gtk_la_SOURCES =\
+ $(BUILT_SOURCES)
+
+libempathy_gtk_la_LIBADD = \
+ $(EMPATHY_LIBS) \
+ $(top_builddir)/libempathy/libempathy.la
+
+libempathy_gtk_la_LDFLAGS = \
+ -version-info ${LIBEMPATHY_GTK_CURRENT}:${LIBEMPATHY_GTK_REVISION}:${LIBEMPATHY_GTK_AGE} \
+ -export-symbols-regex ^empathy_
+
+libempathy_gtk_headers = \
+ empathy-images.h \
+ empathy-main-window.h \
+ empathy-status-icon.h \
+ empathy-conf.h \
+ empathy-contact-widget.h \
+ empathy-contact-dialogs.h \
+ empathy-accounts-dialog.h \
+ empathy-account-widget.h \
+ empathy-account-widget-irc.h \
+ empathy-profile-chooser.h \
+ empathy-cell-renderer-expander.h \
+ empathy-cell-renderer-text.h \
+ empathy-cell-renderer-activatable.h \
+ empathy-spell.h \
+ empathy-spell-dialog.h \
+ empathy-contact-list-store.h \
+ empathy-contact-list-view.h \
+ empathy-preferences.h \
+ empathy-theme.h \
+ empathy-theme-boxes.h \
+ empathy-theme-irc.h \
+ empathy-theme-manager.h \
+ empathy-smiley-manager.h \
+ empathy-chat-window.h \
+ empathy-chat.h \
+ empathy-chat-view.h \
+ empathy-private-chat.h \
+ empathy-group-chat.h \
+ empathy-geometry.h \
+ empathy-presence-chooser.h \
+ empathy-about-dialog.h \
+ empathy-account-chooser.h \
+ empathy-new-chatroom-dialog.h \
+ empathy-chatrooms-window.h \
+ empathy-log-window.h \
+ empathy-call-window.h \
+ empathy-avatar-chooser.h \
+ empathy-avatar-image.h \
+ empathy-ui-utils.h \
+ empathy-new-message-dialog.h \
+ empathy-irc-network-dialog.h
+
+libempathy_gtk_includedir = $(includedir)/libempathy-gtk/
+libempathy_gtk_include_HEADERS = \
+ $(libempathy_gtk_headers) \
+ empathy-gtk-enum-types.h
+
+gladedir = $(datadir)/empathy
+glade_DATA = \
+ empathy-main-window.glade \
+ empathy-status-icon.glade \
+ empathy-contact-widget.glade \
+ empathy-contact-dialogs.glade \
+ empathy-preferences.glade \
+ empathy-presence-chooser.glade \
+ empathy-accounts-dialog.glade \
+ empathy-account-widget-generic.glade \
+ empathy-account-widget-jabber.glade \
+ empathy-account-widget-msn.glade \
+ empathy-account-widget-sip.glade \
+ empathy-account-widget-salut.glade \
+ empathy-account-widget-irc.glade \
+ empathy-account-widget-icq.glade \
+ empathy-account-widget-yahoo.glade \
+ empathy-new-chatroom-dialog.glade \
+ empathy-group-chat.glade \
+ empathy-chatrooms-window.glade \
+ empathy-spell-dialog.glade \
+ empathy-log-window.glade \
+ empathy-call-window.glade \
+ empathy-chat.glade \
+ empathy-new-message-dialog.glade
+
+empathy-gtk-marshal.list: $(libempathy_gtk_la_SOURCES) Makefile.am
+ ( cd $(srcdir) && \
+ sed -n -e 's/.*empathy_gtk_marshal_\([[:upper:][:digit:]]*__[[:upper:][:digit:]_]*\).*/\1/p' \
+ $(libempathy_gtk_la_SOURCES) ) \
+ | sed -e 's/__/:/' -e 'y/_/,/' | sort -u > $@.tmp
+ if cmp -s $@.tmp $@; then \
+ rm $@.tmp; \
+ else \
+ mv $@.tmp $@; \
+ fi
+
+%-marshal.h: %-marshal.list Makefile
+ $(GLIB_GENMARSHAL) --header --prefix=_$(subst -,_,$*)_marshal $< > $*-marshal.h
+
+%-marshal.c: %-marshal.list Makefile
+ echo "#include \"empathy-gtk-marshal.h\"" > $@ && \
+ $(GLIB_GENMARSHAL) --body --prefix=_$(subst -,_,$*)_marshal $< >> $*-marshal.c
+
+empathy-gtk-enum-types.h: stamp-empathy-gtk-enum-types.h
+ @true
+stamp-empathy-gtk-enum-types.h: Makefile $(libempathy_gtk_headers)
+ (cd $(srcdir) \
+ && glib-mkenums \
+ --fhead "#ifndef __LIBEMPATHY_GTK_ENUM_TYPES_H__\n" \
+ --fhead "#define __LIBEMPATHY_GTK_ENUM_TYPES_H__ 1\n\n" \
+ --fhead "#include <glib-object.h>\n\n" \
+ --fhead "G_BEGIN_DECLS\n\n" \
+ --ftail "G_END_DECLS\n\n" \
+ --ftail "#endif /* __LIBEMPATHY_GTK_ENUM_TYPES_H__ */\n" \
+ --fprod "#include <libempathy-gtk/@filename@>\n" \
+ --eprod "#define EMPATHY_TYPE_@ENUMSHORT@ @enum_name@_get_type()\n" \
+ --eprod "GType @enum_name@_get_type (void);\n" \
+ $(libempathy_gtk_headers) ) > xgen-gth \
+ && (cmp -s xgen-gth empathy-gtk-enum-type.h || cp xgen-gth empathy-gtk-enum-types.h) \
+ && rm -f xgen-gth \
+ && echo timestamp > $(@F)
+
+empathy-gtk-enum-types.c: Makefile $(libempathy_gtk_headers)
+ (cd $(srcdir) \
+ && glib-mkenums \
+ --fhead "#include <config.h>\n" \
+ --fhead "#include <glib-object.h>\n" \
+ --fhead "#include \"empathy-gtk-enum-types.h\"\n\n" \
+ --fprod "\n/* enumerations from \"@filename@\" */" \
+ --vhead "static const G@Type@Value _@enum_name@_values[] = {" \
+ --vprod " { @VALUENAME@, \"@VALUENAME@\", \"@valuenick@\" }," \
+ --vtail " { 0, NULL, NULL }\n};\n\n" \
+ --vtail "GType\n@enum_name@_get_type (void)\n{\n" \
+ --vtail " static GType type = 0;\n\n" \
+ --vtail " if (!type)\n" \
+ --vtail " type = g_@type@_register_static (\"@EnumName@\", _@enum_name@_values);\n\n" \
+ --vtail " return type;\n}\n\n" \
+ $(libempathy_gtk_headers) ) > xgen-gtc \
+ && cp xgen-gtc $(@F) \
+ && rm -f xgen-gtc
+
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA = libempathy-gtk.pc
+
+EXTRA_DIST = \
+ $(glade_DATA)
+
+CLEANFILES = \
+ $(BUILT_SOURCES) \
+ stamp-empathy-gtk-enum-types.h
diff --git a/gnome-2-22/libempathy-gtk/empathy-about-dialog.c b/gnome-2-22/libempathy-gtk/empathy-about-dialog.c
new file mode 100644
index 000000000..5ecf66749
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-about-dialog.c
@@ -0,0 +1,113 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2006-2007 Imendio AB
+ * Copyright (C) 2007-2008 Collabora Ltd.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * 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: Martyn Russell <martyn@imendio.com>
+ * Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#include "config.h"
+
+#include <glib/gi18n.h>
+#include <gtk/gtkaboutdialog.h>
+#include <gtk/gtksizegroup.h>
+#include <glade/glade.h>
+
+#include "empathy-about-dialog.h"
+#include "empathy-ui-utils.h"
+
+#define WEB_SITE "http://live.gnome.org/Empathy"
+
+static void about_dialog_activate_link_cb (GtkAboutDialog *about,
+ const gchar *link,
+ gpointer data);
+
+static const char *authors[] = {
+ "Mikael Hallendal",
+ "Richard Hult",
+ "Martyn Russell",
+ "Geert-Jan Van den Bogaerde",
+ "Kevin Dougherty",
+ "Eitan Isaacson",
+ "Xavier Claessens",
+ NULL
+};
+
+static const char *documenters[] = {
+ NULL
+};
+
+static const char *artists[] = {
+ "Andreas Nilsson <nisses.mail@home.se>",
+ "Vinicius Depizzol <vdepizzol@gmail.com>",
+ NULL
+};
+
+static const char *license[] = {
+ N_("Empathy is free software; you can redistribute it and/or modify "
+ "it under the terms of the GNU General Public License as published by "
+ "the Free Software Foundation; either version 2 of the License, or "
+ "(at your option) any later version."),
+ N_("Empathy is distributed in the hope that it will be useful, "
+ "but WITHOUT ANY WARRANTY; without even the implied warranty of "
+ "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the "
+ "GNU General Public License for more details."),
+ N_("You should have received a copy of the GNU General Public License "
+ "along with Empathy; if not, write to the Free Software Foundation, Inc., "
+ "51 Franklin Street, Fifth Floor, Boston, MA 02110-130159 USA")
+};
+
+static void
+about_dialog_activate_link_cb (GtkAboutDialog *about,
+ const gchar *link,
+ gpointer data)
+{
+ empathy_url_show (link);
+}
+
+void
+empathy_about_dialog_new (GtkWindow *parent)
+{
+ gchar *license_trans;
+
+ gtk_about_dialog_set_url_hook (about_dialog_activate_link_cb, NULL, NULL);
+
+ license_trans = g_strconcat (_(license[0]), "\n\n",
+ _(license[1]), "\n\n",
+ _(license[2]), "\n\n",
+ NULL);
+
+ gtk_show_about_dialog (parent,
+ "artists", artists,
+ "authors", authors,
+ "comments", _("An Instant Messaging client for GNOME"),
+ "license", license_trans,
+ "wrap-license", TRUE,
+ "copyright", "Imendio AB 2002-2007\nCollabora Ltd 2007",
+ "documenters", documenters,
+ "logo-icon-name", "empathy",
+ "translator-credits", _("translator-credits"),
+ "version", PACKAGE_VERSION,
+ "website", WEB_SITE,
+ NULL);
+
+ g_free (license_trans);
+}
+
+
diff --git a/gnome-2-22/libempathy-gtk/empathy-about-dialog.h b/gnome-2-22/libempathy-gtk/empathy-about-dialog.h
new file mode 100644
index 000000000..ff123ab20
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-about-dialog.h
@@ -0,0 +1,36 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2006-2007 Imendio AB
+ * Copyright (C) 2007 Collabora Ltd.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * 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: Martyn Russell <martyn@imendio.com>
+ * Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#ifndef __EMPATHY_ABOUT_DIALOG_H__
+#define __EMPATHY_ABOUT_DIALOG_H__
+
+#include <gtk/gtkwindow.h>
+
+G_BEGIN_DECLS
+
+void empathy_about_dialog_new (GtkWindow *parent);
+
+G_END_DECLS
+
+#endif /* __EMPATHY_ABOUT_DIALOG_H__ */
diff --git a/gnome-2-22/libempathy-gtk/empathy-account-chooser.c b/gnome-2-22/libempathy-gtk/empathy-account-chooser.c
new file mode 100644
index 000000000..b6f6542d7
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-account-chooser.c
@@ -0,0 +1,677 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2005-2007 Imendio AB
+ * Copyright (C) 2007-2008 Collabora Ltd.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * 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: Martyn Russell <martyn@imendio.com>
+ * Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#include "config.h"
+
+#include <string.h>
+
+#include <glib/gi18n.h>
+#include <gtk/gtk.h>
+#include <glade/glade.h>
+
+#include <libtelepathy/tp-conn.h>
+#include <libmissioncontrol/mc-account-monitor.h>
+#include <libmissioncontrol/mission-control.h>
+
+#include <libempathy/empathy-utils.h>
+
+#include "empathy-ui-utils.h"
+#include "empathy-account-chooser.h"
+
+#define GET_PRIV(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), EMPATHY_TYPE_ACCOUNT_CHOOSER, EmpathyAccountChooserPriv))
+
+typedef struct {
+ MissionControl *mc;
+ McAccountMonitor *monitor;
+ gboolean set_active_item;
+ gboolean has_all_option;
+ EmpathyAccountChooserFilterFunc filter;
+ gpointer filter_data;
+} EmpathyAccountChooserPriv;
+
+typedef struct {
+ EmpathyAccountChooser *chooser;
+ McAccount *account;
+ gboolean set;
+} SetAccountData;
+
+enum {
+ COL_ACCOUNT_IMAGE,
+ COL_ACCOUNT_TEXT,
+ COL_ACCOUNT_ENABLED, /* Usually tied to connected state */
+ COL_ACCOUNT_POINTER,
+ COL_ACCOUNT_COUNT
+};
+
+static void account_chooser_finalize (GObject *object);
+static void account_chooser_get_property (GObject *object,
+ guint param_id,
+ GValue *value,
+ GParamSpec *pspec);
+static void account_chooser_set_property (GObject *object,
+ guint param_id,
+ const GValue *value,
+ GParamSpec *pspec);
+static void account_chooser_setup (EmpathyAccountChooser *chooser);
+static void account_chooser_account_created_cb (McAccountMonitor *monitor,
+ const gchar *unique_name,
+ EmpathyAccountChooser *chooser);
+static void account_chooser_account_add_foreach (McAccount *account,
+ EmpathyAccountChooser *chooser);
+static void account_chooser_account_deleted_cb (McAccountMonitor *monitor,
+ const gchar *unique_name,
+ EmpathyAccountChooser *chooser);
+static void account_chooser_account_remove_foreach (McAccount *account,
+ EmpathyAccountChooser *chooser);
+static void account_chooser_update_iter (EmpathyAccountChooser *chooser,
+ GtkTreeIter *iter);
+static void account_chooser_status_changed_cb (MissionControl *mc,
+ TpConnectionStatus status,
+ McPresence presence,
+ TpConnectionStatusReason reason,
+ const gchar *unique_name,
+ EmpathyAccountChooser *chooser);
+static gboolean account_chooser_separator_func (GtkTreeModel *model,
+ GtkTreeIter *iter,
+ EmpathyAccountChooser *chooser);
+static gboolean account_chooser_set_account_foreach (GtkTreeModel *model,
+ GtkTreePath *path,
+ GtkTreeIter *iter,
+ SetAccountData *data);
+
+enum {
+ PROP_0,
+ PROP_HAS_ALL_OPTION,
+};
+
+G_DEFINE_TYPE (EmpathyAccountChooser, empathy_account_chooser, GTK_TYPE_COMBO_BOX);
+
+static void
+empathy_account_chooser_class_init (EmpathyAccountChooserClass *klass)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+ object_class->finalize = account_chooser_finalize;
+ object_class->get_property = account_chooser_get_property;
+ object_class->set_property = account_chooser_set_property;
+
+ g_object_class_install_property (object_class,
+ PROP_HAS_ALL_OPTION,
+ g_param_spec_boolean ("has-all-option",
+ "Has All Option",
+ "Have a separate option in the list to mean ALL accounts",
+ FALSE,
+ G_PARAM_READWRITE));
+
+ g_type_class_add_private (object_class, sizeof (EmpathyAccountChooserPriv));
+}
+
+static void
+empathy_account_chooser_init (EmpathyAccountChooser *chooser)
+{
+ EmpathyAccountChooserPriv *priv = GET_PRIV (chooser);
+
+ priv->set_active_item = FALSE;
+ priv->filter = NULL;
+ priv->filter_data = NULL;
+}
+
+static void
+account_chooser_finalize (GObject *object)
+{
+ EmpathyAccountChooser *chooser;
+ EmpathyAccountChooserPriv *priv;
+
+ chooser = EMPATHY_ACCOUNT_CHOOSER (object);
+ priv = GET_PRIV (object);
+
+ g_signal_handlers_disconnect_by_func (priv->monitor,
+ account_chooser_account_created_cb,
+ chooser);
+ g_signal_handlers_disconnect_by_func (priv->monitor,
+ account_chooser_account_deleted_cb,
+ chooser);
+ dbus_g_proxy_disconnect_signal (DBUS_G_PROXY (priv->mc),
+ "AccountStatusChanged",
+ G_CALLBACK (account_chooser_status_changed_cb),
+ chooser);
+ g_object_unref (priv->mc);
+ g_object_unref (priv->monitor);
+
+ G_OBJECT_CLASS (empathy_account_chooser_parent_class)->finalize (object);
+}
+
+static void
+account_chooser_get_property (GObject *object,
+ guint param_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ EmpathyAccountChooserPriv *priv;
+
+ priv = GET_PRIV (object);
+
+ switch (param_id) {
+ case PROP_HAS_ALL_OPTION:
+ g_value_set_boolean (value, priv->has_all_option);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
+ break;
+ };
+}
+
+static void
+account_chooser_set_property (GObject *object,
+ guint param_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ EmpathyAccountChooserPriv *priv;
+
+ priv = GET_PRIV (object);
+
+ switch (param_id) {
+ case PROP_HAS_ALL_OPTION:
+ empathy_account_chooser_set_has_all_option (EMPATHY_ACCOUNT_CHOOSER (object),
+ g_value_get_boolean (value));
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
+ break;
+ };
+}
+
+GtkWidget *
+empathy_account_chooser_new (void)
+{
+ EmpathyAccountChooserPriv *priv;
+ McAccountMonitor *monitor;
+ GtkWidget *chooser;
+
+ monitor = mc_account_monitor_new ();
+ chooser = g_object_new (EMPATHY_TYPE_ACCOUNT_CHOOSER, NULL);
+
+ priv = GET_PRIV (chooser);
+
+ priv->mc = empathy_mission_control_new ();
+ priv->monitor = mc_account_monitor_new ();
+
+ g_signal_connect (priv->monitor, "account-created",
+ G_CALLBACK (account_chooser_account_created_cb),
+ chooser);
+ g_signal_connect (priv->monitor, "account-deleted",
+ G_CALLBACK (account_chooser_account_deleted_cb),
+ chooser);
+ dbus_g_proxy_connect_signal (DBUS_G_PROXY (priv->mc), "AccountStatusChanged",
+ G_CALLBACK (account_chooser_status_changed_cb),
+ chooser, NULL);
+
+ account_chooser_setup (EMPATHY_ACCOUNT_CHOOSER (chooser));
+
+ return chooser;
+}
+
+McAccount *
+empathy_account_chooser_get_account (EmpathyAccountChooser *chooser)
+{
+ EmpathyAccountChooserPriv *priv;
+ McAccount *account;
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+
+ g_return_val_if_fail (EMPATHY_IS_ACCOUNT_CHOOSER (chooser), NULL);
+
+ priv = GET_PRIV (chooser);
+
+ model = gtk_combo_box_get_model (GTK_COMBO_BOX (chooser));
+ gtk_combo_box_get_active_iter (GTK_COMBO_BOX (chooser), &iter);
+
+ gtk_tree_model_get (model, &iter, COL_ACCOUNT_POINTER, &account, -1);
+
+ return account;
+}
+
+gboolean
+empathy_account_chooser_set_account (EmpathyAccountChooser *chooser,
+ McAccount *account)
+{
+ GtkComboBox *combobox;
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+ SetAccountData data;
+
+ g_return_val_if_fail (EMPATHY_IS_ACCOUNT_CHOOSER (chooser), FALSE);
+
+ combobox = GTK_COMBO_BOX (chooser);
+ model = gtk_combo_box_get_model (combobox);
+ gtk_combo_box_get_active_iter (combobox, &iter);
+
+ data.chooser = chooser;
+ data.account = account;
+
+ gtk_tree_model_foreach (model,
+ (GtkTreeModelForeachFunc) account_chooser_set_account_foreach,
+ &data);
+
+ return data.set;
+}
+
+gboolean
+empathy_account_chooser_get_has_all_option (EmpathyAccountChooser *chooser)
+{
+ EmpathyAccountChooserPriv *priv;
+
+ g_return_val_if_fail (EMPATHY_IS_ACCOUNT_CHOOSER (chooser), FALSE);
+
+ priv = GET_PRIV (chooser);
+
+ return priv->has_all_option;
+}
+
+void
+empathy_account_chooser_set_has_all_option (EmpathyAccountChooser *chooser,
+ gboolean has_all_option)
+{
+ EmpathyAccountChooserPriv *priv;
+ GtkComboBox *combobox;
+ GtkListStore *store;
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+
+ g_return_if_fail (EMPATHY_IS_ACCOUNT_CHOOSER (chooser));
+
+ priv = GET_PRIV (chooser);
+
+ if (priv->has_all_option == has_all_option) {
+ return;
+ }
+
+ combobox = GTK_COMBO_BOX (chooser);
+ model = gtk_combo_box_get_model (combobox);
+ store = GTK_LIST_STORE (model);
+
+ priv->has_all_option = has_all_option;
+
+ /*
+ * The first 2 options are the ALL and separator
+ */
+
+ if (has_all_option) {
+ gtk_combo_box_set_row_separator_func (GTK_COMBO_BOX (chooser),
+ (GtkTreeViewRowSeparatorFunc)
+ account_chooser_separator_func,
+ chooser,
+ NULL);
+
+ gtk_list_store_prepend (store, &iter);
+ gtk_list_store_set (store, &iter,
+ COL_ACCOUNT_TEXT, NULL,
+ COL_ACCOUNT_ENABLED, TRUE,
+ COL_ACCOUNT_POINTER, NULL,
+ -1);
+
+ gtk_list_store_prepend (store, &iter);
+ gtk_list_store_set (store, &iter,
+ COL_ACCOUNT_TEXT, _("All"),
+ COL_ACCOUNT_ENABLED, TRUE,
+ COL_ACCOUNT_POINTER, NULL,
+ -1);
+ } else {
+ if (gtk_tree_model_get_iter_first (model, &iter)) {
+ if (gtk_list_store_remove (GTK_LIST_STORE (model), &iter)) {
+ gtk_list_store_remove (GTK_LIST_STORE (model), &iter);
+ }
+ }
+
+ gtk_combo_box_set_row_separator_func (GTK_COMBO_BOX (chooser),
+ (GtkTreeViewRowSeparatorFunc)
+ NULL,
+ NULL,
+ NULL);
+ }
+
+ g_object_notify (G_OBJECT (chooser), "has-all-option");
+}
+
+static void
+account_chooser_setup (EmpathyAccountChooser *chooser)
+{
+ EmpathyAccountChooserPriv *priv;
+ GList *accounts;
+ GtkListStore *store;
+ GtkCellRenderer *renderer;
+ GtkComboBox *combobox;
+
+ priv = GET_PRIV (chooser);
+
+ /* Set up combo box with new store */
+ combobox = GTK_COMBO_BOX (chooser);
+
+ gtk_cell_layout_clear (GTK_CELL_LAYOUT (combobox));
+
+ store = gtk_list_store_new (COL_ACCOUNT_COUNT,
+ G_TYPE_STRING, /* Image */
+ G_TYPE_STRING, /* Name */
+ G_TYPE_BOOLEAN, /* Enabled */
+ MC_TYPE_ACCOUNT);
+
+ gtk_combo_box_set_model (combobox, GTK_TREE_MODEL (store));
+
+ renderer = gtk_cell_renderer_pixbuf_new ();
+ gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combobox), renderer, FALSE);
+ gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), renderer,
+ "icon-name", COL_ACCOUNT_IMAGE,
+ "sensitive", COL_ACCOUNT_ENABLED,
+ NULL);
+ g_object_set (renderer, "stock-size", GTK_ICON_SIZE_BUTTON, NULL);
+
+ renderer = gtk_cell_renderer_text_new ();
+ gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combobox), renderer, TRUE);
+ gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), renderer,
+ "text", COL_ACCOUNT_TEXT,
+ "sensitive", COL_ACCOUNT_ENABLED,
+ NULL);
+
+ /* Populate accounts */
+ accounts = mc_accounts_list ();
+ g_list_foreach (accounts,
+ (GFunc) account_chooser_account_add_foreach,
+ chooser);
+
+ mc_accounts_list_free (accounts);
+ g_object_unref (store);
+}
+
+static void
+account_chooser_account_created_cb (McAccountMonitor *monitor,
+ const gchar *unique_name,
+ EmpathyAccountChooser *chooser)
+{
+ McAccount *account;
+
+ account = mc_account_lookup (unique_name);
+ account_chooser_account_add_foreach (account, chooser);
+ g_object_unref (account);
+}
+
+static void
+account_chooser_account_add_foreach (McAccount *account,
+ EmpathyAccountChooser *chooser)
+{
+ GtkListStore *store;
+ GtkComboBox *combobox;
+ GtkTreeIter iter;
+ gint position;
+
+ combobox = GTK_COMBO_BOX (chooser);
+ store = GTK_LIST_STORE (gtk_combo_box_get_model (combobox));
+
+ position = gtk_tree_model_iter_n_children (GTK_TREE_MODEL (store), NULL);
+ gtk_list_store_insert_with_values (store, &iter, position,
+ COL_ACCOUNT_POINTER, account,
+ -1);
+ account_chooser_update_iter (chooser, &iter);
+}
+
+static void
+account_chooser_account_deleted_cb (McAccountMonitor *monitor,
+ const gchar *unique_name,
+ EmpathyAccountChooser *chooser)
+{
+ McAccount *account;
+
+ account = mc_account_lookup (unique_name);
+ account_chooser_account_remove_foreach (account, chooser);
+ g_object_unref (account);
+}
+
+typedef struct {
+ McAccount *account;
+ GtkTreeIter *iter;
+ gboolean found;
+} FindAccountData;
+
+static gboolean
+account_chooser_find_account_foreach (GtkTreeModel *model,
+ GtkTreePath *path,
+ GtkTreeIter *iter,
+ gpointer user_data)
+{
+ FindAccountData *data = user_data;
+ McAccount *account;
+
+ gtk_tree_model_get (model, iter, COL_ACCOUNT_POINTER, &account, -1);
+
+ if (empathy_account_equal (account, data->account)) {
+ data->found = TRUE;
+ *(data->iter) = *iter;
+ g_object_unref (account);
+
+ return TRUE;
+ }
+
+ g_object_unref (account);
+
+ return FALSE;
+}
+
+static gboolean
+account_chooser_find_account (EmpathyAccountChooser *chooser,
+ McAccount *account,
+ GtkTreeIter *iter)
+{
+ GtkListStore *store;
+ GtkComboBox *combobox;
+ FindAccountData data;
+
+ combobox = GTK_COMBO_BOX (chooser);
+ store = GTK_LIST_STORE (gtk_combo_box_get_model (combobox));
+
+ data.account = account;
+ data.iter = iter;
+ gtk_tree_model_foreach (GTK_TREE_MODEL (store),
+ account_chooser_find_account_foreach,
+ &data);
+
+ return data.found;
+}
+
+static void
+account_chooser_account_remove_foreach (McAccount *account,
+ EmpathyAccountChooser *chooser)
+{
+ GtkListStore *store;
+ GtkComboBox *combobox;
+ GtkTreeIter iter;
+
+ combobox = GTK_COMBO_BOX (chooser);
+ store = GTK_LIST_STORE (gtk_combo_box_get_model (combobox));
+
+ if (account_chooser_find_account (chooser, account, &iter)) {
+ gtk_list_store_remove (store, &iter);
+ }
+}
+
+static void
+account_chooser_update_iter (EmpathyAccountChooser *chooser,
+ GtkTreeIter *iter)
+{
+ EmpathyAccountChooserPriv *priv;
+ GtkListStore *store;
+ GtkComboBox *combobox;
+ McAccount *account;
+ const gchar *icon_name;
+ gboolean is_enabled = TRUE;
+
+ priv = GET_PRIV (chooser);
+
+ combobox = GTK_COMBO_BOX (chooser);
+ store = GTK_LIST_STORE (gtk_combo_box_get_model (combobox));
+
+ gtk_tree_model_get (GTK_TREE_MODEL (store), iter,
+ COL_ACCOUNT_POINTER, &account,
+ -1);
+
+ icon_name = empathy_icon_name_from_account (account);
+ if (priv->filter) {
+ is_enabled = priv->filter (account, priv->filter_data);
+ }
+
+ gtk_list_store_set (store, iter,
+ COL_ACCOUNT_IMAGE, icon_name,
+ COL_ACCOUNT_TEXT, mc_account_get_display_name (account),
+ COL_ACCOUNT_ENABLED, is_enabled,
+ -1);
+
+ /* set first connected account as active account */
+ if (priv->set_active_item == FALSE && is_enabled) {
+ priv->set_active_item = TRUE;
+ gtk_combo_box_set_active_iter (combobox, iter);
+ }
+
+ g_object_unref (account);
+}
+
+static void
+account_chooser_status_changed_cb (MissionControl *mc,
+ TpConnectionStatus status,
+ McPresence presence,
+ TpConnectionStatusReason reason,
+ const gchar *unique_name,
+ EmpathyAccountChooser *chooser)
+{
+ McAccount *account;
+ GtkTreeIter iter;
+
+ account = mc_account_lookup (unique_name);
+ if (account_chooser_find_account (chooser, account, &iter)) {
+ account_chooser_update_iter (chooser, &iter);
+ }
+ g_object_unref (account);
+}
+
+static gboolean
+account_chooser_separator_func (GtkTreeModel *model,
+ GtkTreeIter *iter,
+ EmpathyAccountChooser *chooser)
+{
+ EmpathyAccountChooserPriv *priv;
+ gchar *text;
+ gboolean is_separator;
+
+ priv = GET_PRIV (chooser);
+
+ if (!priv->has_all_option) {
+ return FALSE;
+ }
+
+ gtk_tree_model_get (model, iter, COL_ACCOUNT_TEXT, &text, -1);
+ is_separator = text == NULL;
+ g_free (text);
+
+ return is_separator;
+}
+
+static gboolean
+account_chooser_set_account_foreach (GtkTreeModel *model,
+ GtkTreePath *path,
+ GtkTreeIter *iter,
+ SetAccountData *data)
+{
+ McAccount *account;
+ gboolean equal;
+
+ gtk_tree_model_get (model, iter, COL_ACCOUNT_POINTER, &account, -1);
+
+ /* Special case so we can make it possible to select the All option */
+ if (!data->account && !account) {
+ equal = TRUE;
+ }
+ else if ((data->account && !account) || (!data->account && account)) {
+ equal = FALSE;
+ } else {
+ equal = empathy_account_equal (data->account, account);
+ g_object_unref (account);
+ }
+
+ if (equal) {
+ GtkComboBox *combobox;
+
+ combobox = GTK_COMBO_BOX (data->chooser);
+ gtk_combo_box_set_active_iter (combobox, iter);
+
+ data->set = TRUE;
+ }
+
+ return equal;
+}
+
+static gboolean
+account_chooser_filter_foreach (GtkTreeModel *model,
+ GtkTreePath *path,
+ GtkTreeIter *iter,
+ gpointer chooser)
+{
+ account_chooser_update_iter (chooser, iter);
+ return FALSE;
+}
+
+void
+empathy_account_chooser_set_filter (EmpathyAccountChooser *chooser,
+ EmpathyAccountChooserFilterFunc filter,
+ gpointer user_data)
+{
+ EmpathyAccountChooserPriv *priv;
+ GtkTreeModel *model;
+
+ g_return_if_fail (EMPATHY_IS_ACCOUNT_CHOOSER (chooser));
+
+ priv = GET_PRIV (chooser);
+
+ priv->filter = filter;
+ priv->filter_data = user_data;
+
+ /* Refilter existing data */
+ priv->set_active_item = FALSE;
+ model = gtk_combo_box_get_model (GTK_COMBO_BOX (chooser));
+ gtk_tree_model_foreach (model, account_chooser_filter_foreach, chooser);
+}
+
+gboolean
+empathy_account_chooser_filter_is_connected (McAccount *account,
+ gpointer user_data)
+{
+ MissionControl *mc;
+ TpConnectionStatus status;
+
+ g_return_val_if_fail (MC_IS_ACCOUNT (account), FALSE);
+
+ mc = empathy_mission_control_new ();
+ status = mission_control_get_connection_status (mc, account, NULL);
+ g_object_unref (mc);
+
+ return status == TP_CONNECTION_STATUS_CONNECTED;
+}
+
diff --git a/gnome-2-22/libempathy-gtk/empathy-account-chooser.h b/gnome-2-22/libempathy-gtk/empathy-account-chooser.h
new file mode 100644
index 000000000..528bd83f5
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-account-chooser.h
@@ -0,0 +1,73 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2005-2007 Imendio AB
+ * Copyright (C) 2007 Collabora Ltd.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * 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: Martyn Russell <martyn@imendio.com>
+ * Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#ifndef __EMPATHY_ACCOUNT_CHOOSER_H__
+#define __EMPATHY_ACCOUNT_CHOOSER_H__
+
+#include <gtk/gtkcombobox.h>
+
+#include <libmissioncontrol/mc-account.h>
+
+G_BEGIN_DECLS
+
+#define EMPATHY_TYPE_ACCOUNT_CHOOSER (empathy_account_chooser_get_type ())
+#define EMPATHY_ACCOUNT_CHOOSER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), EMPATHY_TYPE_ACCOUNT_CHOOSER, EmpathyAccountChooser))
+#define EMPATHY_ACCOUNT_CHOOSER_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), EMPATHY_TYPE_ACCOUNT_CHOOSER, EmpathyAccountChooserClass))
+#define EMPATHY_IS_ACCOUNT_CHOOSER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), EMPATHY_TYPE_ACCOUNT_CHOOSER))
+#define EMPATHY_IS_ACCOUNT_CHOOSER_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), EMPATHY_TYPE_ACCOUNT_CHOOSER))
+#define EMPATHY_ACCOUNT_CHOOSER_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), EMPATHY_TYPE_ACCOUNT_CHOOSER, EmpathyAccountChooserClass))
+
+typedef gboolean (* EmpathyAccountChooserFilterFunc) (McAccount *account,
+ gpointer user_data);
+
+
+typedef struct _EmpathyAccountChooser EmpathyAccountChooser;
+typedef struct _EmpathyAccountChooserClass EmpathyAccountChooserClass;
+
+struct _EmpathyAccountChooser {
+ GtkComboBox parent;
+};
+
+struct _EmpathyAccountChooserClass {
+ GtkComboBoxClass parent_class;
+};
+
+GType empathy_account_chooser_get_type (void) G_GNUC_CONST;
+GtkWidget * empathy_account_chooser_new (void);
+McAccount * empathy_account_chooser_get_account (EmpathyAccountChooser *chooser);
+gboolean empathy_account_chooser_set_account (EmpathyAccountChooser *chooser,
+ McAccount *account);
+gboolean empathy_account_chooser_get_has_all_option (EmpathyAccountChooser *chooser);
+void empathy_account_chooser_set_has_all_option (EmpathyAccountChooser *chooser,
+ gboolean has_all_option);
+void empathy_account_chooser_set_filter (EmpathyAccountChooser *chooser,
+ EmpathyAccountChooserFilterFunc filter,
+ gpointer user_data);
+gboolean empathy_account_chooser_filter_is_connected(McAccount *account,
+ gpointer user_data);
+
+G_END_DECLS
+
+#endif /* __EMPATHY_ACCOUNT_CHOOSER_H__ */
+
diff --git a/gnome-2-22/libempathy-gtk/empathy-account-widget-generic.glade b/gnome-2-22/libempathy-gtk/empathy-account-widget-generic.glade
new file mode 100644
index 000000000..5278e0a2b
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-account-widget-generic.glade
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
+<!--*- mode: xml -*-->
+<glade-interface>
+ <widget class="GtkWindow" id="account_generic_settings">
+ <property name="visible">True</property>
+ <property name="title" translatable="yes">generic account settings</property>
+ <property name="resizable">False</property>
+ <child>
+ <widget class="GtkVBox" id="vbox_generic_settings">
+ <property name="visible">True</property>
+ <property name="spacing">6</property>
+ <child>
+ <widget class="GtkTable" id="table_common_settings">
+ <property name="visible">True</property>
+ <property name="n_columns">3</property>
+ <property name="column_spacing">12</property>
+ <property name="row_spacing">6</property>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkExpander" id="expander1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <widget class="GtkScrolledWindow" id="scrolledwindow1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+ <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+ <child>
+ <widget class="GtkViewport" id="viewport1">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="resize_mode">GTK_RESIZE_QUEUE</property>
+ <child>
+ <widget class="GtkTable" id="table_advanced_settings">
+ <property name="visible">True</property>
+ <property name="n_columns">3</property>
+ <property name="column_spacing">12</property>
+ <property name="row_spacing">6</property>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label1">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;Advanced&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </widget>
+ <packing>
+ <property name="type">label_item</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+</glade-interface>
diff --git a/gnome-2-22/libempathy-gtk/empathy-account-widget-icq.glade b/gnome-2-22/libempathy-gtk/empathy-account-widget-icq.glade
new file mode 100644
index 000000000..235587bd8
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-account-widget-icq.glade
@@ -0,0 +1,375 @@
+<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
+<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
+
+<glade-interface>
+
+<widget class="GtkWindow" id="account_icq_settings">
+ <property name="visible">True</property>
+ <property name="title" translatable="yes">ICQ account settings</property>
+ <property name="type">GTK_WINDOW_TOPLEVEL</property>
+ <property name="window_position">GTK_WIN_POS_NONE</property>
+ <property name="modal">False</property>
+ <property name="resizable">False</property>
+ <property name="destroy_with_parent">False</property>
+ <property name="decorated">True</property>
+ <property name="skip_taskbar_hint">False</property>
+ <property name="skip_pager_hint">False</property>
+ <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
+ <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+ <property name="focus_on_map">True</property>
+ <property name="urgency_hint">False</property>
+
+ <child>
+ <widget class="GtkVBox" id="vbox_icq_settings">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">6</property>
+
+ <child>
+ <widget class="GtkTable" id="table_common_settings">
+ <property name="visible">True</property>
+ <property name="n_rows">2</property>
+ <property name="n_columns">3</property>
+ <property name="homogeneous">False</property>
+ <property name="row_spacing">6</property>
+ <property name="column_spacing">12</property>
+
+ <child>
+ <widget class="GtkEntry" id="entry_password">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">False</property>
+ <property name="max_length">0</property>
+ <property name="text" translatable="yes"></property>
+ <property name="has_frame">True</property>
+ <property name="invisible_char">*</property>
+ <property name="activates_default">False</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkEntry" id="entry_uin">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">True</property>
+ <property name="max_length">0</property>
+ <property name="text" translatable="yes"></property>
+ <property name="has_frame">True</property>
+ <property name="invisible_char">*</property>
+ <property name="activates_default">False</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">3</property>
+ <property name="top_attach">0</property>
+ <property name="bottom_attach">1</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkButton" id="button_forget">
+ <property name="visible">True</property>
+ <property name="tooltip" translatable="yes">Forget password and clear the entry.</property>
+ <property name="can_focus">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+
+ <child>
+ <widget class="GtkImage" id="image834">
+ <property name="visible">True</property>
+ <property name="stock">gtk-clear</property>
+ <property name="icon_size">1</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="right_attach">3</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options"></property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label_uin">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">ICQ _UIN:</property>
+ <property name="use_underline">True</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="mnemonic_widget">entry_uin</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">0</property>
+ <property name="bottom_attach">1</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label_password">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Pass_word:</property>
+ <property name="use_underline">True</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="mnemonic_widget">entry_password</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkExpander" id="expander1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="expanded">False</property>
+ <property name="spacing">0</property>
+
+ <child>
+ <widget class="GtkTable" id="table_advanced_settings">
+ <property name="visible">True</property>
+ <property name="n_rows">3</property>
+ <property name="n_columns">2</property>
+ <property name="homogeneous">False</property>
+ <property name="row_spacing">6</property>
+ <property name="column_spacing">12</property>
+
+ <child>
+ <widget class="GtkEntry" id="entry_charset">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">True</property>
+ <property name="max_length">0</property>
+ <property name="text" translatable="yes"></property>
+ <property name="has_frame">True</property>
+ <property name="invisible_char">*</property>
+ <property name="activates_default">False</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">0</property>
+ <property name="bottom_attach">1</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label_server">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Server:</property>
+ <property name="use_underline">True</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="mnemonic_widget">entry_server</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label_port">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Port:</property>
+ <property name="use_underline">True</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="mnemonic_widget">spinbutton_port</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkEntry" id="entry_server">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">True</property>
+ <property name="max_length">0</property>
+ <property name="text" translatable="yes"></property>
+ <property name="has_frame">True</property>
+ <property name="invisible_char">*</property>
+ <property name="activates_default">False</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkSpinButton" id="spinbutton_port">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="climb_rate">1</property>
+ <property name="digits">0</property>
+ <property name="numeric">True</property>
+ <property name="update_policy">GTK_UPDATE_ALWAYS</property>
+ <property name="snap_to_ticks">False</property>
+ <property name="wrap">False</property>
+ <property name="adjustment">5222 0 65556 1 10 10</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label_charset">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Charset:</property>
+ <property name="use_underline">True</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="mnemonic_widget">entry_charset</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">0</property>
+ <property name="bottom_attach">1</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label1">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;Advanced&lt;/b&gt;</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">True</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="type">label_item</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+</widget>
+
+</glade-interface>
diff --git a/gnome-2-22/libempathy-gtk/empathy-account-widget-irc.c b/gnome-2-22/libempathy-gtk/empathy-account-widget-irc.c
new file mode 100644
index 000000000..5c74e0958
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-account-widget-irc.c
@@ -0,0 +1,511 @@
+/*
+ * Copyright (C) 2007-2008 Guillaume Desmottes
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Authors: Guillaume Desmottes <gdesmott@gnome.org>
+ */
+
+#include "config.h"
+
+#include <stdlib.h>
+#include <string.h>
+#include <sys/stat.h>
+
+#include <glib/gi18n.h>
+#include <gtk/gtk.h>
+#include <glade/glade.h>
+
+#include <libmissioncontrol/mc-account.h>
+#include <libmissioncontrol/mc-protocol.h>
+
+#include <libempathy/empathy-utils.h>
+#include <libempathy/empathy-debug.h>
+#include <libempathy/empathy-irc-network-manager.h>
+
+#include "empathy-irc-network-dialog.h"
+#include "empathy-account-widget.h"
+#include "empathy-account-widget-irc.h"
+#include "empathy-ui-utils.h"
+
+#define DEBUG_DOMAIN "AccountWidgetIRC"
+
+#define IRC_NETWORKS_FILENAME "irc-networks.xml"
+
+typedef struct {
+ McAccount *account;
+ EmpathyIrcNetworkManager *network_manager;
+
+ GtkWidget *vbox_settings;
+
+ GtkWidget *combobox_network;
+ GtkWidget *button_add_network;
+ GtkWidget *button_network;
+ GtkWidget *button_remove;
+} EmpathyAccountWidgetIrc;
+
+enum {
+ COL_NETWORK_OBJ,
+ COL_NETWORK_NAME,
+};
+
+static void
+account_widget_irc_destroy_cb (GtkWidget *widget,
+ EmpathyAccountWidgetIrc *settings)
+{
+ g_object_unref (settings->network_manager);
+ g_object_unref (settings->account);
+ g_slice_free (EmpathyAccountWidgetIrc, settings);
+}
+
+static void
+unset_server_params (EmpathyAccountWidgetIrc *settings)
+{
+ empathy_debug (DEBUG_DOMAIN, "Unset server, port and use-ssl");
+ mc_account_unset_param (settings->account, "server");
+ mc_account_unset_param (settings->account, "port");
+ mc_account_unset_param (settings->account, "use-ssl");
+}
+
+static void
+update_server_params (EmpathyAccountWidgetIrc *settings)
+{
+ GtkTreeIter iter;
+ GtkTreeModel *model;
+ EmpathyIrcNetwork *network;
+ GSList *servers;
+ gchar *charset;
+
+ if (!gtk_combo_box_get_active_iter (
+ GTK_COMBO_BOX (settings->combobox_network), &iter))
+ {
+ unset_server_params (settings);
+ return;
+ }
+
+ model = gtk_combo_box_get_model (GTK_COMBO_BOX (settings->combobox_network));
+ gtk_tree_model_get (model, &iter, COL_NETWORK_OBJ, &network, -1);
+
+ g_assert (network != NULL);
+
+ g_object_get (network, "charset", &charset, NULL);
+ empathy_debug (DEBUG_DOMAIN, "Setting charset to %s", charset);
+ mc_account_set_param_string (settings->account, "charset", charset);
+ g_free (charset);
+
+ servers = empathy_irc_network_get_servers (network);
+ if (g_slist_length (servers) > 0)
+ {
+ /* set the first server as CM server */
+ EmpathyIrcServer *server = servers->data;
+ gchar *address;
+ guint port;
+ gboolean ssl;
+
+ g_object_get (server,
+ "address", &address,
+ "port", &port,
+ "ssl", &ssl,
+ NULL);
+
+ empathy_debug (DEBUG_DOMAIN, "Setting server to %s", address);
+ mc_account_set_param_string (settings->account, "server", address);
+ empathy_debug (DEBUG_DOMAIN, "Setting port to %u", port);
+ mc_account_set_param_int (settings->account, "port", port);
+ empathy_debug (DEBUG_DOMAIN, "Setting use-ssl to %s",
+ ssl ? "TRUE": "FALSE" );
+ mc_account_set_param_boolean (settings->account, "use-ssl", ssl);
+
+ g_free (address);
+ }
+ else
+ {
+ /* No server. Unset values */
+ unset_server_params (settings);
+ }
+
+ g_slist_foreach (servers, (GFunc) g_object_unref, NULL);
+ g_slist_free (servers);
+ g_object_unref (network);
+}
+
+static void
+irc_network_dialog_destroy_cb (GtkWidget *widget,
+ EmpathyAccountWidgetIrc *settings)
+{
+ GtkTreeIter iter;
+ GtkTreeModel *model;
+ EmpathyIrcNetwork *network;
+ gchar *name;
+
+ /* name could be changed */
+ gtk_combo_box_get_active_iter (GTK_COMBO_BOX (settings->combobox_network),
+ &iter);
+ model = gtk_combo_box_get_model (GTK_COMBO_BOX (settings->combobox_network));
+ gtk_tree_model_get (model, &iter, COL_NETWORK_OBJ, &network, -1);
+
+ g_object_get (network, "name", &name, NULL);
+ gtk_list_store_set (GTK_LIST_STORE (model), &iter,
+ COL_NETWORK_NAME, name, -1);
+
+ update_server_params (settings);
+
+ g_object_unref (network);
+ g_free (name);
+}
+
+static void
+display_irc_network_dialog (EmpathyAccountWidgetIrc *settings,
+ EmpathyIrcNetwork *network)
+{
+ GtkWindow *window;
+ GtkWidget *dialog;
+
+ window = empathy_get_toplevel_window (settings->vbox_settings);
+ dialog = empathy_irc_network_dialog_show (network, GTK_WIDGET (window));
+ g_signal_connect (dialog, "destroy",
+ G_CALLBACK (irc_network_dialog_destroy_cb), settings);
+}
+
+static void
+account_widget_irc_button_edit_network_clicked_cb (
+ GtkWidget *button,
+ EmpathyAccountWidgetIrc *settings)
+{
+ GtkTreeIter iter;
+ GtkTreeModel *model;
+ EmpathyIrcNetwork *network;
+
+ gtk_combo_box_get_active_iter (GTK_COMBO_BOX (settings->combobox_network),
+ &iter);
+ model = gtk_combo_box_get_model (GTK_COMBO_BOX (settings->combobox_network));
+ gtk_tree_model_get (model, &iter, COL_NETWORK_OBJ, &network, -1);
+
+ g_assert (network != NULL);
+
+ display_irc_network_dialog (settings, network);
+
+ g_object_unref (network);
+}
+
+static void
+account_widget_irc_button_remove_clicked_cb (GtkWidget *button,
+ EmpathyAccountWidgetIrc *settings)
+{
+ EmpathyIrcNetwork *network;
+ GtkTreeIter iter;
+ GtkTreeModel *model;
+ gchar *name;
+
+ gtk_combo_box_get_active_iter (GTK_COMBO_BOX (settings->combobox_network),
+ &iter);
+ model = gtk_combo_box_get_model (GTK_COMBO_BOX (settings->combobox_network));
+ gtk_tree_model_get (model, &iter, COL_NETWORK_OBJ, &network, -1);
+
+ g_assert (network != NULL);
+
+ g_object_get (network, "name", &name, NULL);
+ empathy_debug (DEBUG_DOMAIN, "Remove network %s", name);
+
+ gtk_list_store_remove (GTK_LIST_STORE (model), &iter);
+ empathy_irc_network_manager_remove (settings->network_manager, network);
+
+ /* Select the first network */
+ if (gtk_tree_model_get_iter_first (model, &iter))
+ {
+ gtk_combo_box_set_active_iter (
+ GTK_COMBO_BOX (settings->combobox_network), &iter);
+ }
+
+ g_free (name);
+ g_object_unref (network);
+}
+
+static void
+account_widget_irc_button_add_network_clicked_cb (GtkWidget *button,
+ EmpathyAccountWidgetIrc *settings)
+{
+ EmpathyIrcNetwork *network;
+ GtkTreeModel *model;
+ GtkListStore *store;
+ gchar *name;
+ GtkTreeIter iter;
+
+ network = empathy_irc_network_new (_("New Network"));
+ empathy_irc_network_manager_add (settings->network_manager, network);
+
+ model = gtk_combo_box_get_model (GTK_COMBO_BOX (settings->combobox_network));
+ store = GTK_LIST_STORE (model);
+
+ g_object_get (network, "name", &name, NULL);
+
+ gtk_list_store_insert_with_values (store, &iter, -1,
+ COL_NETWORK_OBJ, network,
+ COL_NETWORK_NAME, name,
+ -1);
+
+ gtk_combo_box_set_active_iter (GTK_COMBO_BOX (settings->combobox_network),
+ &iter);
+
+ display_irc_network_dialog (settings, network);
+
+ g_free (name);
+ g_object_unref (network);
+}
+
+static void
+account_widget_irc_combobox_network_changed_cb (GtkWidget *combobox,
+ EmpathyAccountWidgetIrc *settings)
+{
+ update_server_params (settings);
+}
+
+static void
+fill_networks_model (EmpathyAccountWidgetIrc *settings,
+ EmpathyIrcNetwork *network_to_select)
+{
+ GSList *networks, *l;
+ GtkTreeModel *model;
+ GtkListStore *store;
+
+ networks = empathy_irc_network_manager_get_networks (
+ settings->network_manager);
+
+ model = gtk_combo_box_get_model (GTK_COMBO_BOX (settings->combobox_network));
+ store = GTK_LIST_STORE (model);
+
+ for (l = networks; l != NULL; l = g_slist_next (l))
+ {
+ gchar *name;
+ EmpathyIrcNetwork *network = l->data;
+ GtkTreeIter iter;
+
+ g_object_get (network, "name", &name, NULL);
+
+ gtk_list_store_insert_with_values (store, &iter, -1,
+ COL_NETWORK_OBJ, network,
+ COL_NETWORK_NAME, name,
+ -1);
+
+ if (network == network_to_select)
+ {
+ gtk_combo_box_set_active_iter (
+ GTK_COMBO_BOX (settings->combobox_network), &iter);
+ }
+
+ g_free (name);
+ g_object_unref (network);
+ }
+
+ if (network_to_select == NULL)
+ {
+ /* Select the first network */
+ GtkTreeIter iter;
+
+ if (gtk_tree_model_get_iter_first (model, &iter))
+ {
+ gtk_combo_box_set_active_iter (
+ GTK_COMBO_BOX (settings->combobox_network), &iter);
+
+ update_server_params (settings);
+ }
+ }
+
+ g_slist_free (networks);
+}
+
+static void
+account_widget_irc_setup (EmpathyAccountWidgetIrc *settings)
+{
+ gchar *nick = NULL;
+ gchar *fullname = NULL;
+ gchar *server = NULL;
+ gint port = 6667;
+ gchar *charset;
+ gboolean ssl = FALSE;
+ EmpathyIrcNetwork *network = NULL;
+
+ mc_account_get_param_string (settings->account, "account", &nick);
+ mc_account_get_param_string (settings->account, "fullname", &fullname);
+ mc_account_get_param_string (settings->account, "server", &server);
+ mc_account_get_param_string (settings->account, "charset", &charset);
+ mc_account_get_param_int (settings->account, "port", &port);
+ mc_account_get_param_boolean (settings->account, "use-ssl", &ssl);
+
+ if (!nick)
+ {
+ nick = g_strdup (g_get_user_name ());
+ mc_account_set_param_string (settings->account, "account", nick);
+ }
+
+ if (!fullname)
+ {
+ fullname = g_strdup (g_get_real_name ());
+ if (!fullname)
+ {
+ fullname = g_strdup (nick);
+ }
+ mc_account_set_param_string (settings->account, "fullname", fullname);
+ }
+
+ if (server != NULL)
+ {
+ GtkListStore *store;
+
+ network = empathy_irc_network_manager_find_network_by_address (
+ settings->network_manager, server);
+
+
+ store = GTK_LIST_STORE (gtk_combo_box_get_model (
+ GTK_COMBO_BOX (settings->combobox_network)));
+
+ if (network != NULL)
+ {
+ gchar *name;
+
+ g_object_set (network, "charset", charset, NULL);
+
+ g_object_get (network, "name", &name, NULL);
+ empathy_debug (DEBUG_DOMAIN, "Account use network %s", name);
+
+ g_free (name);
+ }
+ else
+ {
+ /* We don't have this network. Let's create it */
+ EmpathyIrcServer *srv;
+ GtkTreeIter iter;
+
+ empathy_debug (DEBUG_DOMAIN, "Create a network %s", server);
+ network = empathy_irc_network_new (server);
+ srv = empathy_irc_server_new (server, port, ssl);
+
+ empathy_irc_network_append_server (network, srv);
+ empathy_irc_network_manager_add (settings->network_manager, network);
+
+ gtk_list_store_insert_with_values (store, &iter, -1,
+ COL_NETWORK_OBJ, network,
+ COL_NETWORK_NAME, server,
+ -1);
+
+ gtk_combo_box_set_active_iter (
+ GTK_COMBO_BOX (settings->combobox_network), &iter);
+
+ g_object_unref (srv);
+ g_object_unref (network);
+ }
+ }
+
+
+ fill_networks_model (settings, network);
+
+ g_free (nick);
+ g_free (fullname);
+ g_free (server);
+ g_free (charset);
+}
+
+/**
+ * empathy_account_widget_irc_new:
+ * @account: the #McAccount to configure
+ *
+ * Creates a new IRC account widget to configure a given #McAccount
+ *
+ * Returns: The toplevel container of the configuration widget
+ */
+GtkWidget *
+empathy_account_widget_irc_new (McAccount *account)
+{
+ EmpathyAccountWidgetIrc *settings;
+ gchar *dir, *user_file_with_path, *global_file_with_path;
+ GladeXML *glade;
+ GtkListStore *store;
+ GtkCellRenderer *renderer;
+
+ settings = g_slice_new0 (EmpathyAccountWidgetIrc);
+ settings->account = g_object_ref (account);
+
+ dir = g_build_filename (g_get_home_dir (), ".gnome2", PACKAGE_NAME, NULL);
+ g_mkdir_with_parents (dir, S_IRUSR | S_IWUSR | S_IXUSR);
+ user_file_with_path = g_build_filename (dir, IRC_NETWORKS_FILENAME, NULL);
+ g_free (dir);
+
+ global_file_with_path = g_build_filename (g_getenv ("EMPATHY_SRCDIR"),
+ "libempathy-gtk", IRC_NETWORKS_FILENAME, NULL);
+ if (!g_file_test (global_file_with_path, G_FILE_TEST_EXISTS))
+ {
+ g_free (global_file_with_path);
+ global_file_with_path = g_build_filename (DATADIR, "empathy",
+ IRC_NETWORKS_FILENAME, NULL);
+ }
+
+ settings->network_manager = empathy_irc_network_manager_new (
+ global_file_with_path,
+ user_file_with_path);
+
+ g_free (global_file_with_path);
+ g_free (user_file_with_path);
+
+ glade = empathy_glade_get_file ("empathy-account-widget-irc.glade",
+ "vbox_irc_settings",
+ NULL,
+ "vbox_irc_settings", &settings->vbox_settings,
+ "combobox_network", &settings->combobox_network,
+ "button_network", &settings->button_network,
+ "button_add_network", &settings->button_add_network,
+ "button_remove", &settings->button_remove,
+ NULL);
+
+ /* Fill the networks combobox */
+ store = gtk_list_store_new (2, G_TYPE_OBJECT, G_TYPE_STRING);
+
+ gtk_cell_layout_clear (GTK_CELL_LAYOUT (settings->combobox_network));
+ renderer = gtk_cell_renderer_text_new ();
+ gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (settings->combobox_network),
+ renderer, TRUE);
+ gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (settings->combobox_network),
+ renderer,
+ "text", COL_NETWORK_NAME,
+ NULL);
+
+ gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (store),
+ COL_NETWORK_NAME,
+ GTK_SORT_ASCENDING);
+
+ gtk_combo_box_set_model (GTK_COMBO_BOX (settings->combobox_network),
+ GTK_TREE_MODEL (store));
+ g_object_unref (store);
+
+ account_widget_irc_setup (settings);
+
+ empathy_account_widget_handle_params (account, glade,
+ "entry_nick", "account",
+ "entry_fullname", "fullname",
+ "entry_password", "password",
+ "entry_quit_message", "quit-message",
+ NULL);
+
+ empathy_glade_connect (glade, settings,
+ "vbox_irc_settings", "destroy", account_widget_irc_destroy_cb,
+ "button_network", "clicked", account_widget_irc_button_edit_network_clicked_cb,
+ "button_add_network", "clicked", account_widget_irc_button_add_network_clicked_cb,
+ "button_remove", "clicked", account_widget_irc_button_remove_clicked_cb,
+ "combobox_network", "changed", account_widget_irc_combobox_network_changed_cb,
+ NULL);
+
+ g_object_unref (glade);
+
+ return settings->vbox_settings;
+}
diff --git a/gnome-2-22/libempathy-gtk/empathy-account-widget-irc.glade b/gnome-2-22/libempathy-gtk/empathy-account-widget-irc.glade
new file mode 100644
index 000000000..14c757ce8
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-account-widget-irc.glade
@@ -0,0 +1,451 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
+<!--Generated with glade3 3.4.0 on Sun Feb 17 01:08:25 2008 -->
+<glade-interface>
+ <widget class="GtkWindow" id="account_irc_settings">
+ <property name="title" translatable="yes">irc account settings</property>
+ <property name="resizable">False</property>
+ <child>
+ <widget class="GtkTable" id="vbox_irc_settings">
+ <property name="visible">True</property>
+ <property name="n_rows">5</property>
+ <property name="n_columns">2</property>
+ <property name="column_spacing">12</property>
+ <property name="row_spacing">6</property>
+ <child>
+ <widget class="GtkLabel" id="label_network">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Network:</property>
+ <property name="use_underline">True</property>
+ </widget>
+ <packing>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkHBox" id="hbox174">
+ <property name="visible">True</property>
+ <property name="spacing">2</property>
+ <child>
+ <widget class="GtkComboBox" id="combobox_network">
+ <property name="visible">True</property>
+ <property name="items" translatable="yes"></property>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkButton" id="button_add_network">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="tooltip" translatable="yes">Create a new IRC network</property>
+ <property name="response_id">0</property>
+ <child>
+ <widget class="GtkImage" id="image2">
+ <property name="visible">True</property>
+ <property name="stock">gtk-add</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkButton" id="button_network">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="tooltip" translatable="yes">Edit the selected IRC network</property>
+ <property name="response_id">0</property>
+ <child>
+ <widget class="GtkImage" id="image834">
+ <property name="visible">True</property>
+ <property name="stock">gtk-edit</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkButton" id="button_remove">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="tooltip" translatable="yes">Remove the selected IRC network</property>
+ <property name="response_id">0</property>
+ <child>
+ <widget class="GtkImage" id="image835">
+ <property name="visible">True</property>
+ <property name="stock">gtk-remove</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label_nick">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Nickname:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">entry_nick</property>
+ </widget>
+ <packing>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkEntry" id="entry_nick">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">*</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label_fullname">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Real name:</property>
+ </widget>
+ <packing>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label_password">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Password:</property>
+ </widget>
+ <packing>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkEntry" id="entry_password">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="visibility">False</property>
+ <property name="invisible_char">*</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkEntry" id="entry_fullname">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label_quit_message">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Quit message:</property>
+ </widget>
+ <packing>
+ <property name="top_attach">4</property>
+ <property name="bottom_attach">5</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkEntry" id="entry_quit_message">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">4</property>
+ <property name="bottom_attach">5</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ <widget class="GtkDialog" id="irc_network_dialog">
+ <property name="visible">True</property>
+ <property name="border_width">5</property>
+ <property name="title" translatable="yes">Network</property>
+ <property name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property>
+ <property name="icon_name">gtk-edit</property>
+ <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
+ <property name="skip_taskbar_hint">True</property>
+ <property name="skip_pager_hint">True</property>
+ <property name="has_separator">False</property>
+ <child internal-child="vbox">
+ <widget class="GtkVBox" id="dialog-vbox10">
+ <property name="visible">True</property>
+ <property name="spacing">2</property>
+ <child>
+ <widget class="GtkFrame" id="frame14">
+ <property name="visible">True</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">GTK_SHADOW_NONE</property>
+ <child>
+ <widget class="GtkAlignment" id="alignment28">
+ <property name="visible">True</property>
+ <property name="top_padding">6</property>
+ <property name="left_padding">12</property>
+ <child>
+ <widget class="GtkTable" id="table14">
+ <property name="visible">True</property>
+ <property name="n_rows">2</property>
+ <property name="n_columns">2</property>
+ <property name="column_spacing">12</property>
+ <property name="row_spacing">6</property>
+ <child>
+ <widget class="GtkComboBox" id="combobox_charset">
+ <property name="visible">True</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkEntry" id="entry_network">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label_charset">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Charset:</property>
+ </widget>
+ <packing>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label_network">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Network:</property>
+ </widget>
+ <packing>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label_network">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;Network&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </widget>
+ <packing>
+ <property name="type">label_item</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkFrame" id="frame15">
+ <property name="visible">True</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">GTK_SHADOW_NONE</property>
+ <child>
+ <widget class="GtkAlignment" id="alignment29">
+ <property name="visible">True</property>
+ <property name="top_padding">6</property>
+ <property name="left_padding">12</property>
+ <child>
+ <widget class="GtkTable" id="table15">
+ <property name="visible">True</property>
+ <property name="n_rows">1</property>
+ <property name="n_columns">2</property>
+ <property name="column_spacing">6</property>
+ <property name="row_spacing">6</property>
+ <child>
+ <widget class="GtkVButtonBox" id="vbuttonbox1">
+ <property name="visible">True</property>
+ <property name="spacing">6</property>
+ <property name="layout_style">GTK_BUTTONBOX_START</property>
+ <child>
+ <widget class="GtkButton" id="button_add">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="label">gtk-add</property>
+ <property name="use_stock">True</property>
+ <property name="response_id">0</property>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkButton" id="button_remove">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="label">gtk-remove</property>
+ <property name="use_stock">True</property>
+ <property name="response_id">0</property>
+ </widget>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkButton" id="button_up">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="label">gtk-go-up</property>
+ <property name="use_stock">True</property>
+ <property name="response_id">0</property>
+ </widget>
+ <packing>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkButton" id="button_down">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="label">gtk-go-down</property>
+ <property name="use_stock">True</property>
+ <property name="response_id">0</property>
+ </widget>
+ <packing>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkScrolledWindow" id="scrolledwindow19">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
+ <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+ <property name="shadow_type">GTK_SHADOW_IN</property>
+ <child>
+ <widget class="GtkTreeView" id="treeview_servers">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="enable_search">False</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label_servers">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;Servers&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </widget>
+ <packing>
+ <property name="type">label_item</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child internal-child="action_area">
+ <widget class="GtkHButtonBox" id="dialog-action_area10">
+ <property name="visible">True</property>
+ <property name="layout_style">GTK_BUTTONBOX_END</property>
+ <child>
+ <widget class="GtkButton" id="button_close">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="label">gtk-close</property>
+ <property name="use_stock">True</property>
+ <property name="response_id">-7</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="pack_type">GTK_PACK_END</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+</glade-interface>
diff --git a/gnome-2-22/libempathy-gtk/empathy-account-widget-irc.h b/gnome-2-22/libempathy-gtk/empathy-account-widget-irc.h
new file mode 100644
index 000000000..6ead048eb
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-account-widget-irc.h
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2007-2008 Guillaume Desmottes
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Authors: Guillaume Desmottes <gdesmott@gnome.org>
+ */
+
+#ifndef __EMPATHY_ACCOUNT_WIDGET_IRC_H__
+#define __EMPATHY_ACCOUNT_WIDGET_IRC_H__
+
+#include <gtk/gtkwidget.h>
+#include <libmissioncontrol/mc-account.h>
+
+G_BEGIN_DECLS
+
+GtkWidget * empathy_account_widget_irc_new (McAccount *account);
+
+G_END_DECLS
+
+#endif /* __EMPATHY_ACCOUNT_WIDGET_IRC_H__ */
diff --git a/gnome-2-22/libempathy-gtk/empathy-account-widget-jabber.glade b/gnome-2-22/libempathy-gtk/empathy-account-widget-jabber.glade
new file mode 100644
index 000000000..d691d1418
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-account-widget-jabber.glade
@@ -0,0 +1,566 @@
+<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
+<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
+
+<glade-interface>
+
+<widget class="GtkWindow" id="account_jabber_settings">
+ <property name="visible">True</property>
+ <property name="title" translatable="yes">jabber account settings</property>
+ <property name="type">GTK_WINDOW_TOPLEVEL</property>
+ <property name="window_position">GTK_WIN_POS_NONE</property>
+ <property name="modal">False</property>
+ <property name="resizable">False</property>
+ <property name="destroy_with_parent">False</property>
+ <property name="decorated">True</property>
+ <property name="skip_taskbar_hint">False</property>
+ <property name="skip_pager_hint">False</property>
+ <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
+ <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+ <property name="focus_on_map">True</property>
+ <property name="urgency_hint">False</property>
+
+ <child>
+ <widget class="GtkVBox" id="vbox_jabber_settings">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">6</property>
+
+ <child>
+ <widget class="GtkTable" id="table_common_settings">
+ <property name="visible">True</property>
+ <property name="n_rows">2</property>
+ <property name="n_columns">3</property>
+ <property name="homogeneous">False</property>
+ <property name="row_spacing">6</property>
+ <property name="column_spacing">12</property>
+
+ <child>
+ <widget class="GtkLabel" id="label_password">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Pass_word:</property>
+ <property name="use_underline">True</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="mnemonic_widget">entry_password</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkButton" id="button_forget">
+ <property name="visible">True</property>
+ <property name="tooltip" translatable="yes">Forget password and clear the entry.</property>
+ <property name="can_focus">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+
+ <child>
+ <widget class="GtkImage" id="image834">
+ <property name="visible">True</property>
+ <property name="stock">gtk-clear</property>
+ <property name="icon_size">1</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="right_attach">3</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label_id">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Login I_D:</property>
+ <property name="use_underline">True</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="mnemonic_widget">entry_id</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">0</property>
+ <property name="bottom_attach">1</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkEntry" id="entry_id">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">True</property>
+ <property name="max_length">0</property>
+ <property name="text" translatable="yes"></property>
+ <property name="has_frame">True</property>
+ <property name="invisible_char">*</property>
+ <property name="activates_default">False</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">3</property>
+ <property name="top_attach">0</property>
+ <property name="bottom_attach">1</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkEntry" id="entry_password">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">False</property>
+ <property name="max_length">0</property>
+ <property name="text" translatable="yes"></property>
+ <property name="has_frame">True</property>
+ <property name="invisible_char">*</property>
+ <property name="activates_default">False</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkExpander" id="expander1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="expanded">False</property>
+ <property name="spacing">0</property>
+
+ <child>
+ <widget class="GtkVBox" id="vbox1">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+
+ <child>
+ <widget class="GtkTable" id="table_advanced_settings">
+ <property name="visible">True</property>
+ <property name="n_rows">4</property>
+ <property name="n_columns">3</property>
+ <property name="homogeneous">False</property>
+ <property name="row_spacing">6</property>
+ <property name="column_spacing">12</property>
+
+ <child>
+ <widget class="GtkCheckButton" id="checkbutton_encryption">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">_Encryption required (TLS/SSL)</property>
+ <property name="use_underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="active">False</property>
+ <property name="inconsistent">False</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">3</property>
+ <property name="top_attach">0</property>
+ <property name="bottom_attach">1</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label_resource">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Reso_urce:</property>
+ <property name="use_underline">True</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="mnemonic_widget">entry_resource</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label_priority">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Pri_ority:</property>
+ <property name="use_underline">True</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="mnemonic_widget">spinbutton_priority</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkCheckButton" id="checkbutton_ignore_ssl_errors">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">_Ignore SSL certificate errors</property>
+ <property name="use_underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="active">False</property>
+ <property name="inconsistent">False</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">3</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkSpinButton" id="spinbutton_priority">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="climb_rate">1</property>
+ <property name="digits">0</property>
+ <property name="numeric">False</property>
+ <property name="update_policy">GTK_UPDATE_ALWAYS</property>
+ <property name="snap_to_ticks">False</property>
+ <property name="wrap">False</property>
+ <property name="adjustment">0 -128 127 1 10 10</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">3</property>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkEntry" id="entry_resource">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">True</property>
+ <property name="max_length">0</property>
+ <property name="text" translatable="yes"></property>
+ <property name="has_frame">True</property>
+ <property name="invisible_char">*</property>
+ <property name="activates_default">False</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">3</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkFrame" id="frame1">
+ <property name="visible">True</property>
+ <property name="label_xalign">0</property>
+ <property name="label_yalign">0.5</property>
+ <property name="shadow_type">GTK_SHADOW_NONE</property>
+
+ <child>
+ <widget class="GtkAlignment" id="alignment1">
+ <property name="visible">True</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xscale">1</property>
+ <property name="yscale">1</property>
+ <property name="top_padding">0</property>
+ <property name="bottom_padding">0</property>
+ <property name="left_padding">12</property>
+ <property name="right_padding">0</property>
+
+ <child>
+ <widget class="GtkTable" id="table1">
+ <property name="visible">True</property>
+ <property name="n_rows">3</property>
+ <property name="n_columns">2</property>
+ <property name="homogeneous">False</property>
+ <property name="row_spacing">6</property>
+ <property name="column_spacing">6</property>
+
+ <child>
+ <widget class="GtkLabel" id="label_server">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Server:</property>
+ <property name="use_underline">True</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="mnemonic_widget">entry_server</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">0</property>
+ <property name="bottom_attach">1</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label_port">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Port:</property>
+ <property name="use_underline">True</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="mnemonic_widget">spinbutton_port</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkCheckButton" id="checkbutton_ssl">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Use old SS_L</property>
+ <property name="use_underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="active">False</property>
+ <property name="inconsistent">False</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkEntry" id="entry_server">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">True</property>
+ <property name="max_length">0</property>
+ <property name="text" translatable="yes"></property>
+ <property name="has_frame">True</property>
+ <property name="invisible_char">*</property>
+ <property name="activates_default">False</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">0</property>
+ <property name="bottom_attach">1</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkSpinButton" id="spinbutton_port">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="climb_rate">1</property>
+ <property name="digits">0</property>
+ <property name="numeric">True</property>
+ <property name="update_policy">GTK_UPDATE_ALWAYS</property>
+ <property name="snap_to_ticks">False</property>
+ <property name="wrap">False</property>
+ <property name="adjustment">5222 0 65556 1 10 10</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label2">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;Override server settings&lt;/b&gt;</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">True</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="type">label_item</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label1">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;Advanced&lt;/b&gt;</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">True</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="type">label_item</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+</widget>
+
+</glade-interface>
diff --git a/gnome-2-22/libempathy-gtk/empathy-account-widget-msn.glade b/gnome-2-22/libempathy-gtk/empathy-account-widget-msn.glade
new file mode 100644
index 000000000..b7b91c5a9
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-account-widget-msn.glade
@@ -0,0 +1,335 @@
+<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
+<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
+
+<glade-interface>
+
+<widget class="GtkWindow" id="account_msn_settings">
+ <property name="visible">True</property>
+ <property name="title" translatable="yes">msn account settings</property>
+ <property name="type">GTK_WINDOW_TOPLEVEL</property>
+ <property name="window_position">GTK_WIN_POS_NONE</property>
+ <property name="modal">False</property>
+ <property name="resizable">False</property>
+ <property name="destroy_with_parent">False</property>
+ <property name="decorated">True</property>
+ <property name="skip_taskbar_hint">False</property>
+ <property name="skip_pager_hint">False</property>
+ <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
+ <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+ <property name="focus_on_map">True</property>
+ <property name="urgency_hint">False</property>
+
+ <child>
+ <widget class="GtkVBox" id="vbox_msn_settings">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">6</property>
+
+ <child>
+ <widget class="GtkTable" id="table_common_msn_settings">
+ <property name="visible">True</property>
+ <property name="n_rows">2</property>
+ <property name="n_columns">2</property>
+ <property name="homogeneous">False</property>
+ <property name="row_spacing">6</property>
+ <property name="column_spacing">6</property>
+
+ <child>
+ <widget class="GtkEntry" id="entry_id">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">True</property>
+ <property name="max_length">0</property>
+ <property name="text" translatable="yes"></property>
+ <property name="has_frame">True</property>
+ <property name="invisible_char">●</property>
+ <property name="activates_default">False</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">0</property>
+ <property name="bottom_attach">1</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label_id">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Login I_D:</property>
+ <property name="use_underline">True</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="mnemonic_widget">entry_id</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">0</property>
+ <property name="bottom_attach">1</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label_password">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Pass_word:</property>
+ <property name="use_underline">True</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkHBox" id="hbox1">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">2</property>
+
+ <child>
+ <widget class="GtkEntry" id="entry_password">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">False</property>
+ <property name="max_length">0</property>
+ <property name="text" translatable="yes"></property>
+ <property name="has_frame">True</property>
+ <property name="invisible_char">●</property>
+ <property name="activates_default">False</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkButton" id="button_forget">
+ <property name="visible">True</property>
+ <property name="tooltip" translatable="yes">Forget password and clear the entry.</property>
+ <property name="can_focus">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+
+ <child>
+ <widget class="GtkImage" id="image1">
+ <property name="visible">True</property>
+ <property name="stock">gtk-clear</property>
+ <property name="icon_size">1</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkExpander" id="expander1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="expanded">False</property>
+ <property name="spacing">0</property>
+
+ <child>
+ <widget class="GtkTable" id="table_advanced_msn_settings">
+ <property name="visible">True</property>
+ <property name="n_rows">2</property>
+ <property name="n_columns">2</property>
+ <property name="homogeneous">False</property>
+ <property name="row_spacing">6</property>
+ <property name="column_spacing">6</property>
+
+ <child>
+ <widget class="GtkSpinButton" id="spinbutton_port">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="climb_rate">1</property>
+ <property name="digits">0</property>
+ <property name="numeric">True</property>
+ <property name="update_policy">GTK_UPDATE_ALWAYS</property>
+ <property name="snap_to_ticks">False</property>
+ <property name="wrap">False</property>
+ <property name="adjustment">0 0 65536 1 10 10</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkEntry" id="entry_server">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">True</property>
+ <property name="max_length">0</property>
+ <property name="text" translatable="yes"></property>
+ <property name="has_frame">True</property>
+ <property name="invisible_char">●</property>
+ <property name="activates_default">False</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">0</property>
+ <property name="bottom_attach">1</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label_server">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Server:</property>
+ <property name="use_underline">True</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="mnemonic_widget">entry_server</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">0</property>
+ <property name="bottom_attach">1</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label_port">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Port:</property>
+ <property name="use_underline">True</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="mnemonic_widget">spinbutton_port</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label1">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;Advanced&lt;/b&gt;</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">True</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="type">label_item</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+</widget>
+
+</glade-interface>
diff --git a/gnome-2-22/libempathy-gtk/empathy-account-widget-salut.glade b/gnome-2-22/libempathy-gtk/empathy-account-widget-salut.glade
new file mode 100644
index 000000000..ab725c6ff
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-account-widget-salut.glade
@@ -0,0 +1,396 @@
+<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
+<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
+
+<glade-interface>
+
+<widget class="GtkWindow" id="account_salut_settings">
+ <property name="visible">True</property>
+ <property name="title" translatable="yes">salut account settings</property>
+ <property name="type">GTK_WINDOW_TOPLEVEL</property>
+ <property name="window_position">GTK_WIN_POS_NONE</property>
+ <property name="modal">False</property>
+ <property name="resizable">False</property>
+ <property name="destroy_with_parent">False</property>
+ <property name="decorated">True</property>
+ <property name="skip_taskbar_hint">False</property>
+ <property name="skip_pager_hint">False</property>
+ <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
+ <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+ <property name="focus_on_map">True</property>
+ <property name="urgency_hint">False</property>
+
+ <child>
+ <widget class="GtkVBox" id="vbox_salut_settings">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">6</property>
+
+ <child>
+ <widget class="GtkTable" id="table_common_settings">
+ <property name="visible">True</property>
+ <property name="n_rows">3</property>
+ <property name="n_columns">3</property>
+ <property name="homogeneous">False</property>
+ <property name="row_spacing">6</property>
+ <property name="column_spacing">12</property>
+
+ <child>
+ <widget class="GtkLabel" id="label_first_name">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_First Name: </property>
+ <property name="use_underline">True</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="mnemonic_widget">entry_first_name</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">0</property>
+ <property name="bottom_attach">1</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label_last_name">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Last Name:</property>
+ <property name="use_underline">True</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="mnemonic_widget">entry_last_name</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label_nickname">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Nickname:</property>
+ <property name="use_underline">True</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="mnemonic_widget">entry_nickname</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkEntry" id="entry_first_name">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">True</property>
+ <property name="max_length">0</property>
+ <property name="text" translatable="yes"></property>
+ <property name="has_frame">True</property>
+ <property name="invisible_char">*</property>
+ <property name="activates_default">False</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">3</property>
+ <property name="top_attach">0</property>
+ <property name="bottom_attach">1</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkEntry" id="entry_last_name">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">True</property>
+ <property name="max_length">0</property>
+ <property name="text" translatable="yes"></property>
+ <property name="has_frame">True</property>
+ <property name="invisible_char">*</property>
+ <property name="activates_default">False</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">3</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkEntry" id="entry_nickname">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">True</property>
+ <property name="max_length">0</property>
+ <property name="text" translatable="yes"></property>
+ <property name="has_frame">True</property>
+ <property name="invisible_char">*</property>
+ <property name="activates_default">False</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">3</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkExpander" id="expander1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="expanded">False</property>
+ <property name="spacing">0</property>
+
+ <child>
+ <widget class="GtkTable" id="table_advanced_settings">
+ <property name="visible">True</property>
+ <property name="n_rows">3</property>
+ <property name="n_columns">3</property>
+ <property name="homogeneous">False</property>
+ <property name="row_spacing">6</property>
+ <property name="column_spacing">12</property>
+
+ <child>
+ <widget class="GtkLabel" id="label_email">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_E-mail:</property>
+ <property name="use_underline">True</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="mnemonic_widget">entry_email</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label_jid">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Jabber ID:</property>
+ <property name="use_underline">True</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="mnemonic_widget">entry_jid</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkEntry" id="entry_email">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">True</property>
+ <property name="max_length">0</property>
+ <property name="text" translatable="yes"></property>
+ <property name="has_frame">True</property>
+ <property name="invisible_char">*</property>
+ <property name="activates_default">False</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">3</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkEntry" id="entry_jid">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">True</property>
+ <property name="max_length">0</property>
+ <property name="text" translatable="yes"></property>
+ <property name="has_frame">True</property>
+ <property name="invisible_char">*</property>
+ <property name="activates_default">False</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">3</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label_published">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Published Name:</property>
+ <property name="use_underline">True</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="mnemonic_widget">entry_published</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">0</property>
+ <property name="bottom_attach">1</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkEntry" id="entry_published">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">True</property>
+ <property name="max_length">0</property>
+ <property name="text" translatable="yes"></property>
+ <property name="has_frame">True</property>
+ <property name="invisible_char">*</property>
+ <property name="activates_default">False</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">3</property>
+ <property name="top_attach">0</property>
+ <property name="bottom_attach">1</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label1">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;Advanced&lt;/b&gt;</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">True</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="type">label_item</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+</widget>
+
+</glade-interface>
diff --git a/gnome-2-22/libempathy-gtk/empathy-account-widget-yahoo.glade b/gnome-2-22/libempathy-gtk/empathy-account-widget-yahoo.glade
new file mode 100644
index 000000000..4d0bcc113
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-account-widget-yahoo.glade
@@ -0,0 +1,526 @@
+<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
+<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
+
+<glade-interface>
+
+<widget class="GtkWindow" id="account_yahoo_settings">
+ <property name="visible">True</property>
+ <property name="title" translatable="yes">Yahoo! account settings</property>
+ <property name="type">GTK_WINDOW_TOPLEVEL</property>
+ <property name="window_position">GTK_WIN_POS_NONE</property>
+ <property name="modal">False</property>
+ <property name="resizable">False</property>
+ <property name="destroy_with_parent">False</property>
+ <property name="decorated">True</property>
+ <property name="skip_taskbar_hint">False</property>
+ <property name="skip_pager_hint">False</property>
+ <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
+ <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+ <property name="focus_on_map">True</property>
+ <property name="urgency_hint">False</property>
+
+ <child>
+ <widget class="GtkVBox" id="vbox_yahoo_settings">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">6</property>
+
+ <child>
+ <widget class="GtkTable" id="table_common_settings">
+ <property name="visible">True</property>
+ <property name="n_rows">2</property>
+ <property name="n_columns">3</property>
+ <property name="homogeneous">False</property>
+ <property name="row_spacing">6</property>
+ <property name="column_spacing">12</property>
+
+ <child>
+ <widget class="GtkLabel" id="label_password">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Pass_word:</property>
+ <property name="use_underline">True</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="mnemonic_widget">entry_password</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkButton" id="button_forget">
+ <property name="visible">True</property>
+ <property name="tooltip" translatable="yes">Forget password and clear the entry.</property>
+ <property name="can_focus">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+
+ <child>
+ <widget class="GtkImage" id="image834">
+ <property name="visible">True</property>
+ <property name="stock">gtk-clear</property>
+ <property name="icon_size">1</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="right_attach">3</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label_id">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Login I_D:</property>
+ <property name="use_underline">True</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="mnemonic_widget">entry_id</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">0</property>
+ <property name="bottom_attach">1</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkEntry" id="entry_id">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">True</property>
+ <property name="max_length">0</property>
+ <property name="text" translatable="yes"></property>
+ <property name="has_frame">True</property>
+ <property name="activates_default">False</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">3</property>
+ <property name="top_attach">0</property>
+ <property name="bottom_attach">1</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkEntry" id="entry_password">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">False</property>
+ <property name="max_length">0</property>
+ <property name="text" translatable="yes"></property>
+ <property name="has_frame">True</property>
+ <property name="activates_default">False</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkExpander" id="expander1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="expanded">False</property>
+ <property name="spacing">0</property>
+
+ <child>
+ <widget class="GtkVBox" id="vbox1">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+
+ <child>
+ <widget class="GtkTable" id="table_advanced_settings">
+ <property name="visible">True</property>
+ <property name="n_rows">7</property>
+ <property name="n_columns">2</property>
+ <property name="homogeneous">False</property>
+ <property name="row_spacing">6</property>
+ <property name="column_spacing">12</property>
+
+ <child>
+ <widget class="GtkCheckButton" id="checkbutton_ignore_invites">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">_Ignore conference and chatroom invitations</property>
+ <property name="use_underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="active">False</property>
+ <property name="inconsistent">False</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">0</property>
+ <property name="bottom_attach">1</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label_locale">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Room List locale:</property>
+ <property name="use_underline">True</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="mnemonic_widget">entry_locale</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label_charset">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Charset:</property>
+ <property name="use_underline">True</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="mnemonic_widget">entry_charset</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkEntry" id="entry_locale">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">True</property>
+ <property name="max_length">0</property>
+ <property name="text" translatable="yes"></property>
+ <property name="has_frame">True</property>
+ <property name="activates_default">False</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkEntry" id="entry_charset">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">True</property>
+ <property name="max_length">0</property>
+ <property name="text" translatable="yes"></property>
+ <property name="has_frame">True</property>
+ <property name="activates_default">False</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label_server">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Server:</property>
+ <property name="use_underline">True</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="mnemonic_widget">entry_server</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label_port">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Port:</property>
+ <property name="use_underline">True</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="mnemonic_widget">spinbutton_port</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">4</property>
+ <property name="bottom_attach">5</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkEntry" id="entry_server">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">True</property>
+ <property name="max_length">0</property>
+ <property name="text" translatable="yes"></property>
+ <property name="has_frame">True</property>
+ <property name="activates_default">False</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkSpinButton" id="spinbutton_port">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="climb_rate">1</property>
+ <property name="digits">0</property>
+ <property name="numeric">True</property>
+ <property name="update_policy">GTK_UPDATE_ALWAYS</property>
+ <property name="snap_to_ticks">False</property>
+ <property name="wrap">False</property>
+ <property name="adjustment">5050 1 65556 1 10 10</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">4</property>
+ <property name="bottom_attach">5</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label_serverjp">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">J_apan server:</property>
+ <property name="use_underline">True</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="mnemonic_widget">entry_serverjp</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">6</property>
+ <property name="bottom_attach">7</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkEntry" id="entry_serverjp">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">True</property>
+ <property name="max_length">0</property>
+ <property name="text" translatable="yes"></property>
+ <property name="has_frame">True</property>
+ <property name="activates_default">False</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">6</property>
+ <property name="bottom_attach">7</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkCheckButton" id="checkbutton_yahoojp">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Use _Yahoo Japan</property>
+ <property name="use_underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="active">False</property>
+ <property name="inconsistent">False</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">5</property>
+ <property name="bottom_attach">6</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label1">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;Advanced&lt;/b&gt;</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">True</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="type">label_item</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+</widget>
+
+</glade-interface>
diff --git a/gnome-2-22/libempathy-gtk/empathy-account-widget.c b/gnome-2-22/libempathy-gtk/empathy-account-widget.c
new file mode 100644
index 000000000..9596a1859
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-account-widget.c
@@ -0,0 +1,680 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2006-2007 Imendio AB
+ * Copyright (C) 2007-2008 Collabora Ltd.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * 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: Xavier Claessens <xclaesse@gmail.com>
+ * Martyn Russell <martyn@imendio.com>
+ */
+
+#include <config.h>
+
+#include <string.h>
+
+#include <gtk/gtk.h>
+#include <glib/gi18n.h>
+
+#include <libmissioncontrol/mc-account.h>
+#include <libmissioncontrol/mc-protocol.h>
+
+#include <libempathy/empathy-debug.h>
+
+#include "empathy-account-widget.h"
+#include "empathy-ui-utils.h"
+
+#define DEBUG_DOMAIN "AccountWidget"
+
+static gboolean
+account_widget_entry_focus_cb (GtkWidget *widget,
+ GdkEventFocus *event,
+ McAccount *account)
+{
+ const gchar *str;
+ const gchar *param_name;
+
+ str = gtk_entry_get_text (GTK_ENTRY (widget));
+ param_name = g_object_get_data (G_OBJECT (widget), "param_name");
+
+ if (G_STR_EMPTY (str)) {
+ gchar *value = NULL;
+
+ mc_account_unset_param (account, param_name);
+ mc_account_get_param_string (account, param_name, &value);
+ empathy_debug (DEBUG_DOMAIN, "Unset %s and restore to %s", param_name, value);
+ gtk_entry_set_text (GTK_ENTRY (widget), value ? value : "");
+ g_free (value);
+ } else {
+ empathy_debug (DEBUG_DOMAIN, "Setting %s to %s", param_name, str);
+ mc_account_set_param_string (account, param_name, str);
+ }
+
+ return FALSE;
+}
+
+static void
+account_widget_int_changed_cb (GtkWidget *widget,
+ McAccount *account)
+{
+ const gchar *param_name;
+ gint value;
+
+ value = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (widget));
+ param_name = g_object_get_data (G_OBJECT (widget), "param_name");
+
+ if (value == 0) {
+ mc_account_unset_param (account, param_name);
+ mc_account_get_param_int (account, param_name, &value);
+ empathy_debug (DEBUG_DOMAIN, "Unset %s and restore to %d", param_name, value);
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON (widget), value);
+ } else {
+ empathy_debug (DEBUG_DOMAIN, "Setting %s to %d", param_name, value);
+ mc_account_set_param_int (account, param_name, value);
+ }
+}
+
+static void
+account_widget_checkbutton_toggled_cb (GtkWidget *widget,
+ McAccount *account)
+{
+ gboolean value;
+ gboolean default_value;
+ const gchar *param_name;
+
+ value = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget));
+ param_name = g_object_get_data (G_OBJECT (widget), "param_name");
+
+ /* FIXME: This is ugly! checkbox don't have a "not-set" value so we
+ * always unset the param and set the value if different from the
+ * default value. */
+ mc_account_unset_param (account, param_name);
+ mc_account_get_param_boolean (account, param_name, &default_value);
+
+ if (default_value == value) {
+ empathy_debug (DEBUG_DOMAIN, "Unset %s and restore to %d", param_name, default_value);
+ } else {
+ empathy_debug (DEBUG_DOMAIN, "Setting %s to %d", param_name, value);
+ mc_account_set_param_boolean (account, param_name, value);
+ }
+}
+
+static void
+account_widget_forget_clicked_cb (GtkWidget *button,
+ GtkWidget *entry)
+{
+ McAccount *account;
+ const gchar *param_name;
+
+ param_name = g_object_get_data (G_OBJECT (entry), "param_name");
+ account = g_object_get_data (G_OBJECT (entry), "account");
+
+ empathy_debug (DEBUG_DOMAIN, "Unset %s", param_name);
+ mc_account_unset_param (account, param_name);
+ gtk_entry_set_text (GTK_ENTRY (entry), "");
+}
+
+static void
+account_widget_password_changed_cb (GtkWidget *entry,
+ GtkWidget *button)
+{
+ const gchar *str;
+
+ str = gtk_entry_get_text (GTK_ENTRY (entry));
+ gtk_widget_set_sensitive (button, !G_STR_EMPTY (str));
+}
+
+static void
+account_widget_jabber_ssl_toggled_cb (GtkWidget *checkbutton_ssl,
+ GtkWidget *spinbutton_port)
+{
+ McAccount *account;
+ gboolean value;
+ gint port = 0;
+
+ value = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (checkbutton_ssl));
+ account = g_object_get_data (G_OBJECT (spinbutton_port), "account");
+ mc_account_get_param_int (account, "port", &port);
+
+ if (value) {
+ if (port == 5222 || port == 0) {
+ port = 5223;
+ }
+ } else {
+ if (port == 5223 || port == 0) {
+ port = 5222;
+ }
+ }
+
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON (spinbutton_port), port);
+}
+
+static void
+account_widget_setup_widget (GtkWidget *widget,
+ McAccount *account,
+ const gchar *param_name)
+{
+ g_object_set_data_full (G_OBJECT (widget), "param_name",
+ g_strdup (param_name), g_free);
+ g_object_set_data_full (G_OBJECT (widget), "account",
+ g_object_ref (account), g_object_unref);
+
+ if (GTK_IS_SPIN_BUTTON (widget)) {
+ gint value = 0;
+
+ mc_account_get_param_int (account, param_name, &value);
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON (widget), value);
+
+ g_signal_connect (widget, "value-changed",
+ G_CALLBACK (account_widget_int_changed_cb),
+ account);
+ }
+ else if (GTK_IS_ENTRY (widget)) {
+ gchar *str = NULL;
+
+ mc_account_get_param_string (account, param_name, &str);
+ gtk_entry_set_text (GTK_ENTRY (widget), str ? str : "");
+ g_free (str);
+
+ if (strstr (param_name, "password")) {
+ gtk_entry_set_visibility (GTK_ENTRY (widget), FALSE);
+ }
+
+ g_signal_connect (widget, "focus-out-event",
+ G_CALLBACK (account_widget_entry_focus_cb),
+ account);
+ }
+ else if (GTK_IS_TOGGLE_BUTTON (widget)) {
+ gboolean value = FALSE;
+
+ mc_account_get_param_boolean (account, param_name, &value);
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), value);
+
+ g_signal_connect (widget, "toggled",
+ G_CALLBACK (account_widget_checkbutton_toggled_cb),
+ account);
+ } else {
+ empathy_debug (DEBUG_DOMAIN,
+ "Unknown type of widget for param %s",
+ param_name);
+ }
+}
+
+static gchar *
+account_widget_generic_format_param_name (const gchar *param_name)
+{
+ gchar *str;
+ gchar *p;
+
+ str = g_strdup (param_name);
+
+ if (str && g_ascii_isalpha (str[0])) {
+ str[0] = g_ascii_toupper (str[0]);
+ }
+
+ while ((p = strchr (str, '-')) != NULL) {
+ if (p[1] != '\0' && g_ascii_isalpha (p[1])) {
+ p[0] = ' ';
+ p[1] = g_ascii_toupper (p[1]);
+ }
+
+ p++;
+ }
+
+ return str;
+}
+
+static void
+accounts_widget_generic_setup (McAccount *account,
+ GtkWidget *table_common_settings,
+ GtkWidget *table_advanced_settings)
+{
+ McProtocol *protocol;
+ McProfile *profile;
+ GSList *params, *l;
+
+ profile = mc_account_get_profile (account);
+ protocol = mc_profile_get_protocol (profile);
+
+ if (!protocol) {
+ /* The CM is not installed, MC shouldn't list them
+ * see SF bug #1688779
+ * FIXME: We should display something asking the user to
+ * install the CM
+ */
+ g_object_unref (profile);
+ return;
+ }
+
+ params = mc_protocol_get_params (protocol);
+
+ for (l = params; l; l = l->next) {
+ McProtocolParam *param;
+ GtkWidget *table_settings;
+ guint n_rows = 0;
+ GtkWidget *widget = NULL;
+ gchar *param_name_formatted;
+
+ param = l->data;
+ if (param->flags & MC_PROTOCOL_PARAM_REQUIRED) {
+ table_settings = table_common_settings;
+ } else {
+ table_settings = table_advanced_settings;
+ }
+ param_name_formatted = account_widget_generic_format_param_name (param->name);
+ g_object_get (table_settings, "n-rows", &n_rows, NULL);
+ gtk_table_resize (GTK_TABLE (table_settings), ++n_rows, 2);
+
+ if (param->signature[0] == 's') {
+ gchar *str;
+
+ str = g_strdup_printf (_("%s:"), param_name_formatted);
+ widget = gtk_label_new (str);
+ gtk_misc_set_alignment (GTK_MISC (widget), 0, 0.5);
+ g_free (str);
+
+ gtk_table_attach (GTK_TABLE (table_settings),
+ widget,
+ 0, 1,
+ n_rows - 1, n_rows,
+ GTK_FILL, 0,
+ 0, 0);
+
+ widget = gtk_entry_new ();
+ gtk_table_attach (GTK_TABLE (table_settings),
+ widget,
+ 1, 2,
+ n_rows - 1, n_rows,
+ GTK_FILL | GTK_EXPAND, 0,
+ 0, 0);
+ }
+ /* int types: ynqiuxt. double type is 'd' */
+ else if (param->signature[0] == 'y' ||
+ param->signature[0] == 'n' ||
+ param->signature[0] == 'q' ||
+ param->signature[0] == 'i' ||
+ param->signature[0] == 'u' ||
+ param->signature[0] == 'x' ||
+ param->signature[0] == 't' ||
+ param->signature[0] == 'd') {
+ gchar *str = NULL;
+ gdouble minint = 0;
+ gdouble maxint = 0;
+ gdouble step = 1;
+
+ switch (param->signature[0]) {
+ case 'y': minint = G_MININT8; maxint = G_MAXINT8; break;
+ case 'n': minint = G_MININT16; maxint = G_MAXINT16; break;
+ case 'q': minint = 0; maxint = G_MAXUINT16; break;
+ case 'i': minint = G_MININT32; maxint = G_MAXINT32; break;
+ case 'u': minint = 0; maxint = G_MAXUINT32; break;
+ case 'x': minint = G_MININT64; maxint = G_MAXINT64; break;
+ case 't': minint = 0; maxint = G_MAXUINT64; break;
+ case 'd': minint = G_MININT32; maxint = G_MAXINT32; step = 0.1; break;
+ }
+
+ str = g_strdup_printf (_("%s:"), param_name_formatted);
+ widget = gtk_label_new (str);
+ gtk_misc_set_alignment (GTK_MISC (widget), 0, 0.5);
+ g_free (str);
+
+ gtk_table_attach (GTK_TABLE (table_settings),
+ widget,
+ 0, 1,
+ n_rows - 1, n_rows,
+ GTK_FILL, 0,
+ 0, 0);
+
+ widget = gtk_spin_button_new_with_range (minint, maxint, step);
+ gtk_table_attach (GTK_TABLE (table_settings),
+ widget,
+ 1, 2,
+ n_rows - 1, n_rows,
+ GTK_FILL | GTK_EXPAND, 0,
+ 0, 0);
+ }
+ else if (param->signature[0] == 'b') {
+ widget = gtk_check_button_new_with_label (param_name_formatted);
+ gtk_table_attach (GTK_TABLE (table_settings),
+ widget,
+ 0, 2,
+ n_rows - 1, n_rows,
+ GTK_FILL | GTK_EXPAND, 0,
+ 0, 0);
+ } else {
+ empathy_debug (DEBUG_DOMAIN,
+ "Unknown signature for param %s: %s",
+ param_name_formatted, param->signature);
+ }
+
+ if (widget) {
+ account_widget_setup_widget (widget, account, param->name);
+ }
+
+ g_free (param_name_formatted);
+ }
+
+ g_slist_free (params);
+ g_object_unref (profile);
+ g_object_unref (protocol);
+}
+
+static void
+account_widget_handle_params_valist (McAccount *account,
+ GladeXML *gui,
+ const gchar *first_widget_name,
+ va_list args)
+{
+ GtkWidget *widget;
+ const gchar *widget_name;
+
+ for (widget_name = first_widget_name; widget_name; widget_name = va_arg (args, gchar*)) {
+ const gchar *param_name;
+
+ param_name = va_arg (args, gchar*);
+
+ widget = glade_xml_get_widget (gui, widget_name);
+
+ if (!widget) {
+ g_warning ("Glade is missing widget '%s'.", widget_name);
+ continue;
+ }
+
+ account_widget_setup_widget (widget, account, param_name);
+ }
+}
+
+void
+empathy_account_widget_handle_params (McAccount *account,
+ GladeXML *gui,
+ const gchar *first_widget_name,
+ ...)
+{
+ va_list args;
+
+ g_return_if_fail (MC_IS_ACCOUNT (account));
+
+ va_start (args, first_widget_name);
+ account_widget_handle_params_valist (account, gui,
+ first_widget_name,
+ args);
+ va_end (args);
+}
+
+void
+empathy_account_widget_add_forget_button (McAccount *account,
+ GladeXML *glade,
+ const gchar *button,
+ const gchar *entry)
+{
+ GtkWidget *button_forget;
+ GtkWidget *entry_password;
+ gchar *password = NULL;
+
+ button_forget = glade_xml_get_widget (glade, button);
+ entry_password = glade_xml_get_widget (glade, entry);
+
+ mc_account_get_param_string (account, "password", &password);
+ gtk_widget_set_sensitive (button_forget, !G_STR_EMPTY (password));
+ g_free (password);
+
+ g_signal_connect (button_forget, "clicked",
+ G_CALLBACK (account_widget_forget_clicked_cb),
+ entry_password);
+ g_signal_connect (entry_password, "changed",
+ G_CALLBACK (account_widget_password_changed_cb),
+ button_forget);
+}
+
+GtkWidget *
+empathy_account_widget_generic_new (McAccount *account)
+{
+ GladeXML *glade;
+ GtkWidget *widget;
+ GtkWidget *table_common_settings;
+ GtkWidget *table_advanced_settings;
+
+ g_return_val_if_fail (MC_IS_ACCOUNT (account), NULL);
+
+ glade = empathy_glade_get_file ("empathy-account-widget-generic.glade",
+ "vbox_generic_settings",
+ NULL,
+ "vbox_generic_settings", &widget,
+ "table_common_settings", &table_common_settings,
+ "table_advanced_settings", &table_advanced_settings,
+ NULL);
+
+ accounts_widget_generic_setup (account, table_common_settings, table_advanced_settings);
+
+ g_object_unref (glade);
+
+ gtk_widget_show_all (widget);
+
+ return widget;
+}
+
+GtkWidget *
+empathy_account_widget_salut_new (McAccount *account)
+{
+ GladeXML *glade;
+ GtkWidget *widget;
+
+ glade = empathy_glade_get_file ("empathy-account-widget-salut.glade",
+ "vbox_salut_settings",
+ NULL,
+ "vbox_salut_settings", &widget,
+ NULL);
+
+ empathy_account_widget_handle_params (account, glade,
+ "entry_published", "published-name",
+ "entry_nickname", "nickname",
+ "entry_first_name", "first-name",
+ "entry_last_name", "last-name",
+ "entry_email", "email",
+ "entry_jid", "jid",
+ NULL);
+
+ g_object_unref (glade);
+
+ gtk_widget_show (widget);
+
+ return widget;
+}
+
+GtkWidget *
+empathy_account_widget_msn_new (McAccount *account)
+{
+ GladeXML *glade;
+ GtkWidget *widget;
+
+ glade = empathy_glade_get_file ("empathy-account-widget-msn.glade",
+ "vbox_msn_settings",
+ NULL,
+ "vbox_msn_settings", &widget,
+ NULL);
+
+ empathy_account_widget_handle_params (account, glade,
+ "entry_id", "account",
+ "entry_password", "password",
+ "entry_server", "server",
+ "spinbutton_port", "port",
+ NULL);
+
+ empathy_account_widget_add_forget_button (account, glade,
+ "button_forget",
+ "entry_password");
+
+ g_object_unref (glade);
+
+ gtk_widget_show (widget);
+
+ return widget;
+}
+
+GtkWidget *
+empathy_account_widget_sip_new (McAccount *account)
+{
+ GladeXML *glade;
+ GtkWidget *widget;
+
+ glade = empathy_glade_get_file ("empathy-account-widget-sip.glade",
+ "vbox_sip_settings",
+ NULL,
+ "vbox_sip_settings", &widget,
+ NULL);
+
+ empathy_account_widget_handle_params (account, glade,
+ "entry_userid", "account",
+ "entry_password", "password",
+ "entry_registar", "registar",
+ "entry_proxy","proxy-host",
+ "spinbutton_port", "port",
+ "entry_transport", "transport",
+ "checkbutton_discover-binding","discover-binding",
+ "entry_keepalive-mechanism", "keepalive-mechanism",
+ "entry_keepalive-interval", "keepalive-interval",
+ "checkbutton_discover-stun", "discover-stun",
+ "entry_stun-server", "stun-server",
+ "spinbutton_stun-port", "stun-port",
+ "entry_local-ip", "local-ip-address",
+ "spinbutton_local-port", "local-port",
+ "entry_extra-auth-user", "extra-auth-user",
+ "entry_extra-auth-password", "extra-auth-password",
+ "checkbutton_avoid-difficult", "avoid-difficult",
+ NULL);
+
+ empathy_account_widget_add_forget_button (account, glade,
+ "button_forget",
+ "entry_password");
+
+ g_object_unref (glade);
+
+ gtk_widget_show (widget);
+
+ return widget;
+}
+
+GtkWidget *
+empathy_account_widget_jabber_new (McAccount *account)
+{
+ GladeXML *glade;
+ GtkWidget *widget;
+ GtkWidget *spinbutton_port;
+ GtkWidget *checkbutton_ssl;
+
+ glade = empathy_glade_get_file ("empathy-account-widget-jabber.glade",
+ "vbox_jabber_settings",
+ NULL,
+ "vbox_jabber_settings", &widget,
+ "spinbutton_port", &spinbutton_port,
+ "checkbutton_ssl", &checkbutton_ssl,
+ NULL);
+
+ empathy_account_widget_handle_params (account, glade,
+ "entry_id", "account",
+ "entry_password", "password",
+ "entry_resource", "resource",
+ "entry_server", "server",
+ "spinbutton_port", "port",
+ "spinbutton_priority", "priority",
+ "checkbutton_ssl", "old-ssl",
+ "checkbutton_ignore_ssl_errors", "ignore-ssl-errors",
+ "checkbutton_encryption", "require-encryption",
+ NULL);
+
+ empathy_account_widget_add_forget_button (account, glade,
+ "button_forget",
+ "entry_password");
+
+ g_signal_connect (checkbutton_ssl, "toggled",
+ G_CALLBACK (account_widget_jabber_ssl_toggled_cb),
+ spinbutton_port);
+
+ g_object_unref (glade);
+
+ gtk_widget_show (widget);
+
+ return widget;
+}
+
+GtkWidget *
+empathy_account_widget_icq_new (McAccount *account)
+{
+ GladeXML *glade;
+ GtkWidget *widget;
+ GtkWidget *spinbutton_port;
+
+ glade = empathy_glade_get_file ("empathy-account-widget-icq.glade",
+ "vbox_icq_settings",
+ NULL,
+ "vbox_icq_settings", &widget,
+ "spinbutton_port", &spinbutton_port,
+ NULL);
+
+ empathy_account_widget_handle_params (account, glade,
+ "entry_uin", "account",
+ "entry_password", "password",
+ "entry_server", "server",
+ "spinbutton_port", "port",
+ "entry_charset", "charset",
+ NULL);
+
+ empathy_account_widget_add_forget_button (account, glade,
+ "button_forget",
+ "entry_password");
+
+ g_object_unref (glade);
+
+ gtk_widget_show (widget);
+
+ return widget;
+}
+
+GtkWidget *
+empathy_account_widget_yahoo_new (McAccount *account)
+{
+ GladeXML *glade;
+ GtkWidget *widget;
+
+ glade = empathy_glade_get_file ("empathy-account-widget-yahoo.glade",
+ "vbox_yahoo_settings",
+ NULL,
+ "vbox_yahoo_settings", &widget,
+ NULL);
+
+ empathy_account_widget_handle_params (account, glade,
+ "entry_id", "account",
+ "entry_password", "password",
+ "entry_server", "server",
+ "entry_serverjp", "serverjp",
+ "entry_locale", "room-list-locale",
+ "entry_charset", "charset",
+ "spinbutton_port", "port",
+ "checkbutton_yahoojp", "yahoojp",
+ "checkbutton_ignore_invites", "ignore-invites",
+ NULL);
+
+ empathy_account_widget_add_forget_button (account, glade,
+ "button_forget",
+ "entry_password");
+
+ g_object_unref (glade);
+
+ gtk_widget_show (widget);
+
+ return widget;
+}
+
diff --git a/gnome-2-22/libempathy-gtk/empathy-account-widget.h b/gnome-2-22/libempathy-gtk/empathy-account-widget.h
new file mode 100644
index 000000000..b7ebb6742
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-account-widget.h
@@ -0,0 +1,53 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2006-2007 Imendio AB
+ * Copyright (C) 2007 Collabora Ltd.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * 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: Xavier Claessens <xclaesse@gmail.com>
+ * Martyn Russell <martyn@imendio.com>
+ */
+
+#ifndef __EMPATHY_ACCOUNT_WIDGET_GENERIC_H__
+#define __EMPATHY_ACCOUNT_WIDGET_GENERIC_H__
+
+#include <gtk/gtk.h>
+#include <glade/glade.h>
+
+#include <libmissioncontrol/mc-account.h>
+
+G_BEGIN_DECLS
+
+void empathy_account_widget_handle_params (McAccount *account,
+ GladeXML *glade,
+ const gchar *first_widget_name,
+ ...);
+void empathy_account_widget_add_forget_button (McAccount *account,
+ GladeXML *glade,
+ const gchar *button,
+ const gchar *entry);
+GtkWidget *empathy_account_widget_generic_new (McAccount *account);
+GtkWidget *empathy_account_widget_salut_new (McAccount *account);
+GtkWidget *empathy_account_widget_msn_new (McAccount *account);
+GtkWidget *empathy_account_widget_jabber_new (McAccount *account);
+GtkWidget *empathy_account_widget_icq_new (McAccount *account);
+GtkWidget *empathy_account_widget_yahoo_new (McAccount *account);
+GtkWidget *empathy_account_widget_sip_new (McAccount *account);
+
+G_END_DECLS
+
+#endif /* __EMPATHY_ACCOUNT_WIDGET_GENERIC_H__ */
diff --git a/gnome-2-22/libempathy-gtk/empathy-accounts-dialog.c b/gnome-2-22/libempathy-gtk/empathy-accounts-dialog.c
new file mode 100644
index 000000000..f79db0e03
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-accounts-dialog.c
@@ -0,0 +1,1083 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2005-2007 Imendio AB
+ * Copyright (C) 2007-2008 Collabora Ltd.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * 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: Martyn Russell <martyn@imendio.com>
+ * Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#include <config.h>
+
+#include <string.h>
+#include <stdlib.h>
+
+#include <gtk/gtk.h>
+#include <glade/glade.h>
+#include <glib/gi18n.h>
+#include <dbus/dbus-glib.h>
+
+#include <libmissioncontrol/mc-account.h>
+#include <libmissioncontrol/mc-profile.h>
+#include <libmissioncontrol/mission-control.h>
+#include <libmissioncontrol/mc-account-monitor.h>
+#include <telepathy-glib/util.h>
+#include <libtelepathy/tp-constants.h>
+
+#include <libempathy/empathy-debug.h>
+#include <libempathy/empathy-utils.h>
+#include <libempathy-gtk/empathy-ui-utils.h>
+
+#include "empathy-accounts-dialog.h"
+#include "empathy-profile-chooser.h"
+#include "empathy-account-widget.h"
+#include "empathy-account-widget-irc.h"
+
+#define DEBUG_DOMAIN "AccountDialog"
+
+/* Flashing delay for icons (milliseconds). */
+#define FLASH_TIMEOUT 500
+
+typedef struct {
+ GtkWidget *window;
+
+ GtkWidget *alignment_settings;
+
+ GtkWidget *vbox_details;
+ GtkWidget *frame_no_account;
+ GtkWidget *label_no_account;
+ GtkWidget *label_no_account_blurb;
+
+ GtkWidget *treeview;
+
+ GtkWidget *button_add;
+ GtkWidget *button_remove;
+
+ GtkWidget *frame_new_account;
+ GtkWidget *combobox_profile;
+ GtkWidget *hbox_type;
+ GtkWidget *button_create;
+ GtkWidget *button_back;
+
+ GtkWidget *image_type;
+ GtkWidget *label_name;
+ GtkWidget *label_type;
+ GtkWidget *settings_widget;
+
+ gboolean connecting_show;
+ guint connecting_id;
+ gboolean account_changed;
+
+ MissionControl *mc;
+ McAccountMonitor *monitor;
+} EmpathyAccountsDialog;
+
+enum {
+ COL_ENABLED,
+ COL_NAME,
+ COL_STATUS,
+ COL_ACCOUNT_POINTER,
+ COL_COUNT
+};
+
+static void accounts_dialog_setup (EmpathyAccountsDialog *dialog);
+static void accounts_dialog_update_account (EmpathyAccountsDialog *dialog,
+ McAccount *account);
+static void accounts_dialog_model_setup (EmpathyAccountsDialog *dialog);
+static void accounts_dialog_model_add_columns (EmpathyAccountsDialog *dialog);
+static void accounts_dialog_model_select_first (EmpathyAccountsDialog *dialog);
+static void accounts_dialog_model_pixbuf_data_func (GtkTreeViewColumn *tree_column,
+ GtkCellRenderer *cell,
+ GtkTreeModel *model,
+ GtkTreeIter *iter,
+ EmpathyAccountsDialog *dialog);
+static McAccount *accounts_dialog_model_get_selected (EmpathyAccountsDialog *dialog);
+static void accounts_dialog_model_set_selected (EmpathyAccountsDialog *dialog,
+ McAccount *account);
+static gboolean accounts_dialog_model_remove_selected (EmpathyAccountsDialog *dialog);
+static void accounts_dialog_model_selection_changed (GtkTreeSelection *selection,
+ EmpathyAccountsDialog *dialog);
+static void accounts_dialog_add_account (EmpathyAccountsDialog *dialog,
+ McAccount *account);
+static void accounts_dialog_account_added_cb (McAccountMonitor *monitor,
+ gchar *unique_name,
+ EmpathyAccountsDialog *dialog);
+static void accounts_dialog_account_removed_cb (McAccountMonitor *monitor,
+ gchar *unique_name,
+ EmpathyAccountsDialog *dialog);
+static gboolean accounts_dialog_row_changed_foreach (GtkTreeModel *model,
+ GtkTreePath *path,
+ GtkTreeIter *iter,
+ gpointer user_data);
+static gboolean accounts_dialog_flash_connecting_cb (EmpathyAccountsDialog *dialog);
+static void accounts_dialog_status_changed_cb (MissionControl *mc,
+ TpConnectionStatus status,
+ McPresence presence,
+ TpConnectionStatusReason reason,
+ const gchar *unique_name,
+ EmpathyAccountsDialog *dialog);
+static void accounts_dialog_button_create_clicked_cb (GtkWidget *button,
+ EmpathyAccountsDialog *dialog);
+static void accounts_dialog_button_back_clicked_cb (GtkWidget *button,
+ EmpathyAccountsDialog *dialog);
+static void accounts_dialog_button_add_clicked_cb (GtkWidget *button,
+ EmpathyAccountsDialog *dialog);
+static void accounts_dialog_remove_response_cb (GtkWidget *dialog,
+ gint response,
+ McAccount *account);
+static void accounts_dialog_button_remove_clicked_cb (GtkWidget *button,
+ EmpathyAccountsDialog *dialog);
+static void accounts_dialog_response_cb (GtkWidget *widget,
+ gint response,
+ EmpathyAccountsDialog *dialog);
+static void accounts_dialog_destroy_cb (GtkWidget *widget,
+ EmpathyAccountsDialog *dialog);
+
+static void
+accounts_dialog_setup (EmpathyAccountsDialog *dialog)
+{
+ GtkTreeView *view;
+ GtkListStore *store;
+ GtkTreeIter iter;
+ GList *accounts, *l;
+
+ view = GTK_TREE_VIEW (dialog->treeview);
+ store = GTK_LIST_STORE (gtk_tree_view_get_model (view));
+
+ accounts = mc_accounts_list ();
+
+ for (l = accounts; l; l = l->next) {
+ McAccount *account;
+ const gchar *name;
+ TpConnectionStatus status;
+ gboolean enabled;
+
+ account = l->data;
+
+ name = mc_account_get_display_name (account);
+ if (!name) {
+ continue;
+ }
+
+ status = mission_control_get_connection_status (dialog->mc, account, NULL);
+ enabled = mc_account_is_enabled (account);
+
+ gtk_list_store_insert_with_values (store, &iter,
+ -1,
+ COL_ENABLED, enabled,
+ COL_NAME, name,
+ COL_STATUS, status,
+ COL_ACCOUNT_POINTER, account,
+ -1);
+
+ accounts_dialog_status_changed_cb (dialog->mc,
+ status,
+ MC_PRESENCE_UNSET,
+ TP_CONNECTION_STATUS_REASON_NONE_SPECIFIED,
+ mc_account_get_unique_name (account),
+ dialog);
+
+ g_object_unref (account);
+ }
+
+ g_list_free (accounts);
+}
+
+static void
+accounts_dialog_update_account (EmpathyAccountsDialog *dialog,
+ McAccount *account)
+{
+ if (dialog->settings_widget) {
+ gtk_widget_destroy (dialog->settings_widget);
+ dialog->settings_widget = NULL;
+ }
+
+ if (!account) {
+ GtkTreeView *view;
+ GtkTreeModel *model;
+ GString *string;
+ gchar *str;
+
+ gtk_widget_show (dialog->frame_no_account);
+ gtk_widget_hide (dialog->vbox_details);
+
+ gtk_widget_set_sensitive (dialog->button_remove, FALSE);
+
+ view = GTK_TREE_VIEW (dialog->treeview);
+ model = gtk_tree_view_get_model (view);
+
+ if (empathy_profile_chooser_n_profiles (dialog->combobox_profile) > 0) {
+ string = g_string_new (_("To add a new account, you can click on the "
+ "'Add' button and a new entry will be created "
+ "for you to start configuring."));
+ } else {
+ string = g_string_new (_("To add a new account, you first have to "
+ "install a backend for each protocol "
+ "you want to use."));
+ }
+
+ if (gtk_tree_model_iter_n_children (model, NULL) > 0) {
+ gtk_label_set_markup (GTK_LABEL (dialog->label_no_account),
+ _("<b>No Account Selected</b>"));
+ g_string_append (string, _("\n\n"
+ "If you do not want to add an account, simply "
+ "click on the account you want to configure in "
+ "the list on the left."));
+ } else {
+ gtk_label_set_markup (GTK_LABEL (dialog->label_no_account),
+ _("<b>No Accounts Configured</b>"));
+ }
+
+ str = g_string_free (string, FALSE);
+ gtk_label_set_markup (GTK_LABEL (dialog->label_no_account_blurb),
+ str);
+ g_free (str);
+ } else {
+ McProfile *profile;
+ const gchar *config_ui;
+
+ gtk_widget_hide (dialog->frame_no_account);
+ gtk_widget_show (dialog->vbox_details);
+
+ profile = mc_account_get_profile (account);
+ config_ui = mc_profile_get_configuration_ui (profile);
+ g_object_unref (profile);
+
+ if (!tp_strdiff (config_ui, "jabber")) {
+ dialog->settings_widget =
+ empathy_account_widget_jabber_new (account);
+ }
+ else if (!tp_strdiff (config_ui, "msn")) {
+ dialog ->settings_widget =
+ empathy_account_widget_msn_new (account);
+ }
+ else if (!tp_strdiff (config_ui, "local-xmpp")) {
+ dialog->settings_widget =
+ empathy_account_widget_salut_new (account);
+ }
+ else if (!tp_strdiff (config_ui, "irc")) {
+ dialog->settings_widget =
+ empathy_account_widget_irc_new (account);
+ }
+ else if (!tp_strdiff(config_ui, "icq")) {
+ dialog->settings_widget =
+ empathy_account_widget_icq_new (account);
+ }
+ else if (!tp_strdiff (config_ui, "yahoo")) {
+ dialog->settings_widget =
+ empathy_account_widget_yahoo_new (account);
+ }
+ else if (!tp_strdiff (config_ui, "sofiasip")) {
+ dialog->settings_widget =
+ empathy_account_widget_sip_new (account);
+ }
+ else {
+ dialog->settings_widget =
+ empathy_account_widget_generic_new (account);
+ }
+ }
+
+ if (dialog->settings_widget) {
+ gtk_container_add (GTK_CONTAINER (dialog->alignment_settings),
+ dialog->settings_widget);
+ }
+
+ if (account) {
+ McProfile *profile;
+ gchar *text;
+
+ profile = mc_account_get_profile (account);
+ gtk_image_set_from_icon_name (GTK_IMAGE (dialog->image_type),
+ mc_profile_get_icon_name (profile),
+ GTK_ICON_SIZE_DIALOG);
+ gtk_widget_set_tooltip_text (dialog->image_type,
+ mc_profile_get_display_name (profile));
+
+ text = g_strdup_printf ("<big><b>%s</b></big>", mc_account_get_display_name (account));
+ gtk_label_set_markup (GTK_LABEL (dialog->label_name), text);
+ g_free (text);
+ }
+}
+
+static void
+accounts_dialog_model_setup (EmpathyAccountsDialog *dialog)
+{
+ GtkListStore *store;
+ GtkTreeSelection *selection;
+
+ store = gtk_list_store_new (COL_COUNT,
+ G_TYPE_BOOLEAN, /* enabled */
+ G_TYPE_STRING, /* name */
+ G_TYPE_UINT, /* status */
+ MC_TYPE_ACCOUNT); /* account */
+
+ gtk_tree_view_set_model (GTK_TREE_VIEW (dialog->treeview),
+ GTK_TREE_MODEL (store));
+
+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (dialog->treeview));
+ gtk_tree_selection_set_mode (selection, GTK_SELECTION_SINGLE);
+
+ g_signal_connect (selection, "changed",
+ G_CALLBACK (accounts_dialog_model_selection_changed),
+ dialog);
+
+ gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (store),
+ COL_NAME, GTK_SORT_ASCENDING);
+
+ accounts_dialog_model_add_columns (dialog);
+
+ g_object_unref (store);
+}
+
+static void
+accounts_dialog_name_edited_cb (GtkCellRendererText *renderer,
+ gchar *path,
+ gchar *new_text,
+ EmpathyAccountsDialog *dialog)
+{
+ McAccount *account;
+ GtkTreeModel *model;
+ GtkTreePath *treepath;
+ GtkTreeIter iter;
+
+ model = gtk_tree_view_get_model (GTK_TREE_VIEW (dialog->treeview));
+ treepath = gtk_tree_path_new_from_string (path);
+ gtk_tree_model_get_iter (model, &iter, treepath);
+ gtk_tree_model_get (model, &iter,
+ COL_ACCOUNT_POINTER, &account,
+ -1);
+ gtk_list_store_set (GTK_LIST_STORE (model), &iter,
+ COL_NAME, new_text,
+ -1);
+ gtk_tree_path_free (treepath);
+
+ mc_account_set_display_name (account, new_text);
+ g_object_unref (account);
+}
+
+static void
+accounts_dialog_enable_toggled_cb (GtkCellRendererToggle *cell_renderer,
+ gchar *path,
+ EmpathyAccountsDialog *dialog)
+{
+ McAccount *account;
+ GtkTreeModel *model;
+ GtkTreePath *treepath;
+ GtkTreeIter iter;
+ gboolean enabled;
+
+ model = gtk_tree_view_get_model (GTK_TREE_VIEW (dialog->treeview));
+ treepath = gtk_tree_path_new_from_string (path);
+ gtk_tree_model_get_iter (model, &iter, treepath);
+ gtk_tree_model_get (model, &iter,
+ COL_ACCOUNT_POINTER, &account,
+ -1);
+ gtk_tree_path_free (treepath);
+
+ enabled = mc_account_is_enabled (account);
+ mc_account_set_enabled (account, !enabled);
+
+ empathy_debug (DEBUG_DOMAIN, "%s account %s",
+ enabled ? "Disabled" : "Enable",
+ mc_account_get_display_name(account));
+
+ g_object_unref (account);
+}
+
+static void
+accounts_dialog_model_add_columns (EmpathyAccountsDialog *dialog)
+{
+ GtkTreeView *view;
+ GtkTreeViewColumn *column;
+ GtkCellRenderer *cell;
+
+ view = GTK_TREE_VIEW (dialog->treeview);
+ gtk_tree_view_set_headers_visible (view, TRUE);
+
+ /* Enabled column */
+ cell = gtk_cell_renderer_toggle_new ();
+ gtk_tree_view_insert_column_with_attributes (view, -1,
+ _("Enabled"),
+ cell,
+ "active", COL_ENABLED,
+ NULL);
+ g_signal_connect (cell, "toggled",
+ G_CALLBACK (accounts_dialog_enable_toggled_cb),
+ dialog);
+
+ /* Account column */
+ column = gtk_tree_view_column_new ();
+ gtk_tree_view_column_set_title (column, _("Accounts"));
+ gtk_tree_view_column_set_expand (column, TRUE);
+ gtk_tree_view_append_column (view, column);
+
+ /* Icon renderer */
+ cell = gtk_cell_renderer_pixbuf_new ();
+ gtk_tree_view_column_pack_start (column, cell, FALSE);
+ gtk_tree_view_column_set_cell_data_func (column, cell,
+ (GtkTreeCellDataFunc)
+ accounts_dialog_model_pixbuf_data_func,
+ dialog,
+ NULL);
+
+ /* Name renderer */
+ cell = gtk_cell_renderer_text_new ();
+ g_object_set (cell,
+ "ellipsize", PANGO_ELLIPSIZE_END,
+ "editable", TRUE,
+ NULL);
+ gtk_tree_view_column_pack_start (column, cell, TRUE);
+ gtk_tree_view_column_add_attribute (column, cell, "text", COL_NAME);
+ g_signal_connect (cell, "edited",
+ G_CALLBACK (accounts_dialog_name_edited_cb),
+ dialog);
+}
+
+static void
+accounts_dialog_model_select_first (EmpathyAccountsDialog *dialog)
+{
+ GtkTreeView *view;
+ GtkTreeModel *model;
+ GtkTreeSelection *selection;
+ GtkTreeIter iter;
+
+ /* select first */
+ view = GTK_TREE_VIEW (dialog->treeview);
+ model = gtk_tree_view_get_model (view);
+
+ if (gtk_tree_model_get_iter_first (model, &iter)) {
+ selection = gtk_tree_view_get_selection (view);
+ gtk_tree_selection_select_iter (selection, &iter);
+ } else {
+ accounts_dialog_update_account (dialog, NULL);
+ }
+}
+
+static void
+accounts_dialog_model_pixbuf_data_func (GtkTreeViewColumn *tree_column,
+ GtkCellRenderer *cell,
+ GtkTreeModel *model,
+ GtkTreeIter *iter,
+ EmpathyAccountsDialog *dialog)
+{
+ McAccount *account;
+ const gchar *icon_name;
+ GdkPixbuf *pixbuf;
+ TpConnectionStatus status;
+
+ gtk_tree_model_get (model, iter,
+ COL_STATUS, &status,
+ COL_ACCOUNT_POINTER, &account,
+ -1);
+
+ icon_name = empathy_icon_name_from_account (account);
+ pixbuf = empathy_pixbuf_from_icon_name (icon_name, GTK_ICON_SIZE_BUTTON);
+
+ if (pixbuf) {
+ if (status == TP_CONNECTION_STATUS_DISCONNECTED ||
+ (status == TP_CONNECTION_STATUS_CONNECTING &&
+ !dialog->connecting_show)) {
+ GdkPixbuf *modded_pixbuf;
+
+ modded_pixbuf = gdk_pixbuf_new (GDK_COLORSPACE_RGB,
+ TRUE,
+ 8,
+ gdk_pixbuf_get_width (pixbuf),
+ gdk_pixbuf_get_height (pixbuf));
+
+ gdk_pixbuf_saturate_and_pixelate (pixbuf,
+ modded_pixbuf,
+ 1.0,
+ TRUE);
+ g_object_unref (pixbuf);
+ pixbuf = modded_pixbuf;
+ }
+ }
+
+ g_object_set (cell,
+ "visible", TRUE,
+ "pixbuf", pixbuf,
+ NULL);
+
+ g_object_unref (account);
+ if (pixbuf) {
+ g_object_unref (pixbuf);
+ }
+}
+
+static gboolean
+accounts_dialog_get_account_iter (EmpathyAccountsDialog *dialog,
+ McAccount *account,
+ GtkTreeIter *iter)
+{
+ GtkTreeView *view;
+ GtkTreeSelection *selection;
+ GtkTreeModel *model;
+ gboolean ok;
+
+ /* Update the status in the model */
+ view = GTK_TREE_VIEW (dialog->treeview);
+ selection = gtk_tree_view_get_selection (view);
+ model = gtk_tree_view_get_model (view);
+
+ for (ok = gtk_tree_model_get_iter_first (model, iter);
+ ok;
+ ok = gtk_tree_model_iter_next (model, iter)) {
+ McAccount *this_account;
+ gboolean equal;
+
+ gtk_tree_model_get (model, iter,
+ COL_ACCOUNT_POINTER, &this_account,
+ -1);
+
+ equal = empathy_account_equal (this_account, account);
+ g_object_unref (this_account);
+
+ if (equal) {
+ return TRUE;
+ }
+ }
+
+ return FALSE;
+}
+
+static McAccount *
+accounts_dialog_model_get_selected (EmpathyAccountsDialog *dialog)
+{
+ GtkTreeView *view;
+ GtkTreeModel *model;
+ GtkTreeSelection *selection;
+ GtkTreeIter iter;
+ McAccount *account;
+
+ view = GTK_TREE_VIEW (dialog->treeview);
+ selection = gtk_tree_view_get_selection (view);
+
+ if (!gtk_tree_selection_get_selected (selection, &model, &iter)) {
+ return NULL;
+ }
+
+ gtk_tree_model_get (model, &iter, COL_ACCOUNT_POINTER, &account, -1);
+
+ return account;
+}
+
+static void
+accounts_dialog_model_set_selected (EmpathyAccountsDialog *dialog,
+ McAccount *account)
+{
+ GtkTreeSelection *selection;
+ GtkTreeIter iter;
+
+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (dialog->treeview));
+ if (accounts_dialog_get_account_iter (dialog, account, &iter)) {
+ gtk_tree_selection_select_iter (selection, &iter);
+ }
+}
+
+static gboolean
+accounts_dialog_model_remove_selected (EmpathyAccountsDialog *dialog)
+{
+ GtkTreeView *view;
+ GtkTreeModel *model;
+ GtkTreeSelection *selection;
+ GtkTreeIter iter;
+
+ view = GTK_TREE_VIEW (dialog->treeview);
+ selection = gtk_tree_view_get_selection (view);
+
+ if (!gtk_tree_selection_get_selected (selection, &model, &iter)) {
+ return FALSE;
+ }
+
+ return gtk_list_store_remove (GTK_LIST_STORE (model), &iter);
+}
+
+static void
+accounts_dialog_model_selection_changed (GtkTreeSelection *selection,
+ EmpathyAccountsDialog *dialog)
+{
+ McAccount *account;
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+ gboolean is_selection;
+
+ is_selection = gtk_tree_selection_get_selected (selection, &model, &iter);
+
+ gtk_widget_set_sensitive (dialog->button_add, TRUE);
+ gtk_widget_set_sensitive (dialog->button_remove, is_selection);
+
+ account = accounts_dialog_model_get_selected (dialog);
+ accounts_dialog_update_account (dialog, account);
+
+ if (account) {
+ g_object_unref (account);
+ }
+
+ /* insure new account frame is hidden when a row is selected*/
+ gtk_widget_hide (dialog->frame_new_account);
+}
+
+static void
+accounts_dialog_add_account (EmpathyAccountsDialog *dialog,
+ McAccount *account)
+{
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+ TpConnectionStatus status;
+ const gchar *name;
+ gboolean enabled;
+
+ if (accounts_dialog_get_account_iter (dialog, account, &iter)) {
+ return;
+ }
+
+ status = mission_control_get_connection_status (dialog->mc, account, NULL);
+ name = mc_account_get_display_name (account);
+ enabled = mc_account_is_enabled (account);
+
+ g_return_if_fail (name != NULL);
+
+ empathy_debug (DEBUG_DOMAIN, "Adding new account: %s", name);
+
+ model = gtk_tree_view_get_model (GTK_TREE_VIEW (dialog->treeview));
+ gtk_list_store_insert_with_values (GTK_LIST_STORE (model), &iter,
+ -1,
+ COL_ENABLED, enabled,
+ COL_NAME, name,
+ COL_STATUS, status,
+ COL_ACCOUNT_POINTER, account,
+ -1);
+}
+
+static void
+accounts_dialog_account_added_cb (McAccountMonitor *monitor,
+ gchar *unique_name,
+ EmpathyAccountsDialog *dialog)
+{
+ McAccount *account;
+
+ account = mc_account_lookup (unique_name);
+ accounts_dialog_add_account (dialog, account);
+ g_object_unref (account);
+}
+
+static void
+accounts_dialog_account_removed_cb (McAccountMonitor *monitor,
+ gchar *unique_name,
+ EmpathyAccountsDialog *dialog)
+{
+ McAccount *account;
+
+ account = mc_account_lookup (unique_name);
+
+ accounts_dialog_model_set_selected (dialog, account);
+ accounts_dialog_model_remove_selected (dialog);
+
+ g_object_unref (account);
+}
+
+static gboolean
+accounts_dialog_row_changed_foreach (GtkTreeModel *model,
+ GtkTreePath *path,
+ GtkTreeIter *iter,
+ gpointer user_data)
+{
+ gtk_tree_model_row_changed (model, path, iter);
+
+ return FALSE;
+}
+
+static gboolean
+accounts_dialog_flash_connecting_cb (EmpathyAccountsDialog *dialog)
+{
+ GtkTreeView *view;
+ GtkTreeModel *model;
+
+ dialog->connecting_show = !dialog->connecting_show;
+
+ view = GTK_TREE_VIEW (dialog->treeview);
+ model = gtk_tree_view_get_model (view);
+
+ gtk_tree_model_foreach (model, accounts_dialog_row_changed_foreach, NULL);
+
+ return TRUE;
+}
+
+static void
+accounts_dialog_status_changed_cb (MissionControl *mc,
+ TpConnectionStatus status,
+ McPresence presence,
+ TpConnectionStatusReason reason,
+ const gchar *unique_name,
+ EmpathyAccountsDialog *dialog)
+{
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+ McAccount *account;
+ GList *accounts, *l;
+ gboolean found = FALSE;
+
+ /* Update the status in the model */
+ model = gtk_tree_view_get_model (GTK_TREE_VIEW (dialog->treeview));
+ account = mc_account_lookup (unique_name);
+
+ empathy_debug (DEBUG_DOMAIN, "Status changed for account %s: "
+ "status=%d presence=%d",
+ unique_name, status, presence);
+
+ if (accounts_dialog_get_account_iter (dialog, account, &iter)) {
+ GtkTreePath *path;
+
+ gtk_list_store_set (GTK_LIST_STORE (model), &iter,
+ COL_STATUS, status,
+ -1);
+
+ path = gtk_tree_model_get_path (model, &iter);
+ gtk_tree_model_row_changed (model, path, &iter);
+ gtk_tree_path_free (path);
+ }
+ g_object_unref (account);
+
+ /* Check if there is still accounts in CONNECTING state */
+ accounts = mc_accounts_list ();
+ for (l = accounts; l; l = l->next) {
+ McAccount *this_account;
+ TpConnectionStatus status;
+
+ this_account = l->data;
+
+ status = mission_control_get_connection_status (mc, this_account, NULL);
+ if (status == TP_CONNECTION_STATUS_CONNECTING) {
+ found = TRUE;
+ break;
+ }
+
+ g_object_unref (this_account);
+ }
+ g_list_free (accounts);
+
+ if (!found && dialog->connecting_id) {
+ g_source_remove (dialog->connecting_id);
+ dialog->connecting_id = 0;
+ }
+ if (found && !dialog->connecting_id) {
+ dialog->connecting_id = g_timeout_add (FLASH_TIMEOUT,
+ (GSourceFunc) accounts_dialog_flash_connecting_cb,
+ dialog);
+ }
+}
+
+static void
+accounts_dialog_account_enabled_cb (McAccountMonitor *monitor,
+ gchar *unique_name,
+ EmpathyAccountsDialog *dialog)
+{
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+ McAccount *account;
+ gboolean enabled;
+
+ /* Update the status in the model */
+ model = gtk_tree_view_get_model (GTK_TREE_VIEW (dialog->treeview));
+ account = mc_account_lookup (unique_name);
+ enabled = mc_account_is_enabled (account);
+
+ empathy_debug (DEBUG_DOMAIN, "Account %s is now %s",
+ mc_account_get_display_name (account),
+ enabled ? "enabled" : "disabled");
+
+ if (accounts_dialog_get_account_iter (dialog, account, &iter)) {
+ gtk_list_store_set (GTK_LIST_STORE (model), &iter,
+ COL_ENABLED, enabled,
+ -1);
+ }
+
+ g_object_unref (account);
+}
+
+static void
+accounts_dialog_button_create_clicked_cb (GtkWidget *button,
+ EmpathyAccountsDialog *dialog)
+{
+ McProfile *profile;
+ McAccount *account;
+ const gchar *str;
+
+ /* Update widgets */
+ gtk_widget_show (dialog->vbox_details);
+ gtk_widget_hide (dialog->frame_no_account);
+ gtk_widget_hide (dialog->frame_new_account);
+
+ profile = empathy_profile_chooser_get_selected (dialog->combobox_profile);
+
+ /* Create account */
+ account = mc_account_create (profile);
+
+ str = mc_account_get_unique_name (account);
+ mc_account_set_display_name (account, str);
+
+ accounts_dialog_add_account (dialog, account);
+ accounts_dialog_model_set_selected (dialog, account);
+
+ g_object_unref (account);
+ g_object_unref (profile);
+}
+
+static void
+accounts_dialog_button_back_clicked_cb (GtkWidget *button,
+ EmpathyAccountsDialog *dialog)
+{
+ McAccount *account;
+
+ gtk_widget_hide (dialog->vbox_details);
+ gtk_widget_hide (dialog->frame_no_account);
+ gtk_widget_hide (dialog->frame_new_account);
+
+ gtk_widget_set_sensitive (dialog->button_add, TRUE);
+
+ account = accounts_dialog_model_get_selected (dialog);
+ accounts_dialog_update_account (dialog, account);
+}
+
+static void
+accounts_dialog_button_add_clicked_cb (GtkWidget *button,
+ EmpathyAccountsDialog *dialog)
+{
+ GtkTreeView *view;
+ GtkTreeSelection *selection;
+
+ view = GTK_TREE_VIEW (dialog->treeview);
+ selection = gtk_tree_view_get_selection (view);
+ gtk_tree_selection_unselect_all (selection);
+
+ gtk_widget_set_sensitive (dialog->button_add, FALSE);
+ gtk_widget_hide (dialog->vbox_details);
+ gtk_widget_hide (dialog->frame_no_account);
+ gtk_widget_show (dialog->frame_new_account);
+
+ gtk_combo_box_set_active (GTK_COMBO_BOX (dialog->combobox_profile), 0);
+ gtk_widget_grab_focus (dialog->combobox_profile);
+}
+
+static void
+accounts_dialog_remove_response_cb (GtkWidget *dialog,
+ gint response,
+ McAccount *account)
+{
+ if (response == GTK_RESPONSE_YES) {
+ mc_account_delete (account);
+ }
+
+ gtk_widget_destroy (dialog);
+}
+
+static void
+accounts_dialog_button_remove_clicked_cb (GtkWidget *button,
+ EmpathyAccountsDialog *dialog)
+{
+ McAccount *account;
+ GtkWidget *message_dialog;
+
+ account = accounts_dialog_model_get_selected (dialog);
+
+ if (!mc_account_is_complete (account)) {
+ accounts_dialog_model_remove_selected (dialog);
+ return;
+ }
+ message_dialog = gtk_message_dialog_new
+ (GTK_WINDOW (dialog->window),
+ GTK_DIALOG_DESTROY_WITH_PARENT,
+ GTK_MESSAGE_QUESTION,
+ GTK_BUTTONS_NONE,
+ _("You are about to remove your %s account!\n"
+ "Are you sure you want to proceed?"),
+ mc_account_get_display_name (account));
+
+ gtk_message_dialog_format_secondary_text
+ (GTK_MESSAGE_DIALOG (message_dialog),
+ _("Any associated conversations and chat rooms will NOT be "
+ "removed if you decide to proceed.\n"
+ "\n"
+ "Should you decide to add the account back at a later time, "
+ "they will still be available."));
+
+ gtk_dialog_add_button (GTK_DIALOG (message_dialog),
+ GTK_STOCK_CANCEL,
+ GTK_RESPONSE_NO);
+ gtk_dialog_add_button (GTK_DIALOG (message_dialog),
+ GTK_STOCK_REMOVE,
+ GTK_RESPONSE_YES);
+
+ g_signal_connect (message_dialog, "response",
+ G_CALLBACK (accounts_dialog_remove_response_cb),
+ account);
+
+ gtk_widget_show (message_dialog);
+}
+
+static void
+accounts_dialog_response_cb (GtkWidget *widget,
+ gint response,
+ EmpathyAccountsDialog *dialog)
+{
+ gtk_widget_destroy (widget);
+}
+
+static void
+accounts_dialog_destroy_cb (GtkWidget *widget,
+ EmpathyAccountsDialog *dialog)
+{
+ GList *accounts, *l;
+
+ /* Disconnect signals */
+ g_signal_handlers_disconnect_by_func (dialog->monitor,
+ accounts_dialog_account_added_cb,
+ dialog);
+ g_signal_handlers_disconnect_by_func (dialog->monitor,
+ accounts_dialog_account_removed_cb,
+ dialog);
+ g_signal_handlers_disconnect_by_func (dialog->monitor,
+ accounts_dialog_account_enabled_cb,
+ dialog);
+ dbus_g_proxy_disconnect_signal (DBUS_G_PROXY (dialog->mc),
+ "AccountStatusChanged",
+ G_CALLBACK (accounts_dialog_status_changed_cb),
+ dialog);
+
+ /* Delete incomplete accounts */
+ accounts = mc_accounts_list ();
+ for (l = accounts; l; l = l->next) {
+ McAccount *account;
+
+ account = l->data;
+ if (!mc_account_is_complete (account)) {
+ /* FIXME: Warn the user the account is not complete
+ * and is going to be removed. */
+ mc_account_delete (account);
+ }
+
+ g_object_unref (account);
+ }
+ g_list_free (accounts);
+
+ if (dialog->connecting_id) {
+ g_source_remove (dialog->connecting_id);
+ }
+
+ g_object_unref (dialog->mc);
+ g_object_unref (dialog->monitor);
+
+ g_free (dialog);
+}
+
+GtkWidget *
+empathy_accounts_dialog_show (GtkWindow *parent)
+{
+ static EmpathyAccountsDialog *dialog = NULL;
+ GladeXML *glade;
+ GtkWidget *bbox;
+ GtkWidget *button_close;
+
+ if (dialog) {
+ gtk_window_present (GTK_WINDOW (dialog->window));
+ return dialog->window;
+ }
+
+ dialog = g_new0 (EmpathyAccountsDialog, 1);
+
+ glade = empathy_glade_get_file ("empathy-accounts-dialog.glade",
+ "accounts_dialog",
+ NULL,
+ "accounts_dialog", &dialog->window,
+ "vbox_details", &dialog->vbox_details,
+ "frame_no_account", &dialog->frame_no_account,
+ "label_no_account", &dialog->label_no_account,
+ "label_no_account_blurb", &dialog->label_no_account_blurb,
+ "alignment_settings", &dialog->alignment_settings,
+ "dialog-action_area", &bbox,
+ "treeview", &dialog->treeview,
+ "frame_new_account", &dialog->frame_new_account,
+ "hbox_type", &dialog->hbox_type,
+ "button_create", &dialog->button_create,
+ "button_back", &dialog->button_back,
+ "image_type", &dialog->image_type,
+ "label_name", &dialog->label_name,
+ "button_add", &dialog->button_add,
+ "button_remove", &dialog->button_remove,
+ "button_close", &button_close,
+ NULL);
+
+ empathy_glade_connect (glade,
+ dialog,
+ "accounts_dialog", "destroy", accounts_dialog_destroy_cb,
+ "accounts_dialog", "response", accounts_dialog_response_cb,
+ "button_create", "clicked", accounts_dialog_button_create_clicked_cb,
+ "button_back", "clicked", accounts_dialog_button_back_clicked_cb,
+ "button_add", "clicked", accounts_dialog_button_add_clicked_cb,
+ "button_remove", "clicked", accounts_dialog_button_remove_clicked_cb,
+ NULL);
+
+ g_object_add_weak_pointer (G_OBJECT (dialog->window), (gpointer) &dialog);
+
+ g_object_unref (glade);
+
+ /* Create profile chooser */
+ dialog->combobox_profile = empathy_profile_chooser_new ();
+ gtk_box_pack_end (GTK_BOX (dialog->hbox_type),
+ dialog->combobox_profile,
+ TRUE, TRUE, 0);
+ gtk_widget_show (dialog->combobox_profile);
+ if (empathy_profile_chooser_n_profiles (dialog->combobox_profile) <= 0) {
+ gtk_widget_set_sensitive (dialog->button_add, FALSE);
+ }
+
+ /* Set up signalling */
+ dialog->mc = empathy_mission_control_new ();
+ dialog->monitor = mc_account_monitor_new ();
+
+ g_signal_connect (dialog->monitor, "account-created",
+ G_CALLBACK (accounts_dialog_account_added_cb),
+ dialog);
+ g_signal_connect (dialog->monitor, "account-deleted",
+ G_CALLBACK (accounts_dialog_account_removed_cb),
+ dialog);
+ g_signal_connect (dialog->monitor, "account-enabled",
+ G_CALLBACK (accounts_dialog_account_enabled_cb),
+ dialog);
+ g_signal_connect (dialog->monitor, "account-disabled",
+ G_CALLBACK (accounts_dialog_account_enabled_cb),
+ dialog);
+ dbus_g_proxy_connect_signal (DBUS_G_PROXY (dialog->mc), "AccountStatusChanged",
+ G_CALLBACK (accounts_dialog_status_changed_cb),
+ dialog, NULL);
+
+ accounts_dialog_model_setup (dialog);
+ accounts_dialog_setup (dialog);
+ accounts_dialog_model_select_first (dialog);
+
+ if (parent) {
+ gtk_window_set_transient_for (GTK_WINDOW (dialog->window),
+ GTK_WINDOW (parent));
+ }
+
+ gtk_widget_show (dialog->window);
+
+ return dialog->window;
+}
+
diff --git a/gnome-2-22/libempathy-gtk/empathy-accounts-dialog.glade b/gnome-2-22/libempathy-gtk/empathy-accounts-dialog.glade
new file mode 100644
index 000000000..9ed29b8da
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-accounts-dialog.glade
@@ -0,0 +1,350 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
+<!--*- mode: xml -*-->
+<glade-interface>
+ <widget class="GtkDialog" id="accounts_dialog">
+ <property name="border_width">5</property>
+ <property name="title" translatable="yes">Accounts</property>
+ <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
+ <property name="has_separator">False</property>
+ <child internal-child="vbox">
+ <widget class="GtkVBox" id="dialog-vbox3">
+ <property name="visible">True</property>
+ <property name="spacing">2</property>
+ <child>
+ <widget class="GtkHBox" id="hbox146">
+ <property name="visible">True</property>
+ <property name="border_width">6</property>
+ <property name="spacing">18</property>
+ <child>
+ <widget class="GtkVBox" id="vbox195">
+ <property name="visible">True</property>
+ <property name="spacing">6</property>
+ <child>
+ <widget class="GtkScrolledWindow" id="scrolledwindow17">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+ <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+ <property name="shadow_type">GTK_SHADOW_IN</property>
+ <child>
+ <widget class="GtkTreeView" id="treeview">
+ <property name="width_request">250</property>
+ <property name="height_request">200</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="enable_search">False</property>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkHBox" id="hbox148">
+ <property name="visible">True</property>
+ <property name="spacing">6</property>
+ <property name="homogeneous">True</property>
+ <child>
+ <widget class="GtkButton" id="button_add">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label">gtk-add</property>
+ <property name="use_stock">True</property>
+ <property name="response_id">0</property>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkButton" id="button_remove">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label">gtk-remove</property>
+ <property name="use_stock">True</property>
+ <property name="response_id">0</property>
+ </widget>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkVBox" id="vbox214">
+ <property name="width_request">415</property>
+ <property name="visible">True</property>
+ <property name="spacing">18</property>
+ <child>
+ <widget class="GtkVBox" id="vbox_details">
+ <property name="visible">True</property>
+ <property name="spacing">18</property>
+ <child>
+ <widget class="GtkHBox" id="hbox183">
+ <property name="visible">True</property>
+ <property name="spacing">6</property>
+ <child>
+ <widget class="GtkLabel" id="label_name">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label">&lt;big&gt;&lt;b&gt;Gmail&lt;/b&gt;&lt;/big&gt;</property>
+ <property name="use_markup">True</property>
+ <property name="selectable">True</property>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkImage" id="image_type">
+ <property name="visible">True</property>
+ <property name="yalign">0</property>
+ <property name="stock">gtk-cut</property>
+ <property name="icon_size">6</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkFrame" id="frame2">
+ <property name="visible">True</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">GTK_SHADOW_NONE</property>
+ <child>
+ <widget class="GtkAlignment" id="alignment_settings">
+ <property name="visible">True</property>
+ <property name="top_padding">6</property>
+ <property name="left_padding">20</property>
+ <child>
+ <placeholder/>
+ </child>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label599">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;Settings&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </widget>
+ <packing>
+ <property name="type">label_item</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkFrame" id="frame_new_account">
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">GTK_SHADOW_NONE</property>
+ <child>
+ <widget class="GtkAlignment" id="alignment29">
+ <property name="visible">True</property>
+ <property name="top_padding">6</property>
+ <property name="left_padding">20</property>
+ <child>
+ <widget class="GtkVBox" id="vbox216">
+ <property name="visible">True</property>
+ <property name="spacing">12</property>
+ <child>
+ <widget class="GtkHBox" id="hbox_type">
+ <property name="visible">True</property>
+ <property name="spacing">6</property>
+ <child>
+ <widget class="GtkLabel" id="label645">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Type:</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkHBox" id="hbox181">
+ <property name="visible">True</property>
+ <property name="spacing">6</property>
+ <child>
+ <widget class="GtkButton" id="button_create">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="response_id">0</property>
+ <child>
+ <widget class="GtkAlignment" id="alignment1">
+ <property name="visible">True</property>
+ <property name="xscale">0</property>
+ <property name="yscale">0</property>
+ <child>
+ <widget class="GtkHBox" id="hbox1">
+ <property name="visible">True</property>
+ <property name="spacing">2</property>
+ <child>
+ <widget class="GtkImage" id="image1">
+ <property name="visible">True</property>
+ <property name="stock">gtk-new</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label1">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Cr_eate</property>
+ <property name="use_underline">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="pack_type">GTK_PACK_END</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkButton" id="button_back">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label">gtk-go-back</property>
+ <property name="use_stock">True</property>
+ <property name="response_id">0</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="pack_type">GTK_PACK_END</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="pack_type">GTK_PACK_END</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label643">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;New Account&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </widget>
+ <packing>
+ <property name="type">label_item</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkFrame" id="frame_no_account">
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">GTK_SHADOW_NONE</property>
+ <child>
+ <widget class="GtkAlignment" id="alignment21">
+ <property name="visible">True</property>
+ <property name="top_padding">6</property>
+ <property name="left_padding">12</property>
+ <child>
+ <widget class="GtkLabel" id="label_no_account_blurb">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">To add a new account, you can click on the 'Add' button and a new entry will be created for you to started configuring.
+
+If you do not want to add an account, simply click on the account you want to configure in the list on the left.</property>
+ <property name="use_markup">True</property>
+ <property name="wrap">True</property>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label_no_account">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;No Account Selected&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </widget>
+ <packing>
+ <property name="type">label_item</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child internal-child="action_area">
+ <widget class="GtkHButtonBox" id="dialog-action_area">
+ <property name="visible">True</property>
+ <property name="layout_style">GTK_BUTTONBOX_END</property>
+ <child>
+ <widget class="GtkButton" id="button_close">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="label">gtk-close</property>
+ <property name="use_stock">True</property>
+ <property name="response_id">-6</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="pack_type">GTK_PACK_END</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+</glade-interface>
diff --git a/gnome-2-22/libempathy-gtk/empathy-accounts-dialog.h b/gnome-2-22/libempathy-gtk/empathy-accounts-dialog.h
new file mode 100644
index 000000000..84395e618
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-accounts-dialog.h
@@ -0,0 +1,36 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2005-2007 Imendio AB
+ * Copyright (C) 2007 Collabora Ltd.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * 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: Martyn Russell <martyn@imendio.com>
+ * Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#ifndef __EMPATHY_ACCOUNTS_DIALOG_H__
+#define __EMPATHY_ACCOUNTS_DIALOG_H__
+
+#include <gtk/gtkwidget.h>
+
+G_BEGIN_DECLS
+
+GtkWidget *empathy_accounts_dialog_show (GtkWindow *parent);
+
+G_END_DECLS
+
+#endif /* __EMPATHY_ACCOUNTS_DIALOG_H__ */
diff --git a/gnome-2-22/libempathy-gtk/empathy-avatar-chooser.c b/gnome-2-22/libempathy-gtk/empathy-avatar-chooser.c
new file mode 100644
index 000000000..78bb32938
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-avatar-chooser.c
@@ -0,0 +1,569 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2006-2007 Imendio AB.
+ * Copyright (C) 2007-2008 Collabora Ltd.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ *
+ * Authors: Based on Novell's e-image-chooser.
+ * Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#include "config.h"
+
+#include <string.h>
+
+#include <glib/gi18n.h>
+#include <gtk/gtk.h>
+#include <libgnomevfs/gnome-vfs-ops.h>
+
+#include <libempathy/empathy-debug.h>
+
+
+#include "empathy-avatar-chooser.h"
+#include "empathy-conf.h"
+#include "empathy-preferences.h"
+#include "empathy-ui-utils.h"
+
+#define DEBUG_DOMAIN "AvatarChooser"
+
+#define GET_PRIV(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), EMPATHY_TYPE_AVATAR_CHOOSER, EmpathyAvatarChooserPriv))
+
+#define AVATAR_SIZE_SAVE 96
+#define AVATAR_SIZE_VIEW 64
+#define DEFAULT_DIR DATADIR"/pixmaps/faces"
+
+typedef struct {
+ gchar *image_data;
+ gsize image_data_size;
+} EmpathyAvatarChooserPriv;
+
+static void avatar_chooser_finalize (GObject *object);
+static void avatar_chooser_set_image_from_data (EmpathyAvatarChooser *chooser,
+ gchar *data,
+ gsize size);
+static gboolean avatar_chooser_drag_motion_cb (GtkWidget *widget,
+ GdkDragContext *context,
+ gint x,
+ gint y,
+ guint time,
+ EmpathyAvatarChooser *chooser);
+static void avatar_chooser_drag_leave_cb (GtkWidget *widget,
+ GdkDragContext *context,
+ guint time,
+ EmpathyAvatarChooser *chooser);
+static gboolean avatar_chooser_drag_drop_cb (GtkWidget *widget,
+ GdkDragContext *context,
+ gint x,
+ gint y,
+ guint time,
+ EmpathyAvatarChooser *chooser);
+static void avatar_chooser_drag_data_received_cb (GtkWidget *widget,
+ GdkDragContext *context,
+ gint x,
+ gint y,
+ GtkSelectionData *selection_data,
+ guint info,
+ guint time,
+ EmpathyAvatarChooser *chooser);
+static void avatar_chooser_clicked_cb (GtkWidget *button,
+ EmpathyAvatarChooser *chooser);
+
+enum {
+ CHANGED,
+ LAST_SIGNAL
+};
+
+static guint signals [LAST_SIGNAL];
+
+G_DEFINE_TYPE (EmpathyAvatarChooser, empathy_avatar_chooser, GTK_TYPE_BUTTON);
+
+/*
+ * Drag and drop stuff
+ */
+#define URI_LIST_TYPE "text/uri-list"
+
+enum DndTargetType {
+ DND_TARGET_TYPE_URI_LIST
+};
+
+static const GtkTargetEntry drop_types[] = {
+ { URI_LIST_TYPE, 0, DND_TARGET_TYPE_URI_LIST },
+};
+
+static void
+empathy_avatar_chooser_class_init (EmpathyAvatarChooserClass *klass)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+ object_class->finalize = avatar_chooser_finalize;
+
+ signals[CHANGED] =
+ g_signal_new ("changed",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST,
+ 0,
+ NULL, NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
+
+ g_type_class_add_private (object_class, sizeof (EmpathyAvatarChooserPriv));
+}
+
+static void
+empathy_avatar_chooser_init (EmpathyAvatarChooser *chooser)
+{
+ EmpathyAvatarChooserPriv *priv;
+
+ priv = GET_PRIV (chooser);
+
+ gtk_drag_dest_set (GTK_WIDGET (chooser),
+ GTK_DEST_DEFAULT_ALL,
+ drop_types,
+ G_N_ELEMENTS (drop_types),
+ GDK_ACTION_COPY);
+
+ g_signal_connect (chooser, "drag-motion",
+ G_CALLBACK (avatar_chooser_drag_motion_cb),
+ chooser);
+ g_signal_connect (chooser, "drag-leave",
+ G_CALLBACK (avatar_chooser_drag_leave_cb),
+ chooser);
+ g_signal_connect (chooser, "drag-drop",
+ G_CALLBACK (avatar_chooser_drag_drop_cb),
+ chooser);
+ g_signal_connect (chooser, "drag-data-received",
+ G_CALLBACK (avatar_chooser_drag_data_received_cb),
+ chooser);
+ g_signal_connect (chooser, "clicked",
+ G_CALLBACK (avatar_chooser_clicked_cb),
+ chooser);
+
+ empathy_avatar_chooser_set (chooser, NULL);
+}
+
+static void
+avatar_chooser_finalize (GObject *object)
+{
+ EmpathyAvatarChooserPriv *priv;
+
+ priv = GET_PRIV (object);
+
+ g_free (priv->image_data);
+
+ G_OBJECT_CLASS (empathy_avatar_chooser_parent_class)->finalize (object);
+}
+
+static void
+avatar_chooser_set_pixbuf (EmpathyAvatarChooser *chooser,
+ GdkPixbuf *pixbuf)
+{
+ EmpathyAvatarChooserPriv *priv = GET_PRIV (chooser);
+ GtkWidget *image;
+ GdkPixbuf *pixbuf_view = NULL;
+ GdkPixbuf *pixbuf_save = NULL;
+ GError *error = NULL;
+
+ g_free (priv->image_data);
+ priv->image_data = NULL;
+ priv->image_data_size = 0;
+
+ if (pixbuf) {
+ pixbuf_view = empathy_pixbuf_scale_down_if_necessary (pixbuf, AVATAR_SIZE_VIEW);
+ pixbuf_save = empathy_pixbuf_scale_down_if_necessary (pixbuf, AVATAR_SIZE_SAVE);
+
+ if (!gdk_pixbuf_save_to_buffer (pixbuf_save,
+ &priv->image_data,
+ &priv->image_data_size,
+ "png",
+ &error, NULL)) {
+ empathy_debug (DEBUG_DOMAIN, "Failed to save pixbuf: %s",
+ error ? error->message : "No error given");
+ g_clear_error (&error);
+ }
+ image = gtk_image_new_from_pixbuf (pixbuf_view);
+
+ g_object_unref (pixbuf_save);
+ g_object_unref (pixbuf_view);
+ } else {
+ image = gtk_image_new_from_icon_name ("stock_person",
+ GTK_ICON_SIZE_DIALOG);
+ }
+
+ gtk_button_set_image (GTK_BUTTON (chooser), image);
+ g_signal_emit (chooser, signals[CHANGED], 0);
+}
+
+static void
+avatar_chooser_set_image_from_file (EmpathyAvatarChooser *chooser,
+ const gchar *filename)
+{
+ GdkPixbuf *pixbuf;
+ GError *error = NULL;
+
+ if (!(pixbuf = gdk_pixbuf_new_from_file (filename, &error))) {
+ empathy_debug (DEBUG_DOMAIN, "Failed to load pixbuf from file: %s",
+ error ? error->message : "No error given");
+ g_clear_error (&error);
+ }
+
+ avatar_chooser_set_pixbuf (chooser, pixbuf);
+ if (pixbuf) {
+ g_object_unref (pixbuf);
+ }
+}
+
+static void
+avatar_chooser_set_image_from_data (EmpathyAvatarChooser *chooser,
+ gchar *data,
+ gsize size)
+{
+ GdkPixbuf *pixbuf;
+
+ pixbuf = empathy_pixbuf_from_data (data, size);
+ avatar_chooser_set_pixbuf (chooser, pixbuf);
+ if (pixbuf) {
+ g_object_unref (pixbuf);
+ }
+}
+
+static gboolean
+avatar_chooser_drag_motion_cb (GtkWidget *widget,
+ GdkDragContext *context,
+ gint x,
+ gint y,
+ guint time,
+ EmpathyAvatarChooser *chooser)
+{
+ EmpathyAvatarChooserPriv *priv;
+ GList *p;
+
+ priv = GET_PRIV (chooser);
+
+ for (p = context->targets; p != NULL; p = p->next) {
+ gchar *possible_type;
+
+ possible_type = gdk_atom_name (GDK_POINTER_TO_ATOM (p->data));
+
+ if (!strcmp (possible_type, URI_LIST_TYPE)) {
+ g_free (possible_type);
+ gdk_drag_status (context, GDK_ACTION_COPY, time);
+
+ return TRUE;
+ }
+
+ g_free (possible_type);
+ }
+
+ return FALSE;
+}
+
+static void
+avatar_chooser_drag_leave_cb (GtkWidget *widget,
+ GdkDragContext *context,
+ guint time,
+ EmpathyAvatarChooser *chooser)
+{
+}
+
+static gboolean
+avatar_chooser_drag_drop_cb (GtkWidget *widget,
+ GdkDragContext *context,
+ gint x,
+ gint y,
+ guint time,
+ EmpathyAvatarChooser *chooser)
+{
+ EmpathyAvatarChooserPriv *priv;
+ GList *p;
+
+ priv = GET_PRIV (chooser);
+
+ if (context->targets == NULL) {
+ return FALSE;
+ }
+
+ for (p = context->targets; p != NULL; p = p->next) {
+ char *possible_type;
+
+ possible_type = gdk_atom_name (GDK_POINTER_TO_ATOM (p->data));
+ if (!strcmp (possible_type, URI_LIST_TYPE)) {
+ g_free (possible_type);
+ gtk_drag_get_data (widget, context,
+ GDK_POINTER_TO_ATOM (p->data),
+ time);
+
+ return TRUE;
+ }
+
+ g_free (possible_type);
+ }
+
+ return FALSE;
+}
+
+static void
+avatar_chooser_drag_data_received_cb (GtkWidget *widget,
+ GdkDragContext *context,
+ gint x,
+ gint y,
+ GtkSelectionData *selection_data,
+ guint info,
+ guint time,
+ EmpathyAvatarChooser *chooser)
+{
+ gchar *target_type;
+ gboolean handled = FALSE;
+
+ target_type = gdk_atom_name (selection_data->target);
+ if (!strcmp (target_type, URI_LIST_TYPE)) {
+ GnomeVFSHandle *handle = NULL;
+ GnomeVFSResult result;
+ GnomeVFSFileInfo info;
+ gchar *uri;
+ gchar *nl;
+ gchar *data = NULL;
+
+ nl = strstr (selection_data->data, "\r\n");
+ if (nl) {
+ uri = g_strndup (selection_data->data,
+ nl - (gchar*) selection_data->data);
+ } else {
+ uri = g_strdup (selection_data->data);
+ }
+
+ result = gnome_vfs_open (&handle, uri, GNOME_VFS_OPEN_READ);
+ if (result == GNOME_VFS_OK) {
+ result = gnome_vfs_get_file_info_from_handle (handle,
+ &info,
+ GNOME_VFS_FILE_INFO_DEFAULT);
+ if (result == GNOME_VFS_OK) {
+ GnomeVFSFileSize data_size;
+
+ data = g_malloc (info.size);
+
+ result = gnome_vfs_read (handle, data, info.size, &data_size);
+ if (result == GNOME_VFS_OK) {
+ avatar_chooser_set_image_from_data (chooser,
+ data,
+ data_size);
+ handled = TRUE;
+ } else {
+ g_free (data);
+ }
+ }
+
+ gnome_vfs_close (handle);
+ }
+
+ g_free (uri);
+ }
+
+ gtk_drag_finish (context, handled, FALSE, time);
+}
+
+static void
+avatar_chooser_update_preview_cb (GtkFileChooser *file_chooser,
+ EmpathyAvatarChooser *chooser)
+{
+ gchar *filename;
+
+ filename = gtk_file_chooser_get_preview_filename (file_chooser);
+
+ if (filename) {
+ GtkWidget *image;
+ GdkPixbuf *pixbuf = NULL;
+ GdkPixbuf *scaled_pixbuf;
+
+ pixbuf = gdk_pixbuf_new_from_file (filename, NULL);
+
+ image = gtk_file_chooser_get_preview_widget (file_chooser);
+
+ if (pixbuf) {
+ scaled_pixbuf = empathy_pixbuf_scale_down_if_necessary (pixbuf, AVATAR_SIZE_SAVE);
+ gtk_image_set_from_pixbuf (GTK_IMAGE (image), scaled_pixbuf);
+ g_object_unref (scaled_pixbuf);
+ g_object_unref (pixbuf);
+ } else {
+ gtk_image_set_from_stock (GTK_IMAGE (image),
+ "gtk-dialog-question",
+ GTK_ICON_SIZE_DIALOG);
+ }
+ }
+
+ gtk_file_chooser_set_preview_widget_active (file_chooser, TRUE);
+}
+
+static void
+avatar_chooser_response_cb (GtkWidget *widget,
+ gint response,
+ EmpathyAvatarChooser *chooser)
+{
+ if (response == GTK_RESPONSE_OK) {
+ gchar *filename;
+ gchar *path;
+
+ filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (widget));
+ avatar_chooser_set_image_from_file (chooser, filename);
+ g_free (filename);
+
+ path = gtk_file_chooser_get_current_folder (GTK_FILE_CHOOSER (widget));
+ if (path) {
+ empathy_conf_set_string (empathy_conf_get (),
+ EMPATHY_PREFS_UI_AVATAR_DIRECTORY,
+ path);
+ g_free (path);
+ }
+ }
+ else if (response == GTK_RESPONSE_NO) {
+ avatar_chooser_set_image_from_data (chooser, NULL, 0);
+ }
+
+ gtk_widget_destroy (widget);
+}
+
+static void
+avatar_chooser_clicked_cb (GtkWidget *button,
+ EmpathyAvatarChooser *chooser)
+{
+ GtkFileChooser *chooser_dialog;
+ GtkWidget *image;
+ gchar *saved_dir = NULL;
+ const gchar *default_dir = DEFAULT_DIR;
+ const gchar *pics_dir;
+ GtkFileFilter *filter;
+
+ chooser_dialog = GTK_FILE_CHOOSER (
+ gtk_file_chooser_dialog_new (_("Select Your Avatar Image"),
+ empathy_get_toplevel_window (GTK_WIDGET (chooser)),
+ GTK_FILE_CHOOSER_ACTION_OPEN,
+ _("No Image"),
+ GTK_RESPONSE_NO,
+ GTK_STOCK_CANCEL,
+ GTK_RESPONSE_CANCEL,
+ GTK_STOCK_OPEN,
+ GTK_RESPONSE_OK,
+ NULL));
+
+ /* Get special dirs */
+ empathy_conf_get_string (empathy_conf_get (),
+ EMPATHY_PREFS_UI_AVATAR_DIRECTORY,
+ &saved_dir);
+ if (saved_dir && !g_file_test (saved_dir, G_FILE_TEST_IS_DIR)) {
+ g_free (saved_dir);
+ saved_dir = NULL;
+ }
+ if (!g_file_test (default_dir, G_FILE_TEST_IS_DIR)) {
+ default_dir = NULL;
+ }
+ pics_dir = g_get_user_special_dir (G_USER_DIRECTORY_PICTURES);
+ if (pics_dir && !g_file_test (pics_dir, G_FILE_TEST_IS_DIR)) {
+ pics_dir = NULL;
+ }
+
+ /* Set current dir to the last one or to DEFAULT_DIR or to home */
+ if (saved_dir) {
+ gtk_file_chooser_set_current_folder (chooser_dialog, saved_dir);
+ }
+ else if (pics_dir) {
+ gtk_file_chooser_set_current_folder (chooser_dialog, pics_dir);
+ }
+ else if (default_dir) {
+ gtk_file_chooser_set_current_folder (chooser_dialog, default_dir);
+ } else {
+ gtk_file_chooser_set_current_folder (chooser_dialog, g_get_home_dir ());
+ }
+
+ /* Add shortcuts to special dirs */
+ if (saved_dir) {
+ gtk_file_chooser_add_shortcut_folder (chooser_dialog, saved_dir, NULL);
+ }
+ else if (pics_dir) {
+ gtk_file_chooser_add_shortcut_folder (chooser_dialog, pics_dir, NULL);
+ }
+ if (default_dir) {
+ gtk_file_chooser_add_shortcut_folder (chooser_dialog, default_dir, NULL);
+ }
+
+ /* Setup preview image */
+ image = gtk_image_new ();
+ gtk_file_chooser_set_preview_widget (chooser_dialog, image);
+ gtk_widget_set_size_request (image, AVATAR_SIZE_SAVE, AVATAR_SIZE_SAVE);
+ gtk_widget_show (image);
+ gtk_file_chooser_set_use_preview_label (chooser_dialog, FALSE);
+ g_signal_connect (chooser_dialog, "update-preview",
+ G_CALLBACK (avatar_chooser_update_preview_cb),
+ chooser);
+
+ /* Setup filers */
+ filter = gtk_file_filter_new ();
+ gtk_file_filter_set_name (filter, _("Images"));
+ gtk_file_filter_add_pixbuf_formats (filter);
+ gtk_file_chooser_add_filter (chooser_dialog, filter);
+ filter = gtk_file_filter_new ();
+ gtk_file_filter_set_name (filter, _("All Files"));
+ gtk_file_filter_add_pattern(filter, "*");
+ gtk_file_chooser_add_filter (chooser_dialog, filter);
+
+ /* Setup response */
+ gtk_dialog_set_default_response (GTK_DIALOG (chooser_dialog), GTK_RESPONSE_OK);
+ g_signal_connect (chooser_dialog, "response",
+ G_CALLBACK (avatar_chooser_response_cb),
+ chooser);
+
+ gtk_widget_show (GTK_WIDGET (chooser_dialog));
+ g_free (saved_dir);
+}
+
+GtkWidget *
+empathy_avatar_chooser_new (void)
+{
+ return g_object_new (EMPATHY_TYPE_AVATAR_CHOOSER, NULL);
+}
+
+void
+empathy_avatar_chooser_set (EmpathyAvatarChooser *chooser,
+ EmpathyAvatar *avatar)
+{
+ g_return_if_fail (EMPATHY_IS_AVATAR_CHOOSER (chooser));
+
+ avatar_chooser_set_image_from_data (chooser,
+ avatar ? avatar->data : NULL,
+ avatar ? avatar->len : 0);
+}
+
+void
+empathy_avatar_chooser_get_image_data (EmpathyAvatarChooser *chooser,
+ const gchar **data,
+ gsize *data_size,
+ const gchar **mime_type)
+{
+ EmpathyAvatarChooserPriv *priv;
+
+ g_return_if_fail (EMPATHY_IS_AVATAR_CHOOSER (chooser));
+
+ priv = GET_PRIV (chooser);
+
+ if (data) {
+ *data = priv->image_data;
+ }
+ if (data_size) {
+ *data_size = priv->image_data_size;
+ }
+ if (mime_type) {
+ *mime_type = "png";
+ }
+}
+
diff --git a/gnome-2-22/libempathy-gtk/empathy-avatar-chooser.h b/gnome-2-22/libempathy-gtk/empathy-avatar-chooser.h
new file mode 100644
index 000000000..83dea2afb
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-avatar-chooser.h
@@ -0,0 +1,60 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2006-2007 Imendio AB.
+ * Copyright (C) 2007 Collabora Ltd.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ *
+ * Authors: Based on Novell's e-image-chooser.
+ * Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#ifndef __EMPATHY_AVATAR_CHOOSER_H__
+#define __EMPATHY_AVATAR_CHOOSER_H__
+
+#include <gtk/gtkbutton.h>
+
+#include <libempathy/empathy-avatar.h>
+
+G_BEGIN_DECLS
+
+#define EMPATHY_TYPE_AVATAR_CHOOSER (empathy_avatar_chooser_get_type ())
+#define EMPATHY_AVATAR_CHOOSER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EMPATHY_TYPE_AVATAR_CHOOSER, EmpathyAvatarChooser))
+#define EMPATHY_AVATAR_CHOOSER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), EMPATHY_TYPE_AVATAR_CHOOSER, EmpathyAvatarChooserClass))
+#define EMPATHY_IS_AVATAR_CHOOSER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EMPATHY_TYPE_AVATAR_CHOOSER))
+#define EMPATHY_IS_AVATAR_CHOOSER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((obj), EMPATHY_TYPE_AVATAR_CHOOSER))
+
+typedef struct _EmpathyAvatarChooser EmpathyAvatarChooser;
+typedef struct _EmpathyAvatarChooserClass EmpathyAvatarChooserClass;
+typedef struct _EmpathyAvatarChooserPrivate EmpathyAvatarChooserPrivate;
+
+struct _EmpathyAvatarChooser {
+ GtkButton parent;
+};
+
+struct _EmpathyAvatarChooserClass {
+ GtkButtonClass parent_class;
+};
+
+GType empathy_avatar_chooser_get_type (void);
+GtkWidget *empathy_avatar_chooser_new (void);
+void empathy_avatar_chooser_set (EmpathyAvatarChooser *chooser,
+ EmpathyAvatar *avatar);
+void empathy_avatar_chooser_get_image_data (EmpathyAvatarChooser *chooser,
+ const gchar **data,
+ gsize *data_size,
+ const gchar **mime_type);
+
+#endif /* __EMPATHY_AVATAR_CHOOSER_H__ */
diff --git a/gnome-2-22/libempathy-gtk/empathy-avatar-image.c b/gnome-2-22/libempathy-gtk/empathy-avatar-image.c
new file mode 100644
index 000000000..2aeeba458
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-avatar-image.c
@@ -0,0 +1,306 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2006-2007 Imendio AB
+ * Copyright (C) 2007-2008 Collabora Ltd.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * 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: Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#include "config.h"
+
+#include <glib/gi18n.h>
+#include <gdk/gdkkeysyms.h>
+#include <gdk/gdk.h>
+#include <gtk/gtk.h>
+#include <gdk/gdkx.h>
+
+#include <libempathy/empathy-debug.h>
+
+#include "empathy-avatar-image.h"
+#include "empathy-ui-utils.h"
+
+#define DEBUG_DOMAIN "AvatarImage"
+
+#define GET_PRIV(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), EMPATHY_TYPE_AVATAR_IMAGE, EmpathyAvatarImagePriv))
+
+#define MAX_SMALL 64
+#define MAX_LARGE 400
+
+typedef struct {
+ GtkWidget *image;
+ GtkWidget *popup;
+ GdkPixbuf *pixbuf;
+} EmpathyAvatarImagePriv;
+
+static void avatar_image_finalize (GObject *object);
+static void avatar_image_add_filter (EmpathyAvatarImage *avatar_image);
+static void avatar_image_remove_filter (EmpathyAvatarImage *avatar_image);
+static gboolean avatar_image_button_press_event (GtkWidget *widget,
+ GdkEventButton *event);
+static gboolean avatar_image_button_release_event (GtkWidget *widget,
+ GdkEventButton *event);
+
+G_DEFINE_TYPE (EmpathyAvatarImage, empathy_avatar_image, GTK_TYPE_EVENT_BOX);
+
+static void
+empathy_avatar_image_class_init (EmpathyAvatarImageClass *klass)
+{
+ GObjectClass *object_class;
+ GtkWidgetClass *widget_class;
+
+ object_class = G_OBJECT_CLASS (klass);
+ widget_class = GTK_WIDGET_CLASS (klass);
+
+ object_class->finalize = avatar_image_finalize;
+
+ widget_class->button_press_event = avatar_image_button_press_event;
+ widget_class->button_release_event = avatar_image_button_release_event;
+
+ g_type_class_add_private (object_class, sizeof (EmpathyAvatarImagePriv));
+}
+
+static void
+empathy_avatar_image_init (EmpathyAvatarImage *avatar_image)
+{
+ EmpathyAvatarImagePriv *priv;
+
+ priv = GET_PRIV (avatar_image);
+
+ priv->image = gtk_image_new ();
+ gtk_container_add (GTK_CONTAINER (avatar_image), priv->image);
+ empathy_avatar_image_set (avatar_image, NULL);
+ gtk_widget_show (priv->image);
+
+ avatar_image_add_filter (avatar_image);
+}
+
+static void
+avatar_image_finalize (GObject *object)
+{
+ EmpathyAvatarImagePriv *priv;
+
+ priv = GET_PRIV (object);
+
+ avatar_image_remove_filter (EMPATHY_AVATAR_IMAGE (object));
+
+ if (priv->popup) {
+ gtk_widget_destroy (priv->popup);
+ }
+
+ if (priv->pixbuf) {
+ g_object_unref (priv->pixbuf);
+ }
+
+ G_OBJECT_CLASS (empathy_avatar_image_parent_class)->finalize (object);
+}
+
+static GdkFilterReturn
+avatar_image_filter_func (GdkXEvent *gdkxevent,
+ GdkEvent *event,
+ gpointer data)
+{
+ XEvent *xevent = gdkxevent;
+ Atom atom;
+ EmpathyAvatarImagePriv *priv;
+
+ priv = GET_PRIV (data);
+
+ switch (xevent->type) {
+ case PropertyNotify:
+ atom = gdk_x11_get_xatom_by_name ("_NET_CURRENT_DESKTOP");
+ if (xevent->xproperty.atom == atom) {
+ if (priv->popup) {
+ gtk_widget_destroy (priv->popup);
+ priv->popup = NULL;
+ }
+ }
+ break;
+ }
+
+ return GDK_FILTER_CONTINUE;
+}
+
+static void
+avatar_image_add_filter (EmpathyAvatarImage *avatar_image)
+{
+ Window window;
+ GdkWindow *gdkwindow;
+ gint mask;
+
+ mask = PropertyChangeMask;
+
+ window = GDK_ROOT_WINDOW ();
+ gdkwindow = gdk_xid_table_lookup (window);
+
+ gdk_error_trap_push ();
+ if (gdkwindow) {
+ XWindowAttributes attrs;
+ XGetWindowAttributes (gdk_display, window, &attrs);
+ mask |= attrs.your_event_mask;
+ }
+
+ XSelectInput (gdk_display, window, mask);
+
+ gdk_error_trap_pop ();
+
+ gdk_window_add_filter (NULL, avatar_image_filter_func, avatar_image);
+}
+
+static void
+avatar_image_remove_filter (EmpathyAvatarImage *avatar_image)
+{
+ gdk_window_remove_filter (NULL, avatar_image_filter_func, avatar_image);
+}
+
+static gboolean
+avatar_image_button_press_event (GtkWidget *widget, GdkEventButton *event)
+{
+ EmpathyAvatarImagePriv *priv;
+ GtkWidget *popup;
+ GtkWidget *frame;
+ GtkWidget *image;
+ gint x, y;
+ gint popup_width, popup_height;
+ gint width, height;
+ GdkPixbuf *pixbuf;
+
+ priv = GET_PRIV (widget);
+
+ if (priv->popup) {
+ gtk_widget_destroy (priv->popup);
+ priv->popup = NULL;
+ }
+
+ if (event->button != 1 || event->type != GDK_BUTTON_PRESS || !priv->pixbuf) {
+ return FALSE;
+ }
+
+ popup_width = gdk_pixbuf_get_width (priv->pixbuf);
+ popup_height = gdk_pixbuf_get_height (priv->pixbuf);
+
+ width = priv->image->allocation.width;
+ height = priv->image->allocation.height;
+
+ /* Don't show a popup if the popup is smaller then the currently avatar
+ * image.
+ */
+ if (popup_height <= height && popup_width <= width) {
+ return TRUE;
+ }
+
+ pixbuf = empathy_pixbuf_scale_down_if_necessary (priv->pixbuf, MAX_LARGE);
+ popup_width = gdk_pixbuf_get_width (pixbuf);
+ popup_height = gdk_pixbuf_get_height (pixbuf);
+
+ popup = gtk_window_new (GTK_WINDOW_POPUP);
+
+ frame = gtk_frame_new (NULL);
+ gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_OUT);
+
+ gtk_container_add (GTK_CONTAINER (popup), frame);
+
+ image = gtk_image_new ();
+ gtk_container_add (GTK_CONTAINER (frame), image);
+
+ gtk_image_set_from_pixbuf (GTK_IMAGE (image), pixbuf);
+ g_object_unref (pixbuf);
+
+ gdk_window_get_origin (priv->image->window, &x, &y);
+
+ x = x - (popup_width - width) / 2;
+ y = y - (popup_height - height) / 2;
+
+ gtk_window_move (GTK_WINDOW (popup), x, y);
+
+ priv->popup = popup;
+
+ gtk_widget_show_all (popup);
+
+ return TRUE;
+}
+
+static gboolean
+avatar_image_button_release_event (GtkWidget *widget, GdkEventButton *event)
+{
+ EmpathyAvatarImagePriv *priv;
+
+ priv = GET_PRIV (widget);
+
+ if (event->button != 1 || event->type != GDK_BUTTON_RELEASE) {
+ return FALSE;
+ }
+
+ if (!priv->popup) {
+ return TRUE;
+ }
+
+ gtk_widget_destroy (priv->popup);
+ priv->popup = NULL;
+
+ return TRUE;
+}
+
+GtkWidget *
+empathy_avatar_image_new (void)
+{
+ EmpathyAvatarImage *avatar_image;
+
+ avatar_image = g_object_new (EMPATHY_TYPE_AVATAR_IMAGE, NULL);
+
+ return GTK_WIDGET (avatar_image);
+}
+
+void
+empathy_avatar_image_set (EmpathyAvatarImage *avatar_image,
+ EmpathyAvatar *avatar)
+{
+ EmpathyAvatarImagePriv *priv = GET_PRIV (avatar_image);
+ GdkPixbuf *scaled_pixbuf;
+
+ g_return_if_fail (EMPATHY_IS_AVATAR_IMAGE (avatar_image));
+
+ if (priv->pixbuf) {
+ g_object_unref (priv->pixbuf);
+ priv->pixbuf = NULL;
+ }
+
+ if (avatar) {
+ priv->pixbuf = empathy_pixbuf_from_data (avatar->data, avatar->len);
+ }
+
+ if (!priv->pixbuf) {
+ gtk_image_set_from_icon_name (GTK_IMAGE (priv->image),
+ "stock_person",
+ GTK_ICON_SIZE_DIALOG);
+ return;
+ }
+
+ scaled_pixbuf = empathy_pixbuf_scale_down_if_necessary (priv->pixbuf, MAX_SMALL);
+ gtk_image_set_from_pixbuf (GTK_IMAGE (priv->image), scaled_pixbuf);
+
+ if (scaled_pixbuf != priv->pixbuf) {
+ gtk_widget_set_tooltip_text (GTK_WIDGET (avatar_image),
+ _("Click to enlarge"));
+ } else {
+ gtk_widget_set_tooltip_text (GTK_WIDGET (avatar_image),
+ NULL);
+ }
+
+ g_object_unref (scaled_pixbuf);
+}
+
diff --git a/gnome-2-22/libempathy-gtk/empathy-avatar-image.h b/gnome-2-22/libempathy-gtk/empathy-avatar-image.h
new file mode 100644
index 000000000..8a28ccb9a
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-avatar-image.h
@@ -0,0 +1,58 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2006-2007 Imendio AB
+ * Copyright (C) 2007 Collabora Ltd.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * 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: Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#ifndef __EMPATHY_AVATAR_IMAGE_H__
+#define __EMPATHY_AVATAR_IMAGE_H__
+
+#include <gtk/gtkeventbox.h>
+
+#include <libempathy/empathy-avatar.h>
+
+G_BEGIN_DECLS
+
+#define EMPATHY_TYPE_AVATAR_IMAGE (empathy_avatar_image_get_type ())
+#define EMPATHY_AVATAR_IMAGE(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), EMPATHY_TYPE_AVATAR_IMAGE, EmpathyAvatarImage))
+#define EMPATHY_AVATAR_IMAGE_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), EMPATHY_TYPE_AVATAR_IMAGE, EmpathyAvatarImageClass))
+#define EMPATHY_IS_AVATAR_IMAGE(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), EMPATHY_TYPE_AVATAR_IMAGE))
+#define EMPATHY_IS_AVATAR_IMAGE_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), EMPATHY_TYPE_AVATAR_IMAGE))
+#define EMPATHY_AVATAR_IMAGE_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), EMPATHY_TYPE_AVATAR_IMAGE, EmpathyAvatarImageClass))
+
+typedef struct _EmpathyAvatarImage EmpathyAvatarImage;
+typedef struct _EmpathyAvatarImageClass EmpathyAvatarImageClass;
+
+struct _EmpathyAvatarImage {
+ GtkEventBox parent;
+};
+
+struct _EmpathyAvatarImageClass {
+ GtkEventBoxClass parent_class;
+};
+
+GType empathy_avatar_image_get_type (void) G_GNUC_CONST;
+GtkWidget * empathy_avatar_image_new (void);
+void empathy_avatar_image_set (EmpathyAvatarImage *avatar_image,
+ EmpathyAvatar *avatar);
+
+G_END_DECLS
+
+#endif /* __EMPATHY_AVATAR_IMAGE_H__ */
diff --git a/gnome-2-22/libempathy-gtk/empathy-call-window.c b/gnome-2-22/libempathy-gtk/empathy-call-window.c
new file mode 100644
index 000000000..bb7a84a91
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-call-window.c
@@ -0,0 +1,519 @@
+/*
+ * Copyright (C) 2007 Elliot Fairweather
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Authors: Elliot Fairweather <elliot.fairweather@collabora.co.uk>
+ */
+
+#include <string.h>
+
+#include <libtelepathy/tp-chan.h>
+#include <libtelepathy/tp-helpers.h>
+
+#include <libmissioncontrol/mc-account.h>
+#include <libmissioncontrol/mc-account-monitor.h>
+#include <libmissioncontrol/mission-control.h>
+
+#include <libempathy/empathy-contact.h>
+#include <libempathy/empathy-tp-call.h>
+#include <libempathy/empathy-chandler.h>
+#include <libempathy/empathy-debug.h>
+#include <libempathy/empathy-utils.h>
+
+#include <libempathy-gtk/empathy-call-window.h>
+#include <libempathy-gtk/empathy-ui-utils.h>
+
+#define DEBUG_DOMAIN "CallWindow"
+
+typedef struct
+{
+ GtkWidget *window;
+ GtkWidget *status_label;
+ GtkWidget *start_call_button;
+ GtkWidget *end_call_button;
+ GtkWidget *input_volume_scale;
+ GtkWidget *output_volume_scale;
+ GtkWidget *input_mute_button;
+ GtkWidget *output_mute_button;
+ GtkWidget *preview_video_frame;
+ GtkWidget *output_video_frame;
+ GtkWidget *preview_video_socket;
+ GtkWidget *output_video_socket;
+ GtkWidget *video_button;
+ GtkWidget *output_video_label;
+
+ EmpathyTpCall *call;
+
+ GTimeVal start_time;
+ guint timeout_event_id;
+
+ gboolean is_drawing;
+} EmpathyCallWindow;
+
+static gboolean
+call_window_update_timer (gpointer data)
+{
+ EmpathyCallWindow *window = data;
+ GTimeVal current;
+ gchar *str;
+ glong now, then;
+ glong time, seconds, minutes, hours;
+
+ g_get_current_time (&current);
+
+ now = current.tv_sec;
+ then = (window->start_time).tv_sec;
+
+ time = now - then;
+
+ seconds = time % 60;
+ time /= 60;
+ minutes = time % 60;
+ time /= 60;
+ hours = time % 60;
+
+ if (hours > 0)
+ {
+ str = g_strdup_printf ("Connected - %02ld : %02ld : %02ld", hours,
+ minutes, seconds);
+ }
+ else
+ {
+ str = g_strdup_printf ("Connected - %02ld : %02ld", minutes, seconds);
+ }
+
+ gtk_label_set_text (GTK_LABEL (window->status_label), str);
+
+ g_free (str);
+
+ return TRUE;
+}
+
+static void
+call_window_stop_timeout (EmpathyCallWindow *window)
+{
+ GMainContext *context;
+ GSource *source;
+
+ context = g_main_context_default ();
+
+ empathy_debug (DEBUG_DOMAIN, "Timer stopped");
+
+ if (window->timeout_event_id)
+ {
+ source = g_main_context_find_source_by_id (context,
+ window->timeout_event_id);
+ g_source_destroy (source);
+ window->timeout_event_id = 0;
+ }
+}
+
+static void
+call_window_set_output_video_is_drawing (EmpathyCallWindow *window,
+ gboolean is_drawing)
+{
+ GtkWidget* child;
+
+ child = gtk_bin_get_child (GTK_BIN (window->output_video_frame));
+
+ empathy_debug (DEBUG_DOMAIN,
+ "Setting output video is drawing - %d", is_drawing);
+
+ if (is_drawing)
+ {
+ if (!window->is_drawing)
+ {
+ if (child)
+ {
+ gtk_container_remove (GTK_CONTAINER (window->output_video_frame),
+ child);
+ }
+ gtk_container_add (GTK_CONTAINER (window->output_video_frame),
+ window->output_video_socket);
+ gtk_widget_show (window->output_video_socket);
+ empathy_tp_call_add_output_video (window->call,
+ gtk_socket_get_id (GTK_SOCKET (window->output_video_socket)));
+ window->is_drawing = is_drawing;
+ }
+ }
+ else
+ {
+ if (window->is_drawing)
+ {
+ empathy_tp_call_add_output_video (window->call, 0);
+ if (child)
+ {
+ gtk_container_remove (GTK_CONTAINER (window->output_video_frame),
+ child);
+ }
+ gtk_container_add (GTK_CONTAINER (window->output_video_frame),
+ window->output_video_label);
+ gtk_widget_show (window->output_video_label);
+ window->is_drawing = is_drawing;
+ }
+ }
+}
+
+static gboolean
+call_window_delete_event_cb (GtkWidget *widget,
+ GdkEvent *event,
+ EmpathyCallWindow *window)
+{
+ GtkWidget *dialog;
+ gint result;
+ guint status;
+
+ empathy_debug (DEBUG_DOMAIN, "Delete event occurred");
+
+ g_object_get (G_OBJECT (window->call), "status", &status, NULL);
+
+ if (status != EMPATHY_TP_CALL_STATUS_CLOSED)
+ {
+ dialog = gtk_message_dialog_new (GTK_WINDOW (window->window),
+ GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
+ GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO,
+ "This call will be ended. Continue?");
+
+ result = gtk_dialog_run (GTK_DIALOG (dialog));
+ gtk_widget_destroy (dialog);
+
+ switch (result)
+ {
+ case GTK_RESPONSE_YES:
+ call_window_stop_timeout (window);
+ call_window_set_output_video_is_drawing (window, FALSE);
+ empathy_tp_call_close_channel (window->call);
+ empathy_tp_call_remove_preview_video (window->call,
+ gtk_socket_get_id (GTK_SOCKET (window->preview_video_socket)));
+ return FALSE;
+ default:
+ return TRUE;
+ }
+ }
+ else
+ {
+ empathy_tp_call_remove_preview_video (window->call,
+ gtk_socket_get_id (GTK_SOCKET (window->preview_video_socket)));
+ return FALSE;
+ }
+}
+
+static void
+call_window_video_button_toggled_cb (GtkWidget *button,
+ EmpathyCallWindow *window)
+{
+ gboolean is_sending;
+
+ is_sending = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (button));
+
+ empathy_debug (DEBUG_DOMAIN, "Send video toggled - %d", is_sending);
+
+ empathy_tp_call_request_video_stream_direction (window->call, is_sending);
+}
+
+static void
+call_window_status_changed_cb (EmpathyTpCall *call,
+ EmpathyCallWindow *window)
+{
+ EmpathyContact *contact;
+ guint status;
+ guint stream_state;
+ EmpathyTpCallStream *audio_stream;
+ EmpathyTpCallStream *video_stream;
+ gboolean is_incoming;
+ gchar *title;
+
+ g_object_get (window->call,
+ "status", &status,
+ "audio-stream", &audio_stream,
+ "video-stream", &video_stream,
+ NULL);
+
+ if (video_stream->state > audio_stream->state)
+ stream_state = video_stream->state;
+ else
+ stream_state = audio_stream->state;
+
+ empathy_debug (DEBUG_DOMAIN, "Status changed - status: %d, stream state: %d",
+ status, stream_state);
+
+ if (window->timeout_event_id)
+ call_window_stop_timeout (window);
+
+ if (status == EMPATHY_TP_CALL_STATUS_CLOSED)
+ {
+ gtk_label_set_text (GTK_LABEL (window->status_label), "Closed");
+ gtk_widget_set_sensitive (window->end_call_button, FALSE);
+ gtk_widget_set_sensitive (window->start_call_button, FALSE);
+
+ call_window_set_output_video_is_drawing (window, FALSE);
+ }
+ else if (stream_state == TP_MEDIA_STREAM_STATE_DISCONNECTED)
+ gtk_label_set_text (GTK_LABEL (window->status_label), "Disconnected");
+ else if (status == EMPATHY_TP_CALL_STATUS_PENDING)
+ {
+ g_object_get (G_OBJECT (window->call), "contact", &contact, NULL);
+
+ title = g_strdup_printf ("%s - Empathy Call",
+ empathy_contact_get_name (contact));
+ gtk_window_set_title (GTK_WINDOW (window->window), title);
+
+ gtk_label_set_text (GTK_LABEL (window->status_label), "Ringing");
+ gtk_widget_set_sensitive (window->end_call_button, TRUE);
+ gtk_widget_set_sensitive (window->video_button, TRUE);
+
+ g_object_get (G_OBJECT (window->call), "is-incoming", &is_incoming, NULL);
+ if (is_incoming)
+ gtk_widget_set_sensitive (window->start_call_button, TRUE);
+ else
+ g_signal_connect (GTK_OBJECT (window->video_button), "toggled",
+ G_CALLBACK (call_window_video_button_toggled_cb),
+ window);
+ }
+ else if (status == EMPATHY_TP_CALL_STATUS_ACCEPTED)
+ {
+ if (stream_state == TP_MEDIA_STREAM_STATE_CONNECTING)
+ gtk_label_set_text (GTK_LABEL (window->status_label), "Connecting");
+ else if (stream_state == TP_MEDIA_STREAM_STATE_CONNECTED)
+ {
+ if ((window->start_time).tv_sec == 0)
+ g_get_current_time (&(window->start_time));
+ window->timeout_event_id = g_timeout_add (1000,
+ call_window_update_timer, window);
+ empathy_debug (DEBUG_DOMAIN, "Timer started");
+ }
+ }
+}
+
+static void
+call_window_receiving_video_cb (EmpathyTpCall *call,
+ gboolean receiving_video,
+ EmpathyCallWindow *window)
+{
+ empathy_debug (DEBUG_DOMAIN, "Receiving video signal received");
+
+ call_window_set_output_video_is_drawing (window, receiving_video);
+}
+
+static void
+call_window_sending_video_cb (EmpathyTpCall *call,
+ gboolean sending_video,
+ EmpathyCallWindow *window)
+{
+ empathy_debug (DEBUG_DOMAIN, "Sending video signal received");
+
+ g_signal_handlers_block_by_func (window->video_button,
+ call_window_video_button_toggled_cb, window);
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (window->video_button),
+ sending_video);
+ g_signal_handlers_unblock_by_func (window->video_button,
+ call_window_video_button_toggled_cb, window);
+}
+
+static void
+call_window_socket_realized_cb (GtkWidget *widget,
+ EmpathyCallWindow *window)
+{
+ if (widget == window->preview_video_socket)
+ {
+ empathy_debug (DEBUG_DOMAIN, "Preview socket realized");
+ empathy_tp_call_add_preview_video (window->call,
+ gtk_socket_get_id (GTK_SOCKET (window->preview_video_socket)));
+ }
+ else
+ {
+ empathy_debug (DEBUG_DOMAIN, "Output socket realized");
+ }
+}
+
+static void
+call_window_start_call_button_clicked_cb (GtkWidget *widget,
+ EmpathyCallWindow *window)
+{
+ gboolean send_video;
+ gboolean is_incoming;
+
+ empathy_debug (DEBUG_DOMAIN, "Start call clicked");
+
+ gtk_widget_set_sensitive (window->start_call_button, FALSE);
+ g_object_get (G_OBJECT (window->call), "is-incoming", &is_incoming, NULL);
+ if (is_incoming)
+ {
+ empathy_tp_call_accept_incoming_call (window->call);
+ send_video = gtk_toggle_button_get_active
+ (GTK_TOGGLE_BUTTON (window->video_button));
+ empathy_tp_call_request_video_stream_direction (window->call, send_video);
+ g_signal_connect (GTK_OBJECT (window->video_button), "toggled",
+ G_CALLBACK (call_window_video_button_toggled_cb), window);
+ }
+}
+
+static void
+call_window_end_call_button_clicked_cb (GtkWidget *widget,
+ EmpathyCallWindow *window)
+{
+ empathy_debug (DEBUG_DOMAIN, "End call clicked");
+
+ call_window_set_output_video_is_drawing (window, FALSE);
+ empathy_tp_call_close_channel (window->call);
+ gtk_widget_set_sensitive (window->end_call_button, FALSE);
+ gtk_widget_set_sensitive (window->start_call_button, FALSE);
+}
+
+static void
+call_window_output_volume_changed_cb (GtkWidget *scale,
+ EmpathyCallWindow *window)
+{
+ guint volume;
+
+ volume = (guint) gtk_range_get_value (GTK_RANGE (scale));
+
+ empathy_debug (DEBUG_DOMAIN, "Output volume changed - %u", volume);
+
+ empathy_tp_call_set_output_volume (window->call, volume);
+}
+
+static void
+call_window_output_mute_button_toggled_cb (GtkWidget *button,
+ EmpathyCallWindow *window)
+{
+ gboolean is_muted;
+
+ is_muted = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (button));
+
+ empathy_debug (DEBUG_DOMAIN, "Mute output toggled - %d", is_muted);
+
+ empathy_tp_call_mute_output (window->call, is_muted);
+}
+
+static void
+call_window_input_mute_button_toggled_cb (GtkWidget *button,
+ EmpathyCallWindow *window)
+{
+ gboolean is_muted;
+
+ is_muted = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (button));
+
+ empathy_debug (DEBUG_DOMAIN, "Mute input toggled - %d", is_muted);
+
+ empathy_tp_call_mute_input (window->call, is_muted);
+}
+
+static void
+call_window_destroy_cb (GtkWidget *widget,
+ EmpathyCallWindow *window)
+{
+ g_signal_handlers_disconnect_by_func (window->call,
+ call_window_status_changed_cb, window);
+ g_signal_handlers_disconnect_by_func (window->call,
+ call_window_receiving_video_cb, window);
+ g_signal_handlers_disconnect_by_func (window->call,
+ call_window_sending_video_cb, window);
+
+ g_object_unref (window->call);
+ g_object_unref (window->output_video_socket);
+ g_object_unref (window->preview_video_socket);
+ g_object_unref (window->output_video_label);
+
+ g_slice_free (EmpathyCallWindow, window);
+}
+
+GtkWidget *
+empathy_call_window_new (EmpathyTpCall *call)
+{
+ EmpathyCallWindow *window;
+ GladeXML *glade;
+ guint status;
+
+ g_return_val_if_fail (EMPATHY_IS_TP_CALL (call), NULL);
+
+ window = g_slice_new0 (EmpathyCallWindow);
+ window->call = g_object_ref (call);
+
+ glade = empathy_glade_get_file ("empathy-call-window.glade",
+ "window",
+ NULL,
+ "window", &window->window,
+ "status_label", &window->status_label,
+ "start_call_button", &window->start_call_button,
+ "end_call_button", &window->end_call_button,
+ "input_volume_scale", &window->input_volume_scale,
+ "output_volume_scale", &window->output_volume_scale,
+ "input_mute_button", &window->input_mute_button,
+ "output_mute_button", &window->output_mute_button,
+ "preview_video_frame", &window->preview_video_frame,
+ "output_video_frame", &window->output_video_frame,
+ "video_button", &window->video_button,
+ NULL);
+
+ empathy_glade_connect (glade,
+ window,
+ "window", "destroy", call_window_destroy_cb,
+ "window", "delete_event", call_window_delete_event_cb,
+ "input_mute_button", "toggled", call_window_input_mute_button_toggled_cb,
+ "output_mute_button", "toggled", call_window_output_mute_button_toggled_cb,
+ "output_volume_scale", "value-changed", call_window_output_volume_changed_cb,
+ "start_call_button", "clicked", call_window_start_call_button_clicked_cb,
+ "end_call_button", "clicked", call_window_end_call_button_clicked_cb,
+ NULL);
+
+ g_object_unref (glade);
+
+ /* Output video label */
+ window->output_video_label = g_object_ref (gtk_label_new ("No video output"));
+ gtk_container_add (GTK_CONTAINER (window->output_video_frame),
+ window->output_video_label);
+ gtk_widget_show (window->output_video_label);
+
+ /* Output video socket */
+ window->output_video_socket = g_object_ref (gtk_socket_new ());
+ g_signal_connect (GTK_OBJECT (window->output_video_socket), "realize",
+ G_CALLBACK (call_window_socket_realized_cb), window);
+ gtk_widget_show (window->output_video_socket);
+
+ /* Preview video socket */
+ window->preview_video_socket = g_object_ref (gtk_socket_new ());
+ g_signal_connect (GTK_OBJECT (window->preview_video_socket), "realize",
+ G_CALLBACK (call_window_socket_realized_cb), window);
+ gtk_container_add (GTK_CONTAINER (window->preview_video_frame),
+ window->preview_video_socket);
+ gtk_widget_show (window->preview_video_socket);
+
+ g_signal_connect (G_OBJECT (window->call), "status-changed",
+ G_CALLBACK (call_window_status_changed_cb),
+ window);
+ g_signal_connect (G_OBJECT (window->call), "receiving-video",
+ G_CALLBACK (call_window_receiving_video_cb),
+ window);
+ g_signal_connect (G_OBJECT (window->call), "sending-video",
+ G_CALLBACK (call_window_sending_video_cb),
+ window);
+
+ window->is_drawing = FALSE;
+
+ g_object_get (G_OBJECT (window->call), "status", &status, NULL);
+
+ if (status == EMPATHY_TP_CALL_STATUS_READYING)
+ {
+ gtk_window_set_title (GTK_WINDOW (window->window), "Empathy Call");
+ gtk_label_set_text (GTK_LABEL (window->status_label), "Readying");
+ }
+
+ gtk_widget_show (window->window);
+
+ return window->window;
+}
+
diff --git a/gnome-2-22/libempathy-gtk/empathy-call-window.glade b/gnome-2-22/libempathy-gtk/empathy-call-window.glade
new file mode 100644
index 000000000..2e388cf07
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-call-window.glade
@@ -0,0 +1,300 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
+<!--Generated with glade3 3.4.2 on Fri Apr 4 14:56:48 2008 -->
+<glade-interface>
+ <widget class="GtkWindow" id="window">
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <child>
+ <widget class="GtkVBox" id="vbox1">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="border_width">10</property>
+ <property name="spacing">10</property>
+ <child>
+ <widget class="GtkHBox" id="hbox1">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <child>
+ <widget class="GtkLabel" id="status_label">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkHSeparator" id="hseparator1">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkHBox" id="hbox2">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="spacing">10</property>
+ <child>
+ <widget class="GtkFrame" id="frame1">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="label_xalign">0</property>
+ <child>
+ <widget class="GtkAlignment" id="alignment1">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0</property>
+ <child>
+ <widget class="GtkHBox" id="hbox3">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="homogeneous">True</property>
+ <child>
+ <widget class="GtkVBox" id="vbox4">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="extension_events">GDK_EXTENSION_EVENTS_CURSOR</property>
+ <property name="resize_mode">GTK_RESIZE_QUEUE</property>
+ <child>
+ <widget class="GtkLabel" id="label2">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="label" translatable="yes">Input</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="padding">5</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkVScale" id="input_volume_scale">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="adjustment">100 0 100 1 0 0</property>
+ <property name="inverted">True</property>
+ <property name="draw_value">False</property>
+ </widget>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkToggleButton" id="input_mute_button">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="label" translatable="yes">Mute</property>
+ <property name="response_id">0</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="padding">5</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">5</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkVBox" id="vbox5">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <child>
+ <widget class="GtkLabel" id="label3">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="label" translatable="yes">Output</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="padding">5</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkVScale" id="output_volume_scale">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="adjustment">100 0 100 1 0 0</property>
+ <property name="inverted">True</property>
+ <property name="draw_value">False</property>
+ </widget>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkToggleButton" id="output_mute_button">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="label" translatable="yes">Mute</property>
+ <property name="response_id">0</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="padding">5</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">5</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label4">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="label" translatable="yes">Volume</property>
+ <property name="use_markup">True</property>
+ </widget>
+ <packing>
+ <property name="type">label_item</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkVBox" id="vbox2">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <child>
+ <widget class="GtkAspectFrame" id="output_video_frame">
+ <property name="width_request">352</property>
+ <property name="height_request">288</property>
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="label_xalign">0</property>
+ <property name="ratio">1.2200000286102295</property>
+ <property name="obey_child">False</property>
+ <child>
+ <placeholder/>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkVBox" id="vbox3">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <child>
+ <widget class="GtkAspectFrame" id="preview_video_frame">
+ <property name="width_request">176</property>
+ <property name="height_request">144</property>
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="label_xalign">0</property>
+ <property name="ratio">1.2200000286102295</property>
+ <property name="obey_child">False</property>
+ <child>
+ <placeholder/>
+ </child>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkCheckButton" id="video_button">
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="label" translatable="yes">Send Video</property>
+ <property name="response_id">0</property>
+ <property name="active">True</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">10</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkHSeparator" id="hseparator2">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="padding">5</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkButton" id="start_call_button">
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="label" translatable="yes">Start Call</property>
+ <property name="response_id">0</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">10</property>
+ <property name="pack_type">GTK_PACK_END</property>
+ <property name="position">4</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkButton" id="end_call_button">
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="label" translatable="yes">End Call</property>
+ <property name="response_id">0</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="pack_type">GTK_PACK_END</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">10</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+</glade-interface>
diff --git a/gnome-2-22/libempathy-gtk/empathy-call-window.h b/gnome-2-22/libempathy-gtk/empathy-call-window.h
new file mode 100644
index 000000000..7d65aaeae
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-call-window.h
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2007 Elliot Fairweather
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Authors: Elliot Fairweather <elliot.fairweather@collabora.co.uk>
+ */
+
+#ifndef __EMPATHY_CALL_WINDOW_H__
+#define __EMPATHY_CALL_WINDOW_H__
+
+#include <gtk/gtk.h>
+
+#include <libempathy/empathy-tp-call.h>
+
+G_BEGIN_DECLS
+
+GtkWidget *empathy_call_window_new (EmpathyTpCall *call);
+
+G_END_DECLS
+
+#endif /* __EMPATHY_CALL_WINDOW_H__ */
diff --git a/gnome-2-22/libempathy-gtk/empathy-cell-renderer-activatable.c b/gnome-2-22/libempathy-gtk/empathy-cell-renderer-activatable.c
new file mode 100644
index 000000000..76e3b3bd7
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-cell-renderer-activatable.c
@@ -0,0 +1,121 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2007 Raphael Slinckx <raphael@slinckx.net>
+ * Copyright (C) 2007-2008 Collabora Ltd.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Authors: Raphael Slinckx <raphael@slinckx.net>
+ */
+
+#include <gtk/gtktreeview.h>
+
+#include <libempathy/empathy-debug.h>
+
+#include "empathy-cell-renderer-activatable.h"
+
+#define DEBUG_DOMAIN "CellRendererActivatable"
+
+static void empathy_cell_renderer_activatable_init (EmpathyCellRendererActivatable *cell);
+static void empathy_cell_renderer_activatable_class_init (EmpathyCellRendererActivatableClass *klass);
+static gboolean cell_renderer_activatable_activate (GtkCellRenderer *cell,
+ GdkEvent *event,
+ GtkWidget *widget,
+ const gchar *path,
+ GdkRectangle *background_area,
+ GdkRectangle *cell_area,
+ GtkCellRendererState flags);
+
+enum {
+ PATH_ACTIVATED,
+ LAST_SIGNAL
+};
+
+static guint signals[LAST_SIGNAL];
+
+G_DEFINE_TYPE (EmpathyCellRendererActivatable, empathy_cell_renderer_activatable, GTK_TYPE_CELL_RENDERER_PIXBUF)
+
+static void
+empathy_cell_renderer_activatable_init (EmpathyCellRendererActivatable *cell)
+{
+ g_object_set (cell,
+ "xpad", 0,
+ "ypad", 0,
+ "mode", GTK_CELL_RENDERER_MODE_ACTIVATABLE,
+ "follow-state", TRUE,
+ NULL);
+}
+
+static void
+empathy_cell_renderer_activatable_class_init (EmpathyCellRendererActivatableClass *klass)
+{
+ GtkCellRendererClass *cell_class;
+
+ cell_class = GTK_CELL_RENDERER_CLASS (klass);
+ cell_class->activate = cell_renderer_activatable_activate;
+
+ signals[PATH_ACTIVATED] =
+ g_signal_new ("path-activated",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST,
+ 0,
+ NULL, NULL,
+ g_cclosure_marshal_VOID__STRING,
+ G_TYPE_NONE,
+ 1, G_TYPE_STRING);
+}
+
+GtkCellRenderer *
+empathy_cell_renderer_activatable_new (void)
+{
+ return g_object_new (EMPATHY_TYPE_CELL_RENDERER_ACTIVATABLE, NULL);
+}
+
+static gboolean
+cell_renderer_activatable_activate (GtkCellRenderer *cell,
+ GdkEvent *event,
+ GtkWidget *widget,
+ const gchar *path_string,
+ GdkRectangle *background_area,
+ GdkRectangle *cell_area,
+ GtkCellRendererState flags)
+{
+ EmpathyCellRendererActivatable *activatable;
+ gint ex, ey, bx, by, bw, bh;
+
+ activatable = EMPATHY_CELL_RENDERER_ACTIVATABLE (cell);
+
+ if (!GTK_IS_TREE_VIEW (widget) ||
+ event->type != GDK_BUTTON_PRESS) {
+ return FALSE;
+ }
+
+ ex = (gint) ((GdkEventButton *) event)->x;
+ ey = (gint) ((GdkEventButton *) event)->y;
+ bx = background_area->x;
+ by = background_area->y;
+ bw = background_area->width;
+ bh = background_area->height;
+
+ if (ex < bx || ex > (bx+bw) || ey < by || ey > (by+bh)){
+ /* Click wasn't on the icon */
+ return FALSE;
+ }
+
+ g_signal_emit (activatable, signals[PATH_ACTIVATED], 0, path_string);
+
+ return TRUE;
+}
+
diff --git a/gnome-2-22/libempathy-gtk/empathy-cell-renderer-activatable.h b/gnome-2-22/libempathy-gtk/empathy-cell-renderer-activatable.h
new file mode 100644
index 000000000..6520e29ca
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-cell-renderer-activatable.h
@@ -0,0 +1,54 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2007 Raphael Slinckx <raphael@slinckx.net>
+ * Copyright (C) 2007 Collabora Ltd.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Authors: Raphael Slinckx <raphael@slinckx.net>
+ */
+
+#ifndef __EMPATHY_CELL_RENDERER_ACTIVATABLE_H__
+#define __EMPATHY_CELL_RENDERER_ACTIVATABLE_H__
+
+#include <gtk/gtkcellrendererpixbuf.h>
+
+G_BEGIN_DECLS
+
+#define EMPATHY_TYPE_CELL_RENDERER_ACTIVATABLE (empathy_cell_renderer_activatable_get_type ())
+#define EMPATHY_CELL_RENDERER_ACTIVATABLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EMPATHY_TYPE_CELL_RENDERER_ACTIVATABLE, EmpathyCellRendererActivatable))
+#define EMPATHY_CELL_RENDERER_ACTIVATABLE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), EMPATHY_TYPE_CELL_RENDERER_ACTIVATABLE, EmpathyCellRendererActivatableClass))
+#define EMPATHY_IS_CELL_RENDERER_ACTIVATABLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EMPATHY_TYPE_CELL_RENDERER_ACTIVATABLE))
+#define EMPATHY_IS_CELL_RENDERER_ACTIVATABLE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), EMPATHY_TYPE_CELL_RENDERER_ACTIVATABLE))
+#define EMPATHY_CELL_RENDERER_ACTIVATABLE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), EMPATHY_TYPE_CELL_RENDERER_ACTIVATABLE, EmpathyCellRendererActivatableClass))
+
+typedef struct _EmpathyCellRendererActivatable EmpathyCellRendererActivatable;
+typedef struct _EmpathyCellRendererActivatableClass EmpathyCellRendererActivatableClass;
+
+struct _EmpathyCellRendererActivatable {
+ GtkCellRendererPixbuf parent;
+};
+
+struct _EmpathyCellRendererActivatableClass {
+ GtkCellRendererPixbufClass parent_class;
+};
+
+GType empathy_cell_renderer_activatable_get_type (void) G_GNUC_CONST;
+GtkCellRenderer *empathy_cell_renderer_activatable_new (void);
+
+G_END_DECLS
+
+#endif /* __EMPATHY_CELL_RENDERER_ACTIVATABLE_H__ */
+
diff --git a/gnome-2-22/libempathy-gtk/empathy-cell-renderer-expander.c b/gnome-2-22/libempathy-gtk/empathy-cell-renderer-expander.c
new file mode 100644
index 000000000..51930ab6a
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-cell-renderer-expander.c
@@ -0,0 +1,482 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2006-2007 Imendio AB
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * 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: Kristian Rietveld <kris@imendio.com>
+ */
+
+/* To do:
+ * - should probably cancel animation if model changes
+ * - need to handle case where node-in-animation is removed
+ * - it only handles a single animation at a time; but I guess users
+ * aren't fast enough to trigger two or more animations at once anyway :P
+ * (could guard for this by just cancelling the "old" animation, and
+ * start the new one).
+ */
+
+#include <gtk/gtktreeview.h>
+
+#include "empathy-cell-renderer-expander.h"
+
+#define GET_PRIV(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), EMPATHY_TYPE_CELL_RENDERER_EXPANDER, EmpathyCellRendererExpanderPriv))
+
+static void empathy_cell_renderer_expander_init (EmpathyCellRendererExpander *expander);
+static void empathy_cell_renderer_expander_class_init (EmpathyCellRendererExpanderClass *klass);
+static void empathy_cell_renderer_expander_get_property (GObject *object,
+ guint param_id,
+ GValue *value,
+ GParamSpec *pspec);
+static void empathy_cell_renderer_expander_set_property (GObject *object,
+ guint param_id,
+ const GValue *value,
+ GParamSpec *pspec);
+static void empathy_cell_renderer_expander_finalize (GObject *object);
+static void empathy_cell_renderer_expander_get_size (GtkCellRenderer *cell,
+ GtkWidget *widget,
+ GdkRectangle *cell_area,
+ gint *x_offset,
+ gint *y_offset,
+ gint *width,
+ gint *height);
+static void empathy_cell_renderer_expander_render (GtkCellRenderer *cell,
+ GdkWindow *window,
+ GtkWidget *widget,
+ GdkRectangle *background_area,
+ GdkRectangle *cell_area,
+ GdkRectangle *expose_area,
+ GtkCellRendererState flags);
+static gboolean empathy_cell_renderer_expander_activate (GtkCellRenderer *cell,
+ GdkEvent *event,
+ GtkWidget *widget,
+ const gchar *path,
+ GdkRectangle *background_area,
+ GdkRectangle *cell_area,
+ GtkCellRendererState flags);
+
+enum {
+ PROP_0,
+ PROP_EXPANDER_STYLE,
+ PROP_EXPANDER_SIZE,
+ PROP_ACTIVATABLE
+};
+
+typedef struct _EmpathyCellRendererExpanderPriv EmpathyCellRendererExpanderPriv;
+
+struct _EmpathyCellRendererExpanderPriv {
+ GtkExpanderStyle expander_style;
+ gint expander_size;
+
+ GtkTreeView *animation_view;
+ GtkTreeRowReference *animation_node;
+ GtkExpanderStyle animation_style;
+ guint animation_timeout;
+ GdkRectangle animation_area;
+
+ guint activatable : 1;
+ guint animation_expanding : 1;
+};
+
+G_DEFINE_TYPE (EmpathyCellRendererExpander, empathy_cell_renderer_expander, GTK_TYPE_CELL_RENDERER)
+
+static void
+empathy_cell_renderer_expander_init (EmpathyCellRendererExpander *expander)
+{
+ EmpathyCellRendererExpanderPriv *priv;
+
+ priv = GET_PRIV (expander);
+
+ priv->expander_style = GTK_EXPANDER_COLLAPSED;
+ priv->expander_size = 12;
+ priv->activatable = TRUE;
+ priv->animation_node = NULL;
+
+ GTK_CELL_RENDERER (expander)->xpad = 2;
+ GTK_CELL_RENDERER (expander)->ypad = 2;
+ GTK_CELL_RENDERER (expander)->mode = GTK_CELL_RENDERER_MODE_ACTIVATABLE;
+}
+
+static void
+empathy_cell_renderer_expander_class_init (EmpathyCellRendererExpanderClass *klass)
+{
+ GObjectClass *object_class;
+ GtkCellRendererClass *cell_class;
+
+ object_class = G_OBJECT_CLASS (klass);
+ cell_class = GTK_CELL_RENDERER_CLASS (klass);
+
+ object_class->finalize = empathy_cell_renderer_expander_finalize;
+
+ object_class->get_property = empathy_cell_renderer_expander_get_property;
+ object_class->set_property = empathy_cell_renderer_expander_set_property;
+
+ cell_class->get_size = empathy_cell_renderer_expander_get_size;
+ cell_class->render = empathy_cell_renderer_expander_render;
+ cell_class->activate = empathy_cell_renderer_expander_activate;
+
+ g_object_class_install_property (object_class,
+ PROP_EXPANDER_STYLE,
+ g_param_spec_enum ("expander-style",
+ "Expander Style",
+ "Style to use when painting the expander",
+ GTK_TYPE_EXPANDER_STYLE,
+ GTK_EXPANDER_COLLAPSED,
+ G_PARAM_READWRITE));
+
+ g_object_class_install_property (object_class,
+ PROP_EXPANDER_SIZE,
+ g_param_spec_int ("expander-size",
+ "Expander Size",
+ "The size of the expander",
+ 0,
+ G_MAXINT,
+ 12,
+ G_PARAM_READWRITE));
+
+ g_object_class_install_property (object_class,
+ PROP_ACTIVATABLE,
+ g_param_spec_boolean ("activatable",
+ "Activatable",
+ "The expander can be activated",
+ TRUE,
+ G_PARAM_READWRITE));
+
+ g_type_class_add_private (object_class, sizeof (EmpathyCellRendererExpanderPriv));
+}
+
+static void
+empathy_cell_renderer_expander_get_property (GObject *object,
+ guint param_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ EmpathyCellRendererExpander *expander;
+ EmpathyCellRendererExpanderPriv *priv;
+
+ expander = EMPATHY_CELL_RENDERER_EXPANDER (object);
+ priv = GET_PRIV (expander);
+
+ switch (param_id) {
+ case PROP_EXPANDER_STYLE:
+ g_value_set_enum (value, priv->expander_style);
+ break;
+
+ case PROP_EXPANDER_SIZE:
+ g_value_set_int (value, priv->expander_size);
+ break;
+
+ case PROP_ACTIVATABLE:
+ g_value_set_boolean (value, priv->activatable);
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
+ break;
+ }
+}
+
+static void
+empathy_cell_renderer_expander_set_property (GObject *object,
+ guint param_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ EmpathyCellRendererExpander *expander;
+ EmpathyCellRendererExpanderPriv *priv;
+
+ expander = EMPATHY_CELL_RENDERER_EXPANDER (object);
+ priv = GET_PRIV (expander);
+
+ switch (param_id) {
+ case PROP_EXPANDER_STYLE:
+ priv->expander_style = g_value_get_enum (value);
+ break;
+
+ case PROP_EXPANDER_SIZE:
+ priv->expander_size = g_value_get_int (value);
+ break;
+
+ case PROP_ACTIVATABLE:
+ priv->activatable = g_value_get_boolean (value);
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
+ break;
+ }
+}
+
+static void
+empathy_cell_renderer_expander_finalize (GObject *object)
+{
+ EmpathyCellRendererExpanderPriv *priv;
+
+ priv = GET_PRIV (object);
+
+ if (priv->animation_timeout) {
+ g_source_remove (priv->animation_timeout);
+ priv->animation_timeout = 0;
+ }
+
+ if (priv->animation_node) {
+ gtk_tree_row_reference_free (priv->animation_node);
+ }
+
+ (* G_OBJECT_CLASS (empathy_cell_renderer_expander_parent_class)->finalize) (object);
+}
+
+GtkCellRenderer *
+empathy_cell_renderer_expander_new (void)
+{
+ return g_object_new (EMPATHY_TYPE_CELL_RENDERER_EXPANDER, NULL);
+}
+
+static void
+empathy_cell_renderer_expander_get_size (GtkCellRenderer *cell,
+ GtkWidget *widget,
+ GdkRectangle *cell_area,
+ gint *x_offset,
+ gint *y_offset,
+ gint *width,
+ gint *height)
+{
+ EmpathyCellRendererExpander *expander;
+ EmpathyCellRendererExpanderPriv *priv;
+
+ expander = (EmpathyCellRendererExpander*) cell;
+ priv = GET_PRIV (expander);
+
+ if (cell_area) {
+ if (x_offset) {
+ *x_offset = cell->xalign * (cell_area->width - (priv->expander_size + (2 * cell->xpad)));
+ *x_offset = MAX (*x_offset, 0);
+ }
+
+ if (y_offset) {
+ *y_offset = cell->yalign * (cell_area->height - (priv->expander_size + (2 * cell->ypad)));
+ *y_offset = MAX (*y_offset, 0);
+ }
+ } else {
+ if (x_offset)
+ *x_offset = 0;
+
+ if (y_offset)
+ *y_offset = 0;
+ }
+
+ if (width)
+ *width = cell->xpad * 2 + priv->expander_size;
+
+ if (height)
+ *height = cell->ypad * 2 + priv->expander_size;
+}
+
+static void
+empathy_cell_renderer_expander_render (GtkCellRenderer *cell,
+ GdkWindow *window,
+ GtkWidget *widget,
+ GdkRectangle *background_area,
+ GdkRectangle *cell_area,
+ GdkRectangle *expose_area,
+ GtkCellRendererState flags)
+{
+ EmpathyCellRendererExpander *expander;
+ EmpathyCellRendererExpanderPriv *priv;
+ GtkExpanderStyle expander_style;
+ gint x_offset, y_offset;
+
+ expander = (EmpathyCellRendererExpander*) cell;
+ priv = GET_PRIV (expander);
+
+ if (priv->animation_node) {
+ GtkTreePath *path;
+ GdkRectangle rect;
+
+ /* Not sure if I like this ... */
+ path = gtk_tree_row_reference_get_path (priv->animation_node);
+ gtk_tree_view_get_background_area (priv->animation_view, path,
+ NULL, &rect);
+ gtk_tree_path_free (path);
+
+ if (background_area->y == rect.y)
+ expander_style = priv->animation_style;
+ else
+ expander_style = priv->expander_style;
+ } else
+ expander_style = priv->expander_style;
+
+ empathy_cell_renderer_expander_get_size (cell, widget, cell_area,
+ &x_offset, &y_offset,
+ NULL, NULL);
+
+ gtk_paint_expander (widget->style,
+ window,
+ GTK_STATE_NORMAL,
+ expose_area,
+ widget,
+ "treeview",
+ cell_area->x + x_offset + cell->xpad + priv->expander_size / 2,
+ cell_area->y + y_offset + cell->ypad + priv->expander_size / 2,
+ expander_style);
+}
+
+static void
+invalidate_node (GtkTreeView *tree_view,
+ GtkTreePath *path)
+{
+ GdkWindow *bin_window;
+ GdkRectangle rect;
+
+ bin_window = gtk_tree_view_get_bin_window (tree_view);
+
+ gtk_tree_view_get_background_area (tree_view, path, NULL, &rect);
+
+ rect.x = 0;
+ rect.width = GTK_WIDGET (tree_view)->allocation.width;
+
+ gdk_window_invalidate_rect (bin_window, &rect, TRUE);
+}
+
+static gboolean
+do_animation (EmpathyCellRendererExpander *expander)
+{
+ EmpathyCellRendererExpanderPriv *priv;
+ GtkTreePath *path;
+ gboolean done = FALSE;
+
+ priv = GET_PRIV (expander);
+
+ if (priv->animation_expanding) {
+ if (priv->animation_style == GTK_EXPANDER_SEMI_COLLAPSED)
+ priv->animation_style = GTK_EXPANDER_SEMI_EXPANDED;
+ else if (priv->animation_style == GTK_EXPANDER_SEMI_EXPANDED) {
+ priv->animation_style = GTK_EXPANDER_EXPANDED;
+ done = TRUE;
+ }
+ } else {
+ if (priv->animation_style == GTK_EXPANDER_SEMI_EXPANDED)
+ priv->animation_style = GTK_EXPANDER_SEMI_COLLAPSED;
+ else if (priv->animation_style == GTK_EXPANDER_SEMI_COLLAPSED) {
+ priv->animation_style = GTK_EXPANDER_COLLAPSED;
+ done = TRUE;
+ }
+ }
+
+ path = gtk_tree_row_reference_get_path (priv->animation_node);
+ invalidate_node (priv->animation_view, path);
+ gtk_tree_path_free (path);
+
+ if (done) {
+ gtk_tree_row_reference_free (priv->animation_node);
+ priv->animation_node = NULL;
+ priv->animation_timeout = 0;
+ }
+
+ return !done;
+}
+
+static gboolean
+animation_timeout (gpointer data)
+{
+ gboolean retval;
+
+ GDK_THREADS_ENTER ();
+
+ retval = do_animation (data);
+
+ GDK_THREADS_LEAVE ();
+
+ return retval;
+}
+
+static void
+empathy_cell_renderer_expander_start_animation (EmpathyCellRendererExpander *expander,
+ GtkTreeView *tree_view,
+ GtkTreePath *path,
+ gboolean expanding,
+ GdkRectangle *background_area)
+{
+ EmpathyCellRendererExpanderPriv *priv;
+
+ priv = GET_PRIV (expander);
+
+ if (expanding) {
+ priv->animation_style = GTK_EXPANDER_SEMI_COLLAPSED;
+ } else {
+ priv->animation_style = GTK_EXPANDER_SEMI_EXPANDED;
+ }
+
+ invalidate_node (tree_view, path);
+
+ priv->animation_expanding = expanding;
+ priv->animation_view = tree_view;
+ priv->animation_node = gtk_tree_row_reference_new (gtk_tree_view_get_model (tree_view), path);
+ priv->animation_timeout = g_timeout_add (50, animation_timeout, expander);
+}
+
+static gboolean
+empathy_cell_renderer_expander_activate (GtkCellRenderer *cell,
+ GdkEvent *event,
+ GtkWidget *widget,
+ const gchar *path_string,
+ GdkRectangle *background_area,
+ GdkRectangle *cell_area,
+ GtkCellRendererState flags)
+{
+ EmpathyCellRendererExpander *expander;
+ EmpathyCellRendererExpanderPriv *priv;
+ GtkTreePath *path;
+ gboolean animate;
+ gboolean expanding;
+
+ expander = EMPATHY_CELL_RENDERER_EXPANDER (cell);
+ priv = GET_PRIV (cell);
+
+ if (!GTK_IS_TREE_VIEW (widget) || !priv->activatable)
+ return FALSE;
+
+ path = gtk_tree_path_new_from_string (path_string);
+
+ if (gtk_tree_path_get_depth (path) > 1) {
+ gtk_tree_path_free (path);
+ return TRUE;
+ }
+
+ g_object_get (gtk_widget_get_settings (GTK_WIDGET (widget)),
+ "gtk-enable-animations", &animate,
+ NULL);
+
+ if (gtk_tree_view_row_expanded (GTK_TREE_VIEW (widget), path)) {
+ gtk_tree_view_collapse_row (GTK_TREE_VIEW (widget), path);
+ expanding = FALSE;
+ } else {
+ gtk_tree_view_expand_row (GTK_TREE_VIEW (widget), path, FALSE);
+ expanding = TRUE;
+ }
+
+ if (animate) {
+ empathy_cell_renderer_expander_start_animation (expander,
+ GTK_TREE_VIEW (widget),
+ path,
+ expanding,
+ background_area);
+ }
+
+ gtk_tree_path_free (path);
+
+ return TRUE;
+}
diff --git a/gnome-2-22/libempathy-gtk/empathy-cell-renderer-expander.h b/gnome-2-22/libempathy-gtk/empathy-cell-renderer-expander.h
new file mode 100644
index 000000000..d7e5f74b0
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-cell-renderer-expander.h
@@ -0,0 +1,59 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2006-2007 Imendio AB
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * 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: Kristian Rietveld <kris@imendio.com>
+ */
+
+#ifndef __EMPATHY_CELL_RENDERER_EXPANDER_H__
+#define __EMPATHY_CELL_RENDERER_EXPANDER_H__
+
+#include <gtk/gtkcellrenderer.h>
+
+G_BEGIN_DECLS
+
+#define EMPATHY_TYPE_CELL_RENDERER_EXPANDER (empathy_cell_renderer_expander_get_type ())
+#define EMPATHY_CELL_RENDERER_EXPANDER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EMPATHY_TYPE_CELL_RENDERER_EXPANDER, EmpathyCellRendererExpander))
+#define EMPATHY_CELL_RENDERER_EXPANDER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), EMPATHY_TYPE_CELL_RENDERER_EXPANDER, EmpathyCellRendererExpanderClass))
+#define EMPATHY_IS_CELL_RENDERER_EXPANDER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EMPATHY_TYPE_CELL_RENDERER_EXPANDER))
+#define EMPATHY_IS_CELL_RENDERER_EXPANDER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), EMPATHY_TYPE_CELL_RENDERER_EXPANDER))
+#define EMPATHY_CELL_RENDERER_EXPANDER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), EMPATHY_TYPE_CELL_RENDERER_EXPANDER, EmpathyCellRendererExpanderClass))
+
+typedef struct _EmpathyCellRendererExpander EmpathyCellRendererExpander;
+typedef struct _EmpathyCellRendererExpanderClass EmpathyCellRendererExpanderClass;
+
+struct _EmpathyCellRendererExpander {
+ GtkCellRenderer parent;
+};
+
+struct _EmpathyCellRendererExpanderClass {
+ GtkCellRendererClass parent_class;
+
+ /* Padding for future expansion */
+ void (*_gtk_reserved1) (void);
+ void (*_gtk_reserved2) (void);
+ void (*_gtk_reserved3) (void);
+ void (*_gtk_reserved4) (void);
+};
+
+GType empathy_cell_renderer_expander_get_type (void) G_GNUC_CONST;
+GtkCellRenderer *empathy_cell_renderer_expander_new (void);
+
+G_END_DECLS
+
+#endif /* __EMPATHY_CELL_RENDERER_EXPANDER_H__ */
diff --git a/gnome-2-22/libempathy-gtk/empathy-cell-renderer-text.c b/gnome-2-22/libempathy-gtk/empathy-cell-renderer-text.c
new file mode 100644
index 000000000..d48de32b8
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-cell-renderer-text.c
@@ -0,0 +1,368 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2004-2007 Imendio AB
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * 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: Mikael Hallendal <micke@imendio.com>
+ */
+
+#include "config.h"
+
+#include <string.h>
+
+#include "empathy-cell-renderer-text.h"
+
+#define GET_PRIV(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), EMPATHY_TYPE_CELL_RENDERER_TEXT, EmpathyCellRendererTextPriv))
+
+struct _EmpathyCellRendererTextPriv {
+ gchar *name;
+ gchar *status;
+ gboolean is_group;
+
+ gboolean is_valid;
+ gboolean is_selected;
+
+ gboolean show_status;
+};
+
+static void empathy_cell_renderer_text_class_init (EmpathyCellRendererTextClass *klass);
+static void empathy_cell_renderer_text_init (EmpathyCellRendererText *cell);
+static void cell_renderer_text_finalize (GObject *object);
+static void cell_renderer_text_get_property (GObject *object,
+ guint param_id,
+ GValue *value,
+ GParamSpec *pspec);
+static void cell_renderer_text_set_property (GObject *object,
+ guint param_id,
+ const GValue *value,
+ GParamSpec *pspec);
+static void cell_renderer_text_get_size (GtkCellRenderer *cell,
+ GtkWidget *widget,
+ GdkRectangle *cell_area,
+ gint *x_offset,
+ gint *y_offset,
+ gint *width,
+ gint *height);
+static void cell_renderer_text_render (GtkCellRenderer *cell,
+ GdkDrawable *window,
+ GtkWidget *widget,
+ GdkRectangle *background_area,
+ GdkRectangle *cell_area,
+ GdkRectangle *expose_area,
+ GtkCellRendererState flags);
+static void cell_renderer_text_update_text (EmpathyCellRendererText *cell,
+ GtkWidget *widget,
+ gboolean selected);
+
+/* Properties */
+enum {
+ PROP_0,
+ PROP_NAME,
+ PROP_STATUS,
+ PROP_IS_GROUP,
+ PROP_SHOW_STATUS,
+};
+
+G_DEFINE_TYPE (EmpathyCellRendererText, empathy_cell_renderer_text, GTK_TYPE_CELL_RENDERER_TEXT);
+
+static void
+empathy_cell_renderer_text_class_init (EmpathyCellRendererTextClass *klass)
+{
+ GObjectClass *object_class;
+ GtkCellRendererClass *cell_class;
+
+ object_class = G_OBJECT_CLASS (klass);
+ cell_class = GTK_CELL_RENDERER_CLASS (klass);
+
+ object_class->finalize = cell_renderer_text_finalize;
+
+ object_class->get_property = cell_renderer_text_get_property;
+ object_class->set_property = cell_renderer_text_set_property;
+
+ cell_class->get_size = cell_renderer_text_get_size;
+ cell_class->render = cell_renderer_text_render;
+
+ g_object_class_install_property (object_class,
+ PROP_NAME,
+ g_param_spec_string ("name",
+ "Name",
+ "Contact name",
+ NULL,
+ G_PARAM_READWRITE));
+ g_object_class_install_property (object_class,
+ PROP_STATUS,
+ g_param_spec_string ("status",
+ "Status",
+ "Contact status string",
+ NULL,
+ G_PARAM_READWRITE));
+ g_object_class_install_property (object_class,
+ PROP_IS_GROUP,
+ g_param_spec_boolean ("is_group",
+ "Is group",
+ "Whether this cell is a group",
+ FALSE,
+ G_PARAM_READWRITE));
+ g_object_class_install_property (object_class,
+ PROP_SHOW_STATUS,
+ g_param_spec_boolean ("show-status",
+ "Show status",
+ "Whether to show the status line",
+ TRUE,
+ G_PARAM_READWRITE));
+
+ g_type_class_add_private (object_class, sizeof (EmpathyCellRendererTextPriv));
+}
+
+static void
+empathy_cell_renderer_text_init (EmpathyCellRendererText *cell)
+{
+ EmpathyCellRendererTextPriv *priv;
+
+ priv = GET_PRIV (cell);
+
+ g_object_set (cell,
+ "ellipsize", PANGO_ELLIPSIZE_END,
+ NULL);
+
+ priv->name = g_strdup ("");
+ priv->status = g_strdup ("");
+ priv->show_status = TRUE;
+}
+
+static void
+cell_renderer_text_finalize (GObject *object)
+{
+ EmpathyCellRendererText *cell;
+ EmpathyCellRendererTextPriv *priv;
+
+ cell = EMPATHY_CELL_RENDERER_TEXT (object);
+ priv = GET_PRIV (cell);
+
+ g_free (priv->name);
+ g_free (priv->status);
+
+ (G_OBJECT_CLASS (empathy_cell_renderer_text_parent_class)->finalize) (object);
+}
+
+static void
+cell_renderer_text_get_property (GObject *object,
+ guint param_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ EmpathyCellRendererText *cell;
+ EmpathyCellRendererTextPriv *priv;
+
+ cell = EMPATHY_CELL_RENDERER_TEXT (object);
+ priv = GET_PRIV (cell);
+
+ switch (param_id) {
+ case PROP_NAME:
+ g_value_set_string (value, priv->name);
+ break;
+ case PROP_STATUS:
+ g_value_set_string (value, priv->status);
+ break;
+ case PROP_IS_GROUP:
+ g_value_set_boolean (value, priv->is_group);
+ break;
+ case PROP_SHOW_STATUS:
+ g_value_set_boolean (value, priv->show_status);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
+ break;
+ }
+}
+
+static void
+cell_renderer_text_set_property (GObject *object,
+ guint param_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ EmpathyCellRendererText *cell;
+ EmpathyCellRendererTextPriv *priv;
+ const gchar *str;
+
+ cell = EMPATHY_CELL_RENDERER_TEXT (object);
+ priv = GET_PRIV (cell);
+
+ switch (param_id) {
+ case PROP_NAME:
+ g_free (priv->name);
+ str = g_value_get_string (value);
+ priv->name = g_strdup (str ? str : "");
+ g_strdelimit (priv->name, "\n\r\t", ' ');
+ priv->is_valid = FALSE;
+ break;
+ case PROP_STATUS:
+ g_free (priv->status);
+ str = g_value_get_string (value);
+ priv->status = g_strdup (str ? str : "");
+ g_strdelimit (priv->status, "\n\r\t", ' ');
+ priv->is_valid = FALSE;
+ break;
+ case PROP_IS_GROUP:
+ priv->is_group = g_value_get_boolean (value);
+ priv->is_valid = FALSE;
+ break;
+ case PROP_SHOW_STATUS:
+ priv->show_status = g_value_get_boolean (value);
+ priv->is_valid = FALSE;
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
+ break;
+ }
+}
+
+static void
+cell_renderer_text_get_size (GtkCellRenderer *cell,
+ GtkWidget *widget,
+ GdkRectangle *cell_area,
+ gint *x_offset,
+ gint *y_offset,
+ gint *width,
+ gint *height)
+{
+ EmpathyCellRendererText *celltext;
+ EmpathyCellRendererTextPriv *priv;
+
+ celltext = EMPATHY_CELL_RENDERER_TEXT (cell);
+ priv = GET_PRIV (cell);
+
+ /* Only update if not already valid so we get the right size. */
+ cell_renderer_text_update_text (celltext, widget, priv->is_selected);
+
+ (GTK_CELL_RENDERER_CLASS (empathy_cell_renderer_text_parent_class)->get_size) (cell, widget,
+ cell_area,
+ x_offset, y_offset,
+ width, height);
+}
+
+static void
+cell_renderer_text_render (GtkCellRenderer *cell,
+ GdkWindow *window,
+ GtkWidget *widget,
+ GdkRectangle *background_area,
+ GdkRectangle *cell_area,
+ GdkRectangle *expose_area,
+ GtkCellRendererState flags)
+{
+ EmpathyCellRendererText *celltext;
+
+ celltext = EMPATHY_CELL_RENDERER_TEXT (cell);
+
+ cell_renderer_text_update_text (celltext,
+ widget,
+ (flags & GTK_CELL_RENDERER_SELECTED));
+
+ (GTK_CELL_RENDERER_CLASS (empathy_cell_renderer_text_parent_class)->render) (
+ cell, window,
+ widget,
+ background_area,
+ cell_area,
+ expose_area, flags);
+}
+
+static void
+cell_renderer_text_update_text (EmpathyCellRendererText *cell,
+ GtkWidget *widget,
+ gboolean selected)
+{
+ EmpathyCellRendererTextPriv *priv;
+ PangoAttrList *attr_list;
+ PangoAttribute *attr_color, *attr_style, *attr_size;
+ GtkStyle *style;
+ gchar *str;
+
+ priv = GET_PRIV (cell);
+
+ if (priv->is_valid && priv->is_selected == selected) {
+ return;
+ }
+
+ if (priv->is_group) {
+ g_object_set (cell,
+ "visible", TRUE,
+ "weight", PANGO_WEIGHT_BOLD,
+ "text", priv->name,
+ "attributes", NULL,
+ "xpad", 1,
+ "ypad", 1,
+ NULL);
+
+ priv->is_selected = selected;
+ priv->is_valid = TRUE;
+ return;
+ }
+
+ style = gtk_widget_get_style (widget);
+
+ attr_list = pango_attr_list_new ();
+
+ attr_style = pango_attr_style_new (PANGO_STYLE_ITALIC);
+ attr_style->start_index = strlen (priv->name) + 1;
+ attr_style->end_index = -1;
+ pango_attr_list_insert (attr_list, attr_style);
+
+ if (!selected) {
+ GdkColor color;
+
+ color = style->text_aa[GTK_STATE_NORMAL];
+
+ attr_color = pango_attr_foreground_new (color.red, color.green, color.blue);
+ attr_color->start_index = attr_style->start_index;
+ attr_color->end_index = -1;
+ pango_attr_list_insert (attr_list, attr_color);
+ }
+
+ attr_size = pango_attr_size_new (pango_font_description_get_size (style->font_desc) / 1.2);
+
+ attr_size->start_index = attr_style->start_index;
+ attr_size->end_index = -1;
+ pango_attr_list_insert (attr_list, attr_size);
+
+ if (!priv->status || !priv->status[0] || !priv->show_status) {
+ str = g_strdup (priv->name);
+ } else {
+ str = g_strdup_printf ("%s\n%s", priv->name, priv->status);
+ }
+
+ g_object_set (cell,
+ "visible", TRUE,
+ "weight", PANGO_WEIGHT_NORMAL,
+ "text", str,
+ "attributes", attr_list,
+ "xpad", 0,
+ "ypad", 1,
+ NULL);
+
+ g_free (str);
+ pango_attr_list_unref (attr_list);
+
+ priv->is_selected = selected;
+ priv->is_valid = TRUE;
+}
+
+GtkCellRenderer *
+empathy_cell_renderer_text_new (void)
+{
+ return g_object_new (EMPATHY_TYPE_CELL_RENDERER_TEXT, NULL);
+}
diff --git a/gnome-2-22/libempathy-gtk/empathy-cell-renderer-text.h b/gnome-2-22/libempathy-gtk/empathy-cell-renderer-text.h
new file mode 100644
index 000000000..76cef3120
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-cell-renderer-text.h
@@ -0,0 +1,56 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2004-2007 Imendio AB
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * 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: Mikael Hallendal <micke@imendio.com>
+ */
+
+#ifndef __EMPATHY_CELL_RENDERER_TEXT_H__
+#define __EMPATHY_CELL_RENDERER_TEXT_H__
+
+#include <gtk/gtkcellrenderertext.h>
+
+G_BEGIN_DECLS
+
+#define EMPATHY_TYPE_CELL_RENDERER_TEXT (empathy_cell_renderer_text_get_type ())
+#define EMPATHY_CELL_RENDERER_TEXT(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), EMPATHY_TYPE_CELL_RENDERER_TEXT, EmpathyCellRendererText))
+#define EMPATHY_CELL_RENDERER_TEXT_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), EMPATHY_TYPE_CELL_RENDERER_TEXT, EmpathyCellRendererTextClass))
+#define EMPATHY_IS_CELL_RENDERER_TEXT(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), EMPATHY_TYPE_CELL_RENDERER_TEXT))
+#define EMPATHY_IS_CELL_RENDERER_TEXT_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), EMPATHY_TYPE_CELL_RENDERER_TEXT))
+#define EMPATHY_CELL_RENDERER_TEXT_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), EMPATHY_TYPE_CELL_RENDERER_TEXT, EmpathyCellRendererTextClass))
+
+typedef struct _EmpathyCellRendererText EmpathyCellRendererText;
+typedef struct _EmpathyCellRendererTextClass EmpathyCellRendererTextClass;
+typedef struct _EmpathyCellRendererTextPriv EmpathyCellRendererTextPriv;
+
+struct _EmpathyCellRendererText {
+ GtkCellRendererText parent;
+
+ EmpathyCellRendererTextPriv *priv;
+};
+
+struct _EmpathyCellRendererTextClass {
+ GtkCellRendererTextClass parent_class;
+};
+
+GType empathy_cell_renderer_text_get_type (void) G_GNUC_CONST;
+GtkCellRenderer * empathy_cell_renderer_text_new (void);
+
+G_END_DECLS
+
+#endif /* __EMPATHY_CELL_RENDERER_TEXT_H__ */
diff --git a/gnome-2-22/libempathy-gtk/empathy-chat-view.c b/gnome-2-22/libempathy-gtk/empathy-chat-view.c
new file mode 100644
index 000000000..f4ad7f316
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-chat-view.c
@@ -0,0 +1,1570 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2002-2007 Imendio AB
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * 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: Mikael Hallendal <micke@imendio.com>
+ * Richard Hult <richard@imendio.com>
+ * Martyn Russell <martyn@imendio.com>
+ */
+
+#include "config.h"
+
+#include <sys/types.h>
+#include <string.h>
+#include <time.h>
+
+#include <glib/gi18n.h>
+#include <gtk/gtkbutton.h>
+#include <gtk/gtkimage.h>
+#include <gtk/gtkmenu.h>
+#include <gtk/gtkmenuitem.h>
+#include <gtk/gtkimagemenuitem.h>
+#include <gtk/gtkstock.h>
+#include <gtk/gtkscrolledwindow.h>
+#include <gtk/gtksizegroup.h>
+#include <glade/glade.h>
+
+#include <telepathy-glib/util.h>
+#include <libmissioncontrol/mc-account.h>
+
+#include <libempathy/empathy-utils.h>
+#include <libempathy/empathy-debug.h>
+
+#include "empathy-chat-view.h"
+#include "empathy-chat.h"
+#include "empathy-conf.h"
+#include "empathy-preferences.h"
+#include "empathy-theme-manager.h"
+#include "empathy-ui-utils.h"
+#include "empathy-smiley-manager.h"
+
+#define DEBUG_DOMAIN "ChatView"
+
+/* Number of seconds between timestamps when using normal mode, 5 minutes. */
+#define TIMESTAMP_INTERVAL 300
+
+#define MAX_LINES 800
+#define MAX_SCROLL_TIME 0.4 /* seconds */
+#define SCROLL_DELAY 33 /* milliseconds */
+
+#define GET_PRIV(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), EMPATHY_TYPE_CHAT_VIEW, EmpathyChatViewPriv))
+
+struct _EmpathyChatViewPriv {
+ GtkTextBuffer *buffer;
+
+ EmpathyTheme *theme;
+
+ time_t last_timestamp;
+ EmpathyChatViewBlock last_block_type;
+
+ gboolean allow_scrolling;
+ guint scroll_timeout;
+ GTimer *scroll_time;
+ gboolean is_group_chat;
+
+ GtkTextMark *find_mark_previous;
+ GtkTextMark *find_mark_next;
+ gboolean find_wrapped;
+ gboolean find_last_direction;
+
+ /* This is for the group chat so we know if the "other" last contact
+ * changed, so we know whether to insert a header or not.
+ */
+ EmpathyContact *last_contact;
+
+ guint notify_system_fonts_id;
+ guint notify_show_avatars_id;
+};
+
+static void empathy_chat_view_class_init (EmpathyChatViewClass *klass);
+static void empathy_chat_view_init (EmpathyChatView *view);
+static void chat_view_finalize (GObject *object);
+static gboolean chat_view_drag_motion (GtkWidget *widget,
+ GdkDragContext *context,
+ gint x,
+ gint y,
+ guint time);
+static void chat_view_size_allocate (GtkWidget *widget,
+ GtkAllocation *alloc);
+static void chat_view_setup_tags (EmpathyChatView *view);
+static void chat_view_system_font_update (EmpathyChatView *view);
+static void chat_view_notify_system_font_cb (EmpathyConf *conf,
+ const gchar *key,
+ gpointer user_data);
+static void chat_view_notify_show_avatars_cb (EmpathyConf *conf,
+ const gchar *key,
+ gpointer user_data);
+static void chat_view_populate_popup (EmpathyChatView *view,
+ GtkMenu *menu,
+ gpointer user_data);
+static gboolean chat_view_event_cb (EmpathyChatView *view,
+ GdkEventMotion *event,
+ GtkTextTag *tag);
+static gboolean chat_view_url_event_cb (GtkTextTag *tag,
+ GObject *object,
+ GdkEvent *event,
+ GtkTextIter *iter,
+ GtkTextBuffer *buffer);
+static void chat_view_open_address_cb (GtkMenuItem *menuitem,
+ const gchar *url);
+static void chat_view_copy_address_cb (GtkMenuItem *menuitem,
+ const gchar *url);
+static void chat_view_clear_view_cb (GtkMenuItem *menuitem,
+ EmpathyChatView *view);
+static gboolean chat_view_is_scrolled_down (EmpathyChatView *view);
+static void chat_view_theme_changed_cb (EmpathyThemeManager *manager,
+ EmpathyChatView *view);
+static void chat_view_theme_notify_cb (EmpathyTheme *theme,
+ GParamSpec *param,
+ EmpathyChatView *view);
+
+G_DEFINE_TYPE (EmpathyChatView, empathy_chat_view, GTK_TYPE_TEXT_VIEW);
+
+static void
+empathy_chat_view_class_init (EmpathyChatViewClass *klass)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+ GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
+
+ object_class->finalize = chat_view_finalize;
+ widget_class->size_allocate = chat_view_size_allocate;
+ widget_class->drag_motion = chat_view_drag_motion;
+
+ g_type_class_add_private (object_class, sizeof (EmpathyChatViewPriv));
+}
+
+static void
+empathy_chat_view_init (EmpathyChatView *view)
+{
+ EmpathyChatViewPriv *priv;
+ gboolean show_avatars;
+
+ priv = GET_PRIV (view);
+
+ priv->buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
+
+ priv->last_block_type = EMPATHY_CHAT_VIEW_BLOCK_NONE;
+ priv->last_timestamp = 0;
+
+ priv->allow_scrolling = TRUE;
+
+ priv->is_group_chat = FALSE;
+
+ g_object_set (view,
+ "wrap-mode", GTK_WRAP_WORD_CHAR,
+ "editable", FALSE,
+ "cursor-visible", FALSE,
+ NULL);
+
+ priv->notify_system_fonts_id =
+ empathy_conf_notify_add (empathy_conf_get (),
+ "/desktop/gnome/interface/document_font_name",
+ chat_view_notify_system_font_cb,
+ view);
+ chat_view_system_font_update (view);
+
+ priv->notify_show_avatars_id =
+ empathy_conf_notify_add (empathy_conf_get (),
+ EMPATHY_PREFS_UI_SHOW_AVATARS,
+ chat_view_notify_show_avatars_cb,
+ view);
+
+ chat_view_setup_tags (view);
+
+ empathy_theme_manager_apply_saved (empathy_theme_manager_get (), view);
+
+ show_avatars = FALSE;
+ empathy_conf_get_bool (empathy_conf_get (),
+ EMPATHY_PREFS_UI_SHOW_AVATARS,
+ &show_avatars);
+
+ empathy_theme_set_show_avatars (priv->theme, show_avatars);
+
+ g_signal_connect (view,
+ "populate-popup",
+ G_CALLBACK (chat_view_populate_popup),
+ NULL);
+
+ g_signal_connect_object (empathy_theme_manager_get (),
+ "theme-changed",
+ G_CALLBACK (chat_view_theme_changed_cb),
+ view,
+ 0);
+}
+
+static void
+chat_view_finalize (GObject *object)
+{
+ EmpathyChatView *view;
+ EmpathyChatViewPriv *priv;
+
+ view = EMPATHY_CHAT_VIEW (object);
+ priv = GET_PRIV (view);
+
+ empathy_debug (DEBUG_DOMAIN, "finalize: %p", object);
+
+ empathy_conf_notify_remove (empathy_conf_get (), priv->notify_system_fonts_id);
+ empathy_conf_notify_remove (empathy_conf_get (), priv->notify_show_avatars_id);
+
+ if (priv->last_contact) {
+ g_object_unref (priv->last_contact);
+ }
+ if (priv->scroll_time) {
+ g_timer_destroy (priv->scroll_time);
+ }
+ if (priv->scroll_timeout) {
+ g_source_remove (priv->scroll_timeout);
+ }
+
+ if (priv->theme) {
+ g_signal_handlers_disconnect_by_func (priv->theme,
+ chat_view_theme_notify_cb,
+ view);
+ g_object_unref (priv->theme);
+ }
+
+ G_OBJECT_CLASS (empathy_chat_view_parent_class)->finalize (object);
+}
+
+static gboolean
+chat_view_drag_motion (GtkWidget *widget,
+ GdkDragContext *context,
+ gint x,
+ gint y,
+ guint time)
+{
+ /* Don't handle drag motion, since we don't want the view to scroll as
+ * the result of dragging something across it.
+ */
+
+ return FALSE;
+}
+
+static void
+chat_view_size_allocate (GtkWidget *widget,
+ GtkAllocation *alloc)
+{
+ gboolean down;
+
+ down = chat_view_is_scrolled_down (EMPATHY_CHAT_VIEW (widget));
+
+ GTK_WIDGET_CLASS (empathy_chat_view_parent_class)->size_allocate (widget, alloc);
+
+ if (down) {
+ GtkAdjustment *adj;
+
+ adj = GTK_TEXT_VIEW (widget)->vadjustment;
+ gtk_adjustment_set_value (adj, adj->upper - adj->page_size);
+ }
+}
+
+static void
+chat_view_setup_tags (EmpathyChatView *view)
+{
+ EmpathyChatViewPriv *priv;
+ GtkTextTag *tag;
+
+ priv = GET_PRIV (view);
+
+ gtk_text_buffer_create_tag (priv->buffer,
+ "cut",
+ NULL);
+
+ /* FIXME: Move to the theme and come up with something that looks a bit
+ * nicer.
+ */
+ gtk_text_buffer_create_tag (priv->buffer,
+ "highlight",
+ "background", "yellow",
+ NULL);
+
+ tag = gtk_text_buffer_create_tag (priv->buffer,
+ "link",
+ NULL);
+
+ g_signal_connect (tag,
+ "event",
+ G_CALLBACK (chat_view_url_event_cb),
+ priv->buffer);
+
+ g_signal_connect (view,
+ "motion-notify-event",
+ G_CALLBACK (chat_view_event_cb),
+ tag);
+}
+
+static void
+chat_view_system_font_update (EmpathyChatView *view)
+{
+ PangoFontDescription *font_description = NULL;
+ gchar *font_name;
+
+ if (empathy_conf_get_string (empathy_conf_get (),
+ "/desktop/gnome/interface/document_font_name",
+ &font_name) && font_name) {
+ font_description = pango_font_description_from_string (font_name);
+ g_free (font_name);
+ } else {
+ font_description = NULL;
+ }
+
+ gtk_widget_modify_font (GTK_WIDGET (view), font_description);
+
+ if (font_description) {
+ pango_font_description_free (font_description);
+ }
+}
+
+static void
+chat_view_notify_system_font_cb (EmpathyConf *conf,
+ const gchar *key,
+ gpointer user_data)
+{
+ EmpathyChatView *view;
+ EmpathyChatViewPriv *priv;
+ gboolean show_avatars = FALSE;
+
+ view = user_data;
+ priv = GET_PRIV (view);
+
+ chat_view_system_font_update (view);
+
+ /* Ugly, again, to adjust the vertical position of the nick... Will fix
+ * this when reworking the theme manager so that view register
+ * themselves with it instead of the other way around.
+ */
+ empathy_conf_get_bool (conf,
+ EMPATHY_PREFS_UI_SHOW_AVATARS,
+ &show_avatars);
+
+ empathy_theme_set_show_avatars (priv->theme, show_avatars);
+}
+
+static void
+chat_view_notify_show_avatars_cb (EmpathyConf *conf,
+ const gchar *key,
+ gpointer user_data)
+{
+ EmpathyChatView *view;
+ EmpathyChatViewPriv *priv;
+ gboolean show_avatars = FALSE;
+
+ view = user_data;
+ priv = GET_PRIV (view);
+
+ empathy_conf_get_bool (conf, key, &show_avatars);
+
+ empathy_theme_set_show_avatars (priv->theme, show_avatars);
+}
+
+static void
+chat_view_populate_popup (EmpathyChatView *view,
+ GtkMenu *menu,
+ gpointer user_data)
+{
+ EmpathyChatViewPriv *priv;
+ GtkTextTagTable *table;
+ GtkTextTag *tag;
+ gint x, y;
+ GtkTextIter iter, start, end;
+ GtkWidget *item;
+ gchar *str = NULL;
+
+ priv = GET_PRIV (view);
+
+ /* Clear menu item */
+ if (gtk_text_buffer_get_char_count (priv->buffer) > 0) {
+ item = gtk_menu_item_new ();
+ gtk_menu_shell_prepend (GTK_MENU_SHELL (menu), item);
+ gtk_widget_show (item);
+
+ item = gtk_image_menu_item_new_from_stock (GTK_STOCK_CLEAR, NULL);
+ gtk_menu_shell_prepend (GTK_MENU_SHELL (menu), item);
+ gtk_widget_show (item);
+
+ g_signal_connect (item,
+ "activate",
+ G_CALLBACK (chat_view_clear_view_cb),
+ view);
+ }
+
+ /* Link context menu items */
+ table = gtk_text_buffer_get_tag_table (priv->buffer);
+ tag = gtk_text_tag_table_lookup (table, "link");
+
+ gtk_widget_get_pointer (GTK_WIDGET (view), &x, &y);
+
+ gtk_text_view_window_to_buffer_coords (GTK_TEXT_VIEW (view),
+ GTK_TEXT_WINDOW_WIDGET,
+ x, y,
+ &x, &y);
+
+ gtk_text_view_get_iter_at_location (GTK_TEXT_VIEW (view), &iter, x, y);
+
+ start = end = iter;
+
+ if (gtk_text_iter_backward_to_tag_toggle (&start, tag) &&
+ gtk_text_iter_forward_to_tag_toggle (&end, tag)) {
+ str = gtk_text_buffer_get_text (priv->buffer,
+ &start, &end, FALSE);
+ }
+
+ if (G_STR_EMPTY (str)) {
+ g_free (str);
+ return;
+ }
+
+ /* NOTE: Set data just to get the string freed when not needed. */
+ g_object_set_data_full (G_OBJECT (menu),
+ "url", str,
+ (GDestroyNotify) g_free);
+
+ item = gtk_menu_item_new ();
+ gtk_menu_shell_prepend (GTK_MENU_SHELL (menu), item);
+ gtk_widget_show (item);
+
+ item = gtk_menu_item_new_with_mnemonic (_("_Copy Link Address"));
+ g_signal_connect (item,
+ "activate",
+ G_CALLBACK (chat_view_copy_address_cb),
+ str);
+ gtk_menu_shell_prepend (GTK_MENU_SHELL (menu), item);
+ gtk_widget_show (item);
+
+ item = gtk_menu_item_new_with_mnemonic (_("_Open Link"));
+ g_signal_connect (item,
+ "activate",
+ G_CALLBACK (chat_view_open_address_cb),
+ str);
+ gtk_menu_shell_prepend (GTK_MENU_SHELL (menu), item);
+ gtk_widget_show (item);
+}
+
+static gboolean
+chat_view_event_cb (EmpathyChatView *view,
+ GdkEventMotion *event,
+ GtkTextTag *tag)
+{
+ static GdkCursor *hand = NULL;
+ static GdkCursor *beam = NULL;
+ GtkTextWindowType type;
+ GtkTextIter iter;
+ GdkWindow *win;
+ gint x, y, buf_x, buf_y;
+
+ type = gtk_text_view_get_window_type (GTK_TEXT_VIEW (view),
+ event->window);
+
+ if (type != GTK_TEXT_WINDOW_TEXT) {
+ return FALSE;
+ }
+
+ /* Get where the pointer really is. */
+ win = gtk_text_view_get_window (GTK_TEXT_VIEW (view), type);
+ if (!win) {
+ return FALSE;
+ }
+
+ gdk_window_get_pointer (win, &x, &y, NULL);
+
+ /* Get the iter where the cursor is at */
+ gtk_text_view_window_to_buffer_coords (GTK_TEXT_VIEW (view), type,
+ x, y,
+ &buf_x, &buf_y);
+
+ gtk_text_view_get_iter_at_location (GTK_TEXT_VIEW (view),
+ &iter,
+ buf_x, buf_y);
+
+ if (gtk_text_iter_has_tag (&iter, tag)) {
+ if (!hand) {
+ hand = gdk_cursor_new (GDK_HAND2);
+ beam = gdk_cursor_new (GDK_XTERM);
+ }
+ gdk_window_set_cursor (win, hand);
+ } else {
+ if (!beam) {
+ beam = gdk_cursor_new (GDK_XTERM);
+ }
+ gdk_window_set_cursor (win, beam);
+ }
+
+ return FALSE;
+}
+
+static gboolean
+chat_view_url_event_cb (GtkTextTag *tag,
+ GObject *object,
+ GdkEvent *event,
+ GtkTextIter *iter,
+ GtkTextBuffer *buffer)
+{
+ GtkTextIter start, end;
+ gchar *str;
+
+ /* If the link is being selected, don't do anything. */
+ gtk_text_buffer_get_selection_bounds (buffer, &start, &end);
+ if (gtk_text_iter_get_offset (&start) != gtk_text_iter_get_offset (&end)) {
+ return FALSE;
+ }
+
+ if (event->type == GDK_BUTTON_RELEASE && event->button.button == 1) {
+ start = end = *iter;
+
+ if (gtk_text_iter_backward_to_tag_toggle (&start, tag) &&
+ gtk_text_iter_forward_to_tag_toggle (&end, tag)) {
+ str = gtk_text_buffer_get_text (buffer,
+ &start,
+ &end,
+ FALSE);
+
+ empathy_url_show (str);
+ g_free (str);
+ }
+ }
+
+ return FALSE;
+}
+
+static void
+chat_view_open_address_cb (GtkMenuItem *menuitem, const gchar *url)
+{
+ empathy_url_show (url);
+}
+
+static void
+chat_view_copy_address_cb (GtkMenuItem *menuitem, const gchar *url)
+{
+ GtkClipboard *clipboard;
+
+ clipboard = gtk_clipboard_get (GDK_SELECTION_CLIPBOARD);
+ gtk_clipboard_set_text (clipboard, url, -1);
+
+ clipboard = gtk_clipboard_get (GDK_SELECTION_PRIMARY);
+ gtk_clipboard_set_text (clipboard, url, -1);
+}
+
+static void
+chat_view_clear_view_cb (GtkMenuItem *menuitem, EmpathyChatView *view)
+{
+ empathy_chat_view_clear (view);
+}
+
+static gboolean
+chat_view_is_scrolled_down (EmpathyChatView *view)
+{
+ GtkWidget *sw;
+
+ sw = gtk_widget_get_parent (GTK_WIDGET (view));
+ if (GTK_IS_SCROLLED_WINDOW (sw)) {
+ GtkAdjustment *vadj;
+
+ vadj = gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW (sw));
+
+ if (vadj->value + vadj->page_size / 2 < vadj->upper - vadj->page_size) {
+ return FALSE;
+ }
+ }
+
+ return TRUE;
+}
+
+static void
+chat_view_maybe_trim_buffer (EmpathyChatView *view)
+{
+ EmpathyChatViewPriv *priv;
+ GtkTextIter top, bottom;
+ gint line;
+ gint remove;
+ GtkTextTagTable *table;
+ GtkTextTag *tag;
+
+ priv = GET_PRIV (view);
+
+ gtk_text_buffer_get_end_iter (priv->buffer, &bottom);
+ line = gtk_text_iter_get_line (&bottom);
+ if (line < MAX_LINES) {
+ return;
+ }
+
+ remove = line - MAX_LINES;
+ gtk_text_buffer_get_start_iter (priv->buffer, &top);
+
+ bottom = top;
+ if (!gtk_text_iter_forward_lines (&bottom, remove)) {
+ return;
+ }
+
+ /* Track backwords to a place where we can safely cut, we don't do it in
+ * the middle of a tag.
+ */
+ table = gtk_text_buffer_get_tag_table (priv->buffer);
+ tag = gtk_text_tag_table_lookup (table, "cut");
+ if (!tag) {
+ return;
+ }
+
+ if (!gtk_text_iter_forward_to_tag_toggle (&bottom, tag)) {
+ return;
+ }
+
+ if (!gtk_text_iter_equal (&top, &bottom)) {
+ gtk_text_buffer_delete (priv->buffer, &top, &bottom);
+ }
+}
+
+static void
+chat_view_theme_changed_cb (EmpathyThemeManager *manager,
+ EmpathyChatView *view)
+{
+ EmpathyChatViewPriv *priv;
+ gboolean show_avatars = FALSE;
+ gboolean theme_rooms = FALSE;
+
+ priv = GET_PRIV (view);
+
+ priv->last_block_type = EMPATHY_CHAT_VIEW_BLOCK_NONE;
+
+ empathy_conf_get_bool (empathy_conf_get (),
+ EMPATHY_PREFS_CHAT_THEME_CHAT_ROOM,
+ &theme_rooms);
+ if (!theme_rooms && priv->is_group_chat) {
+ empathy_theme_manager_apply (manager, view, NULL);
+ } else {
+ empathy_theme_manager_apply_saved (manager, view);
+ }
+
+ /* Needed for now to update the "rise" property of the names to get it
+ * vertically centered.
+ */
+ empathy_conf_get_bool (empathy_conf_get (),
+ EMPATHY_PREFS_UI_SHOW_AVATARS,
+ &show_avatars);
+ empathy_theme_set_show_avatars (priv->theme, show_avatars);
+}
+
+/* Pads a pixbuf to the specified size, by centering it in a larger transparent
+ * pixbuf. Returns a new ref.
+ */
+static GdkPixbuf *
+chat_view_pad_to_size (GdkPixbuf *pixbuf,
+ gint width,
+ gint height,
+ gint extra_padding_right)
+{
+ gint src_width, src_height;
+ GdkPixbuf *padded;
+ gint x_offset, y_offset;
+
+ src_width = gdk_pixbuf_get_width (pixbuf);
+ src_height = gdk_pixbuf_get_height (pixbuf);
+
+ x_offset = (width - src_width) / 2;
+ y_offset = (height - src_height) / 2;
+
+ padded = gdk_pixbuf_new (gdk_pixbuf_get_colorspace (pixbuf),
+ TRUE, /* alpha */
+ gdk_pixbuf_get_bits_per_sample (pixbuf),
+ width + extra_padding_right,
+ height);
+
+ gdk_pixbuf_fill (padded, 0);
+
+ gdk_pixbuf_copy_area (pixbuf,
+ 0, /* source coords */
+ 0,
+ src_width,
+ src_height,
+ padded,
+ x_offset, /* dest coords */
+ y_offset);
+
+ return padded;
+}
+
+typedef struct {
+ GdkPixbuf *pixbuf;
+ gchar *token;
+} AvatarData;
+
+static void
+chat_view_avatar_cache_data_free (gpointer ptr)
+{
+ AvatarData *data = ptr;
+
+ g_object_unref (data->pixbuf);
+ g_free (data->token);
+ g_slice_free (AvatarData, data);
+}
+
+GdkPixbuf *
+empathy_chat_view_get_avatar_pixbuf_with_cache (EmpathyContact *contact)
+{
+ static GHashTable *avatar_cache = NULL;
+ AvatarData *data;
+ EmpathyAvatar *avatar;
+ GdkPixbuf *tmp_pixbuf;
+ GdkPixbuf *pixbuf = NULL;
+
+ /* Init avatar cache */
+ if (!avatar_cache) {
+ avatar_cache = g_hash_table_new_full (empathy_contact_hash,
+ empathy_contact_equal,
+ g_object_unref,
+ chat_view_avatar_cache_data_free);
+ }
+
+ /* Check if avatar is in cache and if it's up to date */
+ avatar = empathy_contact_get_avatar (contact);
+ data = g_hash_table_lookup (avatar_cache, contact);
+ if (data) {
+ if (avatar && !tp_strdiff (avatar->token, data->token)) {
+ /* We have the avatar in cache */
+ return data->pixbuf;
+ }
+
+ /* The cache is outdate */
+ g_hash_table_remove (avatar_cache, contact);
+ }
+
+ /* Avatar not in cache, create pixbuf */
+ tmp_pixbuf = empathy_pixbuf_avatar_from_contact_scaled (contact, 32, 32);
+ if (tmp_pixbuf) {
+ pixbuf = chat_view_pad_to_size (tmp_pixbuf, 32, 32, 6);
+ g_object_unref (tmp_pixbuf);
+ }
+ if (!pixbuf) {
+ return NULL;
+ }
+
+ /* Insert new pixbuf in cache */
+ data = g_slice_new0 (AvatarData);
+ data->token = g_strdup (avatar->token);
+ data->pixbuf = pixbuf;
+
+ g_hash_table_insert (avatar_cache,
+ g_object_ref (contact),
+ data);
+
+ return data->pixbuf;
+}
+
+EmpathyChatView *
+empathy_chat_view_new (void)
+{
+ return g_object_new (EMPATHY_TYPE_CHAT_VIEW, NULL);
+}
+
+void
+empathy_chat_view_append_message (EmpathyChatView *view,
+ EmpathyMessage *msg)
+{
+ EmpathyChatViewPriv *priv = GET_PRIV (view);
+ EmpathyContact *sender;
+ gboolean bottom;
+ gboolean from_self;
+
+ g_return_if_fail (EMPATHY_IS_CHAT_VIEW (view));
+ g_return_if_fail (EMPATHY_IS_MESSAGE (msg));
+
+ if (!empathy_message_get_body (msg)) {
+ return;
+ }
+
+ bottom = chat_view_is_scrolled_down (view);
+ sender = empathy_message_get_sender (msg);
+ from_self = empathy_contact_is_user (sender);
+
+ chat_view_maybe_trim_buffer (view);
+
+ empathy_theme_append_message (priv->theme, view, msg);
+
+ if (bottom) {
+ empathy_chat_view_scroll_down (view);
+ }
+}
+
+void
+empathy_chat_view_append_event (EmpathyChatView *view,
+ const gchar *str)
+{
+ EmpathyChatViewPriv *priv;
+ gboolean bottom;
+
+ g_return_if_fail (EMPATHY_IS_CHAT_VIEW (view));
+ g_return_if_fail (!G_STR_EMPTY (str));
+
+ priv = GET_PRIV (view);
+
+ bottom = chat_view_is_scrolled_down (view);
+
+ chat_view_maybe_trim_buffer (view);
+
+ empathy_theme_append_event (priv->theme, view, str);
+
+ if (bottom) {
+ empathy_chat_view_scroll_down (view);
+ }
+
+ priv->last_block_type = EMPATHY_CHAT_VIEW_BLOCK_EVENT;
+}
+
+void
+empathy_chat_view_append_button (EmpathyChatView *view,
+ const gchar *message,
+ GtkWidget *button1,
+ GtkWidget *button2)
+{
+ EmpathyChatViewPriv *priv;
+ GtkTextChildAnchor *anchor;
+ GtkTextIter iter;
+ gboolean bottom;
+ const gchar *tag;
+
+ g_return_if_fail (EMPATHY_IS_CHAT_VIEW (view));
+ g_return_if_fail (button1 != NULL);
+
+ priv = GET_PRIV (view);
+
+ tag = "invite";
+
+ bottom = chat_view_is_scrolled_down (view);
+
+ empathy_theme_append_timestamp (priv->theme, view, NULL, TRUE, TRUE);
+
+ if (message) {
+ empathy_theme_append_text (priv->theme, view, message, tag, NULL);
+ }
+
+ gtk_text_buffer_get_end_iter (priv->buffer, &iter);
+
+ anchor = gtk_text_buffer_create_child_anchor (priv->buffer, &iter);
+ gtk_text_view_add_child_at_anchor (GTK_TEXT_VIEW (view), button1, anchor);
+ gtk_widget_show (button1);
+
+ gtk_text_buffer_insert_with_tags_by_name (priv->buffer,
+ &iter,
+ " ",
+ 1,
+ tag,
+ NULL);
+
+ if (button2) {
+ gtk_text_buffer_get_end_iter (priv->buffer, &iter);
+
+ anchor = gtk_text_buffer_create_child_anchor (priv->buffer, &iter);
+ gtk_text_view_add_child_at_anchor (GTK_TEXT_VIEW (view), button2, anchor);
+ gtk_widget_show (button2);
+
+ gtk_text_buffer_insert_with_tags_by_name (priv->buffer,
+ &iter,
+ " ",
+ 1,
+ tag,
+ NULL);
+ }
+
+ gtk_text_buffer_get_end_iter (priv->buffer, &iter);
+ gtk_text_buffer_insert_with_tags_by_name (priv->buffer,
+ &iter,
+ "\n\n",
+ 2,
+ tag,
+ NULL);
+
+ if (bottom) {
+ empathy_chat_view_scroll_down (view);
+ }
+
+ priv->last_block_type = EMPATHY_CHAT_VIEW_BLOCK_INVITE;
+}
+
+void
+empathy_chat_view_scroll (EmpathyChatView *view,
+ gboolean allow_scrolling)
+{
+ EmpathyChatViewPriv *priv;
+
+ g_return_if_fail (EMPATHY_IS_CHAT_VIEW (view));
+
+ priv = GET_PRIV (view);
+
+ priv->allow_scrolling = allow_scrolling;
+
+ empathy_debug (DEBUG_DOMAIN, "Scrolling %s",
+ allow_scrolling ? "enabled" : "disabled");
+}
+
+/* Code stolen from pidgin/gtkimhtml.c */
+static gboolean
+chat_view_scroll_cb (EmpathyChatView *view)
+{
+ EmpathyChatViewPriv *priv;
+ GtkAdjustment *adj;
+ gdouble max_val;
+
+ priv = GET_PRIV (view);
+ adj = GTK_TEXT_VIEW (view)->vadjustment;
+ max_val = adj->upper - adj->page_size;
+
+ g_return_val_if_fail (priv->scroll_time != NULL, FALSE);
+
+ if (g_timer_elapsed (priv->scroll_time, NULL) > MAX_SCROLL_TIME) {
+ /* time's up. jump to the end and kill the timer */
+ gtk_adjustment_set_value (adj, max_val);
+ g_timer_destroy (priv->scroll_time);
+ priv->scroll_time = NULL;
+ priv->scroll_timeout = 0;
+ return FALSE;
+ }
+
+ /* scroll by 1/3rd the remaining distance */
+ gtk_adjustment_set_value (adj, gtk_adjustment_get_value (adj) + ((max_val - gtk_adjustment_get_value (adj)) / 3));
+ return TRUE;
+}
+
+void
+empathy_chat_view_scroll_down (EmpathyChatView *view)
+{
+ EmpathyChatViewPriv *priv;
+
+ g_return_if_fail (EMPATHY_IS_CHAT_VIEW (view));
+
+ priv = GET_PRIV (view);
+
+ if (!priv->allow_scrolling) {
+ return;
+ }
+
+ empathy_debug (DEBUG_DOMAIN, "Scrolling down");
+
+ if (priv->scroll_time) {
+ g_timer_reset (priv->scroll_time);
+ } else {
+ priv->scroll_time = g_timer_new();
+ }
+ if (!priv->scroll_timeout) {
+ priv->scroll_timeout = g_timeout_add (SCROLL_DELAY,
+ (GSourceFunc) chat_view_scroll_cb,
+ view);
+ }
+}
+
+gboolean
+empathy_chat_view_get_selection_bounds (EmpathyChatView *view,
+ GtkTextIter *start,
+ GtkTextIter *end)
+{
+ GtkTextBuffer *buffer;
+
+ g_return_val_if_fail (EMPATHY_IS_CHAT_VIEW (view), FALSE);
+
+ buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
+
+ return gtk_text_buffer_get_selection_bounds (buffer, start, end);
+}
+
+void
+empathy_chat_view_clear (EmpathyChatView *view)
+{
+ GtkTextBuffer *buffer;
+ EmpathyChatViewPriv *priv;
+
+ g_return_if_fail (EMPATHY_IS_CHAT_VIEW (view));
+
+ buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
+ gtk_text_buffer_set_text (buffer, "", -1);
+
+ /* We set these back to the initial values so we get
+ * timestamps when clearing the window to know when
+ * conversations start.
+ */
+ priv = GET_PRIV (view);
+
+ priv->last_block_type = EMPATHY_CHAT_VIEW_BLOCK_NONE;
+ priv->last_timestamp = 0;
+}
+
+gboolean
+empathy_chat_view_find_previous (EmpathyChatView *view,
+ const gchar *search_criteria,
+ gboolean new_search)
+{
+ EmpathyChatViewPriv *priv;
+ GtkTextBuffer *buffer;
+ GtkTextIter iter_at_mark;
+ GtkTextIter iter_match_start;
+ GtkTextIter iter_match_end;
+ gboolean found;
+ gboolean from_start = FALSE;
+
+ g_return_val_if_fail (EMPATHY_IS_CHAT_VIEW (view), FALSE);
+ g_return_val_if_fail (search_criteria != NULL, FALSE);
+
+ priv = GET_PRIV (view);
+
+ buffer = priv->buffer;
+
+ if (G_STR_EMPTY (search_criteria)) {
+ if (priv->find_mark_previous) {
+ gtk_text_buffer_get_start_iter (buffer, &iter_at_mark);
+
+ gtk_text_buffer_move_mark (buffer,
+ priv->find_mark_previous,
+ &iter_at_mark);
+ gtk_text_view_scroll_to_mark (GTK_TEXT_VIEW (view),
+ priv->find_mark_previous,
+ 0.0,
+ TRUE,
+ 0.0,
+ 0.0);
+ gtk_text_buffer_select_range (buffer,
+ &iter_at_mark,
+ &iter_at_mark);
+ }
+
+ return FALSE;
+ }
+
+ if (new_search) {
+ from_start = TRUE;
+ }
+
+ if (priv->find_mark_previous) {
+ gtk_text_buffer_get_iter_at_mark (buffer,
+ &iter_at_mark,
+ priv->find_mark_previous);
+ } else {
+ gtk_text_buffer_get_end_iter (buffer, &iter_at_mark);
+ from_start = TRUE;
+ }
+
+ priv->find_last_direction = FALSE;
+
+ found = empathy_text_iter_backward_search (&iter_at_mark,
+ search_criteria,
+ &iter_match_start,
+ &iter_match_end,
+ NULL);
+
+ if (!found) {
+ gboolean result = FALSE;
+
+ if (from_start) {
+ return result;
+ }
+
+ /* Here we wrap around. */
+ if (!new_search && !priv->find_wrapped) {
+ priv->find_wrapped = TRUE;
+ result = empathy_chat_view_find_previous (view,
+ search_criteria,
+ FALSE);
+ priv->find_wrapped = FALSE;
+ }
+
+ return result;
+ }
+
+ /* Set new mark and show on screen */
+ if (!priv->find_mark_previous) {
+ priv->find_mark_previous = gtk_text_buffer_create_mark (buffer, NULL,
+ &iter_match_start,
+ TRUE);
+ } else {
+ gtk_text_buffer_move_mark (buffer,
+ priv->find_mark_previous,
+ &iter_match_start);
+ }
+
+ if (!priv->find_mark_next) {
+ priv->find_mark_next = gtk_text_buffer_create_mark (buffer, NULL,
+ &iter_match_end,
+ TRUE);
+ } else {
+ gtk_text_buffer_move_mark (buffer,
+ priv->find_mark_next,
+ &iter_match_end);
+ }
+
+ gtk_text_view_scroll_to_mark (GTK_TEXT_VIEW (view),
+ priv->find_mark_previous,
+ 0.0,
+ TRUE,
+ 0.5,
+ 0.5);
+
+ gtk_text_buffer_move_mark_by_name (buffer, "selection_bound", &iter_match_start);
+ gtk_text_buffer_move_mark_by_name (buffer, "insert", &iter_match_end);
+
+ return TRUE;
+}
+
+gboolean
+empathy_chat_view_find_next (EmpathyChatView *view,
+ const gchar *search_criteria,
+ gboolean new_search)
+{
+ EmpathyChatViewPriv *priv;
+ GtkTextBuffer *buffer;
+ GtkTextIter iter_at_mark;
+ GtkTextIter iter_match_start;
+ GtkTextIter iter_match_end;
+ gboolean found;
+ gboolean from_start = FALSE;
+
+ g_return_val_if_fail (EMPATHY_IS_CHAT_VIEW (view), FALSE);
+ g_return_val_if_fail (search_criteria != NULL, FALSE);
+
+ priv = GET_PRIV (view);
+
+ buffer = priv->buffer;
+
+ if (G_STR_EMPTY (search_criteria)) {
+ if (priv->find_mark_next) {
+ gtk_text_buffer_get_start_iter (buffer, &iter_at_mark);
+
+ gtk_text_buffer_move_mark (buffer,
+ priv->find_mark_next,
+ &iter_at_mark);
+ gtk_text_view_scroll_to_mark (GTK_TEXT_VIEW (view),
+ priv->find_mark_next,
+ 0.0,
+ TRUE,
+ 0.0,
+ 0.0);
+ gtk_text_buffer_select_range (buffer,
+ &iter_at_mark,
+ &iter_at_mark);
+ }
+
+ return FALSE;
+ }
+
+ if (new_search) {
+ from_start = TRUE;
+ }
+
+ if (priv->find_mark_next) {
+ gtk_text_buffer_get_iter_at_mark (buffer,
+ &iter_at_mark,
+ priv->find_mark_next);
+ } else {
+ gtk_text_buffer_get_start_iter (buffer, &iter_at_mark);
+ from_start = TRUE;
+ }
+
+ priv->find_last_direction = TRUE;
+
+ found = empathy_text_iter_forward_search (&iter_at_mark,
+ search_criteria,
+ &iter_match_start,
+ &iter_match_end,
+ NULL);
+
+ if (!found) {
+ gboolean result = FALSE;
+
+ if (from_start) {
+ return result;
+ }
+
+ /* Here we wrap around. */
+ if (!new_search && !priv->find_wrapped) {
+ priv->find_wrapped = TRUE;
+ result = empathy_chat_view_find_next (view,
+ search_criteria,
+ FALSE);
+ priv->find_wrapped = FALSE;
+ }
+
+ return result;
+ }
+
+ /* Set new mark and show on screen */
+ if (!priv->find_mark_next) {
+ priv->find_mark_next = gtk_text_buffer_create_mark (buffer, NULL,
+ &iter_match_end,
+ TRUE);
+ } else {
+ gtk_text_buffer_move_mark (buffer,
+ priv->find_mark_next,
+ &iter_match_end);
+ }
+
+ if (!priv->find_mark_previous) {
+ priv->find_mark_previous = gtk_text_buffer_create_mark (buffer, NULL,
+ &iter_match_start,
+ TRUE);
+ } else {
+ gtk_text_buffer_move_mark (buffer,
+ priv->find_mark_previous,
+ &iter_match_start);
+ }
+
+ gtk_text_view_scroll_to_mark (GTK_TEXT_VIEW (view),
+ priv->find_mark_next,
+ 0.0,
+ TRUE,
+ 0.5,
+ 0.5);
+
+ gtk_text_buffer_move_mark_by_name (buffer, "selection_bound", &iter_match_start);
+ gtk_text_buffer_move_mark_by_name (buffer, "insert", &iter_match_end);
+
+ return TRUE;
+}
+
+
+void
+empathy_chat_view_find_abilities (EmpathyChatView *view,
+ const gchar *search_criteria,
+ gboolean *can_do_previous,
+ gboolean *can_do_next)
+{
+ EmpathyChatViewPriv *priv;
+ GtkTextBuffer *buffer;
+ GtkTextIter iter_at_mark;
+ GtkTextIter iter_match_start;
+ GtkTextIter iter_match_end;
+
+ g_return_if_fail (EMPATHY_IS_CHAT_VIEW (view));
+ g_return_if_fail (search_criteria != NULL);
+ g_return_if_fail (can_do_previous != NULL && can_do_next != NULL);
+
+ priv = GET_PRIV (view);
+
+ buffer = priv->buffer;
+
+ if (can_do_previous) {
+ if (priv->find_mark_previous) {
+ gtk_text_buffer_get_iter_at_mark (buffer,
+ &iter_at_mark,
+ priv->find_mark_previous);
+ } else {
+ gtk_text_buffer_get_start_iter (buffer, &iter_at_mark);
+ }
+
+ *can_do_previous = empathy_text_iter_backward_search (&iter_at_mark,
+ search_criteria,
+ &iter_match_start,
+ &iter_match_end,
+ NULL);
+ }
+
+ if (can_do_next) {
+ if (priv->find_mark_next) {
+ gtk_text_buffer_get_iter_at_mark (buffer,
+ &iter_at_mark,
+ priv->find_mark_next);
+ } else {
+ gtk_text_buffer_get_start_iter (buffer, &iter_at_mark);
+ }
+
+ *can_do_next = empathy_text_iter_forward_search (&iter_at_mark,
+ search_criteria,
+ &iter_match_start,
+ &iter_match_end,
+ NULL);
+ }
+}
+
+void
+empathy_chat_view_highlight (EmpathyChatView *view,
+ const gchar *text)
+{
+ GtkTextBuffer *buffer;
+ GtkTextIter iter;
+ GtkTextIter iter_start;
+ GtkTextIter iter_end;
+ GtkTextIter iter_match_start;
+ GtkTextIter iter_match_end;
+ gboolean found;
+
+ g_return_if_fail (EMPATHY_IS_CHAT_VIEW (view));
+
+ buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
+
+ gtk_text_buffer_get_start_iter (buffer, &iter);
+
+ gtk_text_buffer_get_bounds (buffer, &iter_start, &iter_end);
+ gtk_text_buffer_remove_tag_by_name (buffer, "highlight",
+ &iter_start,
+ &iter_end);
+
+ if (G_STR_EMPTY (text)) {
+ return;
+ }
+
+ while (1) {
+ found = empathy_text_iter_forward_search (&iter,
+ text,
+ &iter_match_start,
+ &iter_match_end,
+ NULL);
+
+ if (!found) {
+ break;
+ }
+
+ gtk_text_buffer_apply_tag_by_name (buffer, "highlight",
+ &iter_match_start,
+ &iter_match_end);
+
+ iter = iter_match_end;
+ gtk_text_iter_forward_char (&iter);
+ }
+}
+
+void
+empathy_chat_view_copy_clipboard (EmpathyChatView *view)
+{
+ GtkTextBuffer *buffer;
+ GtkClipboard *clipboard;
+
+ g_return_if_fail (EMPATHY_IS_CHAT_VIEW (view));
+
+ buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
+ clipboard = gtk_clipboard_get (GDK_SELECTION_CLIPBOARD);
+
+ gtk_text_buffer_copy_clipboard (buffer, clipboard);
+}
+
+EmpathyTheme *
+empathy_chat_view_get_theme (EmpathyChatView *view)
+{
+ EmpathyChatViewPriv *priv;
+
+ g_return_val_if_fail (EMPATHY_IS_CHAT_VIEW (view), NULL);
+
+ priv = GET_PRIV (view);
+
+ return priv->theme;
+}
+
+static void
+chat_view_theme_notify_cb (EmpathyTheme *theme,
+ GParamSpec *param,
+ EmpathyChatView *view)
+{
+ empathy_theme_update_view (theme, view);
+}
+
+void
+empathy_chat_view_set_theme (EmpathyChatView *view, EmpathyTheme *theme)
+{
+ EmpathyChatViewPriv *priv;
+
+ g_return_if_fail (EMPATHY_IS_CHAT_VIEW (view));
+ g_return_if_fail (EMPATHY_IS_THEME (theme));
+
+ priv = GET_PRIV (view);
+
+ if (priv->theme) {
+ g_signal_handlers_disconnect_by_func (priv->theme,
+ chat_view_theme_notify_cb,
+ view);
+ g_object_unref (priv->theme);
+ }
+
+ priv->theme = g_object_ref (theme);
+
+ empathy_theme_update_view (theme, view);
+ g_signal_connect (priv->theme, "notify",
+ G_CALLBACK (chat_view_theme_notify_cb),
+ view);
+
+ /* FIXME: Redraw all messages using the new theme */
+}
+
+void
+empathy_chat_view_set_margin (EmpathyChatView *view,
+ gint margin)
+{
+ EmpathyChatViewPriv *priv;
+
+ g_return_if_fail (EMPATHY_IS_CHAT_VIEW (view));
+
+ priv = GET_PRIV (view);
+
+ g_object_set (view,
+ "left-margin", margin,
+ "right-margin", margin,
+ NULL);
+}
+
+GtkWidget *
+empathy_chat_view_get_smiley_menu (GCallback callback,
+ gpointer user_data)
+{
+ EmpathySmileyManager *smiley_manager;
+ GSList *smileys, *l;
+ GtkWidget *menu;
+ gint x = 0;
+ gint y = 0;
+
+ g_return_val_if_fail (callback != NULL, NULL);
+
+ menu = gtk_menu_new ();
+
+ smiley_manager = empathy_smiley_manager_new ();
+ smileys = empathy_smiley_manager_get_all (smiley_manager);
+ for (l = smileys; l; l = l->next) {
+ EmpathySmiley *smiley;
+ GtkWidget *item;
+ GtkWidget *image;
+
+ smiley = l->data;
+ image = gtk_image_new_from_pixbuf (smiley->pixbuf);
+
+ item = gtk_image_menu_item_new_with_label ("");
+ gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item), image);
+
+ gtk_menu_attach (GTK_MENU (menu), item,
+ x, x + 1, y, y + 1);
+
+ gtk_widget_set_tooltip_text (item, smiley->str);
+
+ g_object_set_data (G_OBJECT (item), "smiley_text", smiley->str);
+ g_signal_connect (item, "activate", callback, user_data);
+
+ if (x > 3) {
+ y++;
+ x = 0;
+ } else {
+ x++;
+ }
+ }
+ g_object_unref (smiley_manager);
+
+ gtk_widget_show_all (menu);
+
+ return menu;
+}
+
+/* FIXME: Do we really need this? Better to do it internally only at setup time,
+ * we will never change it on the fly.
+ */
+void
+empathy_chat_view_set_is_group_chat (EmpathyChatView *view,
+ gboolean is_group_chat)
+{
+ EmpathyChatViewPriv *priv;
+ gboolean theme_rooms = FALSE;
+
+ g_return_if_fail (EMPATHY_IS_CHAT_VIEW (view));
+
+ priv = GET_PRIV (view);
+
+ priv->is_group_chat = is_group_chat;
+
+ empathy_conf_get_bool (empathy_conf_get (),
+ EMPATHY_PREFS_CHAT_THEME_CHAT_ROOM,
+ &theme_rooms);
+
+ if (!theme_rooms && is_group_chat) {
+ empathy_theme_manager_apply (empathy_theme_manager_get (),
+ view,
+ NULL);
+ } else {
+ empathy_theme_manager_apply_saved (empathy_theme_manager_get (),
+ view);
+ }
+}
+
+time_t
+empathy_chat_view_get_last_timestamp (EmpathyChatView *view)
+{
+ EmpathyChatViewPriv *priv;
+
+ g_return_val_if_fail (EMPATHY_IS_CHAT_VIEW (view), 0);
+
+ priv = GET_PRIV (view);
+
+ return priv->last_timestamp;
+}
+
+void
+empathy_chat_view_set_last_timestamp (EmpathyChatView *view,
+ time_t timestamp)
+{
+ EmpathyChatViewPriv *priv;
+
+ g_return_if_fail (EMPATHY_IS_CHAT_VIEW (view));
+
+ priv = GET_PRIV (view);
+
+ priv->last_timestamp = timestamp;
+}
+
+EmpathyChatViewBlock
+empathy_chat_view_get_last_block_type (EmpathyChatView *view)
+{
+ EmpathyChatViewPriv *priv;
+
+ g_return_val_if_fail (EMPATHY_IS_CHAT_VIEW (view), 0);
+
+ priv = GET_PRIV (view);
+
+ return priv->last_block_type;
+}
+
+void
+empathy_chat_view_set_last_block_type (EmpathyChatView *view,
+ EmpathyChatViewBlock block_type)
+{
+ EmpathyChatViewPriv *priv;
+
+ g_return_if_fail (EMPATHY_IS_CHAT_VIEW (view));
+
+ priv = GET_PRIV (view);
+
+ priv->last_block_type = block_type;
+}
+
+EmpathyContact *
+empathy_chat_view_get_last_contact (EmpathyChatView *view)
+{
+ EmpathyChatViewPriv *priv;
+
+ g_return_val_if_fail (EMPATHY_IS_CHAT_VIEW (view), NULL);
+
+ priv = GET_PRIV (view);
+
+ return priv->last_contact;
+}
+
+void
+empathy_chat_view_set_last_contact (EmpathyChatView *view, EmpathyContact *contact)
+{
+ EmpathyChatViewPriv *priv;
+
+ g_return_if_fail (EMPATHY_IS_CHAT_VIEW (view));
+
+ priv = GET_PRIV (view);
+
+ if (priv->last_contact) {
+ g_object_unref (priv->last_contact);
+ priv->last_contact = NULL;
+ }
+
+ if (contact) {
+ priv->last_contact = g_object_ref (contact);
+ }
+}
+
diff --git a/gnome-2-22/libempathy-gtk/empathy-chat-view.h b/gnome-2-22/libempathy-gtk/empathy-chat-view.h
new file mode 100644
index 000000000..58219ca04
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-chat-view.h
@@ -0,0 +1,119 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2002-2007 Imendio AB
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * 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: Mikael Hallendal <micke@imendio.com>
+ * Richard Hult <richard@imendio.com>
+ * Martyn Russell <martyn@imendio.com>
+ */
+
+#ifndef __EMPATHY_CHAT_VIEW_H__
+#define __EMPATHY_CHAT_VIEW_H__
+
+#include <gtk/gtktextview.h>
+
+#include <libempathy/empathy-contact.h>
+#include <libempathy/empathy-message.h>
+
+G_BEGIN_DECLS
+
+#define EMPATHY_TYPE_CHAT_VIEW (empathy_chat_view_get_type ())
+#define EMPATHY_CHAT_VIEW(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), EMPATHY_TYPE_CHAT_VIEW, EmpathyChatView))
+#define EMPATHY_CHAT_VIEW_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), EMPATHY_TYPE_CHAT_VIEW, EmpathyChatViewClass))
+#define EMPATHY_IS_CHAT_VIEW(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), EMPATHY_TYPE_CHAT_VIEW))
+#define EMPATHY_IS_CHAT_VIEW_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), EMPATHY_TYPE_CHAT_VIEW))
+#define EMPATHY_CHAT_VIEW_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), EMPATHY_TYPE_CHAT_VIEW, EmpathyChatViewClass))
+
+typedef struct _EmpathyChatView EmpathyChatView;
+typedef struct _EmpathyChatViewClass EmpathyChatViewClass;
+typedef struct _EmpathyChatViewPriv EmpathyChatViewPriv;
+
+#include "empathy-theme.h"
+
+struct _EmpathyChatView {
+ GtkTextView parent;
+};
+
+struct _EmpathyChatViewClass {
+ GtkTextViewClass parent_class;
+};
+
+typedef enum {
+ EMPATHY_CHAT_VIEW_BLOCK_NONE,
+ EMPATHY_CHAT_VIEW_BLOCK_SELF,
+ EMPATHY_CHAT_VIEW_BLOCK_OTHER,
+ EMPATHY_CHAT_VIEW_BLOCK_EVENT,
+ EMPATHY_CHAT_VIEW_BLOCK_TIME,
+ EMPATHY_CHAT_VIEW_BLOCK_INVITE
+} EmpathyChatViewBlock;
+
+GType empathy_chat_view_get_type (void) G_GNUC_CONST;
+EmpathyChatView *empathy_chat_view_new (void);
+void empathy_chat_view_append_message (EmpathyChatView *view,
+ EmpathyMessage *msg);
+void empathy_chat_view_append_event (EmpathyChatView *view,
+ const gchar *str);
+void empathy_chat_view_append_button (EmpathyChatView *view,
+ const gchar *message,
+ GtkWidget *button1,
+ GtkWidget *button2);
+void empathy_chat_view_set_margin (EmpathyChatView *view,
+ gint margin);
+void empathy_chat_view_scroll (EmpathyChatView *view,
+ gboolean allow_scrolling);
+void empathy_chat_view_scroll_down (EmpathyChatView *view);
+gboolean empathy_chat_view_get_selection_bounds (EmpathyChatView *view,
+ GtkTextIter *start,
+ GtkTextIter *end);
+void empathy_chat_view_clear (EmpathyChatView *view);
+gboolean empathy_chat_view_find_previous (EmpathyChatView *view,
+ const gchar *search_criteria,
+ gboolean new_search);
+gboolean empathy_chat_view_find_next (EmpathyChatView *view,
+ const gchar *search_criteria,
+ gboolean new_search);
+void empathy_chat_view_find_abilities (EmpathyChatView *view,
+ const gchar *search_criteria,
+ gboolean *can_do_previous,
+ gboolean *can_do_next);
+void empathy_chat_view_highlight (EmpathyChatView *view,
+ const gchar *text);
+void empathy_chat_view_copy_clipboard (EmpathyChatView *view);
+EmpathyTheme * empathy_chat_view_get_theme (EmpathyChatView *view);
+void empathy_chat_view_set_theme (EmpathyChatView *view,
+ EmpathyTheme *theme);
+void empathy_chat_view_set_margin (EmpathyChatView *view,
+ gint margin);
+GtkWidget * empathy_chat_view_get_smiley_menu (GCallback callback,
+ gpointer user_data);
+void empathy_chat_view_set_is_group_chat (EmpathyChatView *view,
+ gboolean is_group_chat);
+time_t empathy_chat_view_get_last_timestamp (EmpathyChatView *view);
+void empathy_chat_view_set_last_timestamp (EmpathyChatView *view,
+ time_t timestamp);
+EmpathyChatViewBlock empathy_chat_view_get_last_block_type (EmpathyChatView *view);
+void empathy_chat_view_set_last_block_type (EmpathyChatView *view,
+ EmpathyChatViewBlock block_type);
+EmpathyContact * empathy_chat_view_get_last_contact (EmpathyChatView *view);
+void empathy_chat_view_set_last_contact (EmpathyChatView *view,
+ EmpathyContact *contact);
+GdkPixbuf * empathy_chat_view_get_avatar_pixbuf_with_cache (EmpathyContact *contact);
+
+G_END_DECLS
+
+#endif /* __EMPATHY_CHAT_VIEW_H__ */
diff --git a/gnome-2-22/libempathy-gtk/empathy-chat-window.c b/gnome-2-22/libempathy-gtk/empathy-chat-window.c
new file mode 100644
index 000000000..5e5a854c5
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-chat-window.c
@@ -0,0 +1,1892 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2003-2007 Imendio AB
+ * Copyright (C) 2007-2008 Collabora Ltd.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * 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: Mikael Hallendal <micke@imendio.com>
+ * Richard Hult <richard@imendio.com>
+ * Martyn Russell <martyn@imendio.com>
+ * Geert-Jan Van den Bogaerde <geertjan@gnome.org>
+ * Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#include "config.h"
+
+#include <string.h>
+
+#include <gtk/gtk.h>
+#include <gdk/gdkkeysyms.h>
+#include <glade/glade.h>
+#include <glib/gi18n.h>
+
+#include <libmissioncontrol/mission-control.h>
+
+#include <libempathy/empathy-contact-factory.h>
+#include <libempathy/empathy-contact-list.h>
+#include <libempathy/empathy-log-manager.h>
+#include <libempathy/empathy-chatroom-manager.h>
+#include <libempathy/empathy-contact.h>
+#include <libempathy/empathy-debug.h>
+#include <libempathy/empathy-message.h>
+#include <libempathy/empathy-utils.h>
+
+#include "empathy-chat-window.h"
+#include "empathy-images.h"
+//#include "empathy-chat-invite.h"
+#include "empathy-contact-dialogs.h"
+#include "empathy-log-window.h"
+#include "empathy-new-chatroom-dialog.h"
+#include "empathy-conf.h"
+#include "empathy-preferences.h"
+#include "empathy-private-chat.h"
+#include "empathy-group-chat.h"
+//#include "empathy-sound.h"
+#include "empathy-ui-utils.h"
+#include "empathy-about-dialog.h"
+
+#define GET_PRIV(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), EMPATHY_TYPE_CHAT_WINDOW, EmpathyChatWindowPriv))
+
+#define DEBUG_DOMAIN "ChatWindow"
+
+struct _EmpathyChatWindowPriv {
+ EmpathyChatroomManager *chatroom_manager;
+ GList *chats;
+ GList *chats_new_msg;
+ GList *chats_composing;
+
+ EmpathyChat *current_chat;
+
+ gboolean page_added;
+ gboolean dnd_same_window;
+
+ GtkWidget *dialog;
+ GtkWidget *notebook;
+
+ /* Menu items. */
+ GtkWidget *menu_conv_clear;
+ GtkWidget *menu_conv_insert_smiley;
+ GtkWidget *menu_conv_call;
+ GtkWidget *menu_conv_call_separator;
+ GtkWidget *menu_conv_log;
+ GtkWidget *menu_conv_separator;
+ GtkWidget *menu_conv_add_contact;
+ GtkWidget *menu_conv_info;
+ GtkWidget *menu_conv_close;
+
+ GtkWidget *menu_room;
+ GtkWidget *menu_room_set_topic;
+ GtkWidget *menu_room_join_new;
+ GtkWidget *menu_room_invite;
+ GtkWidget *menu_room_add;
+ GtkWidget *menu_room_show_contacts;
+
+ GtkWidget *menu_edit_cut;
+ GtkWidget *menu_edit_copy;
+ GtkWidget *menu_edit_paste;
+
+ GtkWidget *menu_tabs_next;
+ GtkWidget *menu_tabs_prev;
+ GtkWidget *menu_tabs_left;
+ GtkWidget *menu_tabs_right;
+ GtkWidget *menu_tabs_detach;
+
+ GtkWidget *menu_help_contents;
+ GtkWidget *menu_help_about;
+
+ guint save_geometry_id;
+};
+
+static void empathy_chat_window_class_init (EmpathyChatWindowClass *klass);
+static void empathy_chat_window_init (EmpathyChatWindow *window);
+static void empathy_chat_window_finalize (GObject *object);
+static void chat_window_accel_cb (GtkAccelGroup *accelgroup,
+ GObject *object,
+ guint key,
+ GdkModifierType mod,
+ EmpathyChatWindow *window);
+static void chat_window_close_clicked_cb (GtkWidget *button,
+ EmpathyChat *chat);
+static GtkWidget *chat_window_create_label (EmpathyChatWindow *window,
+ EmpathyChat *chat);
+static void chat_window_update_status (EmpathyChatWindow *window,
+ EmpathyChat *chat);
+static void chat_window_update_title (EmpathyChatWindow *window,
+ EmpathyChat *chat);
+static void chat_window_update_menu (EmpathyChatWindow *window);
+static gboolean chat_window_save_geometry_timeout_cb (EmpathyChatWindow *window);
+static gboolean chat_window_configure_event_cb (GtkWidget *widget,
+ GdkEventConfigure *event,
+ EmpathyChatWindow *window);
+static void chat_window_conv_activate_cb (GtkWidget *menuitem,
+ EmpathyChatWindow *window);
+static void chat_window_clear_activate_cb (GtkWidget *menuitem,
+ EmpathyChatWindow *window);
+static void chat_window_info_activate_cb (GtkWidget *menuitem,
+ EmpathyChatWindow *window);
+static void chat_window_add_contact_activate_cb (GtkWidget *menuitem,
+ EmpathyChatWindow *window);
+static void chat_window_call_activate_cb (GtkWidget *menuitem,
+ EmpathyChatWindow *window);
+static void chat_window_log_activate_cb (GtkWidget *menuitem,
+ EmpathyChatWindow *window);
+static void chat_window_show_contacts_toggled_cb (GtkWidget *menuitem,
+ EmpathyChatWindow *window);
+static void chat_window_edit_activate_cb (GtkWidget *menuitem,
+ EmpathyChatWindow *window);
+static void chat_window_insert_smiley_activate_cb (GtkWidget *menuitem,
+ EmpathyChatWindow *window);
+static void chat_window_close_activate_cb (GtkWidget *menuitem,
+ EmpathyChatWindow *window);
+static void chat_window_room_set_topic_activate_cb(GtkWidget *menuitem,
+ EmpathyChatWindow *window);
+static void chat_window_room_join_new_activate_cb (GtkWidget *menuitem,
+ EmpathyChatWindow *window);
+static void chat_window_room_invite_activate_cb (GtkWidget *menuitem,
+ EmpathyChatWindow *window);
+static void chat_window_room_add_activate_cb (GtkWidget *menuitem,
+ EmpathyChatWindow *window);
+static void chat_window_cut_activate_cb (GtkWidget *menuitem,
+ EmpathyChatWindow *window);
+static void chat_window_copy_activate_cb (GtkWidget *menuitem,
+ EmpathyChatWindow *window);
+static void chat_window_paste_activate_cb (GtkWidget *menuitem,
+ EmpathyChatWindow *window);
+static void chat_window_tabs_left_activate_cb (GtkWidget *menuitem,
+ EmpathyChatWindow *window);
+static void chat_window_tabs_right_activate_cb (GtkWidget *menuitem,
+ EmpathyChatWindow *window);
+static void chat_window_detach_activate_cb (GtkWidget *menuitem,
+ EmpathyChatWindow *window);
+static void chat_window_help_contents_cb (GtkWidget *menuitem,
+ EmpathyChatWindow *window);
+static void chat_window_help_about_cb (GtkWidget *menuitem,
+ EmpathyChatWindow *window);
+static gboolean chat_window_delete_event_cb (GtkWidget *dialog,
+ GdkEvent *event,
+ EmpathyChatWindow *window);
+static void chat_window_status_changed_cb (EmpathyChat *chat,
+ EmpathyChatWindow *window);
+static void chat_window_update_tooltip (EmpathyChatWindow *window,
+ EmpathyChat *chat);
+static void chat_window_name_changed_cb (EmpathyChat *chat,
+ const gchar *name,
+ EmpathyChatWindow *window);
+static void chat_window_composing_cb (EmpathyChat *chat,
+ gboolean is_composing,
+ EmpathyChatWindow *window);
+static void chat_window_new_message_cb (EmpathyChat *chat,
+ EmpathyMessage *message,
+ gboolean is_backlog,
+ EmpathyChatWindow *window);
+static GtkNotebook* chat_window_detach_hook (GtkNotebook *source,
+ GtkWidget *page,
+ gint x,
+ gint y,
+ gpointer user_data);
+static void chat_window_page_switched_cb (GtkNotebook *notebook,
+ GtkNotebookPage *page,
+ gint page_num,
+ EmpathyChatWindow *window);
+static void chat_window_page_reordered_cb (GtkNotebook *notebook,
+ GtkWidget *widget,
+ guint page_num,
+ EmpathyChatWindow *window);
+static void chat_window_page_added_cb (GtkNotebook *notebook,
+ GtkWidget *child,
+ guint page_num,
+ EmpathyChatWindow *window);
+static void chat_window_page_removed_cb (GtkNotebook *notebook,
+ GtkWidget *child,
+ guint page_num,
+ EmpathyChatWindow *window);
+static gboolean chat_window_focus_in_event_cb (GtkWidget *widget,
+ GdkEvent *event,
+ EmpathyChatWindow *window);
+static void chat_window_drag_data_received (GtkWidget *widget,
+ GdkDragContext *context,
+ int x,
+ int y,
+ GtkSelectionData *selection,
+ guint info,
+ guint time,
+ EmpathyChatWindow *window);
+static void chat_window_set_urgency_hint (EmpathyChatWindow *window,
+ gboolean urgent);
+
+
+static GList *chat_windows = NULL;
+
+static const guint tab_accel_keys[] = {
+ GDK_1, GDK_2, GDK_3, GDK_4, GDK_5,
+ GDK_6, GDK_7, GDK_8, GDK_9, GDK_0
+};
+
+typedef enum {
+ DND_DRAG_TYPE_CONTACT_ID,
+ DND_DRAG_TYPE_TAB
+} DndDragType;
+
+static const GtkTargetEntry drag_types_dest[] = {
+ { "text/contact-id", 0, DND_DRAG_TYPE_CONTACT_ID },
+ { "GTK_NOTEBOOK_TAB", GTK_TARGET_SAME_APP, DND_DRAG_TYPE_TAB },
+};
+
+G_DEFINE_TYPE (EmpathyChatWindow, empathy_chat_window, G_TYPE_OBJECT);
+
+static void
+empathy_chat_window_class_init (EmpathyChatWindowClass *klass)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+ object_class->finalize = empathy_chat_window_finalize;
+
+ g_type_class_add_private (object_class, sizeof (EmpathyChatWindowPriv));
+
+ /* Set up a style for the close button with no focus padding. */
+ gtk_rc_parse_string (
+ "style \"empathy-close-button-style\"\n"
+ "{\n"
+ " GtkWidget::focus-padding = 0\n"
+ " xthickness = 0\n"
+ " ythickness = 0\n"
+ "}\n"
+ "widget \"*.empathy-close-button\" style \"empathy-close-button-style\"");
+
+ gtk_notebook_set_window_creation_hook (chat_window_detach_hook, NULL, NULL);
+}
+
+static void
+empathy_chat_window_init (EmpathyChatWindow *window)
+{
+ EmpathyChatWindowPriv *priv;
+ GladeXML *glade;
+ GtkAccelGroup *accel_group;
+ GtkWidget *image;
+ GClosure *closure;
+ GtkWidget *menu_conv;
+ GtkWidget *menu;
+ gint i;
+ GtkWidget *chat_vbox;
+
+ priv = GET_PRIV (window);
+
+ glade = empathy_glade_get_file ("empathy-chat.glade",
+ "chat_window",
+ NULL,
+ "chat_window", &priv->dialog,
+ "chat_vbox", &chat_vbox,
+ "menu_conv", &menu_conv,
+ "menu_conv_clear", &priv->menu_conv_clear,
+ "menu_conv_insert_smiley", &priv->menu_conv_insert_smiley,
+ "menu_conv_call", &priv->menu_conv_call,
+ "menu_conv_call_separator", &priv->menu_conv_call_separator,
+ "menu_conv_log", &priv->menu_conv_log,
+ "menu_conv_separator", &priv->menu_conv_separator,
+ "menu_conv_add_contact", &priv->menu_conv_add_contact,
+ "menu_conv_info", &priv->menu_conv_info,
+ "menu_conv_close", &priv->menu_conv_close,
+ "menu_room", &priv->menu_room,
+ "menu_room_set_topic", &priv->menu_room_set_topic,
+ "menu_room_join_new", &priv->menu_room_join_new,
+ "menu_room_invite", &priv->menu_room_invite,
+ "menu_room_add", &priv->menu_room_add,
+ "menu_room_show_contacts", &priv->menu_room_show_contacts,
+ "menu_edit_cut", &priv->menu_edit_cut,
+ "menu_edit_copy", &priv->menu_edit_copy,
+ "menu_edit_paste", &priv->menu_edit_paste,
+ "menu_tabs_next", &priv->menu_tabs_next,
+ "menu_tabs_prev", &priv->menu_tabs_prev,
+ "menu_tabs_left", &priv->menu_tabs_left,
+ "menu_tabs_right", &priv->menu_tabs_right,
+ "menu_tabs_detach", &priv->menu_tabs_detach,
+ "menu_help_contents", &priv->menu_help_contents,
+ "menu_help_about", &priv->menu_help_about,
+ NULL);
+
+ empathy_glade_connect (glade,
+ window,
+ "chat_window", "configure-event", chat_window_configure_event_cb,
+ "menu_conv", "activate", chat_window_conv_activate_cb,
+ "menu_conv_clear", "activate", chat_window_clear_activate_cb,
+ "menu_conv_call", "activate", chat_window_call_activate_cb,
+ "menu_conv_log", "activate", chat_window_log_activate_cb,
+ "menu_conv_add_contact", "activate", chat_window_add_contact_activate_cb,
+ "menu_conv_info", "activate", chat_window_info_activate_cb,
+ "menu_conv_close", "activate", chat_window_close_activate_cb,
+ "menu_room_set_topic", "activate", chat_window_room_set_topic_activate_cb,
+ "menu_room_join_new", "activate", chat_window_room_join_new_activate_cb,
+ "menu_room_invite", "activate", chat_window_room_invite_activate_cb,
+ "menu_room_add", "activate", chat_window_room_add_activate_cb,
+ "menu_edit", "activate", chat_window_edit_activate_cb,
+ "menu_edit_cut", "activate", chat_window_cut_activate_cb,
+ "menu_edit_copy", "activate", chat_window_copy_activate_cb,
+ "menu_edit_paste", "activate", chat_window_paste_activate_cb,
+ "menu_tabs_left", "activate", chat_window_tabs_left_activate_cb,
+ "menu_tabs_right", "activate", chat_window_tabs_right_activate_cb,
+ "menu_tabs_detach", "activate", chat_window_detach_activate_cb,
+ "menu_help_contents", "activate", chat_window_help_contents_cb,
+ "menu_help_about", "activate", chat_window_help_about_cb,
+ NULL);
+
+ g_object_unref (glade);
+
+ /* Set up chatroom manager */
+ priv->chatroom_manager = empathy_chatroom_manager_new ();
+ g_signal_connect_swapped (priv->chatroom_manager, "chatroom-added",
+ G_CALLBACK (chat_window_update_menu),
+ window);
+ g_signal_connect_swapped (priv->chatroom_manager, "chatroom-removed",
+ G_CALLBACK (chat_window_update_menu),
+ window);
+
+ priv->notebook = gtk_notebook_new ();
+ gtk_notebook_set_group (GTK_NOTEBOOK (priv->notebook), "EmpathyChatWindow");
+ gtk_box_pack_start (GTK_BOX (chat_vbox), priv->notebook, TRUE, TRUE, 0);
+ gtk_widget_show (priv->notebook);
+
+ /* Set up accels */
+ accel_group = gtk_accel_group_new ();
+ gtk_window_add_accel_group (GTK_WINDOW (priv->dialog), accel_group);
+
+ for (i = 0; i < G_N_ELEMENTS (tab_accel_keys); i++) {
+ closure = g_cclosure_new (G_CALLBACK (chat_window_accel_cb),
+ window,
+ NULL);
+ gtk_accel_group_connect (accel_group,
+ tab_accel_keys[i],
+ GDK_MOD1_MASK,
+ 0,
+ closure);
+ }
+
+ g_object_unref (accel_group);
+
+ /* Set the contact information menu item image to the Empathy
+ * stock image
+ */
+ image = gtk_image_menu_item_get_image (GTK_IMAGE_MENU_ITEM (priv->menu_conv_info));
+ gtk_image_set_from_icon_name (GTK_IMAGE (image),
+ EMPATHY_IMAGE_CONTACT_INFORMATION,
+ GTK_ICON_SIZE_MENU);
+
+ /* Set up smiley menu */
+ menu = empathy_chat_view_get_smiley_menu (
+ G_CALLBACK (chat_window_insert_smiley_activate_cb),
+ window);
+ gtk_menu_item_set_submenu (GTK_MENU_ITEM (priv->menu_conv_insert_smiley), menu);
+
+ /* Set up signals we can't do with glade since we may need to
+ * block/unblock them at some later stage.
+ */
+
+ g_signal_connect (priv->dialog,
+ "delete_event",
+ G_CALLBACK (chat_window_delete_event_cb),
+ window);
+
+ g_signal_connect (priv->menu_room_show_contacts,
+ "toggled",
+ G_CALLBACK (chat_window_show_contacts_toggled_cb),
+ window);
+
+ g_signal_connect_swapped (priv->menu_tabs_prev,
+ "activate",
+ G_CALLBACK (gtk_notebook_prev_page),
+ priv->notebook);
+ g_signal_connect_swapped (priv->menu_tabs_next,
+ "activate",
+ G_CALLBACK (gtk_notebook_next_page),
+ priv->notebook);
+
+ g_signal_connect (priv->dialog,
+ "focus_in_event",
+ G_CALLBACK (chat_window_focus_in_event_cb),
+ window);
+ g_signal_connect_after (priv->notebook,
+ "switch_page",
+ G_CALLBACK (chat_window_page_switched_cb),
+ window);
+ g_signal_connect (priv->notebook,
+ "page_reordered",
+ G_CALLBACK (chat_window_page_reordered_cb),
+ window);
+ g_signal_connect (priv->notebook,
+ "page_added",
+ G_CALLBACK (chat_window_page_added_cb),
+ window);
+ g_signal_connect (priv->notebook,
+ "page_removed",
+ G_CALLBACK (chat_window_page_removed_cb),
+ window);
+
+ /* Set up drag and drop */
+ gtk_drag_dest_set (GTK_WIDGET (priv->notebook),
+ GTK_DEST_DEFAULT_ALL,
+ drag_types_dest,
+ G_N_ELEMENTS (drag_types_dest),
+ GDK_ACTION_MOVE);
+
+ g_signal_connect (priv->notebook,
+ "drag-data-received",
+ G_CALLBACK (chat_window_drag_data_received),
+ window);
+
+ chat_windows = g_list_prepend (chat_windows, window);
+
+ /* Set up private details */
+ priv->chats = NULL;
+ priv->chats_new_msg = NULL;
+ priv->chats_composing = NULL;
+ priv->current_chat = NULL;
+}
+
+/* Returns the window to open a new tab in if there is only one window
+ * visble, otherwise, returns NULL indicating that a new window should
+ * be added.
+ */
+EmpathyChatWindow *
+empathy_chat_window_get_default (void)
+{
+ GList *l;
+ gboolean separate_windows = TRUE;
+
+ empathy_conf_get_bool (empathy_conf_get (),
+ EMPATHY_PREFS_UI_SEPARATE_CHAT_WINDOWS,
+ &separate_windows);
+
+ if (separate_windows) {
+ /* Always create a new window */
+ return NULL;
+ }
+
+ for (l = chat_windows; l; l = l->next) {
+ EmpathyChatWindow *chat_window;
+ GtkWidget *dialog;
+
+ chat_window = l->data;
+
+ dialog = empathy_chat_window_get_dialog (chat_window);
+ if (empathy_window_get_is_visible (GTK_WINDOW (GTK_WINDOW (dialog)))) {
+ /* Found a visible window on this desktop */
+ return chat_window;
+ }
+ }
+
+ return NULL;
+}
+
+static void
+empathy_chat_window_finalize (GObject *object)
+{
+ EmpathyChatWindow *window;
+ EmpathyChatWindowPriv *priv;
+
+ window = EMPATHY_CHAT_WINDOW (object);
+ priv = GET_PRIV (window);
+
+ empathy_debug (DEBUG_DOMAIN, "Finalized: %p", object);
+
+ if (priv->save_geometry_id != 0) {
+ g_source_remove (priv->save_geometry_id);
+ }
+
+ chat_windows = g_list_remove (chat_windows, window);
+ gtk_widget_destroy (priv->dialog);
+
+ g_signal_handlers_disconnect_by_func (priv->chatroom_manager,
+ chat_window_update_menu,
+ window);
+ g_object_unref (priv->chatroom_manager);
+
+ G_OBJECT_CLASS (empathy_chat_window_parent_class)->finalize (object);
+}
+
+static void
+chat_window_accel_cb (GtkAccelGroup *accelgroup,
+ GObject *object,
+ guint key,
+ GdkModifierType mod,
+ EmpathyChatWindow *window)
+{
+ EmpathyChatWindowPriv *priv;
+ gint num = -1;
+ gint i;
+
+ priv = GET_PRIV (window);
+
+ for (i = 0; i < G_N_ELEMENTS (tab_accel_keys); i++) {
+ if (tab_accel_keys[i] == key) {
+ num = i;
+ break;
+ }
+ }
+
+ if (num != -1) {
+ gtk_notebook_set_current_page (GTK_NOTEBOOK (priv->notebook), num);
+ }
+}
+
+static void
+chat_window_close_clicked_cb (GtkWidget *button,
+ EmpathyChat *chat)
+{
+ EmpathyChatWindow *window;
+
+ window = empathy_chat_get_window (chat);
+ empathy_chat_window_remove_chat (window, chat);
+}
+
+static void
+chat_window_close_button_style_set_cb (GtkWidget *button,
+ GtkStyle *previous_style,
+ gpointer user_data)
+{
+ gint h, w;
+
+ gtk_icon_size_lookup_for_settings (gtk_widget_get_settings (button),
+ GTK_ICON_SIZE_MENU, &w, &h);
+
+ gtk_widget_set_size_request (button, w, h);
+}
+
+static GtkWidget *
+chat_window_create_label (EmpathyChatWindow *window,
+ EmpathyChat *chat)
+{
+ EmpathyChatWindowPriv *priv;
+ GtkWidget *hbox;
+ GtkWidget *name_label;
+ GtkWidget *status_image;
+ GtkWidget *close_button;
+ GtkWidget *close_image;
+ GtkWidget *event_box;
+ GtkWidget *event_box_hbox;
+ PangoAttrList *attr_list;
+ PangoAttribute *attr;
+
+ priv = GET_PRIV (window);
+
+ /* The spacing between the button and the label. */
+ hbox = gtk_hbox_new (FALSE, 0);
+
+ event_box = gtk_event_box_new ();
+ gtk_event_box_set_visible_window (GTK_EVENT_BOX (event_box), FALSE);
+
+ name_label = gtk_label_new (empathy_chat_get_name (chat));
+ gtk_label_set_ellipsize (GTK_LABEL (name_label), PANGO_ELLIPSIZE_END);
+
+ attr_list = pango_attr_list_new ();
+ attr = pango_attr_scale_new (1/1.2);
+ attr->start_index = 0;
+ attr->end_index = -1;
+ pango_attr_list_insert (attr_list, attr);
+ gtk_label_set_attributes (GTK_LABEL (name_label), attr_list);
+ pango_attr_list_unref (attr_list);
+
+ gtk_misc_set_padding (GTK_MISC (name_label), 2, 0);
+ gtk_misc_set_alignment (GTK_MISC (name_label), 0.0, 0.5);
+ g_object_set_data (G_OBJECT (chat), "chat-window-tab-label", name_label);
+
+ status_image = gtk_image_new ();
+
+ /* Spacing between the icon and label. */
+ event_box_hbox = gtk_hbox_new (FALSE, 0);
+
+ gtk_box_pack_start (GTK_BOX (event_box_hbox), status_image, FALSE, FALSE, 0);
+ gtk_box_pack_start (GTK_BOX (event_box_hbox), name_label, TRUE, TRUE, 0);
+
+ g_object_set_data (G_OBJECT (chat), "chat-window-tab-image", status_image);
+ g_object_set_data (G_OBJECT (chat), "chat-window-tab-tooltip-widget", event_box);
+
+ close_button = gtk_button_new ();
+ gtk_button_set_relief (GTK_BUTTON (close_button), GTK_RELIEF_NONE);
+
+ /* We don't want focus/keynav for the button to avoid clutter, and
+ * Ctrl-W works anyway.
+ */
+ GTK_WIDGET_UNSET_FLAGS (close_button, GTK_CAN_FOCUS);
+ GTK_WIDGET_UNSET_FLAGS (close_button, GTK_CAN_DEFAULT);
+
+ /* Set the name to make the special rc style match. */
+ gtk_widget_set_name (close_button, "empathy-close-button");
+
+ close_image = gtk_image_new_from_stock (GTK_STOCK_CLOSE, GTK_ICON_SIZE_MENU);
+
+ gtk_container_add (GTK_CONTAINER (close_button), close_image);
+
+ gtk_container_add (GTK_CONTAINER (event_box), event_box_hbox);
+ gtk_box_pack_start (GTK_BOX (hbox), event_box, TRUE, TRUE, 0);
+ gtk_box_pack_end (GTK_BOX (hbox), close_button, FALSE, FALSE, 0);
+
+ /* React to theme changes and also used to setup the initial size
+ * correctly.
+ */
+ g_signal_connect (close_button,
+ "style-set",
+ G_CALLBACK (chat_window_close_button_style_set_cb),
+ chat);
+
+ g_signal_connect (close_button,
+ "clicked",
+ G_CALLBACK (chat_window_close_clicked_cb),
+ chat);
+
+ /* Set up tooltip */
+ chat_window_update_tooltip (window, chat);
+
+ gtk_widget_show_all (hbox);
+
+ return hbox;
+}
+
+static void
+chat_window_update_status (EmpathyChatWindow *window,
+ EmpathyChat *chat)
+{
+ EmpathyChatWindowPriv *priv;
+ GtkImage *image;
+ const gchar *icon_name = NULL;
+
+ priv = GET_PRIV (window);
+
+ if (g_list_find (priv->chats_new_msg, chat)) {
+ icon_name = EMPATHY_IMAGE_MESSAGE;
+ }
+ else if (g_list_find (priv->chats_composing, chat)) {
+ icon_name = EMPATHY_IMAGE_TYPING;
+ }
+ else {
+ icon_name = empathy_chat_get_status_icon_name (chat);
+ }
+ image = g_object_get_data (G_OBJECT (chat), "chat-window-tab-image");
+ gtk_image_set_from_icon_name (image, icon_name, GTK_ICON_SIZE_MENU);
+
+ chat_window_update_title (window, chat);
+ chat_window_update_tooltip (window, chat);
+}
+
+static void
+chat_window_update_title (EmpathyChatWindow *window,
+ EmpathyChat *chat)
+{
+ EmpathyChatWindowPriv *priv;
+ gint n_chats;
+
+ priv = GET_PRIV (window);
+
+ n_chats = g_list_length (priv->chats);
+ if (n_chats == 1) {
+ gtk_window_set_title (GTK_WINDOW (priv->dialog),
+ empathy_chat_get_name (priv->current_chat));
+ } else {
+ gchar *title;
+
+ title = g_strdup_printf (_("Conversations (%d)"), n_chats);
+ gtk_window_set_title (GTK_WINDOW (priv->dialog), title);
+ g_free (title);
+ }
+
+ if (priv->chats_new_msg) {
+ gtk_window_set_icon_name (GTK_WINDOW (priv->dialog),
+ EMPATHY_IMAGE_MESSAGE);
+ } else {
+ gtk_window_set_icon_name (GTK_WINDOW (priv->dialog), NULL);
+ }
+}
+
+static void
+chat_window_update_menu (EmpathyChatWindow *window)
+{
+ EmpathyChatWindowPriv *priv;
+ gboolean first_page;
+ gboolean last_page;
+ gboolean is_connected;
+ gint num_pages;
+ gint page_num;
+
+ priv = GET_PRIV (window);
+
+ /* Notebook pages */
+ page_num = gtk_notebook_get_current_page (GTK_NOTEBOOK (priv->notebook));
+ num_pages = gtk_notebook_get_n_pages (GTK_NOTEBOOK (priv->notebook));
+ first_page = (page_num == 0);
+ last_page = (page_num == (num_pages - 1));
+
+ gtk_widget_set_sensitive (priv->menu_tabs_next, !last_page);
+ gtk_widget_set_sensitive (priv->menu_tabs_prev, !first_page);
+ gtk_widget_set_sensitive (priv->menu_tabs_detach, num_pages > 1);
+ gtk_widget_set_sensitive (priv->menu_tabs_left, !first_page);
+ gtk_widget_set_sensitive (priv->menu_tabs_right, !last_page);
+
+ is_connected = empathy_chat_is_connected (priv->current_chat);
+
+ if (empathy_chat_is_group_chat (priv->current_chat)) {
+ EmpathyGroupChat *group_chat;
+ EmpathyChatroom *chatroom;
+ gboolean show_contacts;
+
+ group_chat = EMPATHY_GROUP_CHAT (priv->current_chat);
+
+ /* Show / Hide widgets */
+ gtk_widget_show (priv->menu_room);
+
+ gtk_widget_hide (priv->menu_conv_add_contact);
+ gtk_widget_hide (priv->menu_conv_info);
+ gtk_widget_hide (priv->menu_conv_separator);
+
+ /* Can we add this room to our favourites and are we
+ * connected to the room?
+ */
+ chatroom = empathy_chatroom_manager_find (priv->chatroom_manager,
+ empathy_chat_get_account (priv->current_chat),
+ empathy_chat_get_id (priv->current_chat));
+
+ gtk_widget_set_sensitive (priv->menu_room_add, chatroom == NULL);
+ gtk_widget_set_sensitive (priv->menu_conv_insert_smiley, is_connected);
+ gtk_widget_set_sensitive (priv->menu_room_join_new, is_connected);
+ gtk_widget_set_sensitive (priv->menu_room_invite, is_connected);
+
+ /* We need to block the signal here because all we are
+ * really trying to do is check or uncheck the menu
+ * item. If we don't do this we get funny behaviour
+ * with 2 or more group chat windows where showing
+ * contacts doesn't do anything.
+ */
+ show_contacts = empathy_group_chat_get_show_contacts (group_chat);
+
+ g_signal_handlers_block_by_func (priv->menu_room_show_contacts,
+ chat_window_show_contacts_toggled_cb,
+ window);
+
+ g_object_set (priv->menu_room_show_contacts,
+ "active", show_contacts,
+ NULL);
+
+ g_signal_handlers_unblock_by_func (priv->menu_room_show_contacts,
+ chat_window_show_contacts_toggled_cb,
+ window);
+ } else {
+ EmpathyPrivateChat *chat;
+ EmpathyContact *contact;
+ McPresence presence;
+
+ chat = EMPATHY_PRIVATE_CHAT (priv->current_chat);
+
+ /* Show / Hide widgets */
+ gtk_widget_hide (priv->menu_room);
+
+ /* Unset presence means this contact refuses to send us his
+ * presence. By adding the contact we ask the contact to accept
+ * to send his presence. */
+ contact = empathy_private_chat_get_contact (chat);
+ presence = empathy_contact_get_presence (contact);
+ if (presence == MC_PRESENCE_UNSET) {
+ gtk_widget_show (priv->menu_conv_add_contact);
+ } else {
+ gtk_widget_hide (priv->menu_conv_add_contact);
+ }
+
+ gtk_widget_show (priv->menu_conv_separator);
+ gtk_widget_show (priv->menu_conv_info);
+
+ /* Are we connected? */
+ gtk_widget_set_sensitive (priv->menu_conv_insert_smiley, is_connected);
+ gtk_widget_set_sensitive (priv->menu_conv_add_contact, is_connected);
+ gtk_widget_set_sensitive (priv->menu_conv_info, is_connected);
+ }
+}
+
+static void
+chat_window_insert_smiley_activate_cb (GtkWidget *menuitem,
+ EmpathyChatWindow *window)
+{
+ EmpathyChatWindowPriv *priv;
+ EmpathyChat *chat;
+ GtkTextBuffer *buffer;
+ GtkTextIter iter;
+ const gchar *smiley;
+
+ priv = GET_PRIV (window);
+
+ chat = priv->current_chat;
+
+ smiley = g_object_get_data (G_OBJECT (menuitem), "smiley_text");
+
+ buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (chat->input_text_view));
+ gtk_text_buffer_get_end_iter (buffer, &iter);
+ gtk_text_buffer_insert (buffer, &iter,
+ smiley, -1);
+}
+
+static void
+chat_window_clear_activate_cb (GtkWidget *menuitem,
+ EmpathyChatWindow *window)
+{
+ EmpathyChatWindowPriv *priv;
+
+ priv = GET_PRIV (window);
+
+ empathy_chat_clear (priv->current_chat);
+}
+
+static void
+chat_window_add_contact_activate_cb (GtkWidget *menuitem,
+ EmpathyChatWindow *window)
+{
+ EmpathyChatWindowPriv *priv;
+ //EmpathyContact *contact;
+
+ priv = GET_PRIV (window);
+
+ //contact = empathy_chat_get_contact (priv->current_chat);
+
+ // FIXME: empathy_add_contact_dialog_show (NULL, contact);
+}
+
+static void
+chat_window_call_activate_cb (GtkWidget *menuitem,
+ EmpathyChatWindow *window)
+{
+ EmpathyChatWindowPriv *priv;
+
+ priv = GET_PRIV (window);
+
+ if (!empathy_chat_is_group_chat (priv->current_chat)) {
+ EmpathyPrivateChat *chat;
+ EmpathyContact *contact;
+
+ chat = EMPATHY_PRIVATE_CHAT (priv->current_chat);
+ contact = empathy_private_chat_get_contact (chat);
+
+ empathy_call_with_contact (contact);
+ }
+}
+
+static void
+chat_window_log_activate_cb (GtkWidget *menuitem,
+ EmpathyChatWindow *window)
+{
+ EmpathyChatWindowPriv *priv;
+
+ priv = GET_PRIV (window);
+
+ empathy_log_window_show (empathy_chat_get_account (priv->current_chat),
+ empathy_chat_get_id (priv->current_chat),
+ empathy_chat_is_group_chat (priv->current_chat),
+ GTK_WINDOW (priv->dialog));
+}
+
+static void
+chat_window_info_activate_cb (GtkWidget *menuitem,
+ EmpathyChatWindow *window)
+{
+ EmpathyChatWindowPriv *priv;
+ EmpathyContact *contact;
+
+ priv = GET_PRIV (window);
+
+ contact = empathy_private_chat_get_contact (EMPATHY_PRIVATE_CHAT (priv->current_chat));
+
+ empathy_contact_information_dialog_show (contact,
+ GTK_WINDOW (priv->dialog),
+ FALSE, FALSE);
+}
+
+static gboolean
+chat_window_save_geometry_timeout_cb (EmpathyChatWindow *window)
+{
+ EmpathyChatWindowPriv *priv;
+ gint x, y, w, h;
+
+ priv = GET_PRIV (window);
+
+ gtk_window_get_size (GTK_WINDOW (priv->dialog), &w, &h);
+ gtk_window_get_position (GTK_WINDOW (priv->dialog), &x, &y);
+
+ empathy_chat_save_geometry (priv->current_chat, x, y, w, h);
+
+ priv->save_geometry_id = 0;
+
+ return FALSE;
+}
+
+static gboolean
+chat_window_configure_event_cb (GtkWidget *widget,
+ GdkEventConfigure *event,
+ EmpathyChatWindow *window)
+{
+ EmpathyChatWindowPriv *priv;
+
+ priv = GET_PRIV (window);
+
+ if (priv->save_geometry_id != 0) {
+ g_source_remove (priv->save_geometry_id);
+ }
+
+ priv->save_geometry_id =
+ g_timeout_add_seconds (1,
+ (GSourceFunc) chat_window_save_geometry_timeout_cb,
+ window);
+
+ return FALSE;
+}
+
+static void
+chat_window_conv_activate_cb (GtkWidget *menuitem,
+ EmpathyChatWindow *window)
+{
+ EmpathyChatWindowPriv *priv;
+ EmpathyLogManager *manager;
+ gboolean log_exists = FALSE;
+ gboolean can_voip = FALSE;
+
+ priv = GET_PRIV (window);
+
+ manager = empathy_log_manager_new ();
+ log_exists = empathy_log_manager_exists (manager,
+ empathy_chat_get_account (priv->current_chat),
+ empathy_chat_get_id (priv->current_chat),
+ empathy_chat_is_group_chat (priv->current_chat));
+ g_object_unref (manager);
+
+ if (!empathy_chat_is_group_chat (priv->current_chat)) {
+ EmpathyPrivateChat *chat;
+ EmpathyContact *contact;
+
+ chat = EMPATHY_PRIVATE_CHAT (priv->current_chat);
+ contact = empathy_private_chat_get_contact (chat);
+ can_voip = empathy_contact_can_voip (contact);
+ }
+
+ gtk_widget_set_sensitive (priv->menu_conv_log, log_exists);
+#ifdef HAVE_VOIP
+ gtk_widget_set_sensitive (priv->menu_conv_call, can_voip);
+#else
+ g_object_set (priv->menu_conv_call, "visible", FALSE, NULL);
+ g_object_set (priv->menu_conv_call_separator, "visible", FALSE, NULL);
+#endif
+}
+
+static void
+chat_window_show_contacts_toggled_cb (GtkWidget *menuitem,
+ EmpathyChatWindow *window)
+{
+ EmpathyChatWindowPriv *priv;
+ gboolean show;
+
+ priv = GET_PRIV (window);
+
+ g_return_if_fail (priv->current_chat != NULL);
+
+ show = gtk_check_menu_item_get_active (GTK_CHECK_MENU_ITEM (priv->menu_room_show_contacts));
+ empathy_group_chat_set_show_contacts (EMPATHY_GROUP_CHAT (priv->current_chat), show);
+}
+
+static void
+chat_window_close_activate_cb (GtkWidget *menuitem,
+ EmpathyChatWindow *window)
+{
+ EmpathyChatWindowPriv *priv;
+
+ priv = GET_PRIV (window);
+
+ g_return_if_fail (priv->current_chat != NULL);
+
+ empathy_chat_window_remove_chat (window, priv->current_chat);
+}
+
+static void
+chat_window_room_set_topic_activate_cb (GtkWidget *menuitem,
+ EmpathyChatWindow *window)
+{
+ EmpathyChatWindowPriv *priv;
+
+ priv = GET_PRIV (window);
+
+ if (empathy_chat_is_group_chat (priv->current_chat)) {
+ EmpathyGroupChat *group_chat;
+
+ group_chat = EMPATHY_GROUP_CHAT (priv->current_chat);
+ empathy_group_chat_set_topic (group_chat);
+ }
+}
+
+static void
+chat_window_room_join_new_activate_cb (GtkWidget *menuitem,
+ EmpathyChatWindow *window)
+{
+ EmpathyChatWindowPriv *priv;
+
+ priv = GET_PRIV (window);
+
+ empathy_new_chatroom_dialog_show (GTK_WINDOW (priv->dialog));
+}
+
+static void
+chat_window_room_invite_activate_cb (GtkWidget *menuitem,
+ EmpathyChatWindow *window)
+{
+/* FIXME:
+ EmpathyChatWindowPriv *priv;
+ EmpathyContact *own_contact;
+ EmpathyChatroomId id = 0;
+
+ priv = GET_PRIV (window);
+ own_contact = empathy_chat_get_own_contact (priv->current_chat);
+
+ if (empathy_chat_is_group_chat (priv->current_chat)) {
+ EmpathyGroupChat *group_chat;
+
+ group_chat = EMPATHY_GROUP_CHAT (priv->current_chat);
+ id = empathy_group_chat_get_chatroom_id (group_chat);
+ }
+
+ empathy_chat_invite_dialog_show (own_contact, id);
+*/
+}
+
+static void
+chat_window_room_add_activate_cb (GtkWidget *menuitem,
+ EmpathyChatWindow *window)
+{
+ EmpathyChatWindowPriv *priv;
+ EmpathyChatroomManager *manager;
+ EmpathyChatroom *chatroom;
+
+ priv = GET_PRIV (window);
+
+ g_return_if_fail (priv->current_chat != NULL);
+
+ if (!empathy_chat_is_group_chat (priv->current_chat)) {
+ return;
+ }
+
+ chatroom = empathy_chatroom_new_full (empathy_chat_get_account (priv->current_chat),
+ empathy_chat_get_id (priv->current_chat),
+ empathy_chat_get_name (priv->current_chat),
+ FALSE);
+
+ manager = empathy_chatroom_manager_new ();
+ empathy_chatroom_manager_add (manager, chatroom);
+ chat_window_update_menu (window);
+
+ g_object_unref (chatroom);
+ g_object_unref (manager);
+}
+
+static void
+chat_window_edit_activate_cb (GtkWidget *menuitem,
+ EmpathyChatWindow *window)
+{
+ EmpathyChatWindowPriv *priv;
+ GtkClipboard *clipboard;
+ GtkTextBuffer *buffer;
+ gboolean text_available;
+
+ priv = GET_PRIV (window);
+
+ g_return_if_fail (priv->current_chat != NULL);
+
+ if (!empathy_chat_is_connected (priv->current_chat)) {
+ gtk_widget_set_sensitive (priv->menu_edit_copy, FALSE);
+ gtk_widget_set_sensitive (priv->menu_edit_cut, FALSE);
+ gtk_widget_set_sensitive (priv->menu_edit_paste, FALSE);
+ return;
+ }
+
+ buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (priv->current_chat->input_text_view));
+ if (gtk_text_buffer_get_selection_bounds (buffer, NULL, NULL)) {
+ gtk_widget_set_sensitive (priv->menu_edit_copy, TRUE);
+ gtk_widget_set_sensitive (priv->menu_edit_cut, TRUE);
+ } else {
+ gboolean selection;
+
+ selection = empathy_chat_view_get_selection_bounds (priv->current_chat->view,
+ NULL, NULL);
+
+ gtk_widget_set_sensitive (priv->menu_edit_cut, FALSE);
+ gtk_widget_set_sensitive (priv->menu_edit_copy, selection);
+ }
+
+ clipboard = gtk_clipboard_get (GDK_SELECTION_CLIPBOARD);
+ text_available = gtk_clipboard_wait_is_text_available (clipboard);
+ gtk_widget_set_sensitive (priv->menu_edit_paste, text_available);
+}
+
+static void
+chat_window_cut_activate_cb (GtkWidget *menuitem,
+ EmpathyChatWindow *window)
+{
+ EmpathyChatWindowPriv *priv;
+
+ g_return_if_fail (EMPATHY_IS_CHAT_WINDOW (window));
+
+ priv = GET_PRIV (window);
+
+ empathy_chat_cut (priv->current_chat);
+}
+
+static void
+chat_window_copy_activate_cb (GtkWidget *menuitem,
+ EmpathyChatWindow *window)
+{
+ EmpathyChatWindowPriv *priv;
+
+ g_return_if_fail (EMPATHY_IS_CHAT_WINDOW (window));
+
+ priv = GET_PRIV (window);
+
+ empathy_chat_copy (priv->current_chat);
+}
+
+static void
+chat_window_paste_activate_cb (GtkWidget *menuitem,
+ EmpathyChatWindow *window)
+{
+ EmpathyChatWindowPriv *priv;
+
+ g_return_if_fail (EMPATHY_IS_CHAT_WINDOW (window));
+
+ priv = GET_PRIV (window);
+
+ empathy_chat_paste (priv->current_chat);
+}
+
+static void
+chat_window_tabs_left_activate_cb (GtkWidget *menuitem,
+ EmpathyChatWindow *window)
+{
+ EmpathyChatWindowPriv *priv;
+ EmpathyChat *chat;
+ gint index;
+
+ priv = GET_PRIV (window);
+
+ chat = priv->current_chat;
+ index = gtk_notebook_get_current_page (GTK_NOTEBOOK (priv->notebook));
+ if (index <= 0) {
+ return;
+ }
+
+ gtk_notebook_reorder_child (GTK_NOTEBOOK (priv->notebook),
+ empathy_chat_get_widget (chat),
+ index - 1);
+
+ chat_window_update_menu (window);
+ chat_window_update_status (window, chat);
+}
+
+static void
+chat_window_tabs_right_activate_cb (GtkWidget *menuitem,
+ EmpathyChatWindow *window)
+{
+ EmpathyChatWindowPriv *priv;
+ EmpathyChat *chat;
+ gint index;
+
+ priv = GET_PRIV (window);
+
+ chat = priv->current_chat;
+ index = gtk_notebook_get_current_page (GTK_NOTEBOOK (priv->notebook));
+
+ gtk_notebook_reorder_child (GTK_NOTEBOOK (priv->notebook),
+ empathy_chat_get_widget (chat),
+ index + 1);
+
+ chat_window_update_menu (window);
+ chat_window_update_status (window, chat);
+}
+
+static void
+chat_window_detach_activate_cb (GtkWidget *menuitem,
+ EmpathyChatWindow *window)
+{
+ EmpathyChatWindowPriv *priv;
+ EmpathyChatWindow *new_window;
+ EmpathyChat *chat;
+
+ priv = GET_PRIV (window);
+
+ chat = priv->current_chat;
+ new_window = empathy_chat_window_new ();
+
+ empathy_chat_window_move_chat (window, new_window, chat);
+
+ priv = GET_PRIV (new_window);
+ gtk_widget_show (priv->dialog);
+}
+
+static void
+chat_window_help_contents_cb (GtkWidget *menuitem,
+ EmpathyChatWindow *window)
+{
+ //empathy_help_show ();
+}
+
+static void
+chat_window_help_about_cb (GtkWidget *menuitem,
+ EmpathyChatWindow *window)
+{
+ empathy_about_dialog_new (GTK_WINDOW (window));
+}
+
+static gboolean
+chat_window_delete_event_cb (GtkWidget *dialog,
+ GdkEvent *event,
+ EmpathyChatWindow *window)
+{
+ EmpathyChatWindowPriv *priv;
+ GList *list;
+ GList *l;
+
+ priv = GET_PRIV (window);
+
+ empathy_debug (DEBUG_DOMAIN, "Delete event received");
+
+ list = g_list_copy (priv->chats);
+
+ for (l = list; l; l = l->next) {
+ empathy_chat_window_remove_chat (window, l->data);
+ }
+
+ g_list_free (list);
+
+ return TRUE;
+}
+
+static void
+chat_window_status_changed_cb (EmpathyChat *chat,
+ EmpathyChatWindow *window)
+{
+ chat_window_update_menu (window);
+ chat_window_update_status (window, chat);
+}
+
+static void
+chat_window_update_tooltip (EmpathyChatWindow *window,
+ EmpathyChat *chat)
+{
+ EmpathyChatWindowPriv *priv;
+ GtkWidget *widget;
+ gchar *current_tooltip;
+ gchar *str;
+
+ priv = GET_PRIV (window);
+
+ current_tooltip = empathy_chat_get_tooltip (chat);
+
+ if (g_list_find (priv->chats_composing, chat)) {
+ str = g_strconcat (current_tooltip, "\n", _("Typing a message."), NULL);
+ g_free (current_tooltip);
+ } else {
+ str = current_tooltip;
+ }
+
+ widget = g_object_get_data (G_OBJECT (chat), "chat-window-tab-tooltip-widget");
+ gtk_widget_set_tooltip_text (widget, str);
+
+ g_free (str);
+}
+
+static void
+chat_window_name_changed_cb (EmpathyChat *chat,
+ const gchar *name,
+ EmpathyChatWindow *window)
+{
+ GtkLabel *label;
+
+ label = g_object_get_data (G_OBJECT (chat), "chat-window-tab-label");
+
+ gtk_label_set_text (label, name);
+}
+
+static void
+chat_window_composing_cb (EmpathyChat *chat,
+ gboolean is_composing,
+ EmpathyChatWindow *window)
+{
+ EmpathyChatWindowPriv *priv;
+
+ priv = GET_PRIV (window);
+
+ if (is_composing && !g_list_find (priv->chats_composing, chat)) {
+ priv->chats_composing = g_list_prepend (priv->chats_composing, chat);
+ } else {
+ priv->chats_composing = g_list_remove (priv->chats_composing, chat);
+ }
+
+ chat_window_update_status (window, chat);
+}
+
+static void
+chat_window_new_message_cb (EmpathyChat *chat,
+ EmpathyMessage *message,
+ gboolean is_backlog,
+ EmpathyChatWindow *window)
+{
+ EmpathyChatWindowPriv *priv;
+ gboolean has_focus;
+ gboolean needs_urgency;
+
+ priv = GET_PRIV (window);
+
+ has_focus = empathy_chat_window_has_focus (window);
+
+ if (has_focus && priv->current_chat == chat) {
+ empathy_debug (DEBUG_DOMAIN, "New message, we have focus");
+ return;
+ }
+
+ empathy_debug (DEBUG_DOMAIN, "New message, no focus");
+
+ needs_urgency = FALSE;
+ if (empathy_chat_is_group_chat (chat)) {
+ if (!is_backlog &&
+ empathy_chat_should_highlight_nick (message)) {
+ empathy_debug (DEBUG_DOMAIN, "Highlight this nick");
+ needs_urgency = TRUE;
+ }
+ } else {
+ needs_urgency = TRUE;
+ }
+
+ if (needs_urgency && !has_focus) {
+ chat_window_set_urgency_hint (window, TRUE);
+ }
+
+ if (!is_backlog &&
+ !g_list_find (priv->chats_new_msg, chat)) {
+ priv->chats_new_msg = g_list_prepend (priv->chats_new_msg, chat);
+ chat_window_update_status (window, chat);
+ }
+}
+
+static GtkNotebook *
+chat_window_detach_hook (GtkNotebook *source,
+ GtkWidget *page,
+ gint x,
+ gint y,
+ gpointer user_data)
+{
+ EmpathyChatWindowPriv *priv;
+ EmpathyChatWindow *window, *new_window;
+ EmpathyChat *chat;
+
+ chat = g_object_get_data (G_OBJECT (page), "chat");
+ window = empathy_chat_get_window (chat);
+
+ new_window = empathy_chat_window_new ();
+ priv = GET_PRIV (new_window);
+
+ empathy_debug (DEBUG_DOMAIN, "Detach hook called");
+
+ empathy_chat_window_move_chat (window, new_window, chat);
+
+ gtk_window_move (GTK_WINDOW (priv->dialog), x, y);
+ gtk_widget_show (priv->dialog);
+
+ return NULL;
+}
+
+static void
+chat_window_page_switched_cb (GtkNotebook *notebook,
+ GtkNotebookPage *page,
+ gint page_num,
+ EmpathyChatWindow *window)
+{
+ EmpathyChatWindowPriv *priv;
+ EmpathyChat *chat;
+ GtkWidget *child;
+
+ empathy_debug (DEBUG_DOMAIN, "Page switched");
+
+ priv = GET_PRIV (window);
+
+ child = gtk_notebook_get_nth_page (notebook, page_num);
+ chat = g_object_get_data (G_OBJECT (child), "chat");
+
+ if (priv->page_added) {
+ priv->page_added = FALSE;
+ empathy_chat_scroll_down (chat);
+ }
+ else if (priv->current_chat == chat) {
+ return;
+ }
+
+ priv->current_chat = chat;
+ priv->chats_new_msg = g_list_remove (priv->chats_new_msg, chat);
+
+ chat_window_update_menu (window);
+ chat_window_update_status (window, chat);
+}
+
+static void
+chat_window_page_reordered_cb (GtkNotebook *notebook,
+ GtkWidget *widget,
+ guint page_num,
+ EmpathyChatWindow *window)
+{
+ empathy_debug (DEBUG_DOMAIN, "Page reordered");
+
+ chat_window_update_menu (window);
+}
+
+static void
+chat_window_page_added_cb (GtkNotebook *notebook,
+ GtkWidget *child,
+ guint page_num,
+ EmpathyChatWindow *window)
+{
+ EmpathyChatWindowPriv *priv;
+ EmpathyChat *chat;
+
+ priv = GET_PRIV (window);
+
+ /* If we just received DND to the same window, we don't want
+ * to do anything here like removing the tab and then readding
+ * it, so we return here and in "page-added".
+ */
+ if (priv->dnd_same_window) {
+ empathy_debug (DEBUG_DOMAIN, "Page added (back to the same window)");
+ priv->dnd_same_window = FALSE;
+ return;
+ }
+
+ empathy_debug (DEBUG_DOMAIN, "Page added");
+
+ /* Get chat object */
+ chat = g_object_get_data (G_OBJECT (child), "chat");
+
+ /* Set the chat window */
+ empathy_chat_set_window (chat, window);
+
+ /* Connect chat signals for this window */
+ g_signal_connect (chat, "status-changed",
+ G_CALLBACK (chat_window_status_changed_cb),
+ window);
+ g_signal_connect (chat, "name-changed",
+ G_CALLBACK (chat_window_name_changed_cb),
+ window);
+ g_signal_connect (chat, "composing",
+ G_CALLBACK (chat_window_composing_cb),
+ window);
+ g_signal_connect (chat, "new-message",
+ G_CALLBACK (chat_window_new_message_cb),
+ window);
+
+ /* Set flag so we know to perform some special operations on
+ * switch page due to the new page being added.
+ */
+ priv->page_added = TRUE;
+
+ /* Get list of chats up to date */
+ priv->chats = g_list_append (priv->chats, chat);
+}
+
+static void
+chat_window_page_removed_cb (GtkNotebook *notebook,
+ GtkWidget *child,
+ guint page_num,
+ EmpathyChatWindow *window)
+{
+ EmpathyChatWindowPriv *priv;
+ EmpathyChat *chat;
+
+ priv = GET_PRIV (window);
+
+ /* If we just received DND to the same window, we don't want
+ * to do anything here like removing the tab and then readding
+ * it, so we return here and in "page-added".
+ */
+ if (priv->dnd_same_window) {
+ empathy_debug (DEBUG_DOMAIN, "Page removed (and will be readded to same window)");
+ return;
+ }
+
+ empathy_debug (DEBUG_DOMAIN, "Page removed");
+
+ /* Get chat object */
+ chat = g_object_get_data (G_OBJECT (child), "chat");
+
+ /* Unset the window associated with a chat */
+ empathy_chat_set_window (chat, NULL);
+
+ /* Disconnect all signal handlers for this chat and this window */
+ g_signal_handlers_disconnect_by_func (chat,
+ G_CALLBACK (chat_window_status_changed_cb),
+ window);
+ g_signal_handlers_disconnect_by_func (chat,
+ G_CALLBACK (chat_window_name_changed_cb),
+ window);
+ g_signal_handlers_disconnect_by_func (chat,
+ G_CALLBACK (chat_window_composing_cb),
+ window);
+ g_signal_handlers_disconnect_by_func (chat,
+ G_CALLBACK (chat_window_new_message_cb),
+ window);
+
+ /* Keep list of chats up to date */
+ priv->chats = g_list_remove (priv->chats, chat);
+ priv->chats_new_msg = g_list_remove (priv->chats_new_msg, chat);
+ priv->chats_composing = g_list_remove (priv->chats_composing, chat);
+
+ if (priv->chats == NULL) {
+ g_object_unref (window);
+ } else {
+ chat_window_update_menu (window);
+ chat_window_update_title (window, NULL);
+ }
+}
+
+static gboolean
+chat_window_focus_in_event_cb (GtkWidget *widget,
+ GdkEvent *event,
+ EmpathyChatWindow *window)
+{
+ EmpathyChatWindowPriv *priv;
+
+ empathy_debug (DEBUG_DOMAIN, "Focus in event, updating title");
+
+ priv = GET_PRIV (window);
+
+ priv->chats_new_msg = g_list_remove (priv->chats_new_msg, priv->current_chat);
+
+ chat_window_set_urgency_hint (window, FALSE);
+
+ /* Update the title, since we now mark all unread messages as read. */
+ chat_window_update_status (window, priv->current_chat);
+
+ return FALSE;
+}
+
+static void
+chat_window_drag_data_received (GtkWidget *widget,
+ GdkDragContext *context,
+ int x,
+ int y,
+ GtkSelectionData *selection,
+ guint info,
+ guint time,
+ EmpathyChatWindow *window)
+{
+ if (info == DND_DRAG_TYPE_CONTACT_ID) {
+ EmpathyContactFactory *factory;
+ EmpathyContact *contact = NULL;
+ EmpathyChat *chat;
+ EmpathyChatWindow *old_window;
+ McAccount *account;
+ const gchar *id = NULL;
+ gchar **strv;
+
+ if (selection) {
+ id = (const gchar*) selection->data;
+ }
+
+ empathy_debug (DEBUG_DOMAIN, "DND contact from roster with id:'%s'", id);
+
+ strv = g_strsplit (id, "/", 2);
+ factory = empathy_contact_factory_new ();
+ account = mc_account_lookup (strv[0]);
+ if (account) {
+ contact = empathy_contact_factory_get_from_id (factory,
+ account,
+ strv[1]);
+ g_object_unref (account);
+ }
+ g_object_unref (factory);
+ g_object_unref (account);
+ g_strfreev (strv);
+
+ if (!contact) {
+ empathy_debug (DEBUG_DOMAIN, "DND contact from roster not found");
+ return;
+ }
+
+ account = empathy_contact_get_account (contact);
+ chat = empathy_chat_window_find_chat (account, id);
+
+ if (!chat) {
+ empathy_chat_with_contact_id (account, id);
+ return;
+ }
+
+ old_window = empathy_chat_get_window (chat);
+ if (old_window) {
+ if (old_window == window) {
+ gtk_drag_finish (context, TRUE, FALSE, time);
+ return;
+ }
+
+ empathy_chat_window_move_chat (old_window, window, chat);
+ } else {
+ empathy_chat_window_add_chat (window, chat);
+ }
+
+ /* Added to take care of any outstanding chat events */
+ empathy_chat_present (chat);
+
+ /* We should return TRUE to remove the data when doing
+ * GDK_ACTION_MOVE, but we don't here otherwise it has
+ * weird consequences, and we handle that internally
+ * anyway with add_chat() and remove_chat().
+ */
+ gtk_drag_finish (context, TRUE, FALSE, time);
+ }
+ else if (info == DND_DRAG_TYPE_TAB) {
+ EmpathyChat *chat = NULL;
+ EmpathyChatWindow *old_window;
+ GtkWidget **child = NULL;
+
+ empathy_debug (DEBUG_DOMAIN, "DND tab");
+
+ if (selection) {
+ child = (void*) selection->data;
+ }
+
+ if (child) {
+ chat = g_object_get_data (G_OBJECT (*child), "chat");
+ }
+
+ old_window = empathy_chat_get_window (chat);
+ if (old_window) {
+ EmpathyChatWindowPriv *priv;
+
+ priv = GET_PRIV (window);
+
+ if (old_window == window) {
+ empathy_debug (DEBUG_DOMAIN, "DND tab (within same window)");
+ priv->dnd_same_window = TRUE;
+ gtk_drag_finish (context, TRUE, FALSE, time);
+ return;
+ }
+
+ priv->dnd_same_window = FALSE;
+ }
+
+ /* We should return TRUE to remove the data when doing
+ * GDK_ACTION_MOVE, but we don't here otherwise it has
+ * weird consequences, and we handle that internally
+ * anyway with add_chat() and remove_chat().
+ */
+ gtk_drag_finish (context, TRUE, FALSE, time);
+ } else {
+ empathy_debug (DEBUG_DOMAIN, "DND from unknown source");
+ gtk_drag_finish (context, FALSE, FALSE, time);
+ }
+}
+
+static void
+chat_window_set_urgency_hint (EmpathyChatWindow *window,
+ gboolean urgent)
+{
+ EmpathyChatWindowPriv *priv;
+
+ priv = GET_PRIV (window);
+
+ empathy_debug (DEBUG_DOMAIN, "Turning %s urgency hint",
+ urgent ? "on" : "off");
+ gtk_window_set_urgency_hint (GTK_WINDOW (priv->dialog), urgent);
+}
+
+EmpathyChatWindow *
+empathy_chat_window_new (void)
+{
+ return EMPATHY_CHAT_WINDOW (g_object_new (EMPATHY_TYPE_CHAT_WINDOW, NULL));
+}
+
+GtkWidget *
+empathy_chat_window_get_dialog (EmpathyChatWindow *window)
+{
+ EmpathyChatWindowPriv *priv;
+
+ g_return_val_if_fail (window != NULL, NULL);
+
+ priv = GET_PRIV (window);
+
+ return priv->dialog;
+}
+
+void
+empathy_chat_window_add_chat (EmpathyChatWindow *window,
+ EmpathyChat *chat)
+{
+ EmpathyChatWindowPriv *priv;
+ GtkWidget *label;
+ GtkWidget *child;
+ gint x, y, w, h;
+
+ g_return_if_fail (window != NULL);
+ g_return_if_fail (EMPATHY_IS_CHAT (chat));
+
+ priv = GET_PRIV (window);
+
+ /* Reference the chat object */
+ g_object_ref (chat);
+
+ /* Set the chat window */
+ empathy_chat_set_window (chat, window);
+
+ empathy_chat_load_geometry (chat, &x, &y, &w, &h);
+
+ if (x >= 0 && y >= 0) {
+ /* Let the window manager position it if we don't have
+ * good x, y coordinates.
+ */
+ gtk_window_move (GTK_WINDOW (priv->dialog), x, y);
+ }
+
+ if (w > 0 && h > 0) {
+ /* Use the defaults from the glade file if we don't have
+ * good w, h geometry.
+ */
+ gtk_window_resize (GTK_WINDOW (priv->dialog), w, h);
+ }
+
+ child = empathy_chat_get_widget (chat);
+ label = chat_window_create_label (window, chat);
+
+ gtk_notebook_append_page (GTK_NOTEBOOK (priv->notebook), child, label);
+ gtk_notebook_set_tab_reorderable (GTK_NOTEBOOK (priv->notebook), child, TRUE);
+ gtk_notebook_set_tab_detachable (GTK_NOTEBOOK (priv->notebook), child, TRUE);
+ gtk_notebook_set_tab_label_packing (GTK_NOTEBOOK (priv->notebook), child,
+ TRUE, TRUE, GTK_PACK_START);
+
+ empathy_debug (DEBUG_DOMAIN,
+ "Chat added (%d references)",
+ G_OBJECT (chat)->ref_count);
+}
+
+void
+empathy_chat_window_remove_chat (EmpathyChatWindow *window,
+ EmpathyChat *chat)
+{
+ EmpathyChatWindowPriv *priv;
+ gint position;
+
+ g_return_if_fail (window != NULL);
+ g_return_if_fail (EMPATHY_IS_CHAT (chat));
+
+ priv = GET_PRIV (window);
+
+ position = gtk_notebook_page_num (GTK_NOTEBOOK (priv->notebook),
+ empathy_chat_get_widget (chat));
+ gtk_notebook_remove_page (GTK_NOTEBOOK (priv->notebook), position);
+
+ empathy_debug (DEBUG_DOMAIN,
+ "Chat removed (%d references)",
+ G_OBJECT (chat)->ref_count - 1);
+
+ g_object_unref (chat);
+}
+
+void
+empathy_chat_window_move_chat (EmpathyChatWindow *old_window,
+ EmpathyChatWindow *new_window,
+ EmpathyChat *chat)
+{
+ GtkWidget *widget;
+
+ g_return_if_fail (EMPATHY_IS_CHAT_WINDOW (old_window));
+ g_return_if_fail (EMPATHY_IS_CHAT_WINDOW (new_window));
+ g_return_if_fail (EMPATHY_IS_CHAT (chat));
+
+ widget = empathy_chat_get_widget (chat);
+
+ empathy_debug (DEBUG_DOMAIN,
+ "Chat moving with widget:%p (%d references)",
+ widget,
+ G_OBJECT (widget)->ref_count);
+
+ /* We reference here to make sure we don't loose the widget
+ * and the EmpathyChat object during the move.
+ */
+ g_object_ref (chat);
+ g_object_ref (widget);
+
+ empathy_chat_window_remove_chat (old_window, chat);
+ empathy_chat_window_add_chat (new_window, chat);
+
+ g_object_unref (widget);
+ g_object_unref (chat);
+}
+
+void
+empathy_chat_window_switch_to_chat (EmpathyChatWindow *window,
+ EmpathyChat *chat)
+{
+ EmpathyChatWindowPriv *priv;
+ gint page_num;
+
+ g_return_if_fail (window != NULL);
+ g_return_if_fail (EMPATHY_IS_CHAT (chat));
+
+ priv = GET_PRIV (window);
+
+ page_num = gtk_notebook_page_num (GTK_NOTEBOOK (priv->notebook),
+ empathy_chat_get_widget (chat));
+ gtk_notebook_set_current_page (GTK_NOTEBOOK (priv->notebook),
+ page_num);
+}
+
+gboolean
+empathy_chat_window_has_focus (EmpathyChatWindow *window)
+{
+ EmpathyChatWindowPriv *priv;
+ gboolean has_focus;
+
+ g_return_val_if_fail (EMPATHY_IS_CHAT_WINDOW (window), FALSE);
+
+ priv = GET_PRIV (window);
+
+ g_object_get (priv->dialog, "has-toplevel-focus", &has_focus, NULL);
+
+ return has_focus;
+}
+
+EmpathyChat *
+empathy_chat_window_find_chat (McAccount *account,
+ const gchar *id)
+{
+ GList *l;
+
+ g_return_val_if_fail (MC_IS_ACCOUNT (account), NULL);
+ g_return_val_if_fail (!G_STR_EMPTY (id), NULL);
+
+ for (l = chat_windows; l; l = l->next) {
+ EmpathyChatWindowPriv *priv;
+ EmpathyChatWindow *window;
+ GList *ll;
+
+ window = l->data;
+ priv = GET_PRIV (window);
+
+ for (ll = priv->chats; ll; ll = ll->next) {
+ EmpathyChat *chat;
+
+ chat = ll->data;
+
+ if (empathy_account_equal (account, empathy_chat_get_account (chat)) &&
+ strcmp (id, empathy_chat_get_id (chat)) == 0) {
+ return chat;
+ }
+ }
+ }
+
+ return NULL;
+}
+
diff --git a/gnome-2-22/libempathy-gtk/empathy-chat-window.h b/gnome-2-22/libempathy-gtk/empathy-chat-window.h
new file mode 100644
index 000000000..c79f7519e
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-chat-window.h
@@ -0,0 +1,80 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2003-2007 Imendio AB
+ * Copyright (C) 2007 Collabora Ltd.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * 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: Mikael Hallendal <micke@imendio.com>
+ * Richard Hult <richard@imendio.com>
+ * Martyn Russell <martyn@imendio.com>
+ * Geert-Jan Van den Bogaerde <geertjan@gnome.org>
+ * Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#ifndef __EMPATHY_CHAT_WINDOW_H__
+#define __EMPATHY_CHAT_WINDOW_H__
+
+#include <glib-object.h>
+
+#include <libmissioncontrol/mc-account.h>
+
+G_BEGIN_DECLS
+
+#define EMPATHY_TYPE_CHAT_WINDOW (empathy_chat_window_get_type ())
+#define EMPATHY_CHAT_WINDOW(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), EMPATHY_TYPE_CHAT_WINDOW, EmpathyChatWindow))
+#define EMPATHY_CHAT_WINDOW_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), EMPATHY_TYPE_CHAT_WINDOW, EmpathyChatWindowClass))
+#define EMPATHY_IS_CHAT_WINDOW(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), EMPATHY_TYPE_CHAT_WINDOW))
+#define EMPATHY_IS_CHAT_WINDOW_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), EMPATHY_TYPE_CHAT_WINDOW))
+#define EMPATHY_CHAT_WINDOW_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), EMPATHY_TYPE_CHAT_WINDOW, EmpathyChatWindowClass))
+
+typedef struct _EmpathyChatWindow EmpathyChatWindow;
+typedef struct _EmpathyChatWindowClass EmpathyChatWindowClass;
+typedef struct _EmpathyChatWindowPriv EmpathyChatWindowPriv;
+
+#include "empathy-chat.h"
+
+struct _EmpathyChatWindow {
+ GObject parent;
+};
+
+struct _EmpathyChatWindowClass {
+ GObjectClass parent_class;
+};
+
+GType empathy_chat_window_get_type (void);
+EmpathyChatWindow *empathy_chat_window_get_default (void);
+
+EmpathyChatWindow *empathy_chat_window_new (void);
+
+GtkWidget * empathy_chat_window_get_dialog (EmpathyChatWindow *window);
+
+void empathy_chat_window_add_chat (EmpathyChatWindow *window,
+ EmpathyChat *chat);
+void empathy_chat_window_remove_chat (EmpathyChatWindow *window,
+ EmpathyChat *chat);
+void empathy_chat_window_move_chat (EmpathyChatWindow *old_window,
+ EmpathyChatWindow *new_window,
+ EmpathyChat *chat);
+void empathy_chat_window_switch_to_chat (EmpathyChatWindow *window,
+ EmpathyChat *chat);
+gboolean empathy_chat_window_has_focus (EmpathyChatWindow *window);
+EmpathyChat * empathy_chat_window_find_chat (McAccount *account,
+ const gchar *id);
+
+G_END_DECLS
+
+#endif /* __EMPATHY_CHAT_WINDOW_H__ */
diff --git a/gnome-2-22/libempathy-gtk/empathy-chat.c b/gnome-2-22/libempathy-gtk/empathy-chat.c
new file mode 100644
index 000000000..b02452476
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-chat.c
@@ -0,0 +1,1761 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2002-2007 Imendio AB
+ * Copyright (C) 2007-2008 Collabora Ltd.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * 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: Mikael Hallendal <micke@imendio.com>
+ * Richard Hult <richard@imendio.com>
+ * Martyn Russell <martyn@imendio.com>
+ * Geert-Jan Van den Bogaerde <geertjan@gnome.org>
+ * Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#include "config.h"
+
+#include <string.h>
+#include <stdlib.h>
+
+#include <gdk/gdkkeysyms.h>
+#include <glib/gi18n.h>
+#include <gtk/gtk.h>
+
+#include <libmissioncontrol/mission-control.h>
+
+#include <libempathy/empathy-contact-manager.h>
+#include <libempathy/empathy-log-manager.h>
+#include <libempathy/empathy-debug.h>
+#include <libempathy/empathy-utils.h>
+
+#include "empathy-chat.h"
+#include "empathy-chat-window.h"
+#include "empathy-geometry.h"
+#include "empathy-conf.h"
+#include "empathy-preferences.h"
+#include "empathy-spell.h"
+#include "empathy-spell-dialog.h"
+#include "empathy-ui-utils.h"
+#include "empathy-gtk-marshal.h"
+
+#define GET_PRIV(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), EMPATHY_TYPE_CHAT, EmpathyChatPriv))
+
+#define DEBUG_DOMAIN "Chat"
+
+#define CHAT_DIR_CREATE_MODE (S_IRUSR | S_IWUSR | S_IXUSR)
+#define CHAT_FILE_CREATE_MODE (S_IRUSR | S_IWUSR)
+
+#define IS_ENTER(v) (v == GDK_Return || v == GDK_ISO_Enter || v == GDK_KP_Enter)
+
+#define MAX_INPUT_HEIGHT 150
+
+#define COMPOSING_STOP_TIMEOUT 5
+
+struct _EmpathyChatPriv {
+ EmpathyLogManager *log_manager;
+ EmpathyTpChat *tp_chat;
+ EmpathyChatWindow *window;
+ McAccount *account;
+ MissionControl *mc;
+ guint composing_stop_timeout_id;
+ gboolean sensitive;
+ gchar *id;
+ GSList *sent_messages;
+ gint sent_messages_index;
+ GList *compositors;
+ guint scroll_idle_id;
+ gboolean first_tp_chat;
+ gboolean is_first_char;
+ guint block_events_timeout_id;
+ /* Used to automatically shrink a window that has temporarily
+ * grown due to long input.
+ */
+ gint padding_height;
+ gint default_window_height;
+ gint last_input_height;
+ gboolean vscroll_visible;
+};
+
+typedef struct {
+ EmpathyChat *chat;
+ gchar *word;
+
+ GtkTextIter start;
+ GtkTextIter end;
+} EmpathyChatSpell;
+
+static void empathy_chat_class_init (EmpathyChatClass *klass);
+static void empathy_chat_init (EmpathyChat *chat);
+static void chat_finalize (GObject *object);
+static void chat_destroy_cb (EmpathyTpChat *tp_chat,
+ EmpathyChat *chat);
+static void chat_send (EmpathyChat *chat,
+ const gchar *msg);
+static void chat_input_text_view_send (EmpathyChat *chat);
+static void chat_message_received_cb (EmpathyTpChat *tp_chat,
+ EmpathyMessage *message,
+ EmpathyChat *chat);
+static void chat_send_error_cb (EmpathyTpChat *tp_chat,
+ EmpathyMessage *message,
+ TpChannelTextSendError error_code,
+ EmpathyChat *chat);
+static void chat_sent_message_add (EmpathyChat *chat,
+ const gchar *str);
+static const gchar * chat_sent_message_get_next (EmpathyChat *chat);
+static const gchar * chat_sent_message_get_last (EmpathyChat *chat);
+static gboolean chat_input_key_press_event_cb (GtkWidget *widget,
+ GdkEventKey *event,
+ EmpathyChat *chat);
+static void chat_input_text_buffer_changed_cb (GtkTextBuffer *buffer,
+ EmpathyChat *chat);
+static gboolean chat_text_view_focus_in_event_cb (GtkWidget *widget,
+ GdkEvent *event,
+ EmpathyChat *chat);
+static void chat_text_view_scroll_hide_cb (GtkWidget *widget,
+ EmpathyChat *chat);
+static void chat_text_view_size_allocate_cb (GtkWidget *widget,
+ GtkAllocation *allocation,
+ EmpathyChat *chat);
+static void chat_text_view_realize_cb (GtkWidget *widget,
+ EmpathyChat *chat);
+static void chat_text_populate_popup_cb (GtkTextView *view,
+ GtkMenu *menu,
+ EmpathyChat *chat);
+static void chat_text_check_word_spelling_cb (GtkMenuItem *menuitem,
+ EmpathyChatSpell *chat_spell);
+static EmpathyChatSpell *chat_spell_new (EmpathyChat *chat,
+ const gchar *word,
+ GtkTextIter start,
+ GtkTextIter end);
+static void chat_spell_free (EmpathyChatSpell *chat_spell);
+static void chat_composing_start (EmpathyChat *chat);
+static void chat_composing_stop (EmpathyChat *chat);
+static void chat_composing_remove_timeout (EmpathyChat *chat);
+static gboolean chat_composing_stop_timeout_cb (EmpathyChat *chat);
+static void chat_state_changed_cb (EmpathyTpChat *tp_chat,
+ EmpathyContact *contact,
+ TpChannelChatState state,
+ EmpathyChat *chat);
+static void chat_add_logs (EmpathyChat *chat);
+static gboolean chat_scroll_down_idle_func (EmpathyChat *chat);
+
+enum {
+ COMPOSING,
+ NEW_MESSAGE,
+ NAME_CHANGED,
+ STATUS_CHANGED,
+ LAST_SIGNAL
+};
+
+enum {
+ PROP_0,
+ PROP_TP_CHAT
+};
+
+static guint signals[LAST_SIGNAL] = { 0 };
+
+G_DEFINE_TYPE (EmpathyChat, empathy_chat, G_TYPE_OBJECT);
+
+static void
+chat_get_property (GObject *object,
+ guint param_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ EmpathyChatPriv *priv = GET_PRIV (object);
+
+ switch (param_id) {
+ case PROP_TP_CHAT:
+ g_value_set_object (value, priv->tp_chat);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
+ break;
+ };
+}
+
+static void
+chat_set_property (GObject *object,
+ guint param_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ EmpathyChat *chat = EMPATHY_CHAT (object);
+
+ switch (param_id) {
+ case PROP_TP_CHAT:
+ empathy_chat_set_tp_chat (chat,
+ EMPATHY_TP_CHAT (g_value_get_object (value)));
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
+ break;
+ };
+}
+
+static void
+chat_status_changed_cb (MissionControl *mc,
+ TpConnectionStatus status,
+ McPresence presence,
+ TpConnectionStatusReason reason,
+ const gchar *unique_name,
+ EmpathyChat *chat)
+{
+ EmpathyChatPriv *priv = GET_PRIV (chat);
+ McAccount *account;
+
+ account = mc_account_lookup (unique_name);
+
+ if (status == TP_CONNECTION_STATUS_CONNECTED && !priv->tp_chat &&
+ empathy_account_equal (account, priv->account)) {
+ TpHandleType handle_type;
+
+ empathy_debug (DEBUG_DOMAIN,
+ "Account reconnected, request a new Text channel");
+
+ if (empathy_chat_is_group_chat (chat)) {
+ handle_type = TP_HANDLE_TYPE_ROOM;
+ } else {
+ handle_type = TP_HANDLE_TYPE_CONTACT;
+ }
+
+ mission_control_request_channel_with_string_handle (mc,
+ priv->account,
+ TP_IFACE_CHANNEL_TYPE_TEXT,
+ priv->id,
+ handle_type,
+ NULL, NULL);
+ }
+
+ g_object_unref (account);
+}
+
+static void
+empathy_chat_class_init (EmpathyChatClass *klass)
+{
+ GObjectClass *object_class;
+
+ object_class = G_OBJECT_CLASS (klass);
+
+ object_class->finalize = chat_finalize;
+ object_class->get_property = chat_get_property;
+ object_class->set_property = chat_set_property;
+
+ g_object_class_install_property (object_class,
+ PROP_TP_CHAT,
+ g_param_spec_object ("tp-chat",
+ "Empathy tp chat",
+ "The tp chat object",
+ EMPATHY_TYPE_TP_CHAT,
+ G_PARAM_CONSTRUCT |
+ G_PARAM_READWRITE));
+
+ signals[COMPOSING] =
+ g_signal_new ("composing",
+ G_OBJECT_CLASS_TYPE (object_class),
+ G_SIGNAL_RUN_LAST,
+ 0,
+ NULL, NULL,
+ g_cclosure_marshal_VOID__BOOLEAN,
+ G_TYPE_NONE,
+ 1, G_TYPE_BOOLEAN);
+
+ signals[NEW_MESSAGE] =
+ g_signal_new ("new-message",
+ G_OBJECT_CLASS_TYPE (object_class),
+ G_SIGNAL_RUN_LAST,
+ 0,
+ NULL, NULL,
+ _empathy_gtk_marshal_VOID__OBJECT_BOOLEAN,
+ G_TYPE_NONE,
+ 2, EMPATHY_TYPE_MESSAGE, G_TYPE_BOOLEAN);
+
+ signals[NAME_CHANGED] =
+ g_signal_new ("name-changed",
+ G_OBJECT_CLASS_TYPE (object_class),
+ G_SIGNAL_RUN_LAST,
+ 0,
+ NULL, NULL,
+ g_cclosure_marshal_VOID__POINTER,
+ G_TYPE_NONE,
+ 1, G_TYPE_POINTER);
+
+ signals[STATUS_CHANGED] =
+ g_signal_new ("status-changed",
+ G_OBJECT_CLASS_TYPE (object_class),
+ G_SIGNAL_RUN_LAST,
+ 0,
+ NULL, NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE,
+ 0);
+
+ g_type_class_add_private (object_class, sizeof (EmpathyChatPriv));
+}
+
+static void
+empathy_chat_init (EmpathyChat *chat)
+{
+ EmpathyChatPriv *priv = GET_PRIV (chat);
+ GtkTextBuffer *buffer;
+
+ chat->view = empathy_chat_view_new ();
+ chat->input_text_view = gtk_text_view_new ();
+
+ priv->is_first_char = TRUE;
+
+ g_object_set (chat->input_text_view,
+ "pixels-above-lines", 2,
+ "pixels-below-lines", 2,
+ "pixels-inside-wrap", 1,
+ "right-margin", 2,
+ "left-margin", 2,
+ "wrap-mode", GTK_WRAP_WORD_CHAR,
+ NULL);
+
+ priv->log_manager = empathy_log_manager_new ();
+ priv->default_window_height = -1;
+ priv->vscroll_visible = FALSE;
+ priv->sensitive = TRUE;
+ priv->sent_messages = NULL;
+ priv->sent_messages_index = -1;
+ priv->first_tp_chat = TRUE;
+ priv->mc = empathy_mission_control_new ();
+
+ dbus_g_proxy_connect_signal (DBUS_G_PROXY (priv->mc), "AccountStatusChanged",
+ G_CALLBACK (chat_status_changed_cb),
+ chat, NULL);
+
+ g_signal_connect (chat->input_text_view,
+ "key_press_event",
+ G_CALLBACK (chat_input_key_press_event_cb),
+ chat);
+
+ buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (chat->input_text_view));
+ g_signal_connect (buffer,
+ "changed",
+ G_CALLBACK (chat_input_text_buffer_changed_cb),
+ chat);
+ g_signal_connect (chat->view,
+ "focus_in_event",
+ G_CALLBACK (chat_text_view_focus_in_event_cb),
+ chat);
+
+ g_signal_connect (chat->input_text_view,
+ "size_allocate",
+ G_CALLBACK (chat_text_view_size_allocate_cb),
+ chat);
+
+ g_signal_connect (chat->input_text_view,
+ "realize",
+ G_CALLBACK (chat_text_view_realize_cb),
+ chat);
+
+ g_signal_connect (GTK_TEXT_VIEW (chat->input_text_view),
+ "populate_popup",
+ G_CALLBACK (chat_text_populate_popup_cb),
+ chat);
+
+ /* create misspelt words identification tag */
+ gtk_text_buffer_create_tag (buffer,
+ "misspelled",
+ "underline", PANGO_UNDERLINE_ERROR,
+ NULL);
+}
+
+static void
+chat_finalize (GObject *object)
+{
+ EmpathyChat *chat;
+ EmpathyChatPriv *priv;
+
+ chat = EMPATHY_CHAT (object);
+ priv = GET_PRIV (chat);
+
+ empathy_debug (DEBUG_DOMAIN, "Finalized: %p", object);
+
+ g_slist_foreach (priv->sent_messages, (GFunc) g_free, NULL);
+ g_slist_free (priv->sent_messages);
+
+ g_list_foreach (priv->compositors, (GFunc) g_object_unref, NULL);
+ g_list_free (priv->compositors);
+
+ chat_composing_remove_timeout (chat);
+ g_object_unref (priv->log_manager);
+
+ dbus_g_proxy_disconnect_signal (DBUS_G_PROXY (priv->mc), "AccountStatusChanged",
+ G_CALLBACK (chat_status_changed_cb),
+ chat);
+ g_object_unref (priv->mc);
+
+
+ if (priv->tp_chat) {
+ g_object_unref (priv->tp_chat);
+ }
+
+ if (priv->account) {
+ g_object_unref (priv->account);
+ }
+
+ if (priv->scroll_idle_id) {
+ g_source_remove (priv->scroll_idle_id);
+ }
+
+ if (priv->block_events_timeout_id) {
+ g_source_remove (priv->block_events_timeout_id);
+ }
+
+ g_free (priv->id);
+
+ G_OBJECT_CLASS (empathy_chat_parent_class)->finalize (object);
+}
+
+static void
+chat_destroy_cb (EmpathyTpChat *tp_chat,
+ EmpathyChat *chat)
+{
+ EmpathyChatPriv *priv;
+
+ priv = GET_PRIV (chat);
+
+ if (priv->tp_chat) {
+ g_object_unref (priv->tp_chat);
+ priv->tp_chat = NULL;
+ }
+ priv->sensitive = FALSE;
+
+ empathy_chat_view_append_event (chat->view, _("Disconnected"));
+ gtk_widget_set_sensitive (chat->input_text_view, FALSE);
+
+ if (priv->block_events_timeout_id != 0) {
+ g_source_remove (priv->block_events_timeout_id);
+ }
+
+ if (EMPATHY_CHAT_GET_CLASS (chat)->set_tp_chat) {
+ EMPATHY_CHAT_GET_CLASS (chat)->set_tp_chat (chat, NULL);
+ }
+}
+
+static void
+chat_send (EmpathyChat *chat,
+ const gchar *msg)
+{
+ EmpathyChatPriv *priv;
+ EmpathyMessage *message;
+
+ priv = GET_PRIV (chat);
+
+ if (G_STR_EMPTY (msg)) {
+ return;
+ }
+
+ chat_sent_message_add (chat, msg);
+
+ if (g_str_has_prefix (msg, "/clear")) {
+ empathy_chat_view_clear (chat->view);
+ return;
+ }
+
+ /* FIXME: add here something to let group/privrate chat handle
+ * some special messages */
+
+ message = empathy_message_new (msg);
+
+ empathy_tp_chat_send (priv->tp_chat, message);
+
+ g_object_unref (message);
+}
+
+static void
+chat_input_text_view_send (EmpathyChat *chat)
+{
+ EmpathyChatPriv *priv;
+ GtkTextBuffer *buffer;
+ GtkTextIter start, end;
+ gchar *msg;
+
+ priv = GET_PRIV (chat);
+
+ buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (chat->input_text_view));
+
+ gtk_text_buffer_get_bounds (buffer, &start, &end);
+ msg = gtk_text_buffer_get_text (buffer, &start, &end, FALSE);
+
+ /* clear the input field */
+ gtk_text_buffer_set_text (buffer, "", -1);
+
+ chat_send (chat, msg);
+
+ g_free (msg);
+
+ priv->is_first_char = TRUE;
+}
+
+static void
+chat_message_received_cb (EmpathyTpChat *tp_chat,
+ EmpathyMessage *message,
+ EmpathyChat *chat)
+{
+ EmpathyChatPriv *priv;
+ EmpathyContact *sender;
+
+ priv = GET_PRIV (chat);
+
+ sender = empathy_message_get_sender (message);
+ empathy_debug (DEBUG_DOMAIN, "Appending message ('%s')",
+ empathy_contact_get_name (sender));
+
+ empathy_log_manager_add_message (priv->log_manager,
+ empathy_chat_get_id (chat),
+ empathy_chat_is_group_chat (chat),
+ message);
+
+ empathy_chat_view_append_message (chat->view, message);
+
+ if (empathy_chat_should_play_sound (chat)) {
+ // FIXME: empathy_sound_play (EMPATHY_SOUND_CHAT);
+ }
+
+ /* We received a message so the contact is no more composing */
+ chat_state_changed_cb (tp_chat, sender,
+ TP_CHANNEL_CHAT_STATE_ACTIVE,
+ chat);
+
+ g_signal_emit (chat, signals[NEW_MESSAGE], 0, message, FALSE);
+}
+
+static void
+chat_send_error_cb (EmpathyTpChat *tp_chat,
+ EmpathyMessage *message,
+ TpChannelTextSendError error_code,
+ EmpathyChat *chat)
+{
+ const gchar *error;
+ gchar *str;
+
+ switch (error_code) {
+ case TP_CHANNEL_TEXT_SEND_ERROR_OFFLINE:
+ error = _("offline");
+ break;
+ case TP_CHANNEL_TEXT_SEND_ERROR_INVALID_CONTACT:
+ error = _("invalid contact");
+ break;
+ case TP_CHANNEL_TEXT_SEND_ERROR_PERMISSION_DENIED:
+ error = _("permission denied");
+ break;
+ case TP_CHANNEL_TEXT_SEND_ERROR_TOO_LONG:
+ error = _("too long message");
+ break;
+ case TP_CHANNEL_TEXT_SEND_ERROR_NOT_IMPLEMENTED:
+ error = _("not implemented");
+ break;
+ default:
+ error = _("unknown");
+ break;
+ }
+
+ str = g_strdup_printf (_("Error sending message '%s': %s"),
+ empathy_message_get_body (message),
+ error);
+ empathy_chat_view_append_event (chat->view, str);
+ g_free (str);
+}
+
+static void
+chat_sent_message_add (EmpathyChat *chat,
+ const gchar *str)
+{
+ EmpathyChatPriv *priv;
+ GSList *list;
+ GSList *item;
+
+ priv = GET_PRIV (chat);
+
+ /* Save the sent message in our repeat buffer */
+ list = priv->sent_messages;
+
+ /* Remove any other occurances of this msg */
+ while ((item = g_slist_find_custom (list, str, (GCompareFunc) strcmp)) != NULL) {
+ list = g_slist_remove_link (list, item);
+ g_free (item->data);
+ g_slist_free1 (item);
+ }
+
+ /* Trim the list to the last 10 items */
+ while (g_slist_length (list) > 10) {
+ item = g_slist_last (list);
+ if (item) {
+ list = g_slist_remove_link (list, item);
+ g_free (item->data);
+ g_slist_free1 (item);
+ }
+ }
+
+ /* Add new message */
+ list = g_slist_prepend (list, g_strdup (str));
+
+ /* Set list and reset the index */
+ priv->sent_messages = list;
+ priv->sent_messages_index = -1;
+}
+
+static const gchar *
+chat_sent_message_get_next (EmpathyChat *chat)
+{
+ EmpathyChatPriv *priv;
+ gint max;
+
+ priv = GET_PRIV (chat);
+
+ if (!priv->sent_messages) {
+ empathy_debug (DEBUG_DOMAIN,
+ "No sent messages, next message is NULL");
+ return NULL;
+ }
+
+ max = g_slist_length (priv->sent_messages) - 1;
+
+ if (priv->sent_messages_index < max) {
+ priv->sent_messages_index++;
+ }
+
+ empathy_debug (DEBUG_DOMAIN,
+ "Returning next message index:%d",
+ priv->sent_messages_index);
+
+ return g_slist_nth_data (priv->sent_messages, priv->sent_messages_index);
+}
+
+static const gchar *
+chat_sent_message_get_last (EmpathyChat *chat)
+{
+ EmpathyChatPriv *priv;
+
+ g_return_val_if_fail (EMPATHY_IS_CHAT (chat), NULL);
+
+ priv = GET_PRIV (chat);
+
+ if (!priv->sent_messages) {
+ empathy_debug (DEBUG_DOMAIN,
+ "No sent messages, last message is NULL");
+ return NULL;
+ }
+
+ if (priv->sent_messages_index >= 0) {
+ priv->sent_messages_index--;
+ }
+
+ empathy_debug (DEBUG_DOMAIN,
+ "Returning last message index:%d",
+ priv->sent_messages_index);
+
+ return g_slist_nth_data (priv->sent_messages, priv->sent_messages_index);
+}
+
+static gboolean
+chat_input_key_press_event_cb (GtkWidget *widget,
+ GdkEventKey *event,
+ EmpathyChat *chat)
+{
+ EmpathyChatPriv *priv;
+ GtkAdjustment *adj;
+ gdouble val;
+ GtkWidget *text_view_sw;
+
+ priv = GET_PRIV (chat);
+
+ /* Catch ctrl+up/down so we can traverse messages we sent */
+ if ((event->state & GDK_CONTROL_MASK) &&
+ (event->keyval == GDK_Up ||
+ event->keyval == GDK_Down)) {
+ GtkTextBuffer *buffer;
+ const gchar *str;
+
+ buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (chat->input_text_view));
+
+ if (event->keyval == GDK_Up) {
+ str = chat_sent_message_get_next (chat);
+ } else {
+ str = chat_sent_message_get_last (chat);
+ }
+
+ g_signal_handlers_block_by_func (buffer,
+ chat_input_text_buffer_changed_cb,
+ chat);
+ gtk_text_buffer_set_text (buffer, str ? str : "", -1);
+ g_signal_handlers_unblock_by_func (buffer,
+ chat_input_text_buffer_changed_cb,
+ chat);
+
+ return TRUE;
+ }
+
+ /* Catch enter but not ctrl/shift-enter */
+ if (IS_ENTER (event->keyval) &&
+ !(event->state & (GDK_SHIFT_MASK | GDK_CONTROL_MASK))) {
+ GtkTextView *view;
+
+ /* This is to make sure that kinput2 gets the enter. And if
+ * it's handled there we shouldn't send on it. This is because
+ * kinput2 uses Enter to commit letters. See:
+ * http://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=104299
+ */
+
+ view = GTK_TEXT_VIEW (chat->input_text_view);
+ if (gtk_im_context_filter_keypress (view->im_context, event)) {
+ GTK_TEXT_VIEW (chat->input_text_view)->need_im_reset = TRUE;
+ return TRUE;
+ }
+
+ chat_input_text_view_send (chat);
+ return TRUE;
+ }
+
+ text_view_sw = gtk_widget_get_parent (GTK_WIDGET (chat->view));
+
+ if (IS_ENTER (event->keyval) &&
+ (event->state & (GDK_SHIFT_MASK | GDK_CONTROL_MASK))) {
+ /* Newline for shift/control-enter. */
+ return FALSE;
+ }
+ else if (!(event->state & GDK_CONTROL_MASK) &&
+ event->keyval == GDK_Page_Up) {
+ adj = gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW (text_view_sw));
+ gtk_adjustment_set_value (adj, adj->value - adj->page_size);
+
+ return TRUE;
+ }
+ else if ((event->state & GDK_CONTROL_MASK) != GDK_CONTROL_MASK &&
+ event->keyval == GDK_Page_Down) {
+ adj = gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW (text_view_sw));
+ val = MIN (adj->value + adj->page_size, adj->upper - adj->page_size);
+ gtk_adjustment_set_value (adj, val);
+
+ return TRUE;
+ }
+
+ if (EMPATHY_CHAT_GET_CLASS (chat)->key_press_event) {
+ return EMPATHY_CHAT_GET_CLASS (chat)->key_press_event (chat, event);
+ }
+
+ return FALSE;
+}
+
+static gboolean
+chat_text_view_focus_in_event_cb (GtkWidget *widget,
+ GdkEvent *event,
+ EmpathyChat *chat)
+{
+ gtk_widget_grab_focus (chat->input_text_view);
+
+ return TRUE;
+}
+
+static void
+chat_input_text_buffer_changed_cb (GtkTextBuffer *buffer,
+ EmpathyChat *chat)
+{
+ EmpathyChatPriv *priv;
+ GtkTextIter start, end;
+ gchar *str;
+ gboolean spell_checker = FALSE;
+
+ priv = GET_PRIV (chat);
+
+ if (gtk_text_buffer_get_char_count (buffer) == 0) {
+ chat_composing_stop (chat);
+ } else {
+ chat_composing_start (chat);
+ }
+
+ empathy_conf_get_bool (empathy_conf_get (),
+ EMPATHY_PREFS_CHAT_SPELL_CHECKER_ENABLED,
+ &spell_checker);
+
+ if (priv->is_first_char) {
+ GtkRequisition req;
+ gint window_height;
+ GtkWidget *dialog;
+ GtkAllocation *allocation;
+
+ /* Save the window's size */
+ dialog = empathy_chat_window_get_dialog (priv->window);
+ gtk_window_get_size (GTK_WINDOW (dialog),
+ NULL, &window_height);
+
+ gtk_widget_size_request (chat->input_text_view, &req);
+
+ allocation = &GTK_WIDGET (chat->view)->allocation;
+
+ priv->default_window_height = window_height;
+ priv->last_input_height = req.height;
+ priv->padding_height = window_height - req.height - allocation->height;
+
+ priv->is_first_char = FALSE;
+ }
+
+ gtk_text_buffer_get_start_iter (buffer, &start);
+
+ if (!spell_checker) {
+ gtk_text_buffer_get_end_iter (buffer, &end);
+ gtk_text_buffer_remove_tag_by_name (buffer, "misspelled", &start, &end);
+ return;
+ }
+
+ if (!empathy_spell_supported ()) {
+ return;
+ }
+
+ /* NOTE: this is really inefficient, we shouldn't have to
+ reiterate the whole buffer each time and check each work
+ every time. */
+ while (TRUE) {
+ gboolean correct = FALSE;
+
+ /* if at start */
+ if (gtk_text_iter_is_start (&start)) {
+ end = start;
+
+ if (!gtk_text_iter_forward_word_end (&end)) {
+ /* no whole word yet */
+ break;
+ }
+ } else {
+ if (!gtk_text_iter_forward_word_end (&end)) {
+ /* must be the end of the buffer */
+ break;
+ }
+
+ start = end;
+ gtk_text_iter_backward_word_start (&start);
+ }
+
+ str = gtk_text_buffer_get_text (buffer, &start, &end, FALSE);
+
+ /* spell check string */
+ if (!empathy_chat_get_is_command (str)) {
+ correct = empathy_spell_check (str);
+ } else {
+ correct = TRUE;
+ }
+
+ if (!correct) {
+ gtk_text_buffer_apply_tag_by_name (buffer, "misspelled", &start, &end);
+ } else {
+ gtk_text_buffer_remove_tag_by_name (buffer, "misspelled", &start, &end);
+ }
+
+ g_free (str);
+
+ /* set start iter to the end iters position */
+ start = end;
+ }
+}
+
+typedef struct {
+ GtkWidget *window;
+ gint width;
+ gint height;
+} ChangeSizeData;
+
+static gboolean
+chat_change_size_in_idle_cb (ChangeSizeData *data)
+{
+ gtk_window_resize (GTK_WINDOW (data->window),
+ data->width, data->height);
+
+ return FALSE;
+}
+
+static void
+chat_text_view_scroll_hide_cb (GtkWidget *widget,
+ EmpathyChat *chat)
+{
+ EmpathyChatPriv *priv;
+ GtkWidget *sw;
+
+ priv = GET_PRIV (chat);
+
+ priv->vscroll_visible = FALSE;
+ g_signal_handlers_disconnect_by_func (widget, chat_text_view_scroll_hide_cb, chat);
+
+ sw = gtk_widget_get_parent (chat->input_text_view);
+ gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
+ GTK_POLICY_NEVER,
+ GTK_POLICY_NEVER);
+ g_object_set (sw, "height-request", -1, NULL);
+}
+
+static void
+chat_text_view_size_allocate_cb (GtkWidget *widget,
+ GtkAllocation *allocation,
+ EmpathyChat *chat)
+{
+ EmpathyChatPriv *priv;
+ gint width;
+ GtkWidget *dialog;
+ ChangeSizeData *data;
+ gint window_height;
+ gint new_height;
+ GtkAllocation *view_allocation;
+ gint current_height;
+ gint diff;
+ GtkWidget *sw;
+
+ priv = GET_PRIV (chat);
+
+ if (priv->default_window_height <= 0) {
+ return;
+ }
+
+ sw = gtk_widget_get_parent (widget);
+ if (sw->allocation.height >= MAX_INPUT_HEIGHT && !priv->vscroll_visible) {
+ GtkWidget *vscroll;
+
+ priv->vscroll_visible = TRUE;
+ gtk_widget_set_size_request (sw, sw->allocation.width, MAX_INPUT_HEIGHT);
+ gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
+ GTK_POLICY_NEVER,
+ GTK_POLICY_AUTOMATIC);
+ vscroll = gtk_scrolled_window_get_vscrollbar (GTK_SCROLLED_WINDOW (sw));
+ g_signal_connect (vscroll, "hide",
+ G_CALLBACK (chat_text_view_scroll_hide_cb),
+ chat);
+ }
+
+ if (priv->last_input_height <= allocation->height) {
+ priv->last_input_height = allocation->height;
+ return;
+ }
+
+ diff = priv->last_input_height - allocation->height;
+ priv->last_input_height = allocation->height;
+
+ view_allocation = &GTK_WIDGET (chat->view)->allocation;
+
+ dialog = empathy_chat_window_get_dialog (priv->window);
+ gtk_window_get_size (GTK_WINDOW (dialog), NULL, &current_height);
+
+ new_height = view_allocation->height + priv->padding_height + allocation->height - diff;
+
+ if (new_height <= priv->default_window_height) {
+ window_height = priv->default_window_height;
+ } else {
+ window_height = new_height;
+ }
+
+ if (current_height <= window_height) {
+ return;
+ }
+
+ /* Restore the window's size */
+ gtk_window_get_size (GTK_WINDOW (dialog), &width, NULL);
+
+ data = g_new0 (ChangeSizeData, 1);
+ data->window = dialog;
+ data->width = width;
+ data->height = window_height;
+
+ g_idle_add_full (G_PRIORITY_DEFAULT_IDLE,
+ (GSourceFunc) chat_change_size_in_idle_cb,
+ data, g_free);
+}
+
+static void
+chat_text_view_realize_cb (GtkWidget *widget,
+ EmpathyChat *chat)
+{
+ empathy_debug (DEBUG_DOMAIN, "Setting focus to the input text view");
+ gtk_widget_grab_focus (widget);
+}
+
+static void
+chat_insert_smiley_activate_cb (GtkWidget *menuitem,
+ EmpathyChat *chat)
+{
+ GtkTextBuffer *buffer;
+ GtkTextIter iter;
+ const gchar *smiley;
+
+ smiley = g_object_get_data (G_OBJECT (menuitem), "smiley_text");
+
+ buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (chat->input_text_view));
+
+ gtk_text_buffer_get_end_iter (buffer, &iter);
+ gtk_text_buffer_insert (buffer, &iter, smiley, -1);
+
+ gtk_text_buffer_get_end_iter (buffer, &iter);
+ gtk_text_buffer_insert (buffer, &iter, " ", -1);
+}
+
+static void
+chat_text_populate_popup_cb (GtkTextView *view,
+ GtkMenu *menu,
+ EmpathyChat *chat)
+{
+ EmpathyChatPriv *priv;
+ GtkTextBuffer *buffer;
+ GtkTextTagTable *table;
+ GtkTextTag *tag;
+ gint x, y;
+ GtkTextIter iter, start, end;
+ GtkWidget *item;
+ gchar *str = NULL;
+ EmpathyChatSpell *chat_spell;
+ GtkWidget *smiley_menu;
+
+ priv = GET_PRIV (chat);
+
+ /* Add the emoticon menu. */
+ item = gtk_separator_menu_item_new ();
+ gtk_menu_shell_prepend (GTK_MENU_SHELL (menu), item);
+ gtk_widget_show (item);
+
+ item = gtk_menu_item_new_with_mnemonic (_("Insert Smiley"));
+ gtk_menu_shell_prepend (GTK_MENU_SHELL (menu), item);
+ gtk_widget_show (item);
+
+ smiley_menu = empathy_chat_view_get_smiley_menu (
+ G_CALLBACK (chat_insert_smiley_activate_cb),
+ chat);
+ gtk_menu_item_set_submenu (GTK_MENU_ITEM (item), smiley_menu);
+
+ /* Add the spell check menu item. */
+ buffer = gtk_text_view_get_buffer (view);
+ table = gtk_text_buffer_get_tag_table (buffer);
+
+ tag = gtk_text_tag_table_lookup (table, "misspelled");
+
+ gtk_widget_get_pointer (GTK_WIDGET (view), &x, &y);
+
+ gtk_text_view_window_to_buffer_coords (GTK_TEXT_VIEW (view),
+ GTK_TEXT_WINDOW_WIDGET,
+ x, y,
+ &x, &y);
+
+ gtk_text_view_get_iter_at_location (GTK_TEXT_VIEW (view), &iter, x, y);
+
+ start = end = iter;
+
+ if (gtk_text_iter_backward_to_tag_toggle (&start, tag) &&
+ gtk_text_iter_forward_to_tag_toggle (&end, tag)) {
+
+ str = gtk_text_buffer_get_text (buffer,
+ &start, &end, FALSE);
+ }
+
+ if (G_STR_EMPTY (str)) {
+ return;
+ }
+
+ chat_spell = chat_spell_new (chat, str, start, end);
+
+ g_object_set_data_full (G_OBJECT (menu),
+ "chat_spell", chat_spell,
+ (GDestroyNotify) chat_spell_free);
+
+ item = gtk_separator_menu_item_new ();
+ gtk_menu_shell_prepend (GTK_MENU_SHELL (menu), item);
+ gtk_widget_show (item);
+
+ item = gtk_menu_item_new_with_mnemonic (_("_Check Word Spelling..."));
+ g_signal_connect (item,
+ "activate",
+ G_CALLBACK (chat_text_check_word_spelling_cb),
+ chat_spell);
+ gtk_menu_shell_prepend (GTK_MENU_SHELL (menu), item);
+ gtk_widget_show (item);
+}
+
+static void
+chat_text_check_word_spelling_cb (GtkMenuItem *menuitem,
+ EmpathyChatSpell *chat_spell)
+{
+ empathy_spell_dialog_show (chat_spell->chat,
+ chat_spell->start,
+ chat_spell->end,
+ chat_spell->word);
+}
+
+static EmpathyChatSpell *
+chat_spell_new (EmpathyChat *chat,
+ const gchar *word,
+ GtkTextIter start,
+ GtkTextIter end)
+{
+ EmpathyChatSpell *chat_spell;
+
+ chat_spell = g_new0 (EmpathyChatSpell, 1);
+
+ chat_spell->chat = g_object_ref (chat);
+ chat_spell->word = g_strdup (word);
+ chat_spell->start = start;
+ chat_spell->end = end;
+
+ return chat_spell;
+}
+
+static void
+chat_spell_free (EmpathyChatSpell *chat_spell)
+{
+ g_object_unref (chat_spell->chat);
+ g_free (chat_spell->word);
+ g_free (chat_spell);
+}
+
+static void
+chat_composing_start (EmpathyChat *chat)
+{
+ EmpathyChatPriv *priv;
+
+ priv = GET_PRIV (chat);
+
+ if (priv->composing_stop_timeout_id) {
+ /* Just restart the timeout */
+ chat_composing_remove_timeout (chat);
+ } else {
+ empathy_tp_chat_set_state (priv->tp_chat,
+ TP_CHANNEL_CHAT_STATE_COMPOSING);
+ }
+
+ priv->composing_stop_timeout_id = g_timeout_add_seconds (
+ COMPOSING_STOP_TIMEOUT,
+ (GSourceFunc) chat_composing_stop_timeout_cb,
+ chat);
+}
+
+static void
+chat_composing_stop (EmpathyChat *chat)
+{
+ EmpathyChatPriv *priv;
+
+ priv = GET_PRIV (chat);
+
+ chat_composing_remove_timeout (chat);
+ empathy_tp_chat_set_state (priv->tp_chat,
+ TP_CHANNEL_CHAT_STATE_ACTIVE);
+}
+
+static void
+chat_composing_remove_timeout (EmpathyChat *chat)
+{
+ EmpathyChatPriv *priv;
+
+ priv = GET_PRIV (chat);
+
+ if (priv->composing_stop_timeout_id) {
+ g_source_remove (priv->composing_stop_timeout_id);
+ priv->composing_stop_timeout_id = 0;
+ }
+}
+
+static gboolean
+chat_composing_stop_timeout_cb (EmpathyChat *chat)
+{
+ EmpathyChatPriv *priv;
+
+ priv = GET_PRIV (chat);
+
+ priv->composing_stop_timeout_id = 0;
+ empathy_tp_chat_set_state (priv->tp_chat,
+ TP_CHANNEL_CHAT_STATE_PAUSED);
+
+ return FALSE;
+}
+
+static void
+chat_state_changed_cb (EmpathyTpChat *tp_chat,
+ EmpathyContact *contact,
+ TpChannelChatState state,
+ EmpathyChat *chat)
+{
+ EmpathyChatPriv *priv;
+ GList *l;
+ gboolean was_composing;
+
+ priv = GET_PRIV (chat);
+
+ if (empathy_contact_is_user (contact)) {
+ /* We don't care about our own chat state */
+ return;
+ }
+
+ was_composing = (priv->compositors != NULL);
+
+ /* Find the contact in the list. After that l is the list elem or NULL */
+ for (l = priv->compositors; l; l = l->next) {
+ if (empathy_contact_equal (contact, l->data)) {
+ break;
+ }
+ }
+
+ switch (state) {
+ case TP_CHANNEL_CHAT_STATE_GONE:
+ case TP_CHANNEL_CHAT_STATE_INACTIVE:
+ case TP_CHANNEL_CHAT_STATE_PAUSED:
+ case TP_CHANNEL_CHAT_STATE_ACTIVE:
+ /* Contact is not composing */
+ if (l) {
+ priv->compositors = g_list_remove_link (priv->compositors, l);
+ g_object_unref (l->data);
+ g_list_free1 (l);
+ }
+ break;
+ case TP_CHANNEL_CHAT_STATE_COMPOSING:
+ /* Contact is composing */
+ if (!l) {
+ priv->compositors = g_list_prepend (priv->compositors,
+ g_object_ref (contact));
+ }
+ break;
+ default:
+ g_assert_not_reached ();
+ }
+
+ empathy_debug (DEBUG_DOMAIN, "Was composing: %s now composing: %s",
+ was_composing ? "yes" : "no",
+ priv->compositors ? "yes" : "no");
+
+ if ((was_composing && !priv->compositors) ||
+ (!was_composing && priv->compositors)) {
+ /* Composing state changed */
+ g_signal_emit (chat, signals[COMPOSING], 0,
+ priv->compositors != NULL);
+ }
+}
+
+static void
+chat_add_logs (EmpathyChat *chat)
+{
+ EmpathyChatPriv *priv;
+ GList *messages, *l;
+ guint num_messages;
+ guint i;
+
+ priv = GET_PRIV (chat);
+
+ /* Turn off scrolling temporarily */
+ empathy_chat_view_scroll (chat->view, FALSE);
+
+ /* Add messages from last conversation */
+ messages = empathy_log_manager_get_last_messages (priv->log_manager,
+ priv->account,
+ empathy_chat_get_id (chat),
+ empathy_chat_is_group_chat (chat));
+ num_messages = g_list_length (messages);
+
+ for (l = messages, i = 0; l; l = l->next, i++) {
+ EmpathyMessage *message;
+
+ message = l->data;
+
+ /* Only add 10 last messages */
+ if (num_messages - i > 10) {
+ g_object_unref (message);
+ continue;
+ }
+
+ empathy_chat_view_append_message (chat->view, message);
+
+ g_object_unref (message);
+ }
+ g_list_free (messages);
+
+ /* Turn back on scrolling */
+ empathy_chat_view_scroll (chat->view, TRUE);
+
+ /* Scroll to the most recent messages, we reference the chat
+ * for the duration of the scroll func.
+ */
+ priv->scroll_idle_id = g_idle_add ((GSourceFunc) chat_scroll_down_idle_func,
+ g_object_ref (chat));
+}
+
+/* Scroll down after the back-log has been received. */
+static gboolean
+chat_scroll_down_idle_func (EmpathyChat *chat)
+{
+ EmpathyChatPriv *priv;
+
+ priv = GET_PRIV (chat);
+
+ empathy_chat_scroll_down (chat);
+ g_object_unref (chat);
+
+ priv->scroll_idle_id = 0;
+
+ return FALSE;
+}
+
+gboolean
+empathy_chat_get_is_command (const gchar *str)
+{
+ g_return_val_if_fail (str != NULL, FALSE);
+
+ if (str[0] != '/') {
+ return FALSE;
+ }
+
+ if (g_str_has_prefix (str, "/me")) {
+ return TRUE;
+ }
+ else if (g_str_has_prefix (str, "/nick")) {
+ return TRUE;
+ }
+ else if (g_str_has_prefix (str, "/topic")) {
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+void
+empathy_chat_correct_word (EmpathyChat *chat,
+ GtkTextIter start,
+ GtkTextIter end,
+ const gchar *new_word)
+{
+ GtkTextBuffer *buffer;
+
+ g_return_if_fail (chat != NULL);
+ g_return_if_fail (new_word != NULL);
+
+ buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (chat->input_text_view));
+
+ gtk_text_buffer_delete (buffer, &start, &end);
+ gtk_text_buffer_insert (buffer, &start,
+ new_word,
+ -1);
+}
+
+const gchar *
+empathy_chat_get_name (EmpathyChat *chat)
+{
+ g_return_val_if_fail (EMPATHY_IS_CHAT (chat), NULL);
+
+ if (EMPATHY_CHAT_GET_CLASS (chat)->get_name) {
+ return EMPATHY_CHAT_GET_CLASS (chat)->get_name (chat);
+ }
+
+ return NULL;
+}
+
+gchar *
+empathy_chat_get_tooltip (EmpathyChat *chat)
+{
+ g_return_val_if_fail (EMPATHY_IS_CHAT (chat), NULL);
+
+ if (EMPATHY_CHAT_GET_CLASS (chat)->get_tooltip) {
+ return EMPATHY_CHAT_GET_CLASS (chat)->get_tooltip (chat);
+ }
+
+ return NULL;
+}
+
+const gchar *
+empathy_chat_get_status_icon_name (EmpathyChat *chat)
+{
+ g_return_val_if_fail (EMPATHY_IS_CHAT (chat), NULL);
+
+ if (EMPATHY_CHAT_GET_CLASS (chat)->get_status_icon_name) {
+ return EMPATHY_CHAT_GET_CLASS (chat)->get_status_icon_name (chat);
+ }
+
+ return NULL;
+}
+
+GtkWidget *
+empathy_chat_get_widget (EmpathyChat *chat)
+{
+ g_return_val_if_fail (EMPATHY_IS_CHAT (chat), NULL);
+
+ if (EMPATHY_CHAT_GET_CLASS (chat)->get_widget) {
+ return EMPATHY_CHAT_GET_CLASS (chat)->get_widget (chat);
+ }
+
+ return NULL;
+}
+
+gboolean
+empathy_chat_is_group_chat (EmpathyChat *chat)
+{
+ g_return_val_if_fail (EMPATHY_IS_CHAT (chat), FALSE);
+
+ if (EMPATHY_CHAT_GET_CLASS (chat)->is_group_chat) {
+ return EMPATHY_CHAT_GET_CLASS (chat)->is_group_chat (chat);
+ }
+
+ return FALSE;
+}
+
+gboolean
+empathy_chat_is_connected (EmpathyChat *chat)
+{
+ EmpathyChatPriv *priv;
+
+ g_return_val_if_fail (EMPATHY_IS_CHAT (chat), FALSE);
+
+ priv = GET_PRIV (chat);
+
+ return (priv->tp_chat != NULL);
+}
+
+static const gchar *
+chat_get_window_id_for_geometry (EmpathyChat *chat)
+{
+ gboolean separate_windows;
+
+ empathy_conf_get_bool (empathy_conf_get (),
+ EMPATHY_PREFS_UI_SEPARATE_CHAT_WINDOWS,
+ &separate_windows);
+
+ if (separate_windows) {
+ return empathy_chat_get_id (chat);
+ } else {
+ return "chat-window";
+ }
+}
+
+void
+empathy_chat_save_geometry (EmpathyChat *chat,
+ gint x,
+ gint y,
+ gint w,
+ gint h)
+{
+ empathy_geometry_save (chat_get_window_id_for_geometry (chat), x, y, w, h);
+}
+
+void
+empathy_chat_load_geometry (EmpathyChat *chat,
+ gint *x,
+ gint *y,
+ gint *w,
+ gint *h)
+{
+ empathy_geometry_load (chat_get_window_id_for_geometry (chat), x, y, w, h);
+}
+
+static gboolean
+chat_block_events_timeout_cb (gpointer data)
+{
+ EmpathyChat *chat = EMPATHY_CHAT (data);
+ EmpathyChatPriv *priv = GET_PRIV (chat);
+
+ chat->block_events = FALSE;
+ priv->block_events_timeout_id = 0;
+
+ return FALSE;
+}
+
+void
+empathy_chat_set_tp_chat (EmpathyChat *chat,
+ EmpathyTpChat *tp_chat)
+{
+ EmpathyChatPriv *priv;
+
+ g_return_if_fail (EMPATHY_IS_CHAT (chat));
+ g_return_if_fail (EMPATHY_IS_TP_CHAT (tp_chat));
+
+ priv = GET_PRIV (chat);
+
+ if (tp_chat == priv->tp_chat) {
+ return;
+ }
+
+ /* Block events for some time to avoid having "has come online" or
+ * "joined" messages. */
+ chat->block_events = TRUE;
+ if (priv->block_events_timeout_id != 0) {
+ g_source_remove (priv->block_events_timeout_id);
+ }
+ priv->block_events_timeout_id =
+ g_timeout_add_seconds (1, chat_block_events_timeout_cb, chat);
+
+ if (priv->tp_chat) {
+ g_signal_handlers_disconnect_by_func (priv->tp_chat,
+ chat_message_received_cb,
+ chat);
+ g_signal_handlers_disconnect_by_func (priv->tp_chat,
+ chat_send_error_cb,
+ chat);
+ g_signal_handlers_disconnect_by_func (priv->tp_chat,
+ chat_destroy_cb,
+ chat);
+ g_object_unref (priv->tp_chat);
+ }
+ if (priv->account) {
+ g_object_unref (priv->account);
+ }
+
+ g_free (priv->id);
+ priv->tp_chat = g_object_ref (tp_chat);
+ priv->id = g_strdup (empathy_tp_chat_get_id (tp_chat));
+ priv->account = g_object_ref (empathy_tp_chat_get_account (tp_chat));
+ empathy_tp_chat_set_acknowledge (tp_chat, TRUE);
+
+ if (priv->first_tp_chat) {
+ chat_add_logs (chat);
+ priv->first_tp_chat = FALSE;
+ }
+
+ g_signal_connect (tp_chat, "message-received",
+ G_CALLBACK (chat_message_received_cb),
+ chat);
+ g_signal_connect (tp_chat, "send-error",
+ G_CALLBACK (chat_send_error_cb),
+ chat);
+ g_signal_connect (tp_chat, "chat-state-changed",
+ G_CALLBACK (chat_state_changed_cb),
+ chat);
+ g_signal_connect (tp_chat, "destroy",
+ G_CALLBACK (chat_destroy_cb),
+ chat);
+
+ if (!priv->sensitive) {
+ gtk_widget_set_sensitive (chat->input_text_view, TRUE);
+ empathy_chat_view_append_event (chat->view, _("Connected"));
+ priv->sensitive = TRUE;
+ }
+
+ if (EMPATHY_CHAT_GET_CLASS (chat)->set_tp_chat) {
+ EMPATHY_CHAT_GET_CLASS (chat)->set_tp_chat (chat, tp_chat);
+ }
+
+ g_object_notify (G_OBJECT (chat), "tp-chat");
+}
+
+const gchar *
+empathy_chat_get_id (EmpathyChat *chat)
+{
+ EmpathyChatPriv *priv;
+
+ priv = GET_PRIV (chat);
+
+ return priv->id;
+}
+
+McAccount *
+empathy_chat_get_account (EmpathyChat *chat)
+{
+ EmpathyChatPriv *priv = GET_PRIV (chat);
+
+ return priv->account;
+}
+
+void
+empathy_chat_clear (EmpathyChat *chat)
+{
+ g_return_if_fail (EMPATHY_IS_CHAT (chat));
+
+ empathy_chat_view_clear (chat->view);
+}
+
+void
+empathy_chat_set_window (EmpathyChat *chat,
+ EmpathyChatWindow *window)
+{
+ EmpathyChatPriv *priv;
+
+ priv = GET_PRIV (chat);
+ priv->window = window;
+}
+
+EmpathyChatWindow *
+empathy_chat_get_window (EmpathyChat *chat)
+{
+ EmpathyChatPriv *priv;
+
+ priv = GET_PRIV (chat);
+
+ return priv->window;
+}
+
+void
+empathy_chat_scroll_down (EmpathyChat *chat)
+{
+ g_return_if_fail (EMPATHY_IS_CHAT (chat));
+
+ empathy_chat_view_scroll_down (chat->view);
+}
+
+void
+empathy_chat_cut (EmpathyChat *chat)
+{
+ GtkTextBuffer *buffer;
+
+ g_return_if_fail (EMPATHY_IS_CHAT (chat));
+
+ buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (chat->input_text_view));
+ if (gtk_text_buffer_get_selection_bounds (buffer, NULL, NULL)) {
+ GtkClipboard *clipboard;
+
+ clipboard = gtk_clipboard_get (GDK_SELECTION_CLIPBOARD);
+
+ gtk_text_buffer_cut_clipboard (buffer, clipboard, TRUE);
+ }
+}
+
+void
+empathy_chat_copy (EmpathyChat *chat)
+{
+ GtkTextBuffer *buffer;
+
+ g_return_if_fail (EMPATHY_IS_CHAT (chat));
+
+ if (empathy_chat_view_get_selection_bounds (chat->view, NULL, NULL)) {
+ empathy_chat_view_copy_clipboard (chat->view);
+ return;
+ }
+
+ buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (chat->input_text_view));
+ if (gtk_text_buffer_get_selection_bounds (buffer, NULL, NULL)) {
+ GtkClipboard *clipboard;
+
+ clipboard = gtk_clipboard_get (GDK_SELECTION_CLIPBOARD);
+
+ gtk_text_buffer_copy_clipboard (buffer, clipboard);
+ }
+}
+
+void
+empathy_chat_paste (EmpathyChat *chat)
+{
+ GtkTextBuffer *buffer;
+ GtkClipboard *clipboard;
+
+ g_return_if_fail (EMPATHY_IS_CHAT (chat));
+
+ buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (chat->input_text_view));
+ clipboard = gtk_clipboard_get (GDK_SELECTION_CLIPBOARD);
+
+ gtk_text_buffer_paste_clipboard (buffer, clipboard, NULL, TRUE);
+}
+
+void
+empathy_chat_present (EmpathyChat *chat)
+{
+ EmpathyChatPriv *priv;
+
+ g_return_if_fail (EMPATHY_IS_CHAT (chat));
+
+ priv = GET_PRIV (chat);
+
+ if (priv->window == NULL) {
+ EmpathyChatWindow *window;
+
+ window = empathy_chat_window_get_default ();
+ if (!window) {
+ window = empathy_chat_window_new ();
+ }
+
+ empathy_chat_window_add_chat (window, chat);
+ }
+
+ empathy_chat_window_switch_to_chat (priv->window, chat);
+ empathy_window_present (
+ GTK_WINDOW (empathy_chat_window_get_dialog (priv->window)),
+ TRUE);
+
+ gtk_widget_grab_focus (chat->input_text_view);
+}
+
+gboolean
+empathy_chat_should_play_sound (EmpathyChat *chat)
+{
+ EmpathyChatWindow *window;
+ gboolean play = TRUE;
+
+ g_return_val_if_fail (EMPATHY_IS_CHAT (chat), FALSE);
+
+ window = empathy_chat_get_window (chat);
+ if (!window) {
+ return TRUE;
+ }
+
+ play = !empathy_chat_window_has_focus (window);
+
+ return play;
+}
+
+gboolean
+empathy_chat_should_highlight_nick (EmpathyMessage *message)
+{
+ EmpathyContact *contact;
+ const gchar *msg, *to;
+ gchar *cf_msg, *cf_to;
+ gchar *ch;
+ gboolean ret_val;
+
+ g_return_val_if_fail (EMPATHY_IS_MESSAGE (message), FALSE);
+
+ empathy_debug (DEBUG_DOMAIN, "Highlighting nickname");
+
+ ret_val = FALSE;
+
+ msg = empathy_message_get_body (message);
+ if (!msg) {
+ return FALSE;
+ }
+
+ contact = empathy_message_get_receiver (message);
+ if (!contact || !empathy_contact_is_user (contact)) {
+ return FALSE;
+ }
+
+ to = empathy_contact_get_name (contact);
+ if (!to) {
+ return FALSE;
+ }
+
+ cf_msg = g_utf8_casefold (msg, -1);
+ cf_to = g_utf8_casefold (to, -1);
+
+ ch = strstr (cf_msg, cf_to);
+ if (ch == NULL) {
+ goto finished;
+ }
+
+ if (ch != cf_msg) {
+ /* Not first in the message */
+ if ((*(ch - 1) != ' ') &&
+ (*(ch - 1) != ',') &&
+ (*(ch - 1) != '.')) {
+ goto finished;
+ }
+ }
+
+ ch = ch + strlen (cf_to);
+ if (ch >= cf_msg + strlen (cf_msg)) {
+ ret_val = TRUE;
+ goto finished;
+ }
+
+ if ((*ch == ' ') ||
+ (*ch == ',') ||
+ (*ch == '.') ||
+ (*ch == ':')) {
+ ret_val = TRUE;
+ goto finished;
+ }
+
+finished:
+ g_free (cf_msg);
+ g_free (cf_to);
+
+ return ret_val;
+}
+
diff --git a/gnome-2-22/libempathy-gtk/empathy-chat.glade b/gnome-2-22/libempathy-gtk/empathy-chat.glade
new file mode 100644
index 000000000..ca6dd56d0
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-chat.glade
@@ -0,0 +1,756 @@
+<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
+<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
+
+<glade-interface>
+
+<widget class="GtkWindow" id="chat_page_window">
+ <property name="title" translatable="yes">Chat</property>
+ <property name="type">GTK_WINDOW_TOPLEVEL</property>
+ <property name="window_position">GTK_WIN_POS_NONE</property>
+ <property name="modal">False</property>
+ <property name="default_width">350</property>
+ <property name="default_height">250</property>
+ <property name="resizable">True</property>
+ <property name="destroy_with_parent">False</property>
+ <property name="decorated">True</property>
+ <property name="skip_taskbar_hint">False</property>
+ <property name="skip_pager_hint">False</property>
+ <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
+ <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+ <property name="focus_on_map">True</property>
+ <property name="urgency_hint">False</property>
+
+ <child>
+ <widget class="GtkVBox" id="chat_widget">
+ <property name="border_width">4</property>
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">3</property>
+
+ <child>
+ <widget class="GtkScrolledWindow" id="chat_view_sw">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+ <property name="vscrollbar_policy">GTK_POLICY_ALWAYS</property>
+ <property name="shadow_type">GTK_SHADOW_IN</property>
+ <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
+
+ <child>
+ <placeholder/>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkScrolledWindow" id="input_text_view_sw">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
+ <property name="vscrollbar_policy">GTK_POLICY_NEVER</property>
+ <property name="shadow_type">GTK_SHADOW_IN</property>
+ <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
+
+ <child>
+ <placeholder/>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+</widget>
+
+<widget class="GtkWindow" id="chat_window">
+ <property name="title" translatable="yes">Chat</property>
+ <property name="type">GTK_WINDOW_TOPLEVEL</property>
+ <property name="window_position">GTK_WIN_POS_NONE</property>
+ <property name="modal">False</property>
+ <property name="default_width">350</property>
+ <property name="default_height">250</property>
+ <property name="resizable">True</property>
+ <property name="destroy_with_parent">False</property>
+ <property name="decorated">True</property>
+ <property name="skip_taskbar_hint">False</property>
+ <property name="skip_pager_hint">False</property>
+ <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
+ <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+ <property name="focus_on_map">True</property>
+ <property name="urgency_hint">False</property>
+
+ <child>
+ <widget class="GtkVBox" id="chat_vbox">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+
+ <child>
+ <widget class="GtkMenuBar" id="chats_menubar">
+ <property name="visible">True</property>
+ <property name="pack_direction">GTK_PACK_DIRECTION_LTR</property>
+ <property name="child_pack_direction">GTK_PACK_DIRECTION_LTR</property>
+
+ <child>
+ <widget class="GtkMenuItem" id="menu_conv">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Conversation</property>
+ <property name="use_underline">True</property>
+
+ <child>
+ <widget class="GtkMenu" id="menu_conv_menu">
+
+ <child>
+ <widget class="GtkImageMenuItem" id="menu_conv_clear">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">C_lear</property>
+ <property name="use_underline">True</property>
+ <accelerator key="L" modifiers="GDK_CONTROL_MASK" signal="activate"/>
+
+ <child internal-child="image">
+ <widget class="GtkImage" id="image262">
+ <property name="visible">True</property>
+ <property name="stock">gtk-clear</property>
+ <property name="icon_size">1</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ </child>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkMenuItem" id="menu_conv_insert_smiley">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Insert _Smiley</property>
+ <property name="use_underline">True</property>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkSeparatorMenuItem" id="separator13">
+ <property name="visible">True</property>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkImageMenuItem" id="menu_conv_call">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Ca_ll</property>
+ <property name="use_underline">True</property>
+
+ <child internal-child="image">
+ <widget class="GtkImage" id="menu_conv_call_image">
+ <property name="visible">True</property>
+ <property name="icon_name">gnome-stock-mic</property>
+ <property name="icon_size">1</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ </child>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkSeparatorMenuItem" id="menu_conv_call_separator">
+ <property name="visible">True</property>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkImageMenuItem" id="menu_conv_log">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_View Previous Conversations</property>
+ <property name="use_underline">True</property>
+ <accelerator key="F3" modifiers="0" signal="activate"/>
+
+ <child internal-child="image">
+ <widget class="GtkImage" id="image263">
+ <property name="visible">True</property>
+ <property name="icon_name">document-open-recent</property>
+ <property name="icon_size">1</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ </child>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkSeparatorMenuItem" id="menu_conv_separator">
+ <property name="visible">True</property>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkImageMenuItem" id="menu_conv_add_contact">
+ <property name="label" translatable="yes">_Add Contact...</property>
+ <property name="use_underline">True</property>
+
+ <child internal-child="image">
+ <widget class="GtkImage" id="image264">
+ <property name="visible">True</property>
+ <property name="stock">gtk-add</property>
+ <property name="icon_size">1</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ </child>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkImageMenuItem" id="menu_conv_info">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Contact Infor_mation</property>
+ <property name="use_underline">True</property>
+
+ <child internal-child="image">
+ <widget class="GtkImage" id="image265">
+ <property name="visible">True</property>
+ <property name="stock">gtk-info</property>
+ <property name="icon_size">1</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ </child>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkSeparatorMenuItem" id="separator7">
+ <property name="visible">True</property>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkImageMenuItem" id="menu_conv_close">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Close</property>
+ <property name="use_underline">True</property>
+ <accelerator key="W" modifiers="GDK_CONTROL_MASK" signal="activate"/>
+
+ <child internal-child="image">
+ <widget class="GtkImage" id="image266">
+ <property name="visible">True</property>
+ <property name="stock">gtk-close</property>
+ <property name="icon_size">1</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkMenuItem" id="menu_room">
+ <property name="label" translatable="yes">_Room</property>
+ <property name="use_underline">True</property>
+
+ <child>
+ <widget class="GtkMenu" id="menu_room_menu">
+
+ <child>
+ <widget class="GtkMenuItem" id="menu_room_set_topic">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Change _Topic...</property>
+ <property name="use_underline">True</property>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkSeparatorMenuItem" id="separator12">
+ <property name="visible">True</property>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkMenuItem" id="menu_room_join_new">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Join _New...</property>
+ <property name="use_underline">True</property>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkMenuItem" id="menu_room_invite">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">In_vite...</property>
+ <property name="use_underline">True</property>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkSeparatorMenuItem" id="separator7">
+ <property name="visible">True</property>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkImageMenuItem" id="menu_room_add">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Add To Favorites</property>
+ <property name="use_underline">True</property>
+
+ <child internal-child="image">
+ <widget class="GtkImage" id="image268">
+ <property name="visible">True</property>
+ <property name="stock">gtk-add</property>
+ <property name="icon_size">1</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ </child>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkSeparatorMenuItem" id="separator10">
+ <property name="visible">True</property>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkCheckMenuItem" id="menu_room_show_contacts">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Show Contacts</property>
+ <property name="use_underline">True</property>
+ <property name="active">True</property>
+ <accelerator key="F11" modifiers="0" signal="activate"/>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkMenuItem" id="menu_edit">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Edit</property>
+ <property name="use_underline">True</property>
+
+ <child>
+ <widget class="GtkMenu" id="menu_edit_menu">
+
+ <child>
+ <widget class="GtkImageMenuItem" id="menu_edit_cut">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Cu_t</property>
+ <property name="use_underline">True</property>
+ <accelerator key="X" modifiers="GDK_CONTROL_MASK" signal="activate"/>
+
+ <child internal-child="image">
+ <widget class="GtkImage" id="image269">
+ <property name="visible">True</property>
+ <property name="stock">gtk-cut</property>
+ <property name="icon_size">1</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ </child>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkImageMenuItem" id="menu_edit_copy">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Copy</property>
+ <property name="use_underline">True</property>
+ <accelerator key="C" modifiers="GDK_CONTROL_MASK" signal="activate"/>
+
+ <child internal-child="image">
+ <widget class="GtkImage" id="image270">
+ <property name="visible">True</property>
+ <property name="stock">gtk-copy</property>
+ <property name="icon_size">1</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ </child>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkImageMenuItem" id="menu_edit_paste">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Paste</property>
+ <property name="use_underline">True</property>
+ <accelerator key="V" modifiers="GDK_CONTROL_MASK" signal="activate"/>
+
+ <child internal-child="image">
+ <widget class="GtkImage" id="image271">
+ <property name="visible">True</property>
+ <property name="stock">gtk-paste</property>
+ <property name="icon_size">1</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkMenuItem" id="menu_tabs">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Tabs</property>
+ <property name="use_underline">True</property>
+
+ <child>
+ <widget class="GtkMenu" id="menu_tabs_menu">
+
+ <child>
+ <widget class="GtkMenuItem" id="menu_tabs_prev">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Previous Tab</property>
+ <property name="use_underline">True</property>
+ <accelerator key="Page_Up" modifiers="GDK_CONTROL_MASK" signal="activate"/>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkMenuItem" id="menu_tabs_next">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Next Tab</property>
+ <property name="use_underline">True</property>
+ <accelerator key="Page_Down" modifiers="GDK_CONTROL_MASK" signal="activate"/>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkSeparatorMenuItem" id="separator4">
+ <property name="visible">True</property>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkMenuItem" id="menu_tabs_left">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Move Tab _Left</property>
+ <property name="use_underline">True</property>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkMenuItem" id="menu_tabs_right">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Move Tab _Right</property>
+ <property name="use_underline">True</property>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkMenuItem" id="menu_tabs_detach">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Detach Tab</property>
+ <property name="use_underline">True</property>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkMenuItem" id="menu_help">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Help</property>
+ <property name="use_underline">True</property>
+
+ <child>
+ <widget class="GtkMenu" id="menu_help_menu">
+
+ <child>
+ <widget class="GtkImageMenuItem" id="menu_help_contents">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Contents</property>
+ <property name="use_underline">True</property>
+ <accelerator key="F1" modifiers="0" signal="activate"/>
+
+ <child internal-child="image">
+ <widget class="GtkImage" id="image289">
+ <property name="visible">True</property>
+ <property name="stock">gtk-help</property>
+ <property name="icon_size">1</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ </child>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkImageMenuItem" id="menu_help_about">
+ <property name="visible">True</property>
+ <property name="label">gtk-about</property>
+ <property name="use_stock">True</property>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <placeholder/>
+ </child>
+ </widget>
+ </child>
+</widget>
+
+<widget class="GtkDialog" id="chat_invite_dialog">
+ <property name="border_width">5</property>
+ <property name="title" translatable="yes">Invite</property>
+ <property name="type">GTK_WINDOW_TOPLEVEL</property>
+ <property name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property>
+ <property name="modal">True</property>
+ <property name="default_width">275</property>
+ <property name="default_height">225</property>
+ <property name="resizable">True</property>
+ <property name="destroy_with_parent">False</property>
+ <property name="decorated">True</property>
+ <property name="skip_taskbar_hint">False</property>
+ <property name="skip_pager_hint">False</property>
+ <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
+ <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+ <property name="focus_on_map">True</property>
+ <property name="urgency_hint">False</property>
+ <property name="has_separator">False</property>
+
+ <child internal-child="vbox">
+ <widget class="GtkVBox" id="vbox6">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+
+ <child internal-child="action_area">
+ <widget class="GtkHButtonBox" id="hbuttonbox1">
+ <property name="visible">True</property>
+ <property name="layout_style">GTK_BUTTONBOX_END</property>
+
+ <child>
+ <widget class="GtkButton" id="button_cancel">
+ <property name="visible">True</property>
+ <property name="can_default">True</property>
+ <property name="can_focus">True</property>
+ <property name="label">gtk-cancel</property>
+ <property name="use_stock">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="response_id">-6</property>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkButton" id="button_invite">
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_default">True</property>
+ <property name="has_default">True</property>
+ <property name="can_focus">True</property>
+ <property name="label">In_vite</property>
+ <property name="use_underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="response_id">-5</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="pack_type">GTK_PACK_END</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkVBox" id="vbox7">
+ <property name="border_width">5</property>
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">18</property>
+
+ <child>
+ <widget class="GtkVBox" id="vbox7">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">6</property>
+
+ <child>
+ <widget class="GtkLabel" id="label">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Select who would you like to invite:</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">True</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">True</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkScrolledWindow" id="scrolledwindow1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+ <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+ <property name="shadow_type">GTK_SHADOW_IN</property>
+ <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
+
+ <child>
+ <widget class="GtkTreeView" id="treeview">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="headers_visible">False</property>
+ <property name="rules_hint">False</property>
+ <property name="reorderable">False</property>
+ <property name="enable_search">True</property>
+ <property name="fixed_height_mode">False</property>
+ <property name="hover_selection">False</property>
+ <property name="hover_expand">False</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkVBox" id="vbox8">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">6</property>
+
+ <child>
+ <widget class="GtkLabel" id="label4">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Invitation _message:</property>
+ <property name="use_underline">True</property>
+ <property name="use_markup">True</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">True</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="mnemonic_widget">entry</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkEntry" id="entry">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">True</property>
+ <property name="max_length">0</property>
+ <property name="text" translatable="yes">You have been invited to join a chat conference.</property>
+ <property name="has_frame">True</property>
+ <property name="invisible_char">*</property>
+ <property name="activates_default">True</property>
+ <property name="width_chars">40</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+</widget>
+
+</glade-interface>
diff --git a/gnome-2-22/libempathy-gtk/empathy-chat.h b/gnome-2-22/libempathy-gtk/empathy-chat.h
new file mode 100644
index 000000000..bcf382e53
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-chat.h
@@ -0,0 +1,123 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2002-2007 Imendio AB
+ * Copyright (C) 2007 Collabora Ltd.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * 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: Mikael Hallendal <micke@imendio.com>
+ * Richard Hult <richard@imendio.com>
+ * Martyn Russell <martyn@imendio.com>
+ * Geert-Jan Van den Bogaerde <geertjan@gnome.org>
+ * Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#ifndef __EMPATHY_CHAT_H__
+#define __EMPATHY_CHAT_H__
+
+#include <glib-object.h>
+
+#include <libempathy/empathy-contact.h>
+#include <libempathy/empathy-message.h>
+#include <libempathy/empathy-tp-chat.h>
+
+#include "empathy-chat-view.h"
+#include "empathy-spell.h"
+
+G_BEGIN_DECLS
+
+#define EMPATHY_TYPE_CHAT (empathy_chat_get_type ())
+#define EMPATHY_CHAT(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), EMPATHY_TYPE_CHAT, EmpathyChat))
+#define EMPATHY_CHAT_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), EMPATHY_TYPE_CHAT, EmpathyChatClass))
+#define EMPATHY_IS_CHAT(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), EMPATHY_TYPE_CHAT))
+#define EMPATHY_IS_CHAT_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), EMPATHY_TYPE_CHAT))
+#define EMPATHY_CHAT_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), EMPATHY_TYPE_CHAT, EmpathyChatClass))
+
+typedef struct _EmpathyChat EmpathyChat;
+typedef struct _EmpathyChatClass EmpathyChatClass;
+typedef struct _EmpathyChatPriv EmpathyChatPriv;
+
+#include "empathy-chat-window.h"
+
+struct _EmpathyChat {
+ GObject parent;
+
+ /* Protected */
+ EmpathyChatView *view;
+ GtkWidget *input_text_view;
+ gboolean block_events;
+};
+
+struct _EmpathyChatClass {
+ GObjectClass parent;
+
+ /* VTable */
+ const gchar * (*get_name) (EmpathyChat *chat);
+ gchar * (*get_tooltip) (EmpathyChat *chat);
+ const gchar * (*get_status_icon_name)(EmpathyChat *chat);
+ GtkWidget * (*get_widget) (EmpathyChat *chat);
+ gboolean (*is_group_chat) (EmpathyChat *chat);
+ void (*set_tp_chat) (EmpathyChat *chat,
+ EmpathyTpChat *tp_chat);
+ gboolean (*key_press_event) (EmpathyChat *chat,
+ GdkEventKey *event);
+};
+
+GType empathy_chat_get_type (void);
+
+EmpathyChatView * empathy_chat_get_view (EmpathyChat *chat);
+EmpathyChatWindow *empathy_chat_get_window (EmpathyChat *chat);
+void empathy_chat_set_window (EmpathyChat *chat,
+ EmpathyChatWindow *window);
+void empathy_chat_present (EmpathyChat *chat);
+void empathy_chat_clear (EmpathyChat *chat);
+void empathy_chat_scroll_down (EmpathyChat *chat);
+void empathy_chat_cut (EmpathyChat *chat);
+void empathy_chat_copy (EmpathyChat *chat);
+void empathy_chat_paste (EmpathyChat *chat);
+const gchar * empathy_chat_get_name (EmpathyChat *chat);
+gchar * empathy_chat_get_tooltip (EmpathyChat *chat);
+const gchar * empathy_chat_get_status_icon_name (EmpathyChat *chat);
+GtkWidget * empathy_chat_get_widget (EmpathyChat *chat);
+gboolean empathy_chat_is_group_chat (EmpathyChat *chat);
+gboolean empathy_chat_is_connected (EmpathyChat *chat);
+void empathy_chat_save_geometry (EmpathyChat *chat,
+ gint x,
+ gint y,
+ gint w,
+ gint h);
+void empathy_chat_load_geometry (EmpathyChat *chat,
+ gint *x,
+ gint *y,
+ gint *w,
+ gint *h);
+void empathy_chat_set_tp_chat (EmpathyChat *chat,
+ EmpathyTpChat *tp_chat);
+const gchar * empathy_chat_get_id (EmpathyChat *chat);
+McAccount * empathy_chat_get_account (EmpathyChat *chat);
+
+/* For spell checker dialog to correct the misspelled word. */
+gboolean empathy_chat_get_is_command (const gchar *str);
+void empathy_chat_correct_word (EmpathyChat *chat,
+ GtkTextIter start,
+ GtkTextIter end,
+ const gchar *new_word);
+gboolean empathy_chat_should_play_sound (EmpathyChat *chat);
+gboolean empathy_chat_should_highlight_nick (EmpathyMessage *message);
+
+G_END_DECLS
+
+#endif /* __EMPATHY_CHAT_H__ */
diff --git a/gnome-2-22/libempathy-gtk/empathy-chatrooms-window.c b/gnome-2-22/libempathy-gtk/empathy-chatrooms-window.c
new file mode 100644
index 000000000..83d305212
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-chatrooms-window.c
@@ -0,0 +1,582 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2004-2007 Imendio AB
+ * Copyright (C) 2007-2008 Collabora Ltd.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * 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: Xavier Claessens <xclaesse@gmail.com>
+ * Martyn Russell <martyn@imendio.com>
+ * Mikael Hallendal <micke@imendio.com>
+ */
+
+#include "config.h"
+
+#include <string.h>
+#include <stdio.h>
+
+#include <gtk/gtk.h>
+#include <glade/glade.h>
+#include <glib.h>
+#include <glib/gi18n.h>
+
+#include <libempathy/empathy-chatroom-manager.h>
+#include <libempathy/empathy-utils.h>
+
+#include "empathy-account-chooser.h"
+#include "empathy-chatrooms-window.h"
+#include "empathy-new-chatroom-dialog.h"
+#include "empathy-ui-utils.h"
+
+typedef struct {
+ EmpathyChatroomManager *manager;
+
+ GtkWidget *window;
+ GtkWidget *hbox_account;
+ GtkWidget *label_account;
+ GtkWidget *account_chooser;
+ GtkWidget *treeview;
+ GtkWidget *button_remove;
+ GtkWidget *button_edit;
+ GtkWidget *button_close;
+
+ gint room_column;
+} EmpathyChatroomsWindow;
+
+static void chatrooms_window_destroy_cb (GtkWidget *widget,
+ EmpathyChatroomsWindow *window);
+static void chatrooms_window_model_setup (EmpathyChatroomsWindow *window);
+static void chatrooms_window_model_add_columns (EmpathyChatroomsWindow *window);
+static void chatrooms_window_model_refresh_data (EmpathyChatroomsWindow *window,
+ gboolean first_time);
+static void chatrooms_window_model_add (EmpathyChatroomsWindow *window,
+ EmpathyChatroom *chatroom,
+ gboolean set_active);
+static void chatrooms_window_model_cell_auto_connect_toggled (GtkCellRendererToggle *cell,
+ gchar *path_string,
+ EmpathyChatroomsWindow *window);
+static EmpathyChatroom * chatrooms_window_model_get_selected (EmpathyChatroomsWindow *window);
+static void chatrooms_window_model_action_selected (EmpathyChatroomsWindow *window);
+static void chatrooms_window_row_activated_cb (GtkTreeView *tree_view,
+ GtkTreePath *path,
+ GtkTreeViewColumn *column,
+ EmpathyChatroomsWindow *window);
+static void chatrooms_window_button_remove_clicked_cb (GtkWidget *widget,
+ EmpathyChatroomsWindow *window);
+static void chatrooms_window_button_edit_clicked_cb (GtkWidget *widget,
+ EmpathyChatroomsWindow *window);
+static void chatrooms_window_button_close_clicked_cb (GtkWidget *widget,
+ EmpathyChatroomsWindow *window);
+static void chatrooms_window_chatroom_added_cb (EmpathyChatroomManager *manager,
+ EmpathyChatroom *chatroom,
+ EmpathyChatroomsWindow *window);
+static void chatrooms_window_chatroom_removed_cb (EmpathyChatroomManager *manager,
+ EmpathyChatroom *chatroom,
+ EmpathyChatroomsWindow *window);
+static gboolean chatrooms_window_remove_chatroom_foreach (GtkTreeModel *model,
+ GtkTreePath *path,
+ GtkTreeIter *iter,
+ EmpathyChatroom *chatroom);
+static void chatrooms_window_account_changed_cb (GtkWidget *combo_box,
+ EmpathyChatroomsWindow *window);
+
+enum {
+ COL_IMAGE,
+ COL_NAME,
+ COL_ROOM,
+ COL_AUTO_CONNECT,
+ COL_POINTER,
+ COL_COUNT
+};
+
+void
+empathy_chatrooms_window_show (GtkWindow *parent)
+{
+ static EmpathyChatroomsWindow *window = NULL;
+ GladeXML *glade;
+
+ if (window) {
+ gtk_window_present (GTK_WINDOW (window->window));
+ return;
+ }
+
+ window = g_new0 (EmpathyChatroomsWindow, 1);
+
+ glade = empathy_glade_get_file ("empathy-chatrooms-window.glade",
+ "chatrooms_window",
+ NULL,
+ "chatrooms_window", &window->window,
+ "hbox_account", &window->hbox_account,
+ "label_account", &window->label_account,
+ "treeview", &window->treeview,
+ "button_edit", &window->button_edit,
+ "button_remove", &window->button_remove,
+ "button_close", &window->button_close,
+ NULL);
+
+ empathy_glade_connect (glade,
+ window,
+ "chatrooms_window", "destroy", chatrooms_window_destroy_cb,
+ "button_remove", "clicked", chatrooms_window_button_remove_clicked_cb,
+ "button_edit", "clicked", chatrooms_window_button_edit_clicked_cb,
+ "button_close", "clicked", chatrooms_window_button_close_clicked_cb,
+ NULL);
+
+ g_object_unref (glade);
+
+ g_object_add_weak_pointer (G_OBJECT (window->window), (gpointer) &window);
+
+ /* Get the session and chat room manager */
+ window->manager = empathy_chatroom_manager_new ();
+
+ g_signal_connect (window->manager, "chatroom-added",
+ G_CALLBACK (chatrooms_window_chatroom_added_cb),
+ window);
+ g_signal_connect (window->manager, "chatroom-removed",
+ G_CALLBACK (chatrooms_window_chatroom_removed_cb),
+ window);
+
+ /* Account chooser for chat rooms */
+ window->account_chooser = empathy_account_chooser_new ();
+ empathy_account_chooser_set_filter (EMPATHY_ACCOUNT_CHOOSER (window->account_chooser),
+ empathy_account_chooser_filter_is_connected,
+ NULL);
+ empathy_account_chooser_set_account (EMPATHY_ACCOUNT_CHOOSER (window->account_chooser), NULL);
+ g_object_set (window->account_chooser,
+ "has-all-option", TRUE,
+ NULL);
+
+ gtk_box_pack_start (GTK_BOX (window->hbox_account),
+ window->account_chooser,
+ TRUE, TRUE, 0);
+
+ g_signal_connect (window->account_chooser, "changed",
+ G_CALLBACK (chatrooms_window_account_changed_cb),
+ window);
+
+ gtk_widget_show (window->account_chooser);
+
+ /* Set up chatrooms */
+ chatrooms_window_model_setup (window);
+
+ /* Set focus */
+ gtk_widget_grab_focus (window->treeview);
+
+ /* Last touches */
+ if (parent) {
+ gtk_window_set_transient_for (GTK_WINDOW (window->window),
+ GTK_WINDOW (parent));
+ }
+
+ gtk_widget_show (window->window);
+}
+
+static void
+chatrooms_window_destroy_cb (GtkWidget *widget,
+ EmpathyChatroomsWindow *window)
+{
+ g_signal_handlers_disconnect_by_func (window->manager,
+ chatrooms_window_chatroom_added_cb,
+ window);
+ g_signal_handlers_disconnect_by_func (window->manager,
+ chatrooms_window_chatroom_removed_cb,
+ window);
+ g_object_unref (window->manager);
+ g_free (window);
+}
+
+static void
+chatrooms_window_model_setup (EmpathyChatroomsWindow *window)
+{
+ GtkTreeView *view;
+ GtkListStore *store;
+ GtkTreeSelection *selection;
+
+ /* View */
+ view = GTK_TREE_VIEW (window->treeview);
+
+ g_signal_connect (view, "row-activated",
+ G_CALLBACK (chatrooms_window_row_activated_cb),
+ window);
+
+ /* Store */
+ store = gtk_list_store_new (COL_COUNT,
+ G_TYPE_STRING, /* Image */
+ G_TYPE_STRING, /* Name */
+ G_TYPE_STRING, /* Room */
+ G_TYPE_BOOLEAN, /* Auto start */
+ EMPATHY_TYPE_CHATROOM); /* Chatroom */
+
+ gtk_tree_view_set_model (view, GTK_TREE_MODEL (store));
+
+ /* Selection */
+ selection = gtk_tree_view_get_selection (view);
+ gtk_tree_selection_set_mode (selection, GTK_SELECTION_SINGLE);
+
+ /* Columns */
+ chatrooms_window_model_add_columns (window);
+
+ /* Add data */
+ chatrooms_window_model_refresh_data (window, TRUE);
+
+ /* Clean up */
+ g_object_unref (store);
+}
+
+static void
+chatrooms_window_model_add_columns (EmpathyChatroomsWindow *window)
+{
+ GtkTreeView *view;
+ GtkTreeModel *model;
+ GtkTreeViewColumn *column;
+ GtkCellRenderer *cell;
+ gint count;
+
+ view = GTK_TREE_VIEW (window->treeview);
+ model = gtk_tree_view_get_model (view);
+
+ gtk_tree_view_set_headers_visible (view, TRUE);
+ gtk_tree_view_set_headers_clickable (view, TRUE);
+
+ /* Name & Status */
+ column = gtk_tree_view_column_new ();
+ count = gtk_tree_view_append_column (view, column);
+
+ gtk_tree_view_column_set_title (column, _("Name"));
+ gtk_tree_view_column_set_expand (column, TRUE);
+ gtk_tree_view_column_set_sort_column_id (column, count - 1);
+
+ cell = gtk_cell_renderer_pixbuf_new ();
+ gtk_tree_view_column_pack_start (column, cell, FALSE);
+ gtk_tree_view_column_add_attribute (column, cell, "icon-name", COL_IMAGE);
+
+ cell = gtk_cell_renderer_text_new ();
+ g_object_set (cell,
+ "xpad", 4,
+ "ypad", 1,
+ NULL);
+ gtk_tree_view_column_pack_start (column, cell, TRUE);
+ gtk_tree_view_column_add_attribute (column, cell, "text", COL_NAME);
+
+ /* Room */
+ cell = gtk_cell_renderer_text_new ();
+ column = gtk_tree_view_column_new_with_attributes (_("Room"), cell,
+ "text", COL_ROOM,
+ NULL);
+ count = gtk_tree_view_append_column (view, column);
+ gtk_tree_view_column_set_sort_column_id (column, count - 1);
+ window->room_column = count - 1;
+
+ /* Chatroom auto connect */
+ cell = gtk_cell_renderer_toggle_new ();
+ column = gtk_tree_view_column_new_with_attributes (_("Auto Connect"), cell,
+ "active", COL_AUTO_CONNECT,
+ NULL);
+ count = gtk_tree_view_append_column (view, column);
+ gtk_tree_view_column_set_sort_column_id (column, count - 1);
+
+ g_signal_connect (cell, "toggled",
+ G_CALLBACK (chatrooms_window_model_cell_auto_connect_toggled),
+ window);
+
+ /* Sort model */
+ gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (model), 0,
+ GTK_SORT_ASCENDING);
+}
+
+static void
+chatrooms_window_model_refresh_data (EmpathyChatroomsWindow *window,
+ gboolean first_time)
+{
+ GtkTreeView *view;
+ GtkTreeSelection *selection;
+ GtkTreeModel *model;
+ GtkListStore *store;
+ GtkTreeIter iter;
+ GtkTreeViewColumn *column;
+ EmpathyAccountChooser *account_chooser;
+ McAccount *account;
+ GList *chatrooms, *l;
+
+ view = GTK_TREE_VIEW (window->treeview);
+ selection = gtk_tree_view_get_selection (view);
+ model = gtk_tree_view_get_model (view);
+ store = GTK_LIST_STORE (model);
+
+ /* Look up chatrooms */
+ account_chooser = EMPATHY_ACCOUNT_CHOOSER (window->account_chooser);
+ account = empathy_account_chooser_get_account (account_chooser);
+
+ chatrooms = empathy_chatroom_manager_get_chatrooms (window->manager, account);
+
+ /* Sort out columns, we only show the server column for
+ * selected protocol types, such as Jabber.
+ */
+ if (account) {
+ column = gtk_tree_view_get_column (view, window->room_column);
+ gtk_tree_view_column_set_visible (column, TRUE);
+ } else {
+ column = gtk_tree_view_get_column (view, window->room_column);
+ gtk_tree_view_column_set_visible (column, FALSE);
+ }
+
+ /* Clean out the store */
+ gtk_list_store_clear (store);
+
+ /* Populate with chatroom list. */
+ for (l = chatrooms; l; l = l->next) {
+ chatrooms_window_model_add (window, l->data, FALSE);
+ }
+
+ if (gtk_tree_model_get_iter_first (model, &iter)) {
+ gtk_tree_selection_select_iter (selection, &iter);
+ }
+
+ if (account) {
+ g_object_unref (account);
+ }
+
+ g_list_free (chatrooms);
+}
+
+static void
+chatrooms_window_model_add (EmpathyChatroomsWindow *window,
+ EmpathyChatroom *chatroom,
+ gboolean set_active)
+{
+ GtkTreeView *view;
+ GtkTreeModel *model;
+ GtkTreeSelection *selection;
+ GtkListStore *store;
+ GtkTreeIter iter;
+
+ view = GTK_TREE_VIEW (window->treeview);
+ selection = gtk_tree_view_get_selection (view);
+ model = gtk_tree_view_get_model (view);
+ store = GTK_LIST_STORE (model);
+
+ gtk_list_store_append (store, &iter);
+ gtk_list_store_set (store, &iter,
+ COL_NAME, empathy_chatroom_get_name (chatroom),
+ COL_ROOM, empathy_chatroom_get_room (chatroom),
+ COL_AUTO_CONNECT, empathy_chatroom_get_auto_connect (chatroom),
+ COL_POINTER, chatroom,
+ -1);
+
+ if (set_active) {
+ gtk_tree_selection_select_iter (selection, &iter);
+ }
+}
+
+static void
+chatrooms_window_model_cell_auto_connect_toggled (GtkCellRendererToggle *cell,
+ gchar *path_string,
+ EmpathyChatroomsWindow *window)
+{
+ EmpathyChatroom *chatroom;
+ gboolean enabled;
+ GtkTreeView *view;
+ GtkTreeModel *model;
+ GtkListStore *store;
+ GtkTreePath *path;
+ GtkTreeIter iter;
+
+ view = GTK_TREE_VIEW (window->treeview);
+ model = gtk_tree_view_get_model (view);
+ store = GTK_LIST_STORE (model);
+
+ path = gtk_tree_path_new_from_string (path_string);
+
+ gtk_tree_model_get_iter (model, &iter, path);
+ gtk_tree_model_get (model, &iter,
+ COL_AUTO_CONNECT, &enabled,
+ COL_POINTER, &chatroom,
+ -1);
+
+ enabled = !enabled;
+
+ empathy_chatroom_set_auto_connect (chatroom, enabled);
+ empathy_chatroom_manager_store (window->manager);
+
+ gtk_list_store_set (store, &iter, COL_AUTO_CONNECT, enabled, -1);
+ gtk_tree_path_free (path);
+ g_object_unref (chatroom);
+}
+
+static EmpathyChatroom *
+chatrooms_window_model_get_selected (EmpathyChatroomsWindow *window)
+{
+ GtkTreeView *view;
+ GtkTreeModel *model;
+ GtkTreeSelection *selection;
+ GtkTreeIter iter;
+ EmpathyChatroom *chatroom = NULL;
+
+ view = GTK_TREE_VIEW (window->treeview);
+ selection = gtk_tree_view_get_selection (view);
+
+ if (gtk_tree_selection_get_selected (selection, &model, &iter)) {
+ gtk_tree_model_get (model, &iter, COL_POINTER, &chatroom, -1);
+ }
+
+ return chatroom;
+}
+
+static void
+chatrooms_window_model_action_selected (EmpathyChatroomsWindow *window)
+{
+ EmpathyChatroom *chatroom;
+ GtkTreeView *view;
+ GtkTreeModel *model;
+
+ view = GTK_TREE_VIEW (window->treeview);
+ model = gtk_tree_view_get_model (view);
+
+ chatroom = chatrooms_window_model_get_selected (window);
+ if (!chatroom) {
+ return;
+ }
+
+ //empathy_edit_chatroom_dialog_show (GTK_WINDOW (window->window), chatroom);
+
+ g_object_unref (chatroom);
+}
+
+static void
+chatrooms_window_row_activated_cb (GtkTreeView *tree_view,
+ GtkTreePath *path,
+ GtkTreeViewColumn *column,
+ EmpathyChatroomsWindow *window)
+{
+ if (GTK_WIDGET_IS_SENSITIVE (window->button_edit)) {
+ chatrooms_window_model_action_selected (window);
+ }
+}
+
+static void
+chatrooms_window_button_remove_clicked_cb (GtkWidget *widget,
+ EmpathyChatroomsWindow *window)
+{
+ EmpathyChatroom *chatroom;
+ GtkTreeView *view;
+ GtkTreeModel *model;
+ GtkTreeSelection *selection;
+ GtkTreeIter iter;
+
+ /* Remove from treeview */
+ view = GTK_TREE_VIEW (window->treeview);
+ selection = gtk_tree_view_get_selection (view);
+
+ if (!gtk_tree_selection_get_selected (selection, &model, &iter)) {
+ return;
+ }
+
+ gtk_tree_model_get (model, &iter, COL_POINTER, &chatroom, -1);
+ gtk_list_store_remove (GTK_LIST_STORE (model), &iter);
+
+ /* Remove from config */
+ empathy_chatroom_manager_remove (window->manager, chatroom);
+
+ g_object_unref (chatroom);
+}
+
+static void
+chatrooms_window_button_edit_clicked_cb (GtkWidget *widget,
+ EmpathyChatroomsWindow *window)
+{
+ EmpathyChatroom *chatroom;
+
+ chatroom = chatrooms_window_model_get_selected (window);
+ if (!chatroom) {
+ return;
+ }
+
+ //empathy_edit_chatroom_dialog_show (GTK_WINDOW (window->window), chatroom);
+
+ g_object_unref (chatroom);
+}
+
+static void
+chatrooms_window_button_close_clicked_cb (GtkWidget *widget,
+ EmpathyChatroomsWindow *window)
+{
+ gtk_widget_destroy (window->window);
+}
+
+static void
+chatrooms_window_chatroom_added_cb (EmpathyChatroomManager *manager,
+ EmpathyChatroom *chatroom,
+ EmpathyChatroomsWindow *window)
+{
+ EmpathyAccountChooser *account_chooser;
+ McAccount *account;
+
+ account_chooser = EMPATHY_ACCOUNT_CHOOSER (window->account_chooser);
+ account = empathy_account_chooser_get_account (account_chooser);
+
+ if (!account) {
+ chatrooms_window_model_add (window, chatroom, FALSE);
+ } else {
+ if (empathy_account_equal (account, empathy_chatroom_get_account (chatroom))) {
+ chatrooms_window_model_add (window, chatroom, FALSE);
+ }
+
+ g_object_unref (account);
+ }
+}
+
+static void
+chatrooms_window_chatroom_removed_cb (EmpathyChatroomManager *manager,
+ EmpathyChatroom *chatroom,
+ EmpathyChatroomsWindow *window)
+{
+ GtkTreeModel *model;
+
+ model = gtk_tree_view_get_model (GTK_TREE_VIEW (window->treeview));
+
+ gtk_tree_model_foreach (model,
+ (GtkTreeModelForeachFunc) chatrooms_window_remove_chatroom_foreach,
+ chatroom);
+}
+
+static gboolean
+chatrooms_window_remove_chatroom_foreach (GtkTreeModel *model,
+ GtkTreePath *path,
+ GtkTreeIter *iter,
+ EmpathyChatroom *chatroom)
+{
+ EmpathyChatroom *this_chatroom;
+
+ gtk_tree_model_get (model, iter, COL_POINTER, &this_chatroom, -1);
+
+ if (empathy_chatroom_equal (chatroom, this_chatroom)) {
+ gtk_list_store_remove (GTK_LIST_STORE (model), iter);
+ g_object_unref (this_chatroom);
+ return TRUE;
+ }
+
+ g_object_unref (this_chatroom);
+
+ return FALSE;
+}
+
+static void
+chatrooms_window_account_changed_cb (GtkWidget *combo_box,
+ EmpathyChatroomsWindow *window)
+{
+ chatrooms_window_model_refresh_data (window, FALSE);
+}
+
diff --git a/gnome-2-22/libempathy-gtk/empathy-chatrooms-window.glade b/gnome-2-22/libempathy-gtk/empathy-chatrooms-window.glade
new file mode 100644
index 000000000..6d47c0936
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-chatrooms-window.glade
@@ -0,0 +1,477 @@
+<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
+<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
+
+<glade-interface>
+
+<widget class="GtkDialog" id="edit_chatroom_dialog">
+ <property name="border_width">5</property>
+ <property name="visible">True</property>
+ <property name="title" translatable="yes">Edit Favorite Room</property>
+ <property name="type">GTK_WINDOW_TOPLEVEL</property>
+ <property name="window_position">GTK_WIN_POS_NONE</property>
+ <property name="modal">False</property>
+ <property name="resizable">False</property>
+ <property name="destroy_with_parent">False</property>
+ <property name="icon_name">gtk-edit</property>
+ <property name="decorated">True</property>
+ <property name="skip_taskbar_hint">False</property>
+ <property name="skip_pager_hint">False</property>
+ <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
+ <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+ <property name="focus_on_map">True</property>
+ <property name="urgency_hint">False</property>
+ <property name="has_separator">False</property>
+
+ <child internal-child="vbox">
+ <widget class="GtkVBox" id="dialog-vbox3">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">2</property>
+
+ <child internal-child="action_area">
+ <widget class="GtkHButtonBox" id="dialog-action_area3">
+ <property name="visible">True</property>
+ <property name="layout_style">GTK_BUTTONBOX_END</property>
+
+ <child>
+ <widget class="GtkButton" id="button_cancel">
+ <property name="visible">True</property>
+ <property name="can_default">True</property>
+ <property name="can_focus">True</property>
+ <property name="label">gtk-cancel</property>
+ <property name="use_stock">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="response_id">-6</property>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkButton" id="button_save">
+ <property name="visible">True</property>
+ <property name="can_default">True</property>
+ <property name="can_focus">True</property>
+ <property name="label">gtk-save</property>
+ <property name="use_stock">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="response_id">-5</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="pack_type">GTK_PACK_END</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkTable" id="table4">
+ <property name="border_width">5</property>
+ <property name="visible">True</property>
+ <property name="n_rows">5</property>
+ <property name="n_columns">2</property>
+ <property name="homogeneous">False</property>
+ <property name="row_spacing">6</property>
+ <property name="column_spacing">12</property>
+
+ <child>
+ <widget class="GtkEntry" id="entry_room">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">True</property>
+ <property name="max_length">0</property>
+ <property name="text" translatable="yes"></property>
+ <property name="has_frame">True</property>
+ <property name="invisible_char">*</property>
+ <property name="activates_default">False</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkEntry" id="entry_server">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">True</property>
+ <property name="max_length">0</property>
+ <property name="text" translatable="yes"></property>
+ <property name="has_frame">True</property>
+ <property name="invisible_char">*</property>
+ <property name="activates_default">False</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkEntry" id="entry_nickname">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">True</property>
+ <property name="max_length">0</property>
+ <property name="text" translatable="yes"></property>
+ <property name="has_frame">True</property>
+ <property name="invisible_char">*</property>
+ <property name="activates_default">False</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label_room">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Room:</property>
+ <property name="use_underline">True</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="mnemonic_widget">entry_room</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label_server">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">S_erver:</property>
+ <property name="use_underline">True</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="mnemonic_widget">entry_server</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label_nickname">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Nickname:</property>
+ <property name="use_underline">True</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="mnemonic_widget">entry_nickname</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label_name">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">N_ame:</property>
+ <property name="use_underline">True</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="mnemonic_widget">entry_name</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">0</property>
+ <property name="bottom_attach">1</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkEntry" id="entry_name">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">True</property>
+ <property name="max_length">0</property>
+ <property name="text" translatable="yes"></property>
+ <property name="has_frame">True</property>
+ <property name="invisible_char">*</property>
+ <property name="activates_default">False</property>
+ <property name="width_chars">25</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">0</property>
+ <property name="bottom_attach">1</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkCheckButton" id="checkbutton_auto_connect">
+ <property name="visible">True</property>
+ <property name="tooltip" translatable="yes">Join this chat room when Empathy starts and you are connected</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Join room on start_up</property>
+ <property name="use_underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="active">False</property>
+ <property name="inconsistent">False</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">4</property>
+ <property name="bottom_attach">5</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+</widget>
+
+<widget class="GtkWindow" id="chatrooms_window">
+ <property name="border_width">12</property>
+ <property name="visible">True</property>
+ <property name="title" translatable="yes">Manage Favorite Rooms</property>
+ <property name="type">GTK_WINDOW_TOPLEVEL</property>
+ <property name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property>
+ <property name="modal">False</property>
+ <property name="resizable">True</property>
+ <property name="destroy_with_parent">False</property>
+ <property name="decorated">True</property>
+ <property name="skip_taskbar_hint">False</property>
+ <property name="skip_pager_hint">False</property>
+ <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
+ <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+ <property name="focus_on_map">True</property>
+ <property name="urgency_hint">False</property>
+
+ <child>
+ <widget class="GtkVBox" id="vbox12">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">12</property>
+
+ <child>
+ <widget class="GtkVBox" id="vbox18">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">18</property>
+
+ <child>
+ <widget class="GtkHBox" id="hbox_account">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">12</property>
+
+ <child>
+ <widget class="GtkLabel" id="label_account">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Account:</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <placeholder/>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkScrolledWindow" id="scrolledwindow1">
+ <property name="height_request">150</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
+ <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+ <property name="shadow_type">GTK_SHADOW_IN</property>
+ <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
+
+ <child>
+ <widget class="GtkTreeView" id="treeview">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="has_focus">True</property>
+ <property name="headers_visible">True</property>
+ <property name="rules_hint">False</property>
+ <property name="reorderable">False</property>
+ <property name="enable_search">True</property>
+ <property name="fixed_height_mode">False</property>
+ <property name="hover_selection">False</property>
+ <property name="hover_expand">False</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkHButtonBox" id="hbuttonbox3">
+ <property name="visible">True</property>
+ <property name="layout_style">GTK_BUTTONBOX_END</property>
+ <property name="spacing">6</property>
+
+ <child>
+ <widget class="GtkButton" id="button_remove">
+ <property name="visible">True</property>
+ <property name="can_default">True</property>
+ <property name="can_focus">True</property>
+ <property name="label">gtk-remove</property>
+ <property name="use_stock">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkButton" id="button_edit">
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_default">True</property>
+ <property name="can_focus">True</property>
+ <property name="label">gtk-edit</property>
+ <property name="use_stock">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkButton" id="button_close">
+ <property name="visible">True</property>
+ <property name="can_default">True</property>
+ <property name="can_focus">True</property>
+ <property name="label">gtk-close</property>
+ <property name="use_stock">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+</widget>
+
+</glade-interface>
diff --git a/gnome-2-22/libempathy-gtk/empathy-chatrooms-window.h b/gnome-2-22/libempathy-gtk/empathy-chatrooms-window.h
new file mode 100644
index 000000000..179082052
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-chatrooms-window.h
@@ -0,0 +1,35 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2004-2007 Imendio AB
+ * Copyright (C) 2007 Collabora Ltd.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * 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: Xavier Claessens <xclaesse@gmail.com>
+ * Martyn Russell <martyn@imendio.com>
+ * Mikael Hallendal <micke@imendio.com>
+ */
+
+#ifndef __EMPATHY_CHATROOMS_WINDOW_H__
+#define __EMPATHY_CHATROOMS_WINDOW_H__
+
+G_BEGIN_DECLS
+
+void empathy_chatrooms_window_show (GtkWindow *parent);
+
+G_END_DECLS
+
+#endif /* __EMPATHY_CHATROOMS_WINDOW_H__ */
diff --git a/gnome-2-22/libempathy-gtk/empathy-conf.c b/gnome-2-22/libempathy-gtk/empathy-conf.c
new file mode 100644
index 000000000..1ec3feeb4
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-conf.c
@@ -0,0 +1,373 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2006 Imendio AB
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * 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: Richard Hult <richard@imendio.com>
+ */
+
+#include "config.h"
+
+#include <string.h>
+
+#include <gconf/gconf-client.h>
+
+#include <libempathy/empathy-debug.h>
+
+#include "empathy-conf.h"
+
+#define DEBUG_DOMAIN "Config"
+
+#define EMPATHY_CONF_ROOT "/apps/empathy"
+#define DESKTOP_INTERFACE_ROOT "/desktop/gnome/interface"
+
+#define GET_PRIV(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), EMPATHY_TYPE_CONF, EmpathyConfPriv))
+
+typedef struct {
+ GConfClient *gconf_client;
+} EmpathyConfPriv;
+
+typedef struct {
+ EmpathyConf *conf;
+ EmpathyConfNotifyFunc func;
+ gpointer user_data;
+} EmpathyConfNotifyData;
+
+static void conf_finalize (GObject *object);
+
+G_DEFINE_TYPE (EmpathyConf, empathy_conf, G_TYPE_OBJECT);
+
+static EmpathyConf *global_conf = NULL;
+
+static void
+empathy_conf_class_init (EmpathyConfClass *class)
+{
+ GObjectClass *object_class;
+
+ object_class = G_OBJECT_CLASS (class);
+
+ object_class->finalize = conf_finalize;
+
+ g_type_class_add_private (object_class, sizeof (EmpathyConfPriv));
+}
+
+static void
+empathy_conf_init (EmpathyConf *conf)
+{
+ EmpathyConfPriv *priv;
+
+ priv = GET_PRIV (conf);
+
+ priv->gconf_client = gconf_client_get_default ();
+
+ gconf_client_add_dir (priv->gconf_client,
+ EMPATHY_CONF_ROOT,
+ GCONF_CLIENT_PRELOAD_ONELEVEL,
+ NULL);
+ gconf_client_add_dir (priv->gconf_client,
+ DESKTOP_INTERFACE_ROOT,
+ GCONF_CLIENT_PRELOAD_NONE,
+ NULL);
+}
+
+static void
+conf_finalize (GObject *object)
+{
+ EmpathyConfPriv *priv;
+
+ priv = GET_PRIV (object);
+
+ gconf_client_remove_dir (priv->gconf_client,
+ EMPATHY_CONF_ROOT,
+ NULL);
+ gconf_client_remove_dir (priv->gconf_client,
+ DESKTOP_INTERFACE_ROOT,
+ NULL);
+
+ g_object_unref (priv->gconf_client);
+
+ G_OBJECT_CLASS (empathy_conf_parent_class)->finalize (object);
+}
+
+EmpathyConf *
+empathy_conf_get (void)
+{
+ if (!global_conf) {
+ global_conf = g_object_new (EMPATHY_TYPE_CONF, NULL);
+ }
+
+ return global_conf;
+}
+
+void
+empathy_conf_shutdown (void)
+{
+ if (global_conf) {
+ g_object_unref (global_conf);
+ global_conf = NULL;
+ }
+}
+
+gboolean
+empathy_conf_set_int (EmpathyConf *conf,
+ const gchar *key,
+ gint value)
+{
+ EmpathyConfPriv *priv;
+
+ g_return_val_if_fail (EMPATHY_IS_CONF (conf), FALSE);
+
+ empathy_debug (DEBUG_DOMAIN, "Setting int:'%s' to %d", key, value);
+
+ priv = GET_PRIV (conf);
+
+ return gconf_client_set_int (priv->gconf_client,
+ key,
+ value,
+ NULL);
+}
+
+gboolean
+empathy_conf_get_int (EmpathyConf *conf,
+ const gchar *key,
+ gint *value)
+{
+ EmpathyConfPriv *priv;
+ GError *error = NULL;
+
+ *value = 0;
+
+ g_return_val_if_fail (EMPATHY_IS_CONF (conf), FALSE);
+ g_return_val_if_fail (value != NULL, FALSE);
+
+ priv = GET_PRIV (conf);
+
+ *value = gconf_client_get_int (priv->gconf_client,
+ key,
+ &error);
+
+ if (error) {
+ g_error_free (error);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+gboolean
+empathy_conf_set_bool (EmpathyConf *conf,
+ const gchar *key,
+ gboolean value)
+{
+ EmpathyConfPriv *priv;
+
+ g_return_val_if_fail (EMPATHY_IS_CONF (conf), FALSE);
+
+ empathy_debug (DEBUG_DOMAIN, "Setting bool:'%s' to %d ---> %s",
+ key, value, value ? "true" : "false");
+
+ priv = GET_PRIV (conf);
+
+ return gconf_client_set_bool (priv->gconf_client,
+ key,
+ value,
+ NULL);
+}
+
+gboolean
+empathy_conf_get_bool (EmpathyConf *conf,
+ const gchar *key,
+ gboolean *value)
+{
+ EmpathyConfPriv *priv;
+ GError *error = NULL;
+
+ *value = FALSE;
+
+ g_return_val_if_fail (EMPATHY_IS_CONF (conf), FALSE);
+ g_return_val_if_fail (value != NULL, FALSE);
+
+ priv = GET_PRIV (conf);
+
+ *value = gconf_client_get_bool (priv->gconf_client,
+ key,
+ &error);
+
+ if (error) {
+ g_error_free (error);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+gboolean
+empathy_conf_set_string (EmpathyConf *conf,
+ const gchar *key,
+ const gchar *value)
+{
+ EmpathyConfPriv *priv;
+
+ g_return_val_if_fail (EMPATHY_IS_CONF (conf), FALSE);
+
+ empathy_debug (DEBUG_DOMAIN, "Setting string:'%s' to '%s'",
+ key, value);
+
+ priv = GET_PRIV (conf);
+
+ return gconf_client_set_string (priv->gconf_client,
+ key,
+ value,
+ NULL);
+}
+
+gboolean
+empathy_conf_get_string (EmpathyConf *conf,
+ const gchar *key,
+ gchar **value)
+{
+ EmpathyConfPriv *priv;
+ GError *error = NULL;
+
+ *value = NULL;
+
+ g_return_val_if_fail (EMPATHY_IS_CONF (conf), FALSE);
+
+ priv = GET_PRIV (conf);
+
+ *value = gconf_client_get_string (priv->gconf_client,
+ key,
+ &error);
+
+ if (error) {
+ g_error_free (error);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+gboolean
+empathy_conf_set_string_list (EmpathyConf *conf,
+ const gchar *key,
+ GSList *value)
+{
+ EmpathyConfPriv *priv;
+
+ g_return_val_if_fail (EMPATHY_IS_CONF (conf), FALSE);
+
+ priv = GET_PRIV (conf);
+
+ return gconf_client_set_list (priv->gconf_client,
+ key,
+ GCONF_VALUE_STRING,
+ value,
+ NULL);
+}
+
+gboolean
+empathy_conf_get_string_list (EmpathyConf *conf,
+ const gchar *key,
+ GSList **value)
+{
+ EmpathyConfPriv *priv;
+ GError *error = NULL;
+
+ *value = NULL;
+
+ g_return_val_if_fail (EMPATHY_IS_CONF (conf), FALSE);
+
+ priv = GET_PRIV (conf);
+
+ *value = gconf_client_get_list (priv->gconf_client,
+ key,
+ GCONF_VALUE_STRING,
+ &error);
+ if (error) {
+ g_error_free (error);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static void
+conf_notify_data_free (EmpathyConfNotifyData *data)
+{
+ g_object_unref (data->conf);
+ g_slice_free (EmpathyConfNotifyData, data);
+}
+
+static void
+conf_notify_func (GConfClient *client,
+ guint id,
+ GConfEntry *entry,
+ gpointer user_data)
+{
+ EmpathyConfNotifyData *data;
+
+ data = user_data;
+
+ data->func (data->conf,
+ gconf_entry_get_key (entry),
+ data->user_data);
+}
+
+guint
+empathy_conf_notify_add (EmpathyConf *conf,
+ const gchar *key,
+ EmpathyConfNotifyFunc func,
+ gpointer user_data)
+{
+ EmpathyConfPriv *priv;
+ guint id;
+ EmpathyConfNotifyData *data;
+
+ g_return_val_if_fail (EMPATHY_IS_CONF (conf), 0);
+
+ priv = GET_PRIV (conf);
+
+ data = g_slice_new (EmpathyConfNotifyData);
+ data->func = func;
+ data->user_data = user_data;
+ data->conf = g_object_ref (conf);
+
+ id = gconf_client_notify_add (priv->gconf_client,
+ key,
+ conf_notify_func,
+ data,
+ (GFreeFunc) conf_notify_data_free,
+ NULL);
+
+ return id;
+}
+
+gboolean
+empathy_conf_notify_remove (EmpathyConf *conf,
+ guint id)
+{
+ EmpathyConfPriv *priv;
+
+ g_return_val_if_fail (EMPATHY_IS_CONF (conf), FALSE);
+
+ priv = GET_PRIV (conf);
+
+ gconf_client_notify_remove (priv->gconf_client, id);
+
+ return TRUE;
+}
+
diff --git a/gnome-2-22/libempathy-gtk/empathy-conf.h b/gnome-2-22/libempathy-gtk/empathy-conf.h
new file mode 100644
index 000000000..7e8e60e25
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-conf.h
@@ -0,0 +1,87 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2006 Imendio AB
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * 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 __EMPATHY_CONF_H__
+#define __EMPATHY_CONF_H__
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+#define EMPATHY_TYPE_CONF (empathy_conf_get_type ())
+#define EMPATHY_CONF(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), EMPATHY_TYPE_CONF, EmpathyConf))
+#define EMPATHY_CONF_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), EMPATHY_TYPE_CONF, EmpathyConfClass))
+#define EMPATHY_IS_CONF(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), EMPATHY_TYPE_CONF))
+#define EMPATHY_IS_CONF_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), EMPATHY_TYPE_CONF))
+#define EMPATHY_CONF_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), EMPATHY_TYPE_CONF, EmpathyConfClass))
+
+typedef struct _EmpathyConf EmpathyConf;
+typedef struct _EmpathyConfClass EmpathyConfClass;
+
+struct _EmpathyConf {
+ GObject parent;
+};
+
+struct _EmpathyConfClass {
+ GObjectClass parent_class;
+};
+
+typedef void (*EmpathyConfNotifyFunc) (EmpathyConf *conf,
+ const gchar *key,
+ gpointer user_data);
+
+GType empathy_conf_get_type (void) G_GNUC_CONST;
+EmpathyConf *empathy_conf_get (void);
+void empathy_conf_shutdown (void);
+guint empathy_conf_notify_add (EmpathyConf *conf,
+ const gchar *key,
+ EmpathyConfNotifyFunc func,
+ gpointer data);
+gboolean empathy_conf_notify_remove (EmpathyConf *conf,
+ guint id);
+gboolean empathy_conf_set_int (EmpathyConf *conf,
+ const gchar *key,
+ gint value);
+gboolean empathy_conf_get_int (EmpathyConf *conf,
+ const gchar *key,
+ gint *value);
+gboolean empathy_conf_set_bool (EmpathyConf *conf,
+ const gchar *key,
+ gboolean value);
+gboolean empathy_conf_get_bool (EmpathyConf *conf,
+ const gchar *key,
+ gboolean *value);
+gboolean empathy_conf_set_string (EmpathyConf *conf,
+ const gchar *key,
+ const gchar *value);
+gboolean empathy_conf_get_string (EmpathyConf *conf,
+ const gchar *key,
+ gchar **value);
+gboolean empathy_conf_set_string_list (EmpathyConf *conf,
+ const gchar *key,
+ GSList *value);
+gboolean empathy_conf_get_string_list (EmpathyConf *conf,
+ const gchar *key,
+ GSList **value);
+
+G_END_DECLS
+
+#endif /* __EMPATHY_CONF_H__ */
+
diff --git a/gnome-2-22/libempathy-gtk/empathy-contact-dialogs.c b/gnome-2-22/libempathy-gtk/empathy-contact-dialogs.c
new file mode 100644
index 000000000..e0785c3ce
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-contact-dialogs.c
@@ -0,0 +1,344 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2007-2008 Collabora Ltd.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Authors: Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#include <config.h>
+
+#include <string.h>
+#include <stdlib.h>
+
+#include <gtk/gtk.h>
+#include <glade/glade.h>
+#include <glib/gi18n.h>
+
+#include <libmissioncontrol/mission-control.h>
+
+#include <libempathy/empathy-contact-manager.h>
+#include <libempathy/empathy-contact-list.h>
+#include <libempathy/empathy-utils.h>
+
+#include "empathy-contact-dialogs.h"
+#include "empathy-contact-widget.h"
+#include "empathy-ui-utils.h"
+
+static GList *subscription_dialogs = NULL;
+static GList *information_dialogs = NULL;
+static GtkWidget *new_contact_dialog = NULL;
+
+
+static gint
+contact_dialogs_find (GtkDialog *dialog,
+ EmpathyContact *contact)
+{
+ GtkWidget *contact_widget;
+ EmpathyContact *this_contact;
+
+ contact_widget = g_object_get_data (G_OBJECT (dialog), "contact_widget");
+ this_contact = empathy_contact_widget_get_contact (contact_widget);
+
+ return !empathy_contact_equal (contact, this_contact);
+}
+
+/*
+ * Subscription dialog
+ */
+
+static void
+subscription_dialog_response_cb (GtkDialog *dialog,
+ gint response,
+ GtkWidget *contact_widget)
+{
+ EmpathyContactManager *manager;
+ EmpathyContact *contact;
+
+ manager = empathy_contact_manager_new ();
+ contact = empathy_contact_widget_get_contact (contact_widget);
+
+ if (response == GTK_RESPONSE_YES) {
+ empathy_contact_list_add (EMPATHY_CONTACT_LIST (manager),
+ contact, "");
+ }
+ else if (response == GTK_RESPONSE_NO) {
+ empathy_contact_list_remove (EMPATHY_CONTACT_LIST (manager),
+ contact, "");
+ }
+
+ subscription_dialogs = g_list_remove (subscription_dialogs, dialog);
+ gtk_widget_destroy (GTK_WIDGET (dialog));
+ g_object_unref (manager);
+}
+
+void
+empathy_subscription_dialog_show (EmpathyContact *contact,
+ GtkWindow *parent)
+{
+ GtkWidget *dialog;
+ GtkWidget *hbox_subscription;
+ GtkWidget *contact_widget;
+ GList *l;
+
+ g_return_if_fail (EMPATHY_IS_CONTACT (contact));
+
+ l = g_list_find_custom (subscription_dialogs,
+ contact,
+ (GCompareFunc) contact_dialogs_find);
+ if (l) {
+ gtk_window_present (GTK_WINDOW (l->data));
+ return;
+ }
+
+ empathy_glade_get_file_simple ("empathy-contact-dialogs.glade",
+ "subscription_request_dialog",
+ NULL,
+ "subscription_request_dialog", &dialog,
+ "hbox_subscription", &hbox_subscription,
+ NULL);
+
+ contact_widget = empathy_contact_widget_new (contact,
+ EMPATHY_CONTACT_WIDGET_EDIT_ALIAS |
+ EMPATHY_CONTACT_WIDGET_EDIT_GROUPS);
+ gtk_box_pack_end (GTK_BOX (hbox_subscription),
+ contact_widget,
+ TRUE, TRUE,
+ 0);
+
+ g_object_set_data (G_OBJECT (dialog), "contact_widget", contact_widget);
+ subscription_dialogs = g_list_prepend (subscription_dialogs, dialog);
+
+ g_signal_connect (dialog, "response",
+ G_CALLBACK (subscription_dialog_response_cb),
+ contact_widget);
+
+ if (parent) {
+ gtk_window_set_transient_for (GTK_WINDOW (dialog), parent);
+ }
+
+ gtk_widget_show (dialog);
+}
+
+/*
+ * Information dialog
+ */
+
+static void
+contact_information_response_cb (GtkDialog *dialog,
+ gint response,
+ GtkWidget *contact_widget)
+{
+ information_dialogs = g_list_remove (information_dialogs, dialog);
+ gtk_widget_destroy (GTK_WIDGET (dialog));
+}
+
+void
+empathy_contact_information_dialog_show (EmpathyContact *contact,
+ GtkWindow *parent,
+ gboolean edit,
+ gboolean is_user)
+{
+ GtkWidget *dialog;
+ GtkWidget *button;
+ GtkWidget *contact_widget;
+ GList *l;
+ EmpathyContactWidgetFlags flags = 0;
+
+ g_return_if_fail (EMPATHY_IS_CONTACT (contact));
+
+ l = g_list_find_custom (information_dialogs,
+ contact,
+ (GCompareFunc) contact_dialogs_find);
+ if (l) {
+ gtk_window_present (GTK_WINDOW (l->data));
+ return;
+ }
+
+ /* Create dialog */
+ dialog = gtk_dialog_new ();
+ gtk_dialog_set_has_separator (GTK_DIALOG (dialog), FALSE);
+ gtk_window_set_resizable (GTK_WINDOW (dialog), FALSE);
+ if (is_user) {
+ gtk_window_set_title (GTK_WINDOW (dialog), _("Personal Information"));
+ }
+ else if (edit) {
+ gtk_window_set_title (GTK_WINDOW (dialog), _("Edit Contact Information"));
+ }
+ else {
+ gtk_window_set_title (GTK_WINDOW (dialog), _("Contact Information"));
+ }
+
+ /* Close button */
+ button = gtk_button_new_with_label (GTK_STOCK_CLOSE);
+ gtk_button_set_use_stock (GTK_BUTTON (button), TRUE);
+ gtk_dialog_add_action_widget (GTK_DIALOG (dialog),
+ button,
+ GTK_RESPONSE_CLOSE);
+ gtk_widget_show (button);
+
+ /* Contact info widget */
+ if (edit) {
+ flags |= EMPATHY_CONTACT_WIDGET_EDIT_ALIAS;
+ }
+ if (is_user) {
+ flags |= EMPATHY_CONTACT_WIDGET_EDIT_ACCOUNT;
+ flags |= EMPATHY_CONTACT_WIDGET_EDIT_AVATAR;
+ }
+ if (!is_user && edit) {
+ flags |= EMPATHY_CONTACT_WIDGET_EDIT_GROUPS;
+ }
+ contact_widget = empathy_contact_widget_new (contact, flags);
+ gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox),
+ contact_widget,
+ TRUE, TRUE, 0);
+ if (flags & EMPATHY_CONTACT_WIDGET_EDIT_ACCOUNT) {
+ empathy_contact_widget_set_account_filter (contact_widget,
+ empathy_account_chooser_filter_is_connected,
+ NULL);
+ }
+
+ g_object_set_data (G_OBJECT (dialog), "contact_widget", contact_widget);
+ information_dialogs = g_list_prepend (information_dialogs, dialog);
+
+ g_signal_connect (dialog, "response",
+ G_CALLBACK (contact_information_response_cb),
+ contact_widget);
+
+ if (parent) {
+ gtk_window_set_transient_for (GTK_WINDOW (dialog), parent);
+ }
+
+ gtk_widget_show (dialog);
+}
+
+/*
+ * New contact dialog
+ */
+
+static gboolean
+can_add_contact_to_account (McAccount *account,
+ gpointer user_data)
+{
+ MissionControl *mc;
+ TpConnectionStatus status;
+ McProfile *profile;
+ const gchar *protocol_name;
+
+ mc = empathy_mission_control_new ();
+ status = mission_control_get_connection_status (mc, account, NULL);
+ g_object_unref (mc);
+ if (status != TP_CONNECTION_STATUS_CONNECTED) {
+ /* Account is disconnected */
+ return FALSE;
+ }
+
+ profile = mc_account_get_profile (account);
+ protocol_name = mc_profile_get_protocol_name (profile);
+ if (strcmp (protocol_name, "local-xmpp") == 0) {
+ /* We can't add accounts to a XMPP LL connection
+ * FIXME: We should inspect the flags of the contact list group interface
+ */
+ g_object_unref (profile);
+ return FALSE;
+ }
+
+ g_object_unref (profile);
+ return TRUE;
+}
+
+static void
+new_contact_response_cb (GtkDialog *dialog,
+ gint response,
+ GtkWidget *contact_widget)
+{
+ EmpathyContactManager *manager;
+ EmpathyContact *contact;
+
+ manager = empathy_contact_manager_new ();
+ contact = empathy_contact_widget_get_contact (contact_widget);
+
+ if (contact && response == GTK_RESPONSE_OK) {
+ empathy_contact_list_add (EMPATHY_CONTACT_LIST (manager),
+ contact,
+ _("I would like to add you to my contact list."));
+ }
+
+ new_contact_dialog = NULL;
+ gtk_widget_destroy (GTK_WIDGET (dialog));
+ g_object_unref (manager);
+}
+
+void
+empathy_new_contact_dialog_show (GtkWindow *parent)
+{
+ GtkWidget *dialog;
+ GtkWidget *button;
+ GtkWidget *contact_widget;
+
+ if (new_contact_dialog) {
+ gtk_window_present (GTK_WINDOW (new_contact_dialog));
+ return;
+ }
+
+ /* Create dialog */
+ dialog = gtk_dialog_new ();
+ gtk_dialog_set_has_separator (GTK_DIALOG (dialog), FALSE);
+ gtk_window_set_resizable (GTK_WINDOW (dialog), FALSE);
+ gtk_window_set_title (GTK_WINDOW (dialog), _("New Contact"));
+
+ /* Cancel button */
+ button = gtk_button_new_with_label (GTK_STOCK_CANCEL);
+ gtk_button_set_use_stock (GTK_BUTTON (button), TRUE);
+ gtk_dialog_add_action_widget (GTK_DIALOG (dialog),
+ button,
+ GTK_RESPONSE_CANCEL);
+ gtk_widget_show (button);
+
+ /* Add button */
+ button = gtk_button_new_with_label (GTK_STOCK_ADD);
+ gtk_button_set_use_stock (GTK_BUTTON (button), TRUE);
+ gtk_dialog_add_action_widget (GTK_DIALOG (dialog),
+ button,
+ GTK_RESPONSE_OK);
+ gtk_widget_show (button);
+
+ /* Contact info widget */
+ contact_widget = empathy_contact_widget_new (NULL,
+ EMPATHY_CONTACT_WIDGET_EDIT_ALIAS |
+ EMPATHY_CONTACT_WIDGET_EDIT_ACCOUNT |
+ EMPATHY_CONTACT_WIDGET_EDIT_ID |
+ EMPATHY_CONTACT_WIDGET_EDIT_GROUPS);
+ gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox),
+ contact_widget,
+ TRUE, TRUE, 0);
+ empathy_contact_widget_set_account_filter (contact_widget,
+ can_add_contact_to_account,
+ NULL);
+
+ new_contact_dialog = dialog;
+
+ g_signal_connect (dialog, "response",
+ G_CALLBACK (new_contact_response_cb),
+ contact_widget);
+
+ if (parent) {
+ gtk_window_set_transient_for (GTK_WINDOW (dialog), parent);
+ }
+
+ gtk_widget_show (dialog);
+}
+
diff --git a/gnome-2-22/libempathy-gtk/empathy-contact-dialogs.glade b/gnome-2-22/libempathy-gtk/empathy-contact-dialogs.glade
new file mode 100644
index 000000000..f8a441057
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-contact-dialogs.glade
@@ -0,0 +1,120 @@
+<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
+<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
+
+<glade-interface>
+
+<widget class="GtkDialog" id="subscription_request_dialog">
+ <property name="border_width">5</property>
+ <property name="title" translatable="yes">Subscription Request</property>
+ <property name="type">GTK_WINDOW_TOPLEVEL</property>
+ <property name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property>
+ <property name="modal">False</property>
+ <property name="resizable">False</property>
+ <property name="destroy_with_parent">False</property>
+ <property name="decorated">True</property>
+ <property name="skip_taskbar_hint">False</property>
+ <property name="skip_pager_hint">False</property>
+ <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
+ <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+ <property name="focus_on_map">True</property>
+ <property name="urgency_hint">False</property>
+ <property name="has_separator">False</property>
+
+ <child internal-child="vbox">
+ <widget class="GtkVBox" id="dialog-vbox4">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">2</property>
+
+ <child internal-child="action_area">
+ <widget class="GtkHButtonBox" id="dialog-action_area4">
+ <property name="visible">True</property>
+ <property name="layout_style">GTK_BUTTONBOX_END</property>
+
+ <child>
+ <widget class="GtkButton" id="button19">
+ <property name="visible">True</property>
+ <property name="can_default">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Decide _Later</property>
+ <property name="use_underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="response_id">-6</property>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkButton" id="button20">
+ <property name="visible">True</property>
+ <property name="can_default">True</property>
+ <property name="can_focus">True</property>
+ <property name="label">gtk-no</property>
+ <property name="use_stock">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="response_id">-9</property>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkButton" id="button21">
+ <property name="visible">True</property>
+ <property name="can_default">True</property>
+ <property name="has_default">True</property>
+ <property name="can_focus">True</property>
+ <property name="label">gtk-yes</property>
+ <property name="use_stock">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="response_id">-8</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="pack_type">GTK_PACK_END</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkHBox" id="hbox_subscription">
+ <property name="border_width">5</property>
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">12</property>
+
+ <child>
+ <widget class="GtkImage" id="image5">
+ <property name="visible">True</property>
+ <property name="stock">gtk-dialog-question</property>
+ <property name="icon_size">6</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <placeholder/>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+</widget>
+
+</glade-interface>
diff --git a/gnome-2-22/libempathy-gtk/empathy-contact-dialogs.h b/gnome-2-22/libempathy-gtk/empathy-contact-dialogs.h
new file mode 100644
index 000000000..a03e0d000
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-contact-dialogs.h
@@ -0,0 +1,41 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2007 Collabora Ltd.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Authors: Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#ifndef __EMPATHY_CONTACT_DIALOGS_H__
+#define __EMPATHY_CONTACT_DIALOGS_H__
+
+#include <gtk/gtk.h>
+
+#include <libempathy/empathy-contact.h>
+
+G_BEGIN_DECLS
+
+void empathy_subscription_dialog_show (EmpathyContact *contact,
+ GtkWindow *parent);
+void empathy_contact_information_dialog_show (EmpathyContact *contact,
+ GtkWindow *parent,
+ gboolean edit,
+ gboolean is_user);
+void empathy_new_contact_dialog_show (GtkWindow *parent);
+
+G_END_DECLS
+
+#endif /* __EMPATHY_CONTACT_DIALOGS_H__ */
diff --git a/gnome-2-22/libempathy-gtk/empathy-contact-list-store.c b/gnome-2-22/libempathy-gtk/empathy-contact-list-store.c
new file mode 100644
index 000000000..cf43bce62
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-contact-list-store.c
@@ -0,0 +1,1549 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2005-2007 Imendio AB
+ * Copyright (C) 2007-2008 Collabora Ltd.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * 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: Mikael Hallendal <micke@imendio.com>
+ * Martyn Russell <martyn@imendio.com>
+ * Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#include "config.h"
+
+#include <string.h>
+
+#include <glib.h>
+#include <gtk/gtk.h>
+
+#include <libempathy/empathy-debug.h>
+
+#include "empathy-contact-list-store.h"
+#include "empathy-ui-utils.h"
+#include "empathy-gtk-enum-types.h"
+
+#define DEBUG_DOMAIN "ContactListStore"
+
+/* Active users are those which have recently changed state
+ * (e.g. online, offline or from normal to a busy state).
+ */
+
+/* Time in seconds user is shown as active */
+#define ACTIVE_USER_SHOW_TIME 7
+
+/* Time in seconds after connecting which we wait before active users are enabled */
+#define ACTIVE_USER_WAIT_TO_ENABLE_TIME 5
+
+#define GET_PRIV(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), EMPATHY_TYPE_CONTACT_LIST_STORE, EmpathyContactListStorePriv))
+
+typedef struct {
+ EmpathyContactList *list;
+ gboolean show_offline;
+ gboolean show_avatars;
+ gboolean show_groups;
+ gboolean is_compact;
+ gboolean show_active;
+ EmpathyContactListStoreSort sort_criterium;
+ guint inhibit_active;
+} EmpathyContactListStorePriv;
+
+typedef struct {
+ GtkTreeIter iter;
+ const gchar *name;
+ gboolean found;
+} FindGroup;
+
+typedef struct {
+ EmpathyContact *contact;
+ gboolean found;
+ GList *iters;
+} FindContact;
+
+typedef struct {
+ EmpathyContactListStore *store;
+ EmpathyContact *contact;
+ gboolean remove;
+} ShowActiveData;
+
+static void empathy_contact_list_store_class_init (EmpathyContactListStoreClass *klass);
+static void empathy_contact_list_store_init (EmpathyContactListStore *list);
+static void contact_list_store_finalize (GObject *object);
+static void contact_list_store_get_property (GObject *object,
+ guint param_id,
+ GValue *value,
+ GParamSpec *pspec);
+static void contact_list_store_set_property (GObject *object,
+ guint param_id,
+ const GValue *value,
+ GParamSpec *pspec);
+static gboolean contact_list_store_finalize_foreach (GtkTreeModel *model,
+ GtkTreePath *path,
+ GtkTreeIter *iter,
+ gpointer user_data);
+static void contact_list_store_setup (EmpathyContactListStore *store);
+static gboolean contact_list_store_inibit_active_cb (EmpathyContactListStore *store);
+static void contact_list_store_members_changed_cb (EmpathyContactList *list_iface,
+ EmpathyContact *contact,
+ EmpathyContact *actor,
+ guint reason,
+ gchar *message,
+ gboolean is_member,
+ EmpathyContactListStore *store);
+static void contact_list_store_groups_changed_cb (EmpathyContactList *list_iface,
+ EmpathyContact *contact,
+ gchar *group,
+ gboolean is_member,
+ EmpathyContactListStore *store);
+static void contact_list_store_add_contact (EmpathyContactListStore *store,
+ EmpathyContact *contact);
+static void contact_list_store_remove_contact (EmpathyContactListStore *store,
+ EmpathyContact *contact);
+static void contact_list_store_contact_update (EmpathyContactListStore *store,
+ EmpathyContact *contact);
+static void contact_list_store_contact_updated_cb (EmpathyContact *contact,
+ GParamSpec *param,
+ EmpathyContactListStore *store);
+static void contact_list_store_contact_set_active (EmpathyContactListStore *store,
+ EmpathyContact *contact,
+ gboolean active,
+ gboolean set_changed);
+static ShowActiveData * contact_list_store_contact_active_new (EmpathyContactListStore *store,
+ EmpathyContact *contact,
+ gboolean remove);
+static void contact_list_store_contact_active_free (ShowActiveData *data);
+static gboolean contact_list_store_contact_active_cb (ShowActiveData *data);
+static gboolean contact_list_store_get_group_foreach (GtkTreeModel *model,
+ GtkTreePath *path,
+ GtkTreeIter *iter,
+ FindGroup *fg);
+static void contact_list_store_get_group (EmpathyContactListStore *store,
+ const gchar *name,
+ GtkTreeIter *iter_group_to_set,
+ GtkTreeIter *iter_separator_to_set,
+ gboolean *created);
+static gint contact_list_store_state_sort_func (GtkTreeModel *model,
+ GtkTreeIter *iter_a,
+ GtkTreeIter *iter_b,
+ gpointer user_data);
+static gint contact_list_store_name_sort_func (GtkTreeModel *model,
+ GtkTreeIter *iter_a,
+ GtkTreeIter *iter_b,
+ gpointer user_data);
+static gboolean contact_list_store_find_contact_foreach (GtkTreeModel *model,
+ GtkTreePath *path,
+ GtkTreeIter *iter,
+ FindContact *fc);
+static GList * contact_list_store_find_contact (EmpathyContactListStore *store,
+ EmpathyContact *contact);
+static gboolean contact_list_store_update_list_mode_foreach (GtkTreeModel *model,
+ GtkTreePath *path,
+ GtkTreeIter *iter,
+ EmpathyContactListStore *store);
+
+enum {
+ PROP_0,
+ PROP_CONTACT_LIST,
+ PROP_SHOW_OFFLINE,
+ PROP_SHOW_AVATARS,
+ PROP_SHOW_GROUPS,
+ PROP_IS_COMPACT,
+ PROP_SORT_CRITERIUM
+};
+
+G_DEFINE_TYPE (EmpathyContactListStore, empathy_contact_list_store, GTK_TYPE_TREE_STORE);
+
+
+static gboolean
+contact_list_store_iface_setup (gpointer user_data)
+{
+ EmpathyContactListStore *store = user_data;
+ EmpathyContactListStorePriv *priv = GET_PRIV (store);
+ GList *contacts, *l;
+
+ /* Signal connection. */
+ g_signal_connect (priv->list,
+ "members-changed",
+ G_CALLBACK (contact_list_store_members_changed_cb),
+ store);
+ g_signal_connect (priv->list,
+ "groups-changed",
+ G_CALLBACK (contact_list_store_groups_changed_cb),
+ store);
+
+ /* Add contacts already created. */
+ contacts = empathy_contact_list_get_members (priv->list);
+ for (l = contacts; l; l = l->next) {
+ contact_list_store_members_changed_cb (priv->list, l->data,
+ NULL, 0, NULL,
+ TRUE,
+ store);
+
+ g_object_unref (l->data);
+ }
+ g_list_free (contacts);
+
+ return FALSE;
+}
+
+
+static void
+contact_list_store_set_contact_list (EmpathyContactListStore *store,
+ EmpathyContactList *list_iface)
+{
+ EmpathyContactListStorePriv *priv = GET_PRIV (store);
+
+ priv->list = g_object_ref (list_iface);
+
+ /* Let a chance to have all properties set before populating */
+ g_idle_add (contact_list_store_iface_setup,
+ store);
+}
+
+static void
+empathy_contact_list_store_class_init (EmpathyContactListStoreClass *klass)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+ object_class->finalize = contact_list_store_finalize;
+ object_class->get_property = contact_list_store_get_property;
+ object_class->set_property = contact_list_store_set_property;
+
+ g_object_class_install_property (object_class,
+ PROP_CONTACT_LIST,
+ g_param_spec_object ("contact-list",
+ "The contact list iface",
+ "The contact list iface",
+ EMPATHY_TYPE_CONTACT_LIST,
+ G_PARAM_CONSTRUCT_ONLY |
+ G_PARAM_READWRITE));
+ g_object_class_install_property (object_class,
+ PROP_SHOW_OFFLINE,
+ g_param_spec_boolean ("show-offline",
+ "Show Offline",
+ "Whether contact list should display "
+ "offline contacts",
+ FALSE,
+ G_PARAM_READWRITE));
+ g_object_class_install_property (object_class,
+ PROP_SHOW_AVATARS,
+ g_param_spec_boolean ("show-avatars",
+ "Show Avatars",
+ "Whether contact list should display "
+ "avatars for contacts",
+ TRUE,
+ G_PARAM_READWRITE));
+ g_object_class_install_property (object_class,
+ PROP_SHOW_GROUPS,
+ g_param_spec_boolean ("show-groups",
+ "Show Groups",
+ "Whether contact list should display "
+ "contact groups",
+ TRUE,
+ G_PARAM_READWRITE));
+ g_object_class_install_property (object_class,
+ PROP_IS_COMPACT,
+ g_param_spec_boolean ("is-compact",
+ "Is Compact",
+ "Whether the contact list is in compact mode or not",
+ FALSE,
+ G_PARAM_READWRITE));
+
+ g_object_class_install_property (object_class,
+ PROP_SORT_CRITERIUM,
+ g_param_spec_enum ("sort-criterium",
+ "Sort citerium",
+ "The sort criterium to use for sorting the contact list",
+ EMPATHY_TYPE_CONTACT_LIST_STORE_SORT,
+ EMPATHY_CONTACT_LIST_STORE_SORT_NAME,
+ G_PARAM_READWRITE));
+
+ g_type_class_add_private (object_class, sizeof (EmpathyContactListStorePriv));
+}
+
+static void
+empathy_contact_list_store_init (EmpathyContactListStore *store)
+{
+ EmpathyContactListStorePriv *priv;
+
+ priv = GET_PRIV (store);
+
+ priv->show_avatars = TRUE;
+ priv->show_groups = TRUE;
+ priv->inhibit_active = g_timeout_add_seconds (ACTIVE_USER_WAIT_TO_ENABLE_TIME,
+ (GSourceFunc) contact_list_store_inibit_active_cb,
+ store);
+ contact_list_store_setup (store);
+}
+
+static void
+contact_list_store_finalize (GObject *object)
+{
+ EmpathyContactListStorePriv *priv;
+
+ priv = GET_PRIV (object);
+
+ gtk_tree_model_foreach (GTK_TREE_MODEL (object),
+ (GtkTreeModelForeachFunc) contact_list_store_finalize_foreach,
+ object);
+
+ if (priv->list) {
+ g_signal_handlers_disconnect_by_func (priv->list,
+ G_CALLBACK (contact_list_store_members_changed_cb),
+ object);
+ g_signal_handlers_disconnect_by_func (priv->list,
+ G_CALLBACK (contact_list_store_groups_changed_cb),
+ object);
+ g_object_unref (priv->list);
+ }
+
+ if (priv->inhibit_active) {
+ g_source_remove (priv->inhibit_active);
+ }
+
+ G_OBJECT_CLASS (empathy_contact_list_store_parent_class)->finalize (object);
+}
+
+static void
+contact_list_store_get_property (GObject *object,
+ guint param_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ EmpathyContactListStorePriv *priv;
+
+ priv = GET_PRIV (object);
+
+ switch (param_id) {
+ case PROP_CONTACT_LIST:
+ g_value_set_object (value, priv->list);
+ break;
+ case PROP_SHOW_OFFLINE:
+ g_value_set_boolean (value, priv->show_offline);
+ break;
+ case PROP_SHOW_AVATARS:
+ g_value_set_boolean (value, priv->show_avatars);
+ break;
+ case PROP_SHOW_GROUPS:
+ g_value_set_boolean (value, priv->show_groups);
+ break;
+ case PROP_IS_COMPACT:
+ g_value_set_boolean (value, priv->is_compact);
+ break;
+ case PROP_SORT_CRITERIUM:
+ g_value_set_enum (value, priv->sort_criterium);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
+ break;
+ };
+}
+
+static void
+contact_list_store_set_property (GObject *object,
+ guint param_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ EmpathyContactListStorePriv *priv;
+
+ priv = GET_PRIV (object);
+
+ switch (param_id) {
+ case PROP_CONTACT_LIST:
+ contact_list_store_set_contact_list (EMPATHY_CONTACT_LIST_STORE (object),
+ g_value_get_object (value));
+ break;
+ case PROP_SHOW_OFFLINE:
+ empathy_contact_list_store_set_show_offline (EMPATHY_CONTACT_LIST_STORE (object),
+ g_value_get_boolean (value));
+ break;
+ case PROP_SHOW_AVATARS:
+ empathy_contact_list_store_set_show_avatars (EMPATHY_CONTACT_LIST_STORE (object),
+ g_value_get_boolean (value));
+ break;
+ case PROP_SHOW_GROUPS:
+ empathy_contact_list_store_set_show_groups (EMPATHY_CONTACT_LIST_STORE (object),
+ g_value_get_boolean (value));
+ break;
+ case PROP_IS_COMPACT:
+ empathy_contact_list_store_set_is_compact (EMPATHY_CONTACT_LIST_STORE (object),
+ g_value_get_boolean (value));
+ break;
+ case PROP_SORT_CRITERIUM:
+ empathy_contact_list_store_set_sort_criterium (EMPATHY_CONTACT_LIST_STORE (object),
+ g_value_get_enum (value));
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
+ break;
+ };
+}
+
+EmpathyContactListStore *
+empathy_contact_list_store_new (EmpathyContactList *list_iface)
+{
+ g_return_val_if_fail (EMPATHY_IS_CONTACT_LIST (list_iface), NULL);
+
+ return g_object_new (EMPATHY_TYPE_CONTACT_LIST_STORE,
+ "contact-list", list_iface,
+ NULL);
+}
+
+EmpathyContactList *
+empathy_contact_list_store_get_list_iface (EmpathyContactListStore *store)
+{
+ EmpathyContactListStorePriv *priv;
+
+ g_return_val_if_fail (EMPATHY_IS_CONTACT_LIST_STORE (store), FALSE);
+
+ priv = GET_PRIV (store);
+
+ return priv->list;
+}
+
+gboolean
+empathy_contact_list_store_get_show_offline (EmpathyContactListStore *store)
+{
+ EmpathyContactListStorePriv *priv;
+
+ g_return_val_if_fail (EMPATHY_IS_CONTACT_LIST_STORE (store), FALSE);
+
+ priv = GET_PRIV (store);
+
+ return priv->show_offline;
+}
+
+void
+empathy_contact_list_store_set_show_offline (EmpathyContactListStore *store,
+ gboolean show_offline)
+{
+ EmpathyContactListStorePriv *priv;
+ GList *contacts, *l;
+ gboolean show_active;
+
+ g_return_if_fail (EMPATHY_IS_CONTACT_LIST_STORE (store));
+
+ priv = GET_PRIV (store);
+
+ priv->show_offline = show_offline;
+ show_active = priv->show_active;
+
+ /* Disable temporarily. */
+ priv->show_active = FALSE;
+
+ contacts = empathy_contact_list_get_members (priv->list);
+ for (l = contacts; l; l = l->next) {
+ contact_list_store_contact_update (store, l->data);
+
+ g_object_unref (l->data);
+ }
+ g_list_free (contacts);
+
+ /* Restore to original setting. */
+ priv->show_active = show_active;
+
+ g_object_notify (G_OBJECT (store), "show-offline");
+}
+
+gboolean
+empathy_contact_list_store_get_show_avatars (EmpathyContactListStore *store)
+{
+ EmpathyContactListStorePriv *priv;
+
+ g_return_val_if_fail (EMPATHY_IS_CONTACT_LIST_STORE (store), TRUE);
+
+ priv = GET_PRIV (store);
+
+ return priv->show_avatars;
+}
+
+void
+empathy_contact_list_store_set_show_avatars (EmpathyContactListStore *store,
+ gboolean show_avatars)
+{
+ EmpathyContactListStorePriv *priv;
+ GtkTreeModel *model;
+
+ g_return_if_fail (EMPATHY_IS_CONTACT_LIST_STORE (store));
+
+ priv = GET_PRIV (store);
+
+ priv->show_avatars = show_avatars;
+
+ model = GTK_TREE_MODEL (store);
+
+ gtk_tree_model_foreach (model,
+ (GtkTreeModelForeachFunc)
+ contact_list_store_update_list_mode_foreach,
+ store);
+
+ g_object_notify (G_OBJECT (store), "show-avatars");
+}
+
+gboolean
+empathy_contact_list_store_get_show_groups (EmpathyContactListStore *store)
+{
+ EmpathyContactListStorePriv *priv;
+
+ g_return_val_if_fail (EMPATHY_IS_CONTACT_LIST_STORE (store), TRUE);
+
+ priv = GET_PRIV (store);
+
+ return priv->show_groups;
+}
+
+void
+empathy_contact_list_store_set_show_groups (EmpathyContactListStore *store,
+ gboolean show_groups)
+{
+ EmpathyContactListStorePriv *priv;
+ GList *contacts, *l;
+
+ g_return_if_fail (EMPATHY_IS_CONTACT_LIST_STORE (store));
+
+ priv = GET_PRIV (store);
+
+ if (priv->show_groups == show_groups) {
+ return;
+ }
+
+ priv->show_groups = show_groups;
+
+ /* Remove all contacts and add them back, not optimized but that's the
+ * easy way :) */
+ gtk_tree_store_clear (GTK_TREE_STORE (store));
+ contacts = empathy_contact_list_get_members (priv->list);
+ for (l = contacts; l; l = l->next) {
+ contact_list_store_members_changed_cb (priv->list, l->data,
+ NULL, 0, NULL,
+ TRUE,
+ store);
+
+ g_object_unref (l->data);
+ }
+ g_list_free (contacts);
+
+ g_object_notify (G_OBJECT (store), "show-groups");
+}
+
+gboolean
+empathy_contact_list_store_get_is_compact (EmpathyContactListStore *store)
+{
+ EmpathyContactListStorePriv *priv;
+
+ g_return_val_if_fail (EMPATHY_IS_CONTACT_LIST_STORE (store), TRUE);
+
+ priv = GET_PRIV (store);
+
+ return priv->is_compact;
+}
+
+void
+empathy_contact_list_store_set_is_compact (EmpathyContactListStore *store,
+ gboolean is_compact)
+{
+ EmpathyContactListStorePriv *priv;
+ GtkTreeModel *model;
+
+ g_return_if_fail (EMPATHY_IS_CONTACT_LIST_STORE (store));
+
+ priv = GET_PRIV (store);
+
+ priv->is_compact = is_compact;
+
+ model = GTK_TREE_MODEL (store);
+
+ gtk_tree_model_foreach (model,
+ (GtkTreeModelForeachFunc)
+ contact_list_store_update_list_mode_foreach,
+ store);
+
+ g_object_notify (G_OBJECT (store), "is-compact");
+}
+
+EmpathyContactListStoreSort
+empathy_contact_list_store_get_sort_criterium (EmpathyContactListStore *store)
+{
+ EmpathyContactListStorePriv *priv;
+
+ g_return_val_if_fail (EMPATHY_IS_CONTACT_LIST_STORE (store), 0);
+
+ priv = GET_PRIV (store);
+
+ return priv->sort_criterium;
+}
+
+void
+empathy_contact_list_store_set_sort_criterium (EmpathyContactListStore *store,
+ EmpathyContactListStoreSort sort_criterium)
+{
+ EmpathyContactListStorePriv *priv;
+
+ g_return_if_fail (EMPATHY_IS_CONTACT_LIST_STORE (store));
+
+ priv = GET_PRIV (store);
+
+ priv->sort_criterium = sort_criterium;
+
+ switch (sort_criterium) {
+ case EMPATHY_CONTACT_LIST_STORE_SORT_STATE:
+ gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (store),
+ EMPATHY_CONTACT_LIST_STORE_COL_STATUS,
+ GTK_SORT_ASCENDING);
+ break;
+
+ case EMPATHY_CONTACT_LIST_STORE_SORT_NAME:
+ gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (store),
+ EMPATHY_CONTACT_LIST_STORE_COL_NAME,
+ GTK_SORT_ASCENDING);
+ break;
+ }
+
+ g_object_notify (G_OBJECT (store), "sort-criterium");
+}
+
+gboolean
+empathy_contact_list_store_row_separator_func (GtkTreeModel *model,
+ GtkTreeIter *iter,
+ gpointer data)
+{
+ gboolean is_separator = FALSE;
+
+ g_return_val_if_fail (GTK_IS_TREE_MODEL (model), FALSE);
+
+ gtk_tree_model_get (model, iter,
+ EMPATHY_CONTACT_LIST_STORE_COL_IS_SEPARATOR, &is_separator,
+ -1);
+
+ return is_separator;
+}
+
+gchar *
+empathy_contact_list_store_get_parent_group (GtkTreeModel *model,
+ GtkTreePath *path,
+ gboolean *path_is_group)
+{
+ GtkTreeIter parent_iter, iter;
+ gchar *name = NULL;
+ gboolean is_group;
+
+ g_return_val_if_fail (GTK_IS_TREE_MODEL (model), NULL);
+
+ if (path_is_group) {
+ *path_is_group = FALSE;
+ }
+
+ if (!gtk_tree_model_get_iter (model, &iter, path)) {
+ return NULL;
+ }
+
+ gtk_tree_model_get (model, &iter,
+ EMPATHY_CONTACT_LIST_STORE_COL_IS_GROUP, &is_group,
+ EMPATHY_CONTACT_LIST_STORE_COL_NAME, &name,
+ -1);
+
+ if (!is_group) {
+ g_free (name);
+ name = NULL;
+
+ if (!gtk_tree_model_iter_parent (model, &parent_iter, &iter)) {
+ return NULL;
+ }
+
+ iter = parent_iter;
+
+ gtk_tree_model_get (model, &iter,
+ EMPATHY_CONTACT_LIST_STORE_COL_IS_GROUP, &is_group,
+ EMPATHY_CONTACT_LIST_STORE_COL_NAME, &name,
+ -1);
+ if (!is_group) {
+ g_free (name);
+ return NULL;
+ }
+ }
+
+ if (path_is_group) {
+ *path_is_group = TRUE;
+ }
+
+ return name;
+}
+
+gboolean
+empathy_contact_list_store_search_equal_func (GtkTreeModel *model,
+ gint column,
+ const gchar *key,
+ GtkTreeIter *iter,
+ gpointer search_data)
+{
+ gchar *name, *name_folded;
+ gchar *key_folded;
+ gboolean ret;
+
+ g_return_val_if_fail (GTK_IS_TREE_MODEL (model), FALSE);
+
+ if (!key) {
+ return TRUE;
+ }
+
+ gtk_tree_model_get (model, iter,
+ EMPATHY_CONTACT_LIST_STORE_COL_NAME, &name,
+ -1);
+
+ if (!name) {
+ return TRUE;
+ }
+
+ name_folded = g_utf8_casefold (name, -1);
+ key_folded = g_utf8_casefold (key, -1);
+
+ if (name_folded && key_folded &&
+ strstr (name_folded, key_folded)) {
+ ret = FALSE;
+ } else {
+ ret = TRUE;
+ }
+
+ g_free (name);
+ g_free (name_folded);
+ g_free (key_folded);
+
+ return ret;
+}
+
+static gboolean
+contact_list_store_finalize_foreach (GtkTreeModel *model,
+ GtkTreePath *path,
+ GtkTreeIter *iter,
+ gpointer user_data)
+{
+ EmpathyContactListStore *store = user_data;
+ EmpathyContact *contact = NULL;
+
+ gtk_tree_model_get (GTK_TREE_MODEL (store), iter,
+ EMPATHY_CONTACT_LIST_STORE_COL_CONTACT, &contact,
+ -1);
+
+ if (contact) {
+ g_signal_handlers_disconnect_by_func (contact,
+ G_CALLBACK (contact_list_store_contact_updated_cb),
+ store);
+ }
+
+ return FALSE;
+}
+
+static void
+contact_list_store_setup (EmpathyContactListStore *store)
+{
+ EmpathyContactListStorePriv *priv;
+ GType types[] = {G_TYPE_STRING, /* Status icon-name */
+ GDK_TYPE_PIXBUF, /* Avatar pixbuf */
+ G_TYPE_BOOLEAN, /* Avatar pixbuf visible */
+ G_TYPE_STRING, /* Name */
+ G_TYPE_STRING, /* Status string */
+ G_TYPE_BOOLEAN, /* Show status */
+ EMPATHY_TYPE_CONTACT, /* Contact type */
+ G_TYPE_BOOLEAN, /* Is group */
+ G_TYPE_BOOLEAN, /* Is active */
+ G_TYPE_BOOLEAN, /* Is online */
+ G_TYPE_BOOLEAN, /* Is separator */
+ G_TYPE_BOOLEAN}; /* Can VoIP */
+
+ priv = GET_PRIV (store);
+
+ gtk_tree_store_set_column_types (GTK_TREE_STORE (store),
+ EMPATHY_CONTACT_LIST_STORE_COL_COUNT,
+ types);
+
+ /* Set up sorting */
+ gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (store),
+ EMPATHY_CONTACT_LIST_STORE_COL_NAME,
+ contact_list_store_name_sort_func,
+ store, NULL);
+ gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (store),
+ EMPATHY_CONTACT_LIST_STORE_COL_STATUS,
+ contact_list_store_state_sort_func,
+ store, NULL);
+
+ priv->sort_criterium = EMPATHY_CONTACT_LIST_STORE_SORT_NAME;
+ empathy_contact_list_store_set_sort_criterium (store, priv->sort_criterium);
+}
+
+static gboolean
+contact_list_store_inibit_active_cb (EmpathyContactListStore *store)
+{
+ EmpathyContactListStorePriv *priv;
+
+ priv = GET_PRIV (store);
+
+ priv->show_active = TRUE;
+ priv->inhibit_active = 0;
+
+ return FALSE;
+}
+
+static void
+contact_list_store_members_changed_cb (EmpathyContactList *list_iface,
+ EmpathyContact *contact,
+ EmpathyContact *actor,
+ guint reason,
+ gchar *message,
+ gboolean is_member,
+ EmpathyContactListStore *store)
+{
+ EmpathyContactListStorePriv *priv;
+
+ priv = GET_PRIV (store);
+
+ empathy_debug (DEBUG_DOMAIN,
+ "Contact %s (%d) %s",
+ empathy_contact_get_id (contact),
+ empathy_contact_get_handle (contact),
+ is_member ? "added" : "removed");
+
+ if (is_member) {
+ g_signal_connect (contact, "notify::presence",
+ G_CALLBACK (contact_list_store_contact_updated_cb),
+ store);
+ g_signal_connect (contact, "notify::presence-message",
+ G_CALLBACK (contact_list_store_contact_updated_cb),
+ store);
+ g_signal_connect (contact, "notify::name",
+ G_CALLBACK (contact_list_store_contact_updated_cb),
+ store);
+ g_signal_connect (contact, "notify::avatar",
+ G_CALLBACK (contact_list_store_contact_updated_cb),
+ store);
+ g_signal_connect (contact, "notify::capabilities",
+ G_CALLBACK (contact_list_store_contact_updated_cb),
+ store);
+
+ contact_list_store_add_contact (store, contact);
+ } else {
+ g_signal_handlers_disconnect_by_func (contact,
+ G_CALLBACK (contact_list_store_contact_updated_cb),
+ store);
+
+ contact_list_store_remove_contact (store, contact);
+ }
+}
+
+static void
+contact_list_store_groups_changed_cb (EmpathyContactList *list_iface,
+ EmpathyContact *contact,
+ gchar *group,
+ gboolean is_member,
+ EmpathyContactListStore *store)
+{
+ EmpathyContactListStorePriv *priv;
+ gboolean show_active;
+
+ priv = GET_PRIV (store);
+
+ empathy_debug (DEBUG_DOMAIN, "Updating groups for contact %s (%d)",
+ empathy_contact_get_id (contact),
+ empathy_contact_get_handle (contact));
+
+ /* We do this to make sure the groups are correct, if not, we
+ * would have to check the groups already set up for each
+ * contact and then see what has been updated.
+ */
+ show_active = priv->show_active;
+ priv->show_active = FALSE;
+ contact_list_store_remove_contact (store, contact);
+ contact_list_store_add_contact (store, contact);
+ priv->show_active = show_active;
+}
+
+static void
+contact_list_store_add_contact (EmpathyContactListStore *store,
+ EmpathyContact *contact)
+{
+ EmpathyContactListStorePriv *priv;
+ GtkTreeIter iter;
+ GList *groups = NULL, *l;
+
+ priv = GET_PRIV (store);
+
+ if (!priv->show_offline && !empathy_contact_is_online (contact)) {
+ return;
+ }
+
+ if (priv->show_groups) {
+ groups = empathy_contact_list_get_groups (priv->list, contact);
+ }
+
+ /* If no groups just add it at the top level. */
+ if (!groups) {
+ gtk_tree_store_append (GTK_TREE_STORE (store), &iter, NULL);
+ gtk_tree_store_set (GTK_TREE_STORE (store), &iter,
+ EMPATHY_CONTACT_LIST_STORE_COL_NAME, empathy_contact_get_name (contact),
+ EMPATHY_CONTACT_LIST_STORE_COL_CONTACT, contact,
+ EMPATHY_CONTACT_LIST_STORE_COL_IS_GROUP, FALSE,
+ EMPATHY_CONTACT_LIST_STORE_COL_IS_SEPARATOR, FALSE,
+ EMPATHY_CONTACT_LIST_STORE_COL_CAN_VOIP, empathy_contact_can_voip (contact),
+ -1);
+ }
+
+ /* Else add to each group. */
+ for (l = groups; l; l = l->next) {
+ GtkTreeIter iter_group;
+
+ contact_list_store_get_group (store, l->data, &iter_group, NULL, NULL);
+
+ gtk_tree_store_insert_after (GTK_TREE_STORE (store), &iter,
+ &iter_group, NULL);
+ gtk_tree_store_set (GTK_TREE_STORE (store), &iter,
+ EMPATHY_CONTACT_LIST_STORE_COL_NAME, empathy_contact_get_name (contact),
+ EMPATHY_CONTACT_LIST_STORE_COL_CONTACT, contact,
+ EMPATHY_CONTACT_LIST_STORE_COL_IS_GROUP, FALSE,
+ EMPATHY_CONTACT_LIST_STORE_COL_IS_SEPARATOR, FALSE,
+ EMPATHY_CONTACT_LIST_STORE_COL_CAN_VOIP, empathy_contact_can_voip (contact),
+ -1);
+ g_free (l->data);
+ }
+ g_list_free (groups);
+
+ contact_list_store_contact_update (store, contact);
+
+}
+
+static void
+contact_list_store_remove_contact (EmpathyContactListStore *store,
+ EmpathyContact *contact)
+{
+ EmpathyContactListStorePriv *priv;
+ GtkTreeModel *model;
+ GList *iters, *l;
+
+ priv = GET_PRIV (store);
+
+ iters = contact_list_store_find_contact (store, contact);
+ if (!iters) {
+ return;
+ }
+
+ /* Clean up model */
+ model = GTK_TREE_MODEL (store);
+
+ for (l = iters; l; l = l->next) {
+ GtkTreeIter parent;
+
+ /* NOTE: it is only <= 2 here because we have
+ * separators after the group name, otherwise it
+ * should be 1.
+ */
+ if (gtk_tree_model_iter_parent (model, &parent, l->data) &&
+ gtk_tree_model_iter_n_children (model, &parent) <= 2) {
+ gtk_tree_store_remove (GTK_TREE_STORE (store), &parent);
+ } else {
+ gtk_tree_store_remove (GTK_TREE_STORE (store), l->data);
+ }
+ }
+
+ g_list_foreach (iters, (GFunc) gtk_tree_iter_free, NULL);
+ g_list_free (iters);
+}
+
+static void
+contact_list_store_contact_update (EmpathyContactListStore *store,
+ EmpathyContact *contact)
+{
+ EmpathyContactListStorePriv *priv;
+ ShowActiveData *data;
+ GtkTreeModel *model;
+ GList *iters, *l;
+ gboolean in_list;
+ gboolean should_be_in_list;
+ gboolean was_online = TRUE;
+ gboolean now_online = FALSE;
+ gboolean set_model = FALSE;
+ gboolean do_remove = FALSE;
+ gboolean do_set_active = FALSE;
+ gboolean do_set_refresh = FALSE;
+ GdkPixbuf *pixbuf_avatar;
+
+ priv = GET_PRIV (store);
+
+ model = GTK_TREE_MODEL (store);
+
+ iters = contact_list_store_find_contact (store, contact);
+ if (!iters) {
+ in_list = FALSE;
+ } else {
+ in_list = TRUE;
+ }
+
+ /* Get online state now. */
+ now_online = empathy_contact_is_online (contact);
+
+ if (priv->show_offline || now_online) {
+ should_be_in_list = TRUE;
+ } else {
+ should_be_in_list = FALSE;
+ }
+
+ if (!in_list && !should_be_in_list) {
+ /* Nothing to do. */
+ empathy_debug (DEBUG_DOMAIN,
+ "Contact:'%s' in list:NO, should be:NO",
+ empathy_contact_get_name (contact));
+
+ g_list_foreach (iters, (GFunc) gtk_tree_iter_free, NULL);
+ g_list_free (iters);
+ return;
+ }
+ else if (in_list && !should_be_in_list) {
+ empathy_debug (DEBUG_DOMAIN,
+ "Contact:'%s' in list:YES, should be:NO",
+ empathy_contact_get_name (contact));
+
+ if (priv->show_active) {
+ do_remove = TRUE;
+ do_set_active = TRUE;
+ do_set_refresh = TRUE;
+
+ set_model = TRUE;
+ empathy_debug (DEBUG_DOMAIN, "Remove item (after timeout)");
+ } else {
+ empathy_debug (DEBUG_DOMAIN, "Remove item (now)!");
+ contact_list_store_remove_contact (store, contact);
+ }
+ }
+ else if (!in_list && should_be_in_list) {
+ empathy_debug (DEBUG_DOMAIN,
+ "Contact:'%s' in list:NO, should be:YES",
+ empathy_contact_get_name (contact));
+
+ contact_list_store_add_contact (store, contact);
+
+ if (priv->show_active) {
+ do_set_active = TRUE;
+
+ empathy_debug (DEBUG_DOMAIN, "Set active (contact added)");
+ }
+ } else {
+ empathy_debug (DEBUG_DOMAIN,
+ "Contact:'%s' in list:YES, should be:YES",
+ empathy_contact_get_name (contact));
+
+ /* Get online state before. */
+ if (iters && g_list_length (iters) > 0) {
+ gtk_tree_model_get (model, iters->data,
+ EMPATHY_CONTACT_LIST_STORE_COL_IS_ONLINE, &was_online,
+ -1);
+ }
+
+ /* Is this really an update or an online/offline. */
+ if (priv->show_active) {
+ if (was_online != now_online) {
+ do_set_active = TRUE;
+ do_set_refresh = TRUE;
+
+ empathy_debug (DEBUG_DOMAIN, "Set active (contact updated %s)",
+ was_online ? "online -> offline" :
+ "offline -> online");
+ } else {
+ /* Was TRUE for presence updates. */
+ /* do_set_active = FALSE; */
+ do_set_refresh = TRUE;
+
+ empathy_debug (DEBUG_DOMAIN, "Set active (contact updated)");
+ }
+ }
+
+ set_model = TRUE;
+ }
+
+ pixbuf_avatar = empathy_pixbuf_avatar_from_contact_scaled (contact, 32, 32);
+ for (l = iters; l && set_model; l = l->next) {
+ gtk_tree_store_set (GTK_TREE_STORE (store), l->data,
+ EMPATHY_CONTACT_LIST_STORE_COL_ICON_STATUS, empathy_icon_name_for_contact (contact),
+ EMPATHY_CONTACT_LIST_STORE_COL_PIXBUF_AVATAR, pixbuf_avatar,
+ EMPATHY_CONTACT_LIST_STORE_COL_PIXBUF_AVATAR_VISIBLE, priv->show_avatars,
+ EMPATHY_CONTACT_LIST_STORE_COL_NAME, empathy_contact_get_name (contact),
+ EMPATHY_CONTACT_LIST_STORE_COL_STATUS, empathy_contact_get_status (contact),
+ EMPATHY_CONTACT_LIST_STORE_COL_STATUS_VISIBLE, !priv->is_compact,
+ EMPATHY_CONTACT_LIST_STORE_COL_IS_GROUP, FALSE,
+ EMPATHY_CONTACT_LIST_STORE_COL_IS_ONLINE, now_online,
+ EMPATHY_CONTACT_LIST_STORE_COL_IS_SEPARATOR, FALSE,
+ EMPATHY_CONTACT_LIST_STORE_COL_CAN_VOIP, empathy_contact_can_voip (contact),
+ -1);
+ }
+
+ if (pixbuf_avatar) {
+ g_object_unref (pixbuf_avatar);
+ }
+
+ if (priv->show_active && do_set_active) {
+ contact_list_store_contact_set_active (store, contact, do_set_active, do_set_refresh);
+
+ if (do_set_active) {
+ data = contact_list_store_contact_active_new (store, contact, do_remove);
+ g_timeout_add_seconds (ACTIVE_USER_SHOW_TIME,
+ (GSourceFunc) contact_list_store_contact_active_cb,
+ data);
+ }
+ }
+
+ /* FIXME: when someone goes online then offline quickly, the
+ * first timeout sets the user to be inactive and the second
+ * timeout removes the user from the contact list, really we
+ * should remove the first timeout.
+ */
+ g_list_foreach (iters, (GFunc) gtk_tree_iter_free, NULL);
+ g_list_free (iters);
+}
+
+static void
+contact_list_store_contact_updated_cb (EmpathyContact *contact,
+ GParamSpec *param,
+ EmpathyContactListStore *store)
+{
+ empathy_debug (DEBUG_DOMAIN,
+ "Contact:'%s' updated, checking roster is in sync...",
+ empathy_contact_get_name (contact));
+
+ contact_list_store_contact_update (store, contact);
+}
+
+static void
+contact_list_store_contact_set_active (EmpathyContactListStore *store,
+ EmpathyContact *contact,
+ gboolean active,
+ gboolean set_changed)
+{
+ EmpathyContactListStorePriv *priv;
+ GtkTreeModel *model;
+ GList *iters, *l;
+
+ priv = GET_PRIV (store);
+ model = GTK_TREE_MODEL (store);
+
+ iters = contact_list_store_find_contact (store, contact);
+ for (l = iters; l; l = l->next) {
+ GtkTreePath *path;
+
+ gtk_tree_store_set (GTK_TREE_STORE (store), l->data,
+ EMPATHY_CONTACT_LIST_STORE_COL_IS_ACTIVE, active,
+ -1);
+
+ empathy_debug (DEBUG_DOMAIN, "Set item %s", active ? "active" : "inactive");
+
+ if (set_changed) {
+ path = gtk_tree_model_get_path (model, l->data);
+ gtk_tree_model_row_changed (model, path, l->data);
+ gtk_tree_path_free (path);
+ }
+ }
+
+ g_list_foreach (iters, (GFunc) gtk_tree_iter_free, NULL);
+ g_list_free (iters);
+
+}
+
+static ShowActiveData *
+contact_list_store_contact_active_new (EmpathyContactListStore *store,
+ EmpathyContact *contact,
+ gboolean remove)
+{
+ ShowActiveData *data;
+
+ empathy_debug (DEBUG_DOMAIN,
+ "Contact:'%s' now active, and %s be removed",
+ empathy_contact_get_name (contact),
+ remove ? "WILL" : "WILL NOT");
+
+ data = g_slice_new0 (ShowActiveData);
+
+ data->store = g_object_ref (store);
+ data->contact = g_object_ref (contact);
+ data->remove = remove;
+
+ return data;
+}
+
+static void
+contact_list_store_contact_active_free (ShowActiveData *data)
+{
+ g_object_unref (data->contact);
+ g_object_unref (data->store);
+
+ g_slice_free (ShowActiveData, data);
+}
+
+static gboolean
+contact_list_store_contact_active_cb (ShowActiveData *data)
+{
+ EmpathyContactListStorePriv *priv;
+
+ priv = GET_PRIV (data->store);
+
+ if (data->remove &&
+ !priv->show_offline &&
+ !empathy_contact_is_online (data->contact)) {
+ empathy_debug (DEBUG_DOMAIN,
+ "Contact:'%s' active timeout, removing item",
+ empathy_contact_get_name (data->contact));
+ contact_list_store_remove_contact (data->store, data->contact);
+ }
+
+ empathy_debug (DEBUG_DOMAIN,
+ "Contact:'%s' no longer active",
+ empathy_contact_get_name (data->contact));
+
+ contact_list_store_contact_set_active (data->store,
+ data->contact,
+ FALSE,
+ TRUE);
+
+ contact_list_store_contact_active_free (data);
+
+ return FALSE;
+}
+
+static gboolean
+contact_list_store_get_group_foreach (GtkTreeModel *model,
+ GtkTreePath *path,
+ GtkTreeIter *iter,
+ FindGroup *fg)
+{
+ gchar *str;
+ gboolean is_group;
+
+ /* Groups are only at the top level. */
+ if (gtk_tree_path_get_depth (path) != 1) {
+ return FALSE;
+ }
+
+ gtk_tree_model_get (model, iter,
+ EMPATHY_CONTACT_LIST_STORE_COL_NAME, &str,
+ EMPATHY_CONTACT_LIST_STORE_COL_IS_GROUP, &is_group,
+ -1);
+
+ if (is_group && strcmp (str, fg->name) == 0) {
+ fg->found = TRUE;
+ fg->iter = *iter;
+ }
+
+ g_free (str);
+
+ return fg->found;
+}
+
+static void
+contact_list_store_get_group (EmpathyContactListStore *store,
+ const gchar *name,
+ GtkTreeIter *iter_group_to_set,
+ GtkTreeIter *iter_separator_to_set,
+ gboolean *created)
+{
+ EmpathyContactListStorePriv *priv;
+ GtkTreeModel *model;
+ GtkTreeIter iter_group;
+ GtkTreeIter iter_separator;
+ FindGroup fg;
+
+ priv = GET_PRIV (store);
+
+ memset (&fg, 0, sizeof (fg));
+
+ fg.name = name;
+
+ model = GTK_TREE_MODEL (store);
+ gtk_tree_model_foreach (model,
+ (GtkTreeModelForeachFunc) contact_list_store_get_group_foreach,
+ &fg);
+
+ if (!fg.found) {
+ if (created) {
+ *created = TRUE;
+ }
+
+ gtk_tree_store_append (GTK_TREE_STORE (store), &iter_group, NULL);
+ gtk_tree_store_set (GTK_TREE_STORE (store), &iter_group,
+ EMPATHY_CONTACT_LIST_STORE_COL_ICON_STATUS, NULL,
+ EMPATHY_CONTACT_LIST_STORE_COL_NAME, name,
+ EMPATHY_CONTACT_LIST_STORE_COL_IS_GROUP, TRUE,
+ EMPATHY_CONTACT_LIST_STORE_COL_IS_ACTIVE, FALSE,
+ EMPATHY_CONTACT_LIST_STORE_COL_IS_SEPARATOR, FALSE,
+ -1);
+
+ if (iter_group_to_set) {
+ *iter_group_to_set = iter_group;
+ }
+
+ gtk_tree_store_append (GTK_TREE_STORE (store),
+ &iter_separator,
+ &iter_group);
+ gtk_tree_store_set (GTK_TREE_STORE (store), &iter_separator,
+ EMPATHY_CONTACT_LIST_STORE_COL_IS_SEPARATOR, TRUE,
+ -1);
+
+ if (iter_separator_to_set) {
+ *iter_separator_to_set = iter_separator;
+ }
+ } else {
+ if (created) {
+ *created = FALSE;
+ }
+
+ if (iter_group_to_set) {
+ *iter_group_to_set = fg.iter;
+ }
+
+ iter_separator = fg.iter;
+
+ if (gtk_tree_model_iter_next (model, &iter_separator)) {
+ gboolean is_separator;
+
+ gtk_tree_model_get (model, &iter_separator,
+ EMPATHY_CONTACT_LIST_STORE_COL_IS_SEPARATOR, &is_separator,
+ -1);
+
+ if (is_separator && iter_separator_to_set) {
+ *iter_separator_to_set = iter_separator;
+ }
+ }
+ }
+}
+
+static guint
+contact_list_store_ordered_presence (McPresence state)
+{
+ switch (state) {
+ case MC_PRESENCE_UNSET:
+ case MC_PRESENCE_OFFLINE:
+ return 5;
+ case MC_PRESENCE_AVAILABLE:
+ return 0;
+ case MC_PRESENCE_AWAY:
+ return 2;
+ case MC_PRESENCE_EXTENDED_AWAY:
+ return 3;
+ case MC_PRESENCE_HIDDEN:
+ return 4;
+ case MC_PRESENCE_DO_NOT_DISTURB:
+ return 1;
+ default:
+ g_return_val_if_reached (6);
+ }
+}
+
+static gint
+contact_list_store_state_sort_func (GtkTreeModel *model,
+ GtkTreeIter *iter_a,
+ GtkTreeIter *iter_b,
+ gpointer user_data)
+{
+ gint ret_val = 0;
+ gchar *name_a, *name_b;
+ gboolean is_separator_a, is_separator_b;
+ EmpathyContact *contact_a, *contact_b;
+ guint presence_a, presence_b;
+
+ gtk_tree_model_get (model, iter_a,
+ EMPATHY_CONTACT_LIST_STORE_COL_NAME, &name_a,
+ EMPATHY_CONTACT_LIST_STORE_COL_CONTACT, &contact_a,
+ EMPATHY_CONTACT_LIST_STORE_COL_IS_SEPARATOR, &is_separator_a,
+ -1);
+ gtk_tree_model_get (model, iter_b,
+ EMPATHY_CONTACT_LIST_STORE_COL_NAME, &name_b,
+ EMPATHY_CONTACT_LIST_STORE_COL_CONTACT, &contact_b,
+ EMPATHY_CONTACT_LIST_STORE_COL_IS_SEPARATOR, &is_separator_b,
+ -1);
+
+ /* Separator or group? */
+ if (is_separator_a || is_separator_b) {
+ if (is_separator_a) {
+ ret_val = -1;
+ } else if (is_separator_b) {
+ ret_val = 1;
+ }
+ } else if (!contact_a && contact_b) {
+ ret_val = 1;
+ } else if (contact_a && !contact_b) {
+ ret_val = -1;
+ } else if (!contact_a && !contact_b) {
+ /* Handle groups */
+ ret_val = g_utf8_collate (name_a, name_b);
+ }
+
+ if (ret_val) {
+ goto free_and_out;
+ }
+
+ /* If we managed to get this far, we can start looking at
+ * the presences.
+ */
+ presence_a = empathy_contact_get_presence (EMPATHY_CONTACT (contact_a));
+ presence_a = contact_list_store_ordered_presence (presence_a);
+ presence_b = empathy_contact_get_presence (EMPATHY_CONTACT (contact_b));
+ presence_b = contact_list_store_ordered_presence (presence_b);
+
+ if (presence_a < presence_b) {
+ ret_val = -1;
+ } else if (presence_a > presence_b) {
+ ret_val = 1;
+ } else {
+ /* Fallback: compare by name */
+ ret_val = g_utf8_collate (name_a, name_b);
+ }
+
+free_and_out:
+ g_free (name_a);
+ g_free (name_b);
+
+ if (contact_a) {
+ g_object_unref (contact_a);
+ }
+
+ if (contact_b) {
+ g_object_unref (contact_b);
+ }
+
+ return ret_val;
+}
+
+static gint
+contact_list_store_name_sort_func (GtkTreeModel *model,
+ GtkTreeIter *iter_a,
+ GtkTreeIter *iter_b,
+ gpointer user_data)
+{
+ gchar *name_a, *name_b;
+ EmpathyContact *contact_a, *contact_b;
+ gboolean is_separator_a, is_separator_b;
+ gint ret_val;
+
+ gtk_tree_model_get (model, iter_a,
+ EMPATHY_CONTACT_LIST_STORE_COL_NAME, &name_a,
+ EMPATHY_CONTACT_LIST_STORE_COL_CONTACT, &contact_a,
+ EMPATHY_CONTACT_LIST_STORE_COL_IS_SEPARATOR, &is_separator_a,
+ -1);
+ gtk_tree_model_get (model, iter_b,
+ EMPATHY_CONTACT_LIST_STORE_COL_NAME, &name_b,
+ EMPATHY_CONTACT_LIST_STORE_COL_CONTACT, &contact_b,
+ EMPATHY_CONTACT_LIST_STORE_COL_IS_SEPARATOR, &is_separator_b,
+ -1);
+
+ /* If contact is NULL it means it's a group. */
+
+ if (is_separator_a || is_separator_b) {
+ if (is_separator_a) {
+ ret_val = -1;
+ } else if (is_separator_b) {
+ ret_val = 1;
+ }
+ } else if (!contact_a && contact_b) {
+ ret_val = 1;
+ } else if (contact_a && !contact_b) {
+ ret_val = -1;
+ } else {
+ ret_val = g_utf8_collate (name_a, name_b);
+ }
+
+ g_free (name_a);
+ g_free (name_b);
+
+ if (contact_a) {
+ g_object_unref (contact_a);
+ }
+
+ if (contact_b) {
+ g_object_unref (contact_b);
+ }
+
+ return ret_val;
+}
+
+static gboolean
+contact_list_store_find_contact_foreach (GtkTreeModel *model,
+ GtkTreePath *path,
+ GtkTreeIter *iter,
+ FindContact *fc)
+{
+ EmpathyContact *contact;
+
+ gtk_tree_model_get (model, iter,
+ EMPATHY_CONTACT_LIST_STORE_COL_CONTACT, &contact,
+ -1);
+
+ if (!contact) {
+ return FALSE;
+ }
+
+ if (empathy_contact_equal (contact, fc->contact)) {
+ fc->found = TRUE;
+ fc->iters = g_list_append (fc->iters, gtk_tree_iter_copy (iter));
+ }
+ g_object_unref (contact);
+
+ return FALSE;
+}
+
+static GList *
+contact_list_store_find_contact (EmpathyContactListStore *store,
+ EmpathyContact *contact)
+{
+ EmpathyContactListStorePriv *priv;
+ GtkTreeModel *model;
+ GList *l = NULL;
+ FindContact fc;
+
+ priv = GET_PRIV (store);
+
+ memset (&fc, 0, sizeof (fc));
+
+ fc.contact = contact;
+
+ model = GTK_TREE_MODEL (store);
+ gtk_tree_model_foreach (model,
+ (GtkTreeModelForeachFunc) contact_list_store_find_contact_foreach,
+ &fc);
+
+ if (fc.found) {
+ l = fc.iters;
+ }
+
+ return l;
+}
+
+static gboolean
+contact_list_store_update_list_mode_foreach (GtkTreeModel *model,
+ GtkTreePath *path,
+ GtkTreeIter *iter,
+ EmpathyContactListStore *store)
+{
+ EmpathyContactListStorePriv *priv;
+ gboolean show_avatar = FALSE;
+
+ priv = GET_PRIV (store);
+
+ if (priv->show_avatars && !priv->is_compact) {
+ show_avatar = TRUE;
+ }
+
+ gtk_tree_store_set (GTK_TREE_STORE (store), iter,
+ EMPATHY_CONTACT_LIST_STORE_COL_PIXBUF_AVATAR_VISIBLE, show_avatar,
+ EMPATHY_CONTACT_LIST_STORE_COL_STATUS_VISIBLE, !priv->is_compact,
+ -1);
+
+ return FALSE;
+}
+
diff --git a/gnome-2-22/libempathy-gtk/empathy-contact-list-store.h b/gnome-2-22/libempathy-gtk/empathy-contact-list-store.h
new file mode 100644
index 000000000..6766a4e97
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-contact-list-store.h
@@ -0,0 +1,108 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2005-2007 Imendio AB
+ * Copyright (C) 2007 Collabora Ltd.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * 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: Mikael Hallendal <micke@imendio.com>
+ * Martyn Russell <martyn@imendio.com>
+ * Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#ifndef __EMPATHY_CONTACT_LIST_STORE_H__
+#define __EMPATHY_CONTACT_LIST_STORE_H__
+
+#include <gtk/gtktreestore.h>
+
+#include <libempathy/empathy-contact-list.h>
+#include <libempathy/empathy-contact.h>
+
+G_BEGIN_DECLS
+
+#define EMPATHY_TYPE_CONTACT_LIST_STORE (empathy_contact_list_store_get_type ())
+#define EMPATHY_CONTACT_LIST_STORE(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), EMPATHY_TYPE_CONTACT_LIST_STORE, EmpathyContactListStore))
+#define EMPATHY_CONTACT_LIST_STORE_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), EMPATHY_TYPE_CONTACT_LIST_STORE, EmpathyContactListStoreClass))
+#define EMPATHY_IS_CONTACT_LIST_STORE(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), EMPATHY_TYPE_CONTACT_LIST_STORE))
+#define EMPATHY_IS_CONTACT_LIST_STORE_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), EMPATHY_TYPE_CONTACT_LIST_STORE))
+#define EMPATHY_CONTACT_LIST_STORE_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), EMPATHY_TYPE_CONTACT_LIST_STORE, EmpathyContactListStoreClass))
+
+typedef struct _EmpathyContactListStore EmpathyContactListStore;
+typedef struct _EmpathyContactListStoreClass EmpathyContactListStoreClass;
+
+typedef enum {
+ EMPATHY_CONTACT_LIST_STORE_SORT_STATE,
+ EMPATHY_CONTACT_LIST_STORE_SORT_NAME
+} EmpathyContactListStoreSort;
+
+typedef enum {
+ EMPATHY_CONTACT_LIST_STORE_COL_ICON_STATUS,
+ EMPATHY_CONTACT_LIST_STORE_COL_PIXBUF_AVATAR,
+ EMPATHY_CONTACT_LIST_STORE_COL_PIXBUF_AVATAR_VISIBLE,
+ EMPATHY_CONTACT_LIST_STORE_COL_NAME,
+ EMPATHY_CONTACT_LIST_STORE_COL_STATUS,
+ EMPATHY_CONTACT_LIST_STORE_COL_STATUS_VISIBLE,
+ EMPATHY_CONTACT_LIST_STORE_COL_CONTACT,
+ EMPATHY_CONTACT_LIST_STORE_COL_IS_GROUP,
+ EMPATHY_CONTACT_LIST_STORE_COL_IS_ACTIVE,
+ EMPATHY_CONTACT_LIST_STORE_COL_IS_ONLINE,
+ EMPATHY_CONTACT_LIST_STORE_COL_IS_SEPARATOR,
+ EMPATHY_CONTACT_LIST_STORE_COL_CAN_VOIP,
+ EMPATHY_CONTACT_LIST_STORE_COL_COUNT
+} EmpathyContactListStoreCol;
+
+struct _EmpathyContactListStore {
+ GtkTreeStore parent;
+};
+
+struct _EmpathyContactListStoreClass {
+ GtkTreeStoreClass parent_class;
+};
+
+GType empathy_contact_list_store_get_type (void) G_GNUC_CONST;
+EmpathyContactListStore * empathy_contact_list_store_new (EmpathyContactList *list_iface);
+EmpathyContactList * empathy_contact_list_store_get_list_iface (EmpathyContactListStore *store);
+gboolean empathy_contact_list_store_get_show_offline (EmpathyContactListStore *store);
+void empathy_contact_list_store_set_show_offline (EmpathyContactListStore *store,
+ gboolean show_offline);
+gboolean empathy_contact_list_store_get_show_avatars (EmpathyContactListStore *store);
+void empathy_contact_list_store_set_show_avatars (EmpathyContactListStore *store,
+ gboolean show_avatars);
+gboolean empathy_contact_list_store_get_show_groups (EmpathyContactListStore *store);
+void empathy_contact_list_store_set_show_groups (EmpathyContactListStore *store,
+ gboolean show_groups);
+gboolean empathy_contact_list_store_get_is_compact (EmpathyContactListStore *store);
+void empathy_contact_list_store_set_is_compact (EmpathyContactListStore *store,
+ gboolean is_compact);
+EmpathyContactListStoreSort empathy_contact_list_store_get_sort_criterium (EmpathyContactListStore *store);
+void empathy_contact_list_store_set_sort_criterium (EmpathyContactListStore *store,
+ EmpathyContactListStoreSort sort_criterium);
+gboolean empathy_contact_list_store_row_separator_func (GtkTreeModel *model,
+ GtkTreeIter *iter,
+ gpointer data);
+gchar * empathy_contact_list_store_get_parent_group (GtkTreeModel *model,
+ GtkTreePath *path,
+ gboolean *path_is_group);
+gboolean empathy_contact_list_store_search_equal_func (GtkTreeModel *model,
+ gint column,
+ const gchar *key,
+ GtkTreeIter *iter,
+ gpointer search_data);
+
+G_END_DECLS
+
+#endif /* __EMPATHY_CONTACT_LIST_STORE_H__ */
+
diff --git a/gnome-2-22/libempathy-gtk/empathy-contact-list-view.c b/gnome-2-22/libempathy-gtk/empathy-contact-list-view.c
new file mode 100644
index 000000000..b12387419
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-contact-list-view.c
@@ -0,0 +1,1502 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2005-2007 Imendio AB
+ * Copyright (C) 2007-2008 Collabora Ltd.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * 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: Mikael Hallendal <micke@imendio.com>
+ * Martyn Russell <martyn@imendio.com>
+ * Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#include "config.h"
+
+#include <string.h>
+
+#include <glib/gi18n.h>
+#include <gtk/gtk.h>
+#include <glade/glade.h>
+
+#include <libtelepathy/tp-helpers.h>
+
+#include <libmissioncontrol/mc-account.h>
+#include <libmissioncontrol/mission-control.h>
+
+#include <libempathy/empathy-contact-factory.h>
+#include <libempathy/empathy-contact-list.h>
+#include <libempathy/empathy-log-manager.h>
+#include <libempathy/empathy-tp-group.h>
+#include <libempathy/empathy-contact-groups.h>
+#include <libempathy/empathy-debug.h>
+#include <libempathy/empathy-utils.h>
+
+#include "empathy-contact-list-view.h"
+#include "empathy-contact-list-store.h"
+#include "empathy-images.h"
+#include "empathy-cell-renderer-expander.h"
+#include "empathy-cell-renderer-text.h"
+#include "empathy-cell-renderer-activatable.h"
+#include "empathy-ui-utils.h"
+#include "empathy-contact-dialogs.h"
+//#include "empathy-chat-invite.h"
+//#include "empathy-ft-window.h"
+#include "empathy-log-window.h"
+#include "empathy-gtk-enum-types.h"
+#include "empathy-gtk-marshal.h"
+
+#define DEBUG_DOMAIN "ContactListView"
+
+/* Flashing delay for icons (milliseconds). */
+#define FLASH_TIMEOUT 500
+
+/* Active users are those which have recently changed state
+ * (e.g. online, offline or from normal to a busy state).
+ */
+
+#define GET_PRIV(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), EMPATHY_TYPE_CONTACT_LIST_VIEW, EmpathyContactListViewPriv))
+
+typedef struct {
+ EmpathyContactListStore *store;
+ GtkUIManager *ui;
+ GtkTreeRowReference *drag_row;
+ EmpathyContactListFeatures features;
+} EmpathyContactListViewPriv;
+
+typedef struct {
+ EmpathyContactListView *view;
+ GtkTreePath *path;
+ guint timeout_id;
+} DragMotionData;
+
+typedef struct {
+ EmpathyContactListView *view;
+ EmpathyContact *contact;
+ gboolean remove;
+} ShowActiveData;
+
+static void empathy_contact_list_view_class_init (EmpathyContactListViewClass *klass);
+static void empathy_contact_list_view_init (EmpathyContactListView *list);
+static void contact_list_view_finalize (GObject *object);
+static void contact_list_view_get_property (GObject *object,
+ guint param_id,
+ GValue *value,
+ GParamSpec *pspec);
+static void contact_list_view_set_property (GObject *object,
+ guint param_id,
+ const GValue *value,
+ GParamSpec *pspec);
+static void contact_list_view_setup (EmpathyContactListView *view);
+static void contact_list_view_row_has_child_toggled_cb (GtkTreeModel *model,
+ GtkTreePath *path,
+ GtkTreeIter *iter,
+ EmpathyContactListView *view);
+static void contact_list_view_drag_data_received (GtkWidget *widget,
+ GdkDragContext *context,
+ gint x,
+ gint y,
+ GtkSelectionData *selection,
+ guint info,
+ guint time);
+static gboolean contact_list_view_drag_motion (GtkWidget *widget,
+ GdkDragContext *context,
+ gint x,
+ gint y,
+ guint time);
+static gboolean contact_list_view_drag_motion_cb (DragMotionData *data);
+static void contact_list_view_drag_begin (GtkWidget *widget,
+ GdkDragContext *context);
+static void contact_list_view_drag_data_get (GtkWidget *widget,
+ GdkDragContext *context,
+ GtkSelectionData *selection,
+ guint info,
+ guint time);
+static void contact_list_view_drag_end (GtkWidget *widget,
+ GdkDragContext *context);
+static gboolean contact_list_view_drag_drop (GtkWidget *widget,
+ GdkDragContext *drag_context,
+ gint x,
+ gint y,
+ guint time);
+static void contact_list_view_cell_set_background (EmpathyContactListView *view,
+ GtkCellRenderer *cell,
+ gboolean is_group,
+ gboolean is_active);
+static void contact_list_view_pixbuf_cell_data_func (GtkTreeViewColumn *tree_column,
+ GtkCellRenderer *cell,
+ GtkTreeModel *model,
+ GtkTreeIter *iter,
+ EmpathyContactListView *view);
+#ifdef HAVE_VOIP
+static void contact_list_view_voip_cell_data_func (GtkTreeViewColumn *tree_column,
+ GtkCellRenderer *cell,
+ GtkTreeModel *model,
+ GtkTreeIter *iter,
+ EmpathyContactListView *view);
+#endif
+static void contact_list_view_avatar_cell_data_func (GtkTreeViewColumn *tree_column,
+ GtkCellRenderer *cell,
+ GtkTreeModel *model,
+ GtkTreeIter *iter,
+ EmpathyContactListView *view);
+static void contact_list_view_text_cell_data_func (GtkTreeViewColumn *tree_column,
+ GtkCellRenderer *cell,
+ GtkTreeModel *model,
+ GtkTreeIter *iter,
+ EmpathyContactListView *view);
+static void contact_list_view_expander_cell_data_func (GtkTreeViewColumn *column,
+ GtkCellRenderer *cell,
+ GtkTreeModel *model,
+ GtkTreeIter *iter,
+ EmpathyContactListView *view);
+static GtkWidget * contact_list_view_get_contact_menu (EmpathyContactListView *view,
+ gboolean can_send_file,
+ gboolean can_show_log,
+ gboolean can_voip);
+static gboolean contact_list_view_button_press_event_cb (EmpathyContactListView *view,
+ GdkEventButton *event,
+ gpointer user_data);
+static void contact_list_view_row_activated_cb (EmpathyContactListView *view,
+ GtkTreePath *path,
+ GtkTreeViewColumn *col,
+ gpointer user_data);
+#ifdef HAVE_VOIP
+static void contact_list_view_voip_activated_cb (EmpathyCellRendererActivatable *cell,
+ const gchar *path_string,
+ EmpathyContactListView *view);
+#endif
+static void contact_list_view_row_expand_or_collapse_cb (EmpathyContactListView *view,
+ GtkTreeIter *iter,
+ GtkTreePath *path,
+ gpointer user_data);
+static void contact_list_view_action_cb (GtkAction *action,
+ EmpathyContactListView *view);
+static void contact_list_view_voip_activated (EmpathyContactListView *view,
+ EmpathyContact *contact);
+
+enum {
+ PROP_0,
+ PROP_FEATURES
+};
+
+static const GtkActionEntry entries[] = {
+ { "ContactMenu", NULL,
+ N_("_Contact"), NULL, NULL,
+ NULL
+ },
+ { "GroupMenu", NULL,
+ N_("_Group"),NULL, NULL,
+ NULL
+ },
+ { "Chat", EMPATHY_IMAGE_MESSAGE,
+ N_("_Chat"), NULL, N_("Chat with contact"),
+ G_CALLBACK (contact_list_view_action_cb)
+ },
+ { "Information", EMPATHY_IMAGE_CONTACT_INFORMATION,
+ N_("Infor_mation"), "<control>I", N_("View contact information"),
+ G_CALLBACK (contact_list_view_action_cb)
+ },
+ { "Rename", NULL,
+ N_("Re_name"), NULL, N_("Rename"),
+ G_CALLBACK (contact_list_view_action_cb)
+ },
+ { "Edit", GTK_STOCK_EDIT,
+ N_("_Edit"), NULL, N_("Edit the groups and name for this contact"),
+ G_CALLBACK (contact_list_view_action_cb)
+ },
+ { "Remove", GTK_STOCK_REMOVE,
+ N_("_Remove"), NULL, N_("Remove contact"),
+ G_CALLBACK (contact_list_view_action_cb)
+ },
+ { "Invite", EMPATHY_IMAGE_GROUP_MESSAGE,
+ N_("_Invite to Chat Room"), NULL, N_("Invite to a currently open chat room"),
+ G_CALLBACK (contact_list_view_action_cb)
+ },
+ { "SendFile", NULL,
+ N_("_Send File..."), NULL, N_("Send a file"),
+ G_CALLBACK (contact_list_view_action_cb)
+ },
+ { "Log", EMPATHY_IMAGE_LOG,
+ N_("_View Previous Conversations"), NULL, N_("View previous conversations with this contact"),
+ G_CALLBACK (contact_list_view_action_cb)
+ },
+#ifdef HAVE_VOIP
+ { "Call", EMPATHY_IMAGE_VOIP,
+ N_("_Call"), NULL, N_("Start a voice or video conversation with this contact"),
+ G_CALLBACK (contact_list_view_action_cb)
+ },
+#endif
+};
+
+static guint n_entries = G_N_ELEMENTS (entries);
+
+static const gchar *ui_info =
+ "<ui>"
+ " <popup name='Contact'>"
+ " <menuitem action='Chat'/>"
+#ifdef HAVE_VOIP
+ " <menuitem action='Call'/>"
+#endif
+ " <menuitem action='Log'/>"
+ " <menuitem action='SendFile'/>"
+ " <separator/>"
+ " <menuitem action='Invite'/>"
+ " <separator/>"
+ " <menuitem action='Edit'/>"
+ " <menuitem action='Remove'/>"
+ " <separator/>"
+ " <menuitem action='Information'/>"
+ " </popup>"
+ " <popup name='Group'>"
+ " <menuitem action='Rename'/>"
+ " <menuitem action='Remove'/>"
+ " </popup>"
+ "</ui>";
+
+enum DndDragType {
+ DND_DRAG_TYPE_CONTACT_ID,
+ DND_DRAG_TYPE_URL,
+ DND_DRAG_TYPE_STRING,
+};
+
+static const GtkTargetEntry drag_types_dest[] = {
+ { "text/contact-id", 0, DND_DRAG_TYPE_CONTACT_ID },
+ { "text/uri-list", 0, DND_DRAG_TYPE_URL },
+ { "text/plain", 0, DND_DRAG_TYPE_STRING },
+ { "STRING", 0, DND_DRAG_TYPE_STRING },
+};
+
+static const GtkTargetEntry drag_types_source[] = {
+ { "text/contact-id", 0, DND_DRAG_TYPE_CONTACT_ID },
+};
+
+static GdkAtom drag_atoms_dest[G_N_ELEMENTS (drag_types_dest)];
+static GdkAtom drag_atoms_source[G_N_ELEMENTS (drag_types_source)];
+
+enum {
+ DRAG_CONTACT_RECEIVED,
+ LAST_SIGNAL
+};
+
+static guint signals[LAST_SIGNAL];
+
+G_DEFINE_TYPE (EmpathyContactListView, empathy_contact_list_view, GTK_TYPE_TREE_VIEW);
+
+static void
+empathy_contact_list_view_class_init (EmpathyContactListViewClass *klass)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+ GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
+
+ object_class->finalize = contact_list_view_finalize;
+ object_class->get_property = contact_list_view_get_property;
+ object_class->set_property = contact_list_view_set_property;
+
+ widget_class->drag_data_received = contact_list_view_drag_data_received;
+ widget_class->drag_drop = contact_list_view_drag_drop;
+ widget_class->drag_begin = contact_list_view_drag_begin;
+ widget_class->drag_data_get = contact_list_view_drag_data_get;
+ widget_class->drag_end = contact_list_view_drag_end;
+ /* FIXME: noticed but when you drag the row over the treeview
+ * fast, it seems to stop redrawing itself, if we don't
+ * connect this signal, all is fine.
+ */
+ widget_class->drag_motion = contact_list_view_drag_motion;
+
+ signals[DRAG_CONTACT_RECEIVED] =
+ g_signal_new ("drag-contact-received",
+ G_OBJECT_CLASS_TYPE (klass),
+ G_SIGNAL_RUN_LAST,
+ 0,
+ NULL, NULL,
+ _empathy_gtk_marshal_VOID__OBJECT_STRING_STRING,
+ G_TYPE_NONE,
+ 3, EMPATHY_TYPE_CONTACT, G_TYPE_STRING, G_TYPE_STRING);
+
+ g_object_class_install_property (object_class,
+ PROP_FEATURES,
+ g_param_spec_flags ("features",
+ "Features of the view",
+ "Falgs for all enabled features",
+ EMPATHY_TYPE_CONTACT_LIST_FEATURES,
+ 0,
+ G_PARAM_READWRITE));
+
+ g_type_class_add_private (object_class, sizeof (EmpathyContactListViewPriv));
+}
+
+static void
+empathy_contact_list_view_init (EmpathyContactListView *view)
+{
+ EmpathyContactListViewPriv *priv;
+ GtkActionGroup *action_group;
+ GError *error = NULL;
+
+ priv = GET_PRIV (view);
+
+ /* Get saved group states. */
+ empathy_contact_groups_get_all ();
+
+ /* Set up UI Manager */
+ priv->ui = gtk_ui_manager_new ();
+
+ action_group = gtk_action_group_new ("Actions");
+ gtk_action_group_set_translation_domain (action_group, GETTEXT_PACKAGE);
+ gtk_action_group_add_actions (action_group, entries, n_entries, view);
+ gtk_ui_manager_insert_action_group (priv->ui, action_group, 0);
+
+ if (!gtk_ui_manager_add_ui_from_string (priv->ui, ui_info, -1, &error)) {
+ g_warning ("Could not build contact menus from string:'%s'", error->message);
+ g_error_free (error);
+ }
+
+ g_object_unref (action_group);
+
+ gtk_tree_view_set_row_separator_func (GTK_TREE_VIEW (view),
+ empathy_contact_list_store_row_separator_func,
+ NULL, NULL);
+
+ /* Connect to tree view signals rather than override. */
+ g_signal_connect (view,
+ "button-press-event",
+ G_CALLBACK (contact_list_view_button_press_event_cb),
+ NULL);
+ g_signal_connect (view,
+ "row-activated",
+ G_CALLBACK (contact_list_view_row_activated_cb),
+ NULL);
+ g_signal_connect (view,
+ "row-expanded",
+ G_CALLBACK (contact_list_view_row_expand_or_collapse_cb),
+ GINT_TO_POINTER (TRUE));
+ g_signal_connect (view,
+ "row-collapsed",
+ G_CALLBACK (contact_list_view_row_expand_or_collapse_cb),
+ GINT_TO_POINTER (FALSE));
+}
+
+static void
+contact_list_view_finalize (GObject *object)
+{
+ EmpathyContactListViewPriv *priv;
+
+ priv = GET_PRIV (object);
+
+ if (priv->ui) {
+ g_object_unref (priv->ui);
+ }
+ if (priv->store) {
+ g_object_unref (priv->store);
+ }
+
+ G_OBJECT_CLASS (empathy_contact_list_view_parent_class)->finalize (object);
+}
+
+static void
+contact_list_view_get_property (GObject *object,
+ guint param_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ EmpathyContactListViewPriv *priv;
+
+ priv = GET_PRIV (object);
+
+ switch (param_id) {
+ case PROP_FEATURES:
+ g_value_set_flags (value, priv->features);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
+ break;
+ };
+}
+
+static void
+contact_list_view_set_property (GObject *object,
+ guint param_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ EmpathyContactListView *view = EMPATHY_CONTACT_LIST_VIEW (object);
+ EmpathyContactListViewPriv *priv;
+
+ priv = GET_PRIV (object);
+
+ switch (param_id) {
+ case PROP_FEATURES:
+ empathy_contact_list_view_set_features (view, g_value_get_flags (value));
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
+ break;
+ };
+}
+
+EmpathyContactListView *
+empathy_contact_list_view_new (EmpathyContactListStore *store,
+ EmpathyContactListFeatures features)
+{
+ EmpathyContactListView *view;
+ EmpathyContactListViewPriv *priv;
+
+ g_return_val_if_fail (EMPATHY_IS_CONTACT_LIST_STORE (store), NULL);
+
+ view = g_object_new (EMPATHY_TYPE_CONTACT_LIST_VIEW,
+ "features", features,
+ NULL);
+
+ priv = GET_PRIV (view);
+ priv->store = g_object_ref (store);
+ contact_list_view_setup (EMPATHY_CONTACT_LIST_VIEW (view));
+
+ return view;
+}
+
+void
+empathy_contact_list_view_set_features (EmpathyContactListView *view,
+ EmpathyContactListFeatures features)
+{
+ EmpathyContactListViewPriv *priv = GET_PRIV (view);
+
+ g_return_if_fail (EMPATHY_IS_CONTACT_LIST_VIEW (view));
+
+ priv->features = features;
+
+ /* Update DnD source/dest */
+ if (features & EMPATHY_CONTACT_LIST_FEATURE_CONTACT_DRAG) {
+ gtk_drag_source_set (GTK_WIDGET (view),
+ GDK_BUTTON1_MASK,
+ drag_types_source,
+ G_N_ELEMENTS (drag_types_source),
+ GDK_ACTION_MOVE | GDK_ACTION_COPY);
+ } else {
+ gtk_drag_source_unset (GTK_WIDGET (view));
+
+ }
+
+ if (features & EMPATHY_CONTACT_LIST_FEATURE_CONTACT_DROP) {
+ gtk_drag_dest_set (GTK_WIDGET (view),
+ GTK_DEST_DEFAULT_ALL,
+ drag_types_dest,
+ G_N_ELEMENTS (drag_types_dest),
+ GDK_ACTION_MOVE | GDK_ACTION_COPY);
+ } else {
+ /* FIXME: URI could still be droped depending on FT feature */
+ gtk_drag_dest_unset (GTK_WIDGET (view));
+ }
+
+ g_object_notify (G_OBJECT (view), "features");
+}
+
+EmpathyContactListFeatures
+empathy_contact_list_view_get_features (EmpathyContactListView *view)
+{
+ EmpathyContactListViewPriv *priv = GET_PRIV (view);
+
+ g_return_val_if_fail (EMPATHY_IS_CONTACT_LIST_VIEW (view), FALSE);
+
+ return priv->features;
+}
+
+EmpathyContact *
+empathy_contact_list_view_get_selected (EmpathyContactListView *view)
+{
+ EmpathyContactListViewPriv *priv;
+ GtkTreeSelection *selection;
+ GtkTreeIter iter;
+ GtkTreeModel *model;
+ EmpathyContact *contact;
+
+ g_return_val_if_fail (EMPATHY_IS_CONTACT_LIST_VIEW (view), NULL);
+
+ priv = GET_PRIV (view);
+
+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (view));
+ if (!gtk_tree_selection_get_selected (selection, &model, &iter)) {
+ return NULL;
+ }
+
+ gtk_tree_model_get (model, &iter,
+ EMPATHY_CONTACT_LIST_STORE_COL_CONTACT, &contact,
+ -1);
+
+ return contact;
+}
+
+gchar *
+empathy_contact_list_view_get_selected_group (EmpathyContactListView *view)
+{
+ EmpathyContactListViewPriv *priv;
+ GtkTreeSelection *selection;
+ GtkTreeIter iter;
+ GtkTreeModel *model;
+ gboolean is_group;
+ gchar *name;
+
+ g_return_val_if_fail (EMPATHY_IS_CONTACT_LIST_VIEW (view), NULL);
+
+ priv = GET_PRIV (view);
+
+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (view));
+ if (!gtk_tree_selection_get_selected (selection, &model, &iter)) {
+ return NULL;
+ }
+
+ gtk_tree_model_get (model, &iter,
+ EMPATHY_CONTACT_LIST_STORE_COL_IS_GROUP, &is_group,
+ EMPATHY_CONTACT_LIST_STORE_COL_NAME, &name,
+ -1);
+
+ if (!is_group) {
+ g_free (name);
+ return NULL;
+ }
+
+ return name;
+}
+
+static void
+contact_list_view_setup (EmpathyContactListView *view)
+{
+ EmpathyContactListViewPriv *priv;
+ GtkCellRenderer *cell;
+ GtkTreeViewColumn *col;
+ gint i;
+
+ priv = GET_PRIV (view);
+
+ gtk_tree_view_set_search_equal_func (GTK_TREE_VIEW (view),
+ empathy_contact_list_store_search_equal_func,
+ NULL, NULL);
+
+ g_signal_connect (priv->store, "row-has-child-toggled",
+ G_CALLBACK (contact_list_view_row_has_child_toggled_cb),
+ view);
+ gtk_tree_view_set_model (GTK_TREE_VIEW (view),
+ GTK_TREE_MODEL (priv->store));
+
+ /* Setup view */
+ g_object_set (view,
+ "headers-visible", FALSE,
+ "reorderable", TRUE,
+ "show-expanders", FALSE,
+ NULL);
+
+ col = gtk_tree_view_column_new ();
+
+ /* State */
+ cell = gtk_cell_renderer_pixbuf_new ();
+ gtk_tree_view_column_pack_start (col, cell, FALSE);
+ gtk_tree_view_column_set_cell_data_func (
+ col, cell,
+ (GtkTreeCellDataFunc) contact_list_view_pixbuf_cell_data_func,
+ view, NULL);
+
+ g_object_set (cell,
+ "xpad", 5,
+ "ypad", 1,
+ "visible", FALSE,
+ NULL);
+
+ /* Name */
+ cell = empathy_cell_renderer_text_new ();
+ gtk_tree_view_column_pack_start (col, cell, TRUE);
+ gtk_tree_view_column_set_cell_data_func (
+ col, cell,
+ (GtkTreeCellDataFunc) contact_list_view_text_cell_data_func,
+ view, NULL);
+
+ gtk_tree_view_column_add_attribute (col, cell,
+ "name", EMPATHY_CONTACT_LIST_STORE_COL_NAME);
+ gtk_tree_view_column_add_attribute (col, cell,
+ "status", EMPATHY_CONTACT_LIST_STORE_COL_STATUS);
+ gtk_tree_view_column_add_attribute (col, cell,
+ "is_group", EMPATHY_CONTACT_LIST_STORE_COL_IS_GROUP);
+
+#ifdef HAVE_VOIP
+ /* Voip Capability Icon */
+ cell = empathy_cell_renderer_activatable_new ();
+ gtk_tree_view_column_pack_start (col, cell, FALSE);
+ gtk_tree_view_column_set_cell_data_func (
+ col, cell,
+ (GtkTreeCellDataFunc) contact_list_view_voip_cell_data_func,
+ view, NULL);
+
+ g_object_set (cell,
+ "visible", FALSE,
+ NULL);
+
+ g_signal_connect (cell, "path-activated",
+ G_CALLBACK (contact_list_view_voip_activated_cb),
+ view);
+#endif
+
+ /* Avatar */
+ cell = gtk_cell_renderer_pixbuf_new ();
+ gtk_tree_view_column_pack_start (col, cell, FALSE);
+ gtk_tree_view_column_set_cell_data_func (
+ col, cell,
+ (GtkTreeCellDataFunc) contact_list_view_avatar_cell_data_func,
+ view, NULL);
+
+ g_object_set (cell,
+ "xpad", 0,
+ "ypad", 0,
+ "visible", FALSE,
+ "width", 32,
+ "height", 32,
+ NULL);
+
+ /* Expander */
+ cell = empathy_cell_renderer_expander_new ();
+ gtk_tree_view_column_pack_end (col, cell, FALSE);
+ gtk_tree_view_column_set_cell_data_func (
+ col, cell,
+ (GtkTreeCellDataFunc) contact_list_view_expander_cell_data_func,
+ view, NULL);
+
+ /* Actually add the column now we have added all cell renderers */
+ gtk_tree_view_append_column (GTK_TREE_VIEW (view), col);
+
+ /* Drag & Drop. */
+ for (i = 0; i < G_N_ELEMENTS (drag_types_dest); ++i) {
+ drag_atoms_dest[i] = gdk_atom_intern (drag_types_dest[i].target,
+ FALSE);
+ }
+
+ for (i = 0; i < G_N_ELEMENTS (drag_types_source); ++i) {
+ drag_atoms_source[i] = gdk_atom_intern (drag_types_source[i].target,
+ FALSE);
+ }
+}
+
+static void
+contact_list_view_row_has_child_toggled_cb (GtkTreeModel *model,
+ GtkTreePath *path,
+ GtkTreeIter *iter,
+ EmpathyContactListView *view)
+{
+ EmpathyContactListViewPriv *priv = GET_PRIV (view);
+ gboolean is_group = FALSE;
+ gchar *name = NULL;
+
+ gtk_tree_model_get (model, iter,
+ EMPATHY_CONTACT_LIST_STORE_COL_IS_GROUP, &is_group,
+ EMPATHY_CONTACT_LIST_STORE_COL_NAME, &name,
+ -1);
+
+ if (!is_group || G_STR_EMPTY (name)) {
+ g_free (name);
+ return;
+ }
+
+ if (!(priv->features & EMPATHY_CONTACT_LIST_FEATURE_GROUPS_SAVE) ||
+ empathy_contact_group_get_expanded (name)) {
+ g_signal_handlers_block_by_func (view,
+ contact_list_view_row_expand_or_collapse_cb,
+ GINT_TO_POINTER (TRUE));
+ gtk_tree_view_expand_row (GTK_TREE_VIEW (view), path, TRUE);
+ g_signal_handlers_unblock_by_func (view,
+ contact_list_view_row_expand_or_collapse_cb,
+ GINT_TO_POINTER (TRUE));
+ } else {
+ g_signal_handlers_block_by_func (view,
+ contact_list_view_row_expand_or_collapse_cb,
+ GINT_TO_POINTER (FALSE));
+ gtk_tree_view_collapse_row (GTK_TREE_VIEW (view), path);
+ g_signal_handlers_unblock_by_func (view,
+ contact_list_view_row_expand_or_collapse_cb,
+ GINT_TO_POINTER (FALSE));
+ }
+
+ g_free (name);
+}
+
+static void
+contact_list_view_drag_data_received (GtkWidget *widget,
+ GdkDragContext *context,
+ gint x,
+ gint y,
+ GtkSelectionData *selection,
+ guint info,
+ guint time)
+{
+ EmpathyContactListViewPriv *priv;
+ EmpathyContactList *list;
+ EmpathyContactFactory *factory;
+ McAccount *account;
+ GtkTreeModel *model;
+ GtkTreePath *path;
+ GtkTreeViewDropPosition position;
+ EmpathyContact *contact = NULL;
+ const gchar *id;
+ gchar **strv;
+ gchar *new_group = NULL;
+ gchar *old_group = NULL;
+ gboolean is_row;
+
+ priv = GET_PRIV (widget);
+
+ id = (const gchar*) selection->data;
+ empathy_debug (DEBUG_DOMAIN, "Received %s%s drag & drop contact from roster with id:'%s'",
+ context->action == GDK_ACTION_MOVE ? "move" : "",
+ context->action == GDK_ACTION_COPY ? "copy" : "",
+ id);
+
+ strv = g_strsplit (id, "/", 2);
+ factory = empathy_contact_factory_new ();
+ account = mc_account_lookup (strv[0]);
+ if (account) {
+ contact = empathy_contact_factory_get_from_id (factory,
+ account,
+ strv[1]);
+ g_object_unref (account);
+ }
+ g_object_unref (factory);
+ g_strfreev (strv);
+
+ if (!contact) {
+ empathy_debug (DEBUG_DOMAIN, "No contact found associated with drag & drop");
+ return;
+ }
+
+ model = gtk_tree_view_get_model (GTK_TREE_VIEW (widget));
+
+ /* Get source group information. */
+ if (priv->drag_row) {
+ path = gtk_tree_row_reference_get_path (priv->drag_row);
+ if (path) {
+ old_group = empathy_contact_list_store_get_parent_group (model, path, NULL);
+ gtk_tree_path_free (path);
+ }
+ }
+
+ /* Get destination group information. */
+ is_row = gtk_tree_view_get_dest_row_at_pos (GTK_TREE_VIEW (widget),
+ x,
+ y,
+ &path,
+ &position);
+
+ if (is_row) {
+ new_group = empathy_contact_list_store_get_parent_group (model, path, NULL);
+ gtk_tree_path_free (path);
+ }
+
+ empathy_debug (DEBUG_DOMAIN,
+ "contact %s (%d) dragged from '%s' to '%s'",
+ empathy_contact_get_id (contact),
+ empathy_contact_get_handle (contact),
+ old_group, new_group);
+
+ list = empathy_contact_list_store_get_list_iface (priv->store);
+ if (new_group) {
+ empathy_contact_list_add_to_group (list, contact, new_group);
+ }
+ if (old_group && context->action == GDK_ACTION_MOVE) {
+ empathy_contact_list_remove_from_group (list, contact, old_group);
+ }
+
+ g_free (old_group);
+ g_free (new_group);
+
+ gtk_drag_finish (context, TRUE, FALSE, GDK_CURRENT_TIME);
+}
+
+static gboolean
+contact_list_view_drag_motion (GtkWidget *widget,
+ GdkDragContext *context,
+ gint x,
+ gint y,
+ guint time)
+{
+ static DragMotionData *dm = NULL;
+ GtkTreePath *path;
+ gboolean is_row;
+ gboolean is_different = FALSE;
+ gboolean cleanup = TRUE;
+
+ is_row = gtk_tree_view_get_path_at_pos (GTK_TREE_VIEW (widget),
+ x,
+ y,
+ &path,
+ NULL,
+ NULL,
+ NULL);
+
+ cleanup &= (!dm);
+
+ if (is_row) {
+ cleanup &= (dm && gtk_tree_path_compare (dm->path, path) != 0);
+ is_different = (!dm || (dm && gtk_tree_path_compare (dm->path, path) != 0));
+ } else {
+ cleanup &= FALSE;
+ }
+
+ if (!is_different && !cleanup) {
+ return TRUE;
+ }
+
+ if (dm) {
+ gtk_tree_path_free (dm->path);
+ if (dm->timeout_id) {
+ g_source_remove (dm->timeout_id);
+ }
+
+ g_free (dm);
+
+ dm = NULL;
+ }
+
+ if (!gtk_tree_view_row_expanded (GTK_TREE_VIEW (widget), path)) {
+ dm = g_new0 (DragMotionData, 1);
+
+ dm->view = EMPATHY_CONTACT_LIST_VIEW (widget);
+ dm->path = gtk_tree_path_copy (path);
+
+ dm->timeout_id = g_timeout_add_seconds (1,
+ (GSourceFunc) contact_list_view_drag_motion_cb,
+ dm);
+ }
+
+ return TRUE;
+}
+
+static gboolean
+contact_list_view_drag_motion_cb (DragMotionData *data)
+{
+ gtk_tree_view_expand_row (GTK_TREE_VIEW (data->view),
+ data->path,
+ FALSE);
+
+ data->timeout_id = 0;
+
+ return FALSE;
+}
+
+static void
+contact_list_view_drag_begin (GtkWidget *widget,
+ GdkDragContext *context)
+{
+ EmpathyContactListViewPriv *priv;
+ GtkTreeSelection *selection;
+ GtkTreeModel *model;
+ GtkTreePath *path;
+ GtkTreeIter iter;
+
+ priv = GET_PRIV (widget);
+
+ GTK_WIDGET_CLASS (empathy_contact_list_view_parent_class)->drag_begin (widget,
+ context);
+
+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (widget));
+ if (!gtk_tree_selection_get_selected (selection, &model, &iter)) {
+ return;
+ }
+
+ path = gtk_tree_model_get_path (model, &iter);
+ priv->drag_row = gtk_tree_row_reference_new (model, path);
+ gtk_tree_path_free (path);
+}
+
+static void
+contact_list_view_drag_data_get (GtkWidget *widget,
+ GdkDragContext *context,
+ GtkSelectionData *selection,
+ guint info,
+ guint time)
+{
+ EmpathyContactListViewPriv *priv;
+ GtkTreePath *src_path;
+ GtkTreeIter iter;
+ GtkTreeModel *model;
+ EmpathyContact *contact;
+ McAccount *account;
+ const gchar *contact_id;
+ const gchar *account_id;
+ gchar *str;
+
+ priv = GET_PRIV (widget);
+
+ model = gtk_tree_view_get_model (GTK_TREE_VIEW (widget));
+ if (!priv->drag_row) {
+ return;
+ }
+
+ src_path = gtk_tree_row_reference_get_path (priv->drag_row);
+ if (!src_path) {
+ return;
+ }
+
+ if (!gtk_tree_model_get_iter (model, &iter, src_path)) {
+ gtk_tree_path_free (src_path);
+ return;
+ }
+
+ gtk_tree_path_free (src_path);
+
+ contact = empathy_contact_list_view_get_selected (EMPATHY_CONTACT_LIST_VIEW (widget));
+ if (!contact) {
+ return;
+ }
+
+ account = empathy_contact_get_account (contact);
+ account_id = mc_account_get_unique_name (account);
+ contact_id = empathy_contact_get_id (contact);
+ g_object_unref (contact);
+ str = g_strconcat (account_id, "/", contact_id, NULL);
+
+ switch (info) {
+ case DND_DRAG_TYPE_CONTACT_ID:
+ gtk_selection_data_set (selection, drag_atoms_source[info], 8,
+ (guchar*)str, strlen (str) + 1);
+ break;
+ }
+
+ g_free (str);
+}
+
+static void
+contact_list_view_drag_end (GtkWidget *widget,
+ GdkDragContext *context)
+{
+ EmpathyContactListViewPriv *priv;
+
+ priv = GET_PRIV (widget);
+
+ GTK_WIDGET_CLASS (empathy_contact_list_view_parent_class)->drag_end (widget,
+ context);
+
+ if (priv->drag_row) {
+ gtk_tree_row_reference_free (priv->drag_row);
+ priv->drag_row = NULL;
+ }
+}
+
+static gboolean
+contact_list_view_drag_drop (GtkWidget *widget,
+ GdkDragContext *drag_context,
+ gint x,
+ gint y,
+ guint time)
+{
+ return FALSE;
+}
+
+static void
+contact_list_view_cell_set_background (EmpathyContactListView *view,
+ GtkCellRenderer *cell,
+ gboolean is_group,
+ gboolean is_active)
+{
+ GdkColor color;
+ GtkStyle *style;
+
+ style = gtk_widget_get_style (GTK_WIDGET (view));
+
+ if (!is_group && is_active) {
+ color = style->bg[GTK_STATE_SELECTED];
+
+ /* Here we take the current theme colour and add it to
+ * the colour for white and average the two. This
+ * gives a colour which is inline with the theme but
+ * slightly whiter.
+ */
+ color.red = (color.red + (style->white).red) / 2;
+ color.green = (color.green + (style->white).green) / 2;
+ color.blue = (color.blue + (style->white).blue) / 2;
+
+ g_object_set (cell,
+ "cell-background-gdk", &color,
+ NULL);
+ } else {
+ g_object_set (cell,
+ "cell-background-gdk", NULL,
+ NULL);
+ }
+}
+
+static void
+contact_list_view_pixbuf_cell_data_func (GtkTreeViewColumn *tree_column,
+ GtkCellRenderer *cell,
+ GtkTreeModel *model,
+ GtkTreeIter *iter,
+ EmpathyContactListView *view)
+{
+ gchar *icon_name;
+ gboolean is_group;
+ gboolean is_active;
+
+ gtk_tree_model_get (model, iter,
+ EMPATHY_CONTACT_LIST_STORE_COL_IS_GROUP, &is_group,
+ EMPATHY_CONTACT_LIST_STORE_COL_IS_ACTIVE, &is_active,
+ EMPATHY_CONTACT_LIST_STORE_COL_ICON_STATUS, &icon_name,
+ -1);
+
+ g_object_set (cell,
+ "visible", !is_group,
+ "icon-name", icon_name,
+ NULL);
+
+ g_free (icon_name);
+
+ contact_list_view_cell_set_background (view, cell, is_group, is_active);
+}
+
+#ifdef HAVE_VOIP
+static void
+contact_list_view_voip_cell_data_func (GtkTreeViewColumn *tree_column,
+ GtkCellRenderer *cell,
+ GtkTreeModel *model,
+ GtkTreeIter *iter,
+ EmpathyContactListView *view)
+{
+ gboolean is_group;
+ gboolean is_active;
+ gboolean can_voip;
+
+ gtk_tree_model_get (model, iter,
+ EMPATHY_CONTACT_LIST_STORE_COL_IS_GROUP, &is_group,
+ EMPATHY_CONTACT_LIST_STORE_COL_IS_ACTIVE, &is_active,
+ EMPATHY_CONTACT_LIST_STORE_COL_CAN_VOIP, &can_voip,
+ -1);
+
+ g_object_set (cell,
+ "visible", !is_group && can_voip,
+ "icon-name", EMPATHY_IMAGE_VOIP,
+ NULL);
+
+ contact_list_view_cell_set_background (view, cell, is_group, is_active);
+}
+#endif
+
+static void
+contact_list_view_avatar_cell_data_func (GtkTreeViewColumn *tree_column,
+ GtkCellRenderer *cell,
+ GtkTreeModel *model,
+ GtkTreeIter *iter,
+ EmpathyContactListView *view)
+{
+ GdkPixbuf *pixbuf;
+ gboolean show_avatar;
+ gboolean is_group;
+ gboolean is_active;
+
+ gtk_tree_model_get (model, iter,
+ EMPATHY_CONTACT_LIST_STORE_COL_PIXBUF_AVATAR, &pixbuf,
+ EMPATHY_CONTACT_LIST_STORE_COL_PIXBUF_AVATAR_VISIBLE, &show_avatar,
+ EMPATHY_CONTACT_LIST_STORE_COL_IS_GROUP, &is_group,
+ EMPATHY_CONTACT_LIST_STORE_COL_IS_ACTIVE, &is_active,
+ -1);
+
+ g_object_set (cell,
+ "visible", !is_group && show_avatar,
+ "pixbuf", pixbuf,
+ NULL);
+
+ if (pixbuf) {
+ g_object_unref (pixbuf);
+ }
+
+ contact_list_view_cell_set_background (view, cell, is_group, is_active);
+}
+
+static void
+contact_list_view_text_cell_data_func (GtkTreeViewColumn *tree_column,
+ GtkCellRenderer *cell,
+ GtkTreeModel *model,
+ GtkTreeIter *iter,
+ EmpathyContactListView *view)
+{
+ gboolean is_group;
+ gboolean is_active;
+ gboolean show_status;
+
+ gtk_tree_model_get (model, iter,
+ EMPATHY_CONTACT_LIST_STORE_COL_IS_GROUP, &is_group,
+ EMPATHY_CONTACT_LIST_STORE_COL_IS_ACTIVE, &is_active,
+ EMPATHY_CONTACT_LIST_STORE_COL_STATUS_VISIBLE, &show_status,
+ -1);
+
+ g_object_set (cell,
+ "show-status", show_status,
+ NULL);
+
+ contact_list_view_cell_set_background (view, cell, is_group, is_active);
+}
+
+static void
+contact_list_view_expander_cell_data_func (GtkTreeViewColumn *column,
+ GtkCellRenderer *cell,
+ GtkTreeModel *model,
+ GtkTreeIter *iter,
+ EmpathyContactListView *view)
+{
+ gboolean is_group;
+ gboolean is_active;
+
+ gtk_tree_model_get (model, iter,
+ EMPATHY_CONTACT_LIST_STORE_COL_IS_GROUP, &is_group,
+ EMPATHY_CONTACT_LIST_STORE_COL_IS_ACTIVE, &is_active,
+ -1);
+
+ if (gtk_tree_model_iter_has_child (model, iter)) {
+ GtkTreePath *path;
+ gboolean row_expanded;
+
+ path = gtk_tree_model_get_path (model, iter);
+ row_expanded = gtk_tree_view_row_expanded (GTK_TREE_VIEW (column->tree_view), path);
+ gtk_tree_path_free (path);
+
+ g_object_set (cell,
+ "visible", TRUE,
+ "expander-style", row_expanded ? GTK_EXPANDER_EXPANDED : GTK_EXPANDER_COLLAPSED,
+ NULL);
+ } else {
+ g_object_set (cell, "visible", FALSE, NULL);
+ }
+
+ contact_list_view_cell_set_background (view, cell, is_group, is_active);
+}
+
+static GtkWidget *
+contact_list_view_get_contact_menu (EmpathyContactListView *view,
+ gboolean can_send_file,
+ gboolean can_show_log,
+ gboolean can_voip)
+{
+ EmpathyContactListViewPriv *priv = GET_PRIV (view);
+ GtkAction *action;
+
+ if (!(priv->features & (EMPATHY_CONTACT_LIST_FEATURE_CONTACT_CHAT |
+ EMPATHY_CONTACT_LIST_FEATURE_CONTACT_CALL |
+ EMPATHY_CONTACT_LIST_FEATURE_CONTACT_LOG |
+ EMPATHY_CONTACT_LIST_FEATURE_CONTACT_FT |
+ EMPATHY_CONTACT_LIST_FEATURE_CONTACT_INVITE |
+ EMPATHY_CONTACT_LIST_FEATURE_CONTACT_EDIT |
+ EMPATHY_CONTACT_LIST_FEATURE_CONTACT_INFO |
+ EMPATHY_CONTACT_LIST_FEATURE_CONTACT_REMOVE))) {
+ return NULL;
+ }
+
+ /* Sort out sensitive/visible items */
+ action = gtk_ui_manager_get_action (priv->ui, "/Contact/Chat");
+ gtk_action_set_visible (action, priv->features & EMPATHY_CONTACT_LIST_FEATURE_CONTACT_CHAT);
+
+#ifdef HAVE_VOIP
+ action = gtk_ui_manager_get_action (priv->ui, "/Contact/Call");
+ gtk_action_set_sensitive (action, can_voip);
+ gtk_action_set_visible (action, priv->features & EMPATHY_CONTACT_LIST_FEATURE_CONTACT_CALL);
+#endif
+
+ action = gtk_ui_manager_get_action (priv->ui, "/Contact/Log");
+ gtk_action_set_sensitive (action, can_show_log);
+ gtk_action_set_visible (action, priv->features & EMPATHY_CONTACT_LIST_FEATURE_CONTACT_LOG);
+
+
+ action = gtk_ui_manager_get_action (priv->ui, "/Contact/SendFile");
+ gtk_action_set_visible (action, can_send_file && (priv->features & EMPATHY_CONTACT_LIST_FEATURE_CONTACT_FT));
+
+ action = gtk_ui_manager_get_action (priv->ui, "/Contact/Invite");
+ gtk_action_set_visible (action, priv->features & EMPATHY_CONTACT_LIST_FEATURE_CONTACT_INVITE);
+
+ action = gtk_ui_manager_get_action (priv->ui, "/Contact/Edit");
+ gtk_action_set_visible (action, priv->features & EMPATHY_CONTACT_LIST_FEATURE_CONTACT_EDIT);
+
+ action = gtk_ui_manager_get_action (priv->ui, "/Contact/Information");
+ gtk_action_set_visible (action, priv->features & EMPATHY_CONTACT_LIST_FEATURE_CONTACT_INFO);
+
+ action = gtk_ui_manager_get_action (priv->ui, "/Contact/Remove");
+ gtk_action_set_visible (action, priv->features & EMPATHY_CONTACT_LIST_FEATURE_CONTACT_REMOVE);
+
+ return gtk_ui_manager_get_widget (priv->ui, "/Contact");
+}
+
+GtkWidget *
+empathy_contact_list_view_get_group_menu (EmpathyContactListView *view)
+{
+ EmpathyContactListViewPriv *priv = GET_PRIV (view);
+ GtkAction *action;
+
+ g_return_val_if_fail (EMPATHY_IS_CONTACT_LIST_VIEW (view), NULL);
+
+ if (!(priv->features & (EMPATHY_CONTACT_LIST_FEATURE_GROUPS_RENAME |
+ EMPATHY_CONTACT_LIST_FEATURE_GROUPS_REMOVE))) {
+ return NULL;
+ }
+
+ action = gtk_ui_manager_get_action (priv->ui, "/Group/Rename");
+ gtk_action_set_visible (action, priv->features & EMPATHY_CONTACT_LIST_FEATURE_GROUPS_RENAME);
+
+ action = gtk_ui_manager_get_action (priv->ui, "/Group/Remove");
+ gtk_action_set_visible (action, priv->features & EMPATHY_CONTACT_LIST_FEATURE_GROUPS_REMOVE);
+
+ return gtk_ui_manager_get_widget (priv->ui, "/Group");
+}
+
+GtkWidget *
+empathy_contact_list_view_get_contact_menu (EmpathyContactListView *view,
+ EmpathyContact *contact)
+{
+ EmpathyLogManager *log_manager;
+ gboolean can_show_log;
+ gboolean can_send_file;
+ gboolean can_voip;
+
+ g_return_val_if_fail (EMPATHY_IS_CONTACT_LIST_VIEW (view), NULL);
+ g_return_val_if_fail (EMPATHY_IS_CONTACT (contact), NULL);
+
+ log_manager = empathy_log_manager_new ();
+ can_show_log = empathy_log_manager_exists (log_manager,
+ empathy_contact_get_account (contact),
+ empathy_contact_get_id (contact),
+ FALSE);
+ g_object_unref (log_manager);
+ can_send_file = FALSE;
+ can_voip = empathy_contact_can_voip (contact);
+
+ return contact_list_view_get_contact_menu (view,
+ can_send_file,
+ can_show_log,
+ can_voip);
+}
+
+static gboolean
+contact_list_view_button_press_event_cb (EmpathyContactListView *view,
+ GdkEventButton *event,
+ gpointer user_data)
+{
+ EmpathyContactListViewPriv *priv;
+ EmpathyContact *contact;
+ GtkTreePath *path;
+ GtkTreeSelection *selection;
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+ gboolean row_exists;
+ GtkWidget *menu;
+
+ priv = GET_PRIV (view);
+
+ if (event->button != 3) {
+ return FALSE;
+ }
+
+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (view));
+ model = gtk_tree_view_get_model (GTK_TREE_VIEW (view));
+
+ gtk_widget_grab_focus (GTK_WIDGET (view));
+
+ row_exists = gtk_tree_view_get_path_at_pos (GTK_TREE_VIEW (view),
+ event->x, event->y,
+ &path,
+ NULL, NULL, NULL);
+ if (!row_exists) {
+ return FALSE;
+ }
+
+ gtk_tree_selection_unselect_all (selection);
+ gtk_tree_selection_select_path (selection, path);
+
+ gtk_tree_model_get_iter (model, &iter, path);
+ gtk_tree_path_free (path);
+
+ gtk_tree_model_get (model, &iter,
+ EMPATHY_CONTACT_LIST_STORE_COL_CONTACT, &contact,
+ -1);
+
+ if (contact) {
+ menu = empathy_contact_list_view_get_contact_menu (view, contact);
+ g_object_unref (contact);
+ } else {
+ menu = empathy_contact_list_view_get_group_menu (view);
+ }
+
+ if (!menu) {
+ return FALSE;
+ }
+
+ gtk_widget_show (menu);
+
+ gtk_menu_popup (GTK_MENU (menu),
+ NULL, NULL, NULL, NULL,
+ event->button, event->time);
+
+ return TRUE;
+}
+
+static void
+contact_list_view_row_activated_cb (EmpathyContactListView *view,
+ GtkTreePath *path,
+ GtkTreeViewColumn *col,
+ gpointer user_data)
+{
+ EmpathyContactListViewPriv *priv = GET_PRIV (view);
+ EmpathyContact *contact;
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+
+ if (!(priv->features & EMPATHY_CONTACT_LIST_FEATURE_CONTACT_CHAT)) {
+ return;
+ }
+
+ model = gtk_tree_view_get_model (GTK_TREE_VIEW (view));
+
+ gtk_tree_model_get_iter (model, &iter, path);
+ gtk_tree_model_get (model, &iter,
+ EMPATHY_CONTACT_LIST_STORE_COL_CONTACT, &contact,
+ -1);
+
+ if (contact) {
+ empathy_chat_with_contact (contact);
+ g_object_unref (contact);
+ }
+}
+
+#ifdef HAVE_VOIP
+static void
+contact_list_view_voip_activated_cb (EmpathyCellRendererActivatable *cell,
+ const gchar *path_string,
+ EmpathyContactListView *view)
+{
+ EmpathyContactListViewPriv *priv = GET_PRIV (view);
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+ EmpathyContact *contact;
+
+ if (!(priv->features & EMPATHY_CONTACT_LIST_FEATURE_CONTACT_CALL)) {
+ return;
+ }
+
+ model = gtk_tree_view_get_model (GTK_TREE_VIEW (view));
+ if (!gtk_tree_model_get_iter_from_string (model, &iter, path_string)) {
+ return;
+ }
+
+ gtk_tree_model_get (model, &iter,
+ EMPATHY_CONTACT_LIST_STORE_COL_CONTACT, &contact,
+ -1);
+
+ if (contact) {
+ contact_list_view_voip_activated (view, contact);
+ g_object_unref (contact);
+ }
+}
+#endif
+
+
+static void
+contact_list_view_row_expand_or_collapse_cb (EmpathyContactListView *view,
+ GtkTreeIter *iter,
+ GtkTreePath *path,
+ gpointer user_data)
+{
+ EmpathyContactListViewPriv *priv = GET_PRIV (view);
+ GtkTreeModel *model;
+ gchar *name;
+ gboolean expanded;
+
+ if (!(priv->features & EMPATHY_CONTACT_LIST_FEATURE_GROUPS_SAVE)) {
+ return;
+ }
+
+ model = gtk_tree_view_get_model (GTK_TREE_VIEW (view));
+
+ gtk_tree_model_get (model, iter,
+ EMPATHY_CONTACT_LIST_STORE_COL_NAME, &name,
+ -1);
+
+ expanded = GPOINTER_TO_INT (user_data);
+ empathy_contact_group_set_expanded (name, expanded);
+
+ g_free (name);
+}
+
+static void
+contact_list_view_action_cb (GtkAction *action,
+ EmpathyContactListView *view)
+{
+ EmpathyContactListViewPriv *priv;
+ EmpathyContact *contact;
+ const gchar *name;
+ gchar *group;
+ GtkWindow *parent;
+
+ priv = GET_PRIV (view);
+
+ name = gtk_action_get_name (action);
+ if (!name) {
+ return;
+ }
+
+ empathy_debug (DEBUG_DOMAIN, "Action:'%s' activated", name);
+
+ contact = empathy_contact_list_view_get_selected (view);
+ group = empathy_contact_list_view_get_selected_group (view);
+ parent = empathy_get_toplevel_window (GTK_WIDGET (view));
+
+ if (contact && strcmp (name, "Chat") == 0) {
+ empathy_chat_with_contact (contact);
+ }
+ else if (contact && strcmp (name, "Call") == 0) {
+ contact_list_view_voip_activated (view, contact);
+ }
+ else if (contact && strcmp (name, "Information") == 0) {
+ empathy_contact_information_dialog_show (contact, parent, FALSE, FALSE);
+ }
+ else if (contact && strcmp (name, "Edit") == 0) {
+ empathy_contact_information_dialog_show (contact, parent, TRUE, FALSE);
+ }
+ else if (contact && strcmp (name, "Remove") == 0) {
+ /* FIXME: Ask for confirmation */
+ EmpathyContactList *list;
+
+ list = empathy_contact_list_store_get_list_iface (priv->store);
+ empathy_contact_list_remove (list, contact,
+ _("Sorry, I don't want you in my contact list anymore."));
+ }
+ else if (contact && strcmp (name, "Invite") == 0) {
+ }
+ else if (contact && strcmp (name, "SendFile") == 0) {
+ }
+ else if (contact && strcmp (name, "Log") == 0) {
+ empathy_log_window_show (empathy_contact_get_account (contact),
+ empathy_contact_get_id (contact),
+ FALSE,
+ parent);
+ }
+ else if (group && strcmp (name, "Rename") == 0) {
+ }
+ else if (group && strcmp (name, "Remove") == 0) {
+ EmpathyContactList *list;
+
+ list = empathy_contact_list_store_get_list_iface (priv->store);
+ empathy_contact_list_remove_group (list, group);
+ }
+
+ g_free (group);
+ if (contact) {
+ g_object_unref (contact);
+ }
+}
+
+static void
+contact_list_view_voip_activated (EmpathyContactListView *view,
+ EmpathyContact *contact)
+{
+ empathy_call_with_contact (contact);
+}
+
diff --git a/gnome-2-22/libempathy-gtk/empathy-contact-list-view.h b/gnome-2-22/libempathy-gtk/empathy-contact-list-view.h
new file mode 100644
index 000000000..13a685d33
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-contact-list-view.h
@@ -0,0 +1,88 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2005-2007 Imendio AB
+ * Copyright (C) 2007 Collabora Ltd.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * 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: Mikael Hallendal <micke@imendio.com>
+ * Martyn Russell <martyn@imendio.com>
+ * Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#ifndef __EMPATHY_CONTACT_LIST_VIEW_H__
+#define __EMPATHY_CONTACT_LIST_VIEW_H__
+
+#include <gtk/gtktreeview.h>
+
+#include <libempathy/empathy-contact.h>
+
+#include "empathy-contact-list-store.h"
+
+G_BEGIN_DECLS
+
+#define EMPATHY_TYPE_CONTACT_LIST_VIEW (empathy_contact_list_view_get_type ())
+#define EMPATHY_CONTACT_LIST_VIEW(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), EMPATHY_TYPE_CONTACT_LIST_VIEW, EmpathyContactListView))
+#define EMPATHY_CONTACT_LIST_VIEW_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), EMPATHY_TYPE_CONTACT_LIST_VIEW, EmpathyContactListViewClass))
+#define EMPATHY_IS_CONTACT_LIST_VIEW(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), EMPATHY_TYPE_CONTACT_LIST_VIEW))
+#define EMPATHY_IS_CONTACT_LIST_VIEW_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), EMPATHY_TYPE_CONTACT_LIST_VIEW))
+#define EMPATHY_CONTACT_LIST_VIEW_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), EMPATHY_TYPE_CONTACT_LIST_VIEW, EmpathyContactListViewClass))
+
+typedef struct _EmpathyContactListView EmpathyContactListView;
+typedef struct _EmpathyContactListViewClass EmpathyContactListViewClass;
+
+typedef enum {
+ EMPATHY_CONTACT_LIST_FEATURE_NONE = 0,
+ EMPATHY_CONTACT_LIST_FEATURE_GROUPS_SAVE = 1 << 0,
+ EMPATHY_CONTACT_LIST_FEATURE_GROUPS_RENAME = 1 << 1,
+ EMPATHY_CONTACT_LIST_FEATURE_GROUPS_REMOVE = 1 << 2,
+ EMPATHY_CONTACT_LIST_FEATURE_CONTACT_CHAT = 1 << 3,
+ EMPATHY_CONTACT_LIST_FEATURE_CONTACT_CALL = 1 << 4,
+ EMPATHY_CONTACT_LIST_FEATURE_CONTACT_LOG = 1 << 5,
+ EMPATHY_CONTACT_LIST_FEATURE_CONTACT_FT = 1 << 6,
+ EMPATHY_CONTACT_LIST_FEATURE_CONTACT_INVITE = 1 << 7,
+ EMPATHY_CONTACT_LIST_FEATURE_CONTACT_EDIT = 1 << 8,
+ EMPATHY_CONTACT_LIST_FEATURE_CONTACT_INFO = 1 << 9,
+ EMPATHY_CONTACT_LIST_FEATURE_CONTACT_REMOVE = 1 << 10,
+ EMPATHY_CONTACT_LIST_FEATURE_CONTACT_DROP = 1 << 11,
+ EMPATHY_CONTACT_LIST_FEATURE_CONTACT_DRAG = 1 << 12,
+ EMPATHY_CONTACT_LIST_FEATURE_ALL = (1 << 13) - 1,
+} EmpathyContactListFeatures;
+
+struct _EmpathyContactListView {
+ GtkTreeView parent;
+};
+
+struct _EmpathyContactListViewClass {
+ GtkTreeViewClass parent_class;
+};
+
+GType empathy_contact_list_view_get_type (void) G_GNUC_CONST;
+EmpathyContactListView * empathy_contact_list_view_new (EmpathyContactListStore *store,
+ EmpathyContactListFeatures features);
+void empathy_contact_list_view_set_features (EmpathyContactListView *view,
+ EmpathyContactListFeatures features);
+EmpathyContactListFeatures empathy_contact_list_view_get_features (EmpathyContactListView *view);
+EmpathyContact * empathy_contact_list_view_get_selected (EmpathyContactListView *view);
+gchar * empathy_contact_list_view_get_selected_group (EmpathyContactListView *view);
+GtkWidget * empathy_contact_list_view_get_contact_menu (EmpathyContactListView *view,
+ EmpathyContact *contact);
+GtkWidget * empathy_contact_list_view_get_group_menu (EmpathyContactListView *view);
+
+G_END_DECLS
+
+#endif /* __EMPATHY_CONTACT_LIST_VIEW_H__ */
+
diff --git a/gnome-2-22/libempathy-gtk/empathy-contact-widget.c b/gnome-2-22/libempathy-gtk/empathy-contact-widget.c
new file mode 100644
index 000000000..0c3f40dc1
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-contact-widget.c
@@ -0,0 +1,946 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2007-2008 Collabora Ltd.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Authors: Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#include <config.h>
+
+#include <string.h>
+#include <stdlib.h>
+
+#include <gtk/gtk.h>
+#include <glade/glade.h>
+#include <glib/gi18n.h>
+
+#include <libmissioncontrol/mc-account.h>
+
+#include <libempathy/empathy-contact-factory.h>
+#include <libempathy/empathy-contact-manager.h>
+#include <libempathy/empathy-contact-list.h>
+#include <libempathy/empathy-utils.h>
+
+#include "empathy-contact-widget.h"
+#include "empathy-account-chooser.h"
+#include "empathy-avatar-chooser.h"
+#include "empathy-avatar-image.h"
+#include "empathy-ui-utils.h"
+
+/* Delay before updating the widget when the id entry changed (seconds) */
+#define ID_CHANGED_TIMEOUT 1
+
+typedef struct {
+ EmpathyContactFactory *factory;
+ EmpathyContactManager *manager;
+ EmpathyContact *contact;
+ EmpathyContactWidgetFlags flags;
+ GtkCellRenderer *renderer;
+ guint widget_id_timeout;
+
+ GtkWidget *vbox_contact_widget;
+
+ /* Contact */
+ GtkWidget *vbox_contact;
+ GtkWidget *widget_avatar;
+ GtkWidget *widget_account;
+ GtkWidget *widget_id;
+ GtkWidget *widget_alias;
+ GtkWidget *label_alias;
+ GtkWidget *entry_alias;
+ GtkWidget *hbox_presence;
+ GtkWidget *image_state;
+ GtkWidget *label_status;
+ GtkWidget *table_contact;
+ GtkWidget *vbox_avatar;
+
+ /* Groups */
+ GtkWidget *vbox_groups;
+ GtkWidget *entry_group;
+ GtkWidget *button_group;
+ GtkWidget *treeview_groups;
+
+ /* Details */
+ GtkWidget *vbox_details;
+ GtkWidget *table_details;
+ GtkWidget *hbox_details_requested;
+
+ /* Client */
+ GtkWidget *vbox_client;
+ GtkWidget *table_client;
+ GtkWidget *hbow_client_requested;
+} EmpathyContactWidget;
+
+typedef struct {
+ EmpathyContactWidget *information;
+ const gchar *name;
+ gboolean found;
+ GtkTreeIter found_iter;
+} FindName;
+
+static void contact_widget_destroy_cb (GtkWidget *widget,
+ EmpathyContactWidget *information);
+static void contact_widget_remove_contact (EmpathyContactWidget *information);
+static void contact_widget_set_contact (EmpathyContactWidget *information,
+ EmpathyContact *contact);
+static void contact_widget_contact_setup (EmpathyContactWidget *information);
+static void contact_widget_contact_update (EmpathyContactWidget *information);
+static void contact_widget_change_contact (EmpathyContactWidget *information);
+static void contact_widget_avatar_changed_cb (EmpathyAvatarChooser *chooser,
+ EmpathyContactWidget *information);
+static void contact_widget_account_changed_cb (GtkComboBox *widget,
+ EmpathyContactWidget *information);
+static gboolean contact_widget_id_focus_out_cb (GtkWidget *widget,
+ GdkEventFocus *event,
+ EmpathyContactWidget *information);
+static gboolean contact_widget_entry_alias_focus_event_cb (GtkEditable *editable,
+ GdkEventFocus *event,
+ EmpathyContactWidget *information);
+static void contact_widget_name_notify_cb (EmpathyContactWidget *information);
+static void contact_widget_presence_notify_cb (EmpathyContactWidget *information);
+static void contact_widget_avatar_notify_cb (EmpathyContactWidget *information);
+static void contact_widget_groups_setup (EmpathyContactWidget *information);
+static void contact_widget_groups_update (EmpathyContactWidget *information);
+static void contact_widget_model_setup (EmpathyContactWidget *information);
+static void contact_widget_model_populate_columns (EmpathyContactWidget *information);
+static void contact_widget_groups_populate_data (EmpathyContactWidget *information);
+static void contact_widget_groups_notify_cb (EmpathyContactWidget *information);
+static gboolean contact_widget_model_find_name (EmpathyContactWidget *information,
+ const gchar *name,
+ GtkTreeIter *iter);
+static gboolean contact_widget_model_find_name_foreach (GtkTreeModel *model,
+ GtkTreePath *path,
+ GtkTreeIter *iter,
+ FindName *data);
+static void contact_widget_cell_toggled (GtkCellRendererToggle *cell,
+ gchar *path_string,
+ EmpathyContactWidget *information);
+static void contact_widget_entry_group_changed_cb (GtkEditable *editable,
+ EmpathyContactWidget *information);
+static void contact_widget_entry_group_activate_cb (GtkEntry *entry,
+ EmpathyContactWidget *information);
+static void contact_widget_button_group_clicked_cb (GtkButton *button,
+ EmpathyContactWidget *information);
+static void contact_widget_details_setup (EmpathyContactWidget *information);
+static void contact_widget_details_update (EmpathyContactWidget *information);
+static void contact_widget_client_setup (EmpathyContactWidget *information);
+static void contact_widget_client_update (EmpathyContactWidget *information);
+
+enum {
+ COL_NAME,
+ COL_ENABLED,
+ COL_EDITABLE,
+ COL_COUNT
+};
+
+GtkWidget *
+empathy_contact_widget_new (EmpathyContact *contact,
+ EmpathyContactWidgetFlags flags)
+{
+ EmpathyContactWidget *information;
+ GladeXML *glade;
+
+ information = g_slice_new0 (EmpathyContactWidget);
+ information->flags = flags;
+ information->factory = empathy_contact_factory_new ();
+
+ glade = empathy_glade_get_file ("empathy-contact-widget.glade",
+ "vbox_contact_widget",
+ NULL,
+ "vbox_contact_widget", &information->vbox_contact_widget,
+ "vbox_contact", &information->vbox_contact,
+ "hbox_presence", &information->hbox_presence,
+ "label_alias", &information->label_alias,
+ "image_state", &information->image_state,
+ "label_status", &information->label_status,
+ "table_contact", &information->table_contact,
+ "vbox_avatar", &information->vbox_avatar,
+ "vbox_groups", &information->vbox_groups,
+ "entry_group", &information->entry_group,
+ "button_group", &information->button_group,
+ "treeview_groups", &information->treeview_groups,
+ "vbox_details", &information->vbox_details,
+ "table_details", &information->table_details,
+ "hbox_details_requested", &information->hbox_details_requested,
+ "vbox_client", &information->vbox_client,
+ "table_client", &information->table_client,
+ "hbox_client_requested", &information->hbow_client_requested,
+ NULL);
+
+ empathy_glade_connect (glade,
+ information,
+ "vbox_contact_widget", "destroy", contact_widget_destroy_cb,
+ "entry_group", "changed", contact_widget_entry_group_changed_cb,
+ "entry_group", "activate", contact_widget_entry_group_activate_cb,
+ "button_group", "clicked", contact_widget_button_group_clicked_cb,
+ NULL);
+
+ g_object_unref (glade);
+
+ g_object_set_data (G_OBJECT (information->vbox_contact_widget),
+ "EmpathyContactWidget",
+ information);
+
+ /* Create widgets */
+ contact_widget_contact_setup (information);
+ contact_widget_groups_setup (information);
+ contact_widget_details_setup (information);
+ contact_widget_client_setup (information);
+
+ contact_widget_set_contact (information, contact);
+
+ gtk_widget_show (information->vbox_contact_widget);
+
+ return information->vbox_contact_widget;
+}
+
+EmpathyContact *
+empathy_contact_widget_get_contact (GtkWidget *widget)
+{
+ EmpathyContactWidget *information;
+
+ g_return_val_if_fail (GTK_IS_WIDGET (widget), NULL);
+
+ information = g_object_get_data (G_OBJECT (widget), "EmpathyContactWidget");
+ if (!information) {
+ return NULL;
+ }
+
+ return information->contact;
+}
+
+void
+empathy_contact_widget_set_contact (GtkWidget *widget,
+ EmpathyContact *contact)
+{
+ EmpathyContactWidget *information;
+
+ g_return_if_fail (GTK_IS_WIDGET (widget));
+ g_return_if_fail (EMPATHY_IS_CONTACT (contact));
+
+ information = g_object_get_data (G_OBJECT (widget), "EmpathyContactWidget");
+ if (!information) {
+ return;
+ }
+
+ contact_widget_set_contact (information, contact);
+}
+
+void
+empathy_contact_widget_set_account_filter (GtkWidget *widget,
+ EmpathyAccountChooserFilterFunc filter,
+ gpointer user_data)
+{
+ EmpathyContactWidget *information;
+ EmpathyAccountChooser *chooser;
+
+ g_return_if_fail (GTK_IS_WIDGET (widget));
+
+ information = g_object_get_data (G_OBJECT (widget), "EmpathyContactWidget");
+ if (!information) {
+ return;
+ }
+
+ chooser = EMPATHY_ACCOUNT_CHOOSER (information->widget_account);
+ if (chooser) {
+ empathy_account_chooser_set_filter (chooser, filter, user_data);
+ }
+}
+
+static void
+contact_widget_destroy_cb (GtkWidget *widget,
+ EmpathyContactWidget *information)
+{
+ contact_widget_remove_contact (information);
+
+ if (information->widget_id_timeout != 0) {
+ g_source_remove (information->widget_id_timeout);
+ }
+ if (information->factory) {
+ g_object_unref (information->factory);
+ }
+ if (information->manager) {
+ g_object_unref (information->manager);
+ }
+
+ g_slice_free (EmpathyContactWidget, information);
+}
+
+static void
+contact_widget_remove_contact (EmpathyContactWidget *information)
+{
+ if (information->contact) {
+ g_signal_handlers_disconnect_by_func (information->contact,
+ contact_widget_name_notify_cb,
+ information);
+ g_signal_handlers_disconnect_by_func (information->contact,
+ contact_widget_presence_notify_cb,
+ information);
+ g_signal_handlers_disconnect_by_func (information->contact,
+ contact_widget_avatar_notify_cb,
+ information);
+ g_signal_handlers_disconnect_by_func (information->contact,
+ contact_widget_groups_notify_cb,
+ information);
+
+ g_object_unref (information->contact);
+ information->contact = NULL;
+ }
+}
+
+static void
+contact_widget_set_contact (EmpathyContactWidget *information,
+ EmpathyContact *contact)
+{
+ if (contact == information->contact ||
+ (contact && information->contact &&
+ empathy_contact_equal (contact, information->contact))) {
+ return;
+ }
+
+ contact_widget_remove_contact (information);
+ if (contact) {
+ information->contact = g_object_ref (contact);
+ }
+
+ /* Update information for widgets */
+ contact_widget_contact_update (information);
+ contact_widget_groups_update (information);
+ contact_widget_details_update (information);
+ contact_widget_client_update (information);
+}
+
+static gboolean
+contact_widget_id_activate_timeout (EmpathyContactWidget *self)
+{
+ contact_widget_change_contact (self);
+ return FALSE;
+}
+
+static void
+contact_widget_id_changed_cb (GtkEntry *entry,
+ EmpathyContactWidget *self)
+{
+ if (self->widget_id_timeout != 0) {
+ g_source_remove (self->widget_id_timeout);
+ }
+
+ self->widget_id_timeout =
+ g_timeout_add_seconds (ID_CHANGED_TIMEOUT,
+ (GSourceFunc) contact_widget_id_activate_timeout,
+ self);
+}
+
+static void
+contact_widget_contact_setup (EmpathyContactWidget *information)
+{
+ if (information->flags & EMPATHY_CONTACT_WIDGET_EDIT_AVATAR) {
+ information->widget_avatar = empathy_avatar_chooser_new ();
+ g_signal_connect (information->widget_avatar, "changed",
+ G_CALLBACK (contact_widget_avatar_changed_cb),
+ information);
+ } else {
+ information->widget_avatar = empathy_avatar_image_new ();
+ }
+ gtk_box_pack_start (GTK_BOX (information->vbox_avatar),
+ information->widget_avatar,
+ FALSE, FALSE,
+ 6);
+ gtk_widget_show (information->widget_avatar);
+
+ /* Setup account label/chooser */
+ if (information->flags & EMPATHY_CONTACT_WIDGET_EDIT_ACCOUNT) {
+ information->widget_account = empathy_account_chooser_new ();
+
+ g_signal_connect (information->widget_account, "changed",
+ G_CALLBACK (contact_widget_account_changed_cb),
+ information);
+ } else {
+ information->widget_account = gtk_label_new (NULL);
+ gtk_label_set_selectable (GTK_LABEL (information->widget_account), TRUE);
+ gtk_misc_set_alignment (GTK_MISC (information->widget_account), 0, 0.5);
+ }
+ gtk_table_attach_defaults (GTK_TABLE (information->table_contact),
+ information->widget_account,
+ 1, 2, 0, 1);
+ gtk_widget_show (information->widget_account);
+
+ /* Setup id label/entry */
+ if (information->flags & EMPATHY_CONTACT_WIDGET_EDIT_ID) {
+ information->widget_id = gtk_entry_new ();
+ g_signal_connect (information->widget_id, "focus-out-event",
+ G_CALLBACK (contact_widget_id_focus_out_cb),
+ information);
+ g_signal_connect (information->widget_id, "changed",
+ G_CALLBACK (contact_widget_id_changed_cb),
+ information);
+ } else {
+ information->widget_id = gtk_label_new (NULL);
+ gtk_label_set_selectable (GTK_LABEL (information->widget_id), TRUE);
+ gtk_misc_set_alignment (GTK_MISC (information->widget_id), 0, 0.5);
+ }
+ gtk_table_attach_defaults (GTK_TABLE (information->table_contact),
+ information->widget_id,
+ 1, 2, 1, 2);
+ gtk_widget_show (information->widget_id);
+
+ /* Setup alias label/entry */
+ if (information->flags & EMPATHY_CONTACT_WIDGET_EDIT_ALIAS) {
+ information->widget_alias = gtk_entry_new ();
+ g_signal_connect (information->widget_alias, "focus-out-event",
+ G_CALLBACK (contact_widget_entry_alias_focus_event_cb),
+ information);
+ } else {
+ information->widget_alias = gtk_label_new (NULL);
+ gtk_label_set_selectable (GTK_LABEL (information->widget_alias), TRUE);
+ gtk_misc_set_alignment (GTK_MISC (information->widget_alias), 0, 0.5);
+ }
+ gtk_table_attach_defaults (GTK_TABLE (information->table_contact),
+ information->widget_alias,
+ 1, 2, 2, 3);
+ gtk_widget_show (information->widget_alias);
+}
+
+static void
+contact_widget_contact_update (EmpathyContactWidget *information)
+{
+ McAccount *account = NULL;
+ const gchar *id = NULL;
+
+ /* Connect and get info from new contact */
+ if (information->contact) {
+ g_signal_connect_swapped (information->contact, "notify::name",
+ G_CALLBACK (contact_widget_name_notify_cb),
+ information);
+ g_signal_connect_swapped (information->contact, "notify::presence",
+ G_CALLBACK (contact_widget_presence_notify_cb),
+ information);
+ g_signal_connect_swapped (information->contact, "notify::presence-message",
+ G_CALLBACK (contact_widget_presence_notify_cb),
+ information);
+ g_signal_connect_swapped (information->contact, "notify::avatar",
+ G_CALLBACK (contact_widget_avatar_notify_cb),
+ information);
+
+ account = empathy_contact_get_account (information->contact);
+ id = empathy_contact_get_id (information->contact);
+ }
+
+ /* Update account widget */
+ if (information->flags & EMPATHY_CONTACT_WIDGET_EDIT_ACCOUNT) {
+ if (account) {
+ g_signal_handlers_block_by_func (information->widget_account,
+ contact_widget_account_changed_cb,
+ information);
+ empathy_account_chooser_set_account (EMPATHY_ACCOUNT_CHOOSER (information->widget_account),
+ account);
+ g_signal_handlers_unblock_by_func (information->widget_account,
+ contact_widget_account_changed_cb,
+ information);
+ }
+ } else {
+ if (account) {
+ const gchar *name;
+
+ name = mc_account_get_display_name (account);
+ gtk_label_set_label (GTK_LABEL (information->widget_account), name);
+ }
+ }
+
+ /* Update id widget */
+ if (information->flags & EMPATHY_CONTACT_WIDGET_EDIT_ID) {
+ gtk_entry_set_text (GTK_ENTRY (information->widget_id), id ? id : "");
+ } else {
+ gtk_label_set_label (GTK_LABEL (information->widget_id), id ? id : "");
+ }
+ /* Update other widgets */
+ if (information->contact) {
+ contact_widget_name_notify_cb (information);
+ contact_widget_presence_notify_cb (information);
+ contact_widget_avatar_notify_cb (information);
+
+ gtk_widget_show (information->label_alias);
+ gtk_widget_show (information->widget_alias);
+ gtk_widget_show (information->hbox_presence);
+ gtk_widget_show (information->widget_avatar);
+ } else {
+ gtk_widget_hide (information->label_alias);
+ gtk_widget_hide (information->widget_alias);
+ gtk_widget_hide (information->hbox_presence);
+ gtk_widget_hide (information->widget_avatar);
+ }
+}
+
+static void
+contact_widget_change_contact (EmpathyContactWidget *information)
+{
+ EmpathyContact *contact;
+ McAccount *account;
+
+ account = empathy_account_chooser_get_account (EMPATHY_ACCOUNT_CHOOSER (information->widget_account));
+ if (!account) {
+ return;
+ }
+
+ if (information->flags & EMPATHY_CONTACT_WIDGET_EDIT_ID) {
+ const gchar *id;
+
+ id = gtk_entry_get_text (GTK_ENTRY (information->widget_id));
+ if (G_STR_EMPTY (id)) {
+ return;
+ }
+
+ contact = empathy_contact_factory_get_from_id (information->factory,
+ account, id);
+ } else {
+ contact = empathy_contact_factory_get_user (information->factory,
+ account);
+ }
+
+ if (contact) {
+ contact_widget_set_contact (information, contact);
+ g_object_unref (contact);
+ }
+}
+
+static void
+contact_widget_avatar_changed_cb (EmpathyAvatarChooser *chooser,
+ EmpathyContactWidget *information)
+{
+ if (information->contact &&
+ empathy_contact_is_user (information->contact)) {
+ McAccount *account;
+ const gchar *data;
+ gsize size;
+ const gchar *mime_type;
+
+ account = empathy_contact_get_account (information->contact);
+ empathy_avatar_chooser_get_image_data (EMPATHY_AVATAR_CHOOSER (information->widget_avatar),
+ &data, &size, &mime_type);
+ empathy_contact_factory_set_avatar (information->factory,
+ account,
+ data, size, mime_type);
+ }
+}
+
+static void
+contact_widget_account_changed_cb (GtkComboBox *widget,
+ EmpathyContactWidget *information)
+{
+ contact_widget_change_contact (information);
+}
+
+static gboolean
+contact_widget_id_focus_out_cb (GtkWidget *widget,
+ GdkEventFocus *event,
+ EmpathyContactWidget *information)
+{
+ contact_widget_change_contact (information);
+ return FALSE;
+}
+
+static gboolean
+contact_widget_entry_alias_focus_event_cb (GtkEditable *editable,
+ GdkEventFocus *event,
+ EmpathyContactWidget *information)
+{
+ if (information->contact) {
+ const gchar *alias;
+
+ alias = gtk_entry_get_text (GTK_ENTRY (editable));
+ empathy_contact_factory_set_alias (information->factory,
+ information->contact,
+ alias);
+ }
+
+ return FALSE;
+}
+
+static void
+contact_widget_name_notify_cb (EmpathyContactWidget *information)
+{
+ if (GTK_IS_ENTRY (information->widget_alias)) {
+ gtk_entry_set_text (GTK_ENTRY (information->widget_alias),
+ empathy_contact_get_name (information->contact));
+ } else {
+ gtk_label_set_label (GTK_LABEL (information->widget_alias),
+ empathy_contact_get_name (information->contact));
+ }
+}
+
+static void
+contact_widget_presence_notify_cb (EmpathyContactWidget *information)
+{
+ gtk_label_set_text (GTK_LABEL (information->label_status),
+ empathy_contact_get_status (information->contact));
+ gtk_image_set_from_icon_name (GTK_IMAGE (information->image_state),
+ empathy_icon_name_for_contact (information->contact),
+ GTK_ICON_SIZE_BUTTON);
+
+}
+
+static void
+contact_widget_avatar_notify_cb (EmpathyContactWidget *information)
+{
+ EmpathyAvatar *avatar = NULL;
+
+ if (information->contact) {
+ avatar = empathy_contact_get_avatar (information->contact);
+ }
+ if (information->flags & EMPATHY_CONTACT_WIDGET_EDIT_AVATAR) {
+ g_signal_handlers_block_by_func (information->widget_avatar,
+ contact_widget_avatar_changed_cb,
+ information);
+ empathy_avatar_chooser_set (EMPATHY_AVATAR_CHOOSER (information->widget_avatar),
+ avatar);
+ g_signal_handlers_unblock_by_func (information->widget_avatar,
+ contact_widget_avatar_changed_cb,
+ information);
+ } else {
+ empathy_avatar_image_set (EMPATHY_AVATAR_IMAGE (information->widget_avatar),
+ avatar);
+ }
+}
+
+static void
+contact_widget_groups_setup (EmpathyContactWidget *information)
+{
+ if (information->flags & EMPATHY_CONTACT_WIDGET_EDIT_GROUPS) {
+ information->manager = empathy_contact_manager_new ();
+ contact_widget_model_setup (information);
+ }
+}
+
+static void
+contact_widget_groups_update (EmpathyContactWidget *information)
+{
+ if (information->flags & EMPATHY_CONTACT_WIDGET_EDIT_GROUPS &&
+ information->contact) {
+ g_signal_connect_swapped (information->contact, "notify::groups",
+ G_CALLBACK (contact_widget_groups_notify_cb),
+ information);
+ contact_widget_groups_populate_data (information);
+
+ gtk_widget_show (information->vbox_groups);
+ } else {
+ gtk_widget_hide (information->vbox_groups);
+ }
+}
+
+static void
+contact_widget_model_setup (EmpathyContactWidget *information)
+{
+ GtkTreeView *view;
+ GtkListStore *store;
+ GtkTreeSelection *selection;
+
+ view = GTK_TREE_VIEW (information->treeview_groups);
+
+ store = gtk_list_store_new (COL_COUNT,
+ G_TYPE_STRING, /* name */
+ G_TYPE_BOOLEAN, /* enabled */
+ G_TYPE_BOOLEAN); /* editable */
+
+ gtk_tree_view_set_model (view, GTK_TREE_MODEL (store));
+
+ selection = gtk_tree_view_get_selection (view);
+ gtk_tree_selection_set_mode (selection, GTK_SELECTION_SINGLE);
+
+ contact_widget_model_populate_columns (information);
+
+ gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (store),
+ COL_NAME, GTK_SORT_ASCENDING);
+
+ g_object_unref (store);
+}
+
+static void
+contact_widget_model_populate_columns (EmpathyContactWidget *information)
+{
+ GtkTreeView *view;
+ GtkTreeModel *model;
+ GtkTreeViewColumn *column;
+ GtkCellRenderer *renderer;
+ guint col_offset;
+
+ view = GTK_TREE_VIEW (information->treeview_groups);
+ model = gtk_tree_view_get_model (view);
+
+ renderer = gtk_cell_renderer_toggle_new ();
+ g_signal_connect (renderer, "toggled",
+ G_CALLBACK (contact_widget_cell_toggled),
+ information);
+
+ column = gtk_tree_view_column_new_with_attributes (_("Select"), renderer,
+ "active", COL_ENABLED,
+ NULL);
+
+ gtk_tree_view_column_set_sizing (column, GTK_TREE_VIEW_COLUMN_FIXED);
+ gtk_tree_view_column_set_fixed_width (column, 50);
+ gtk_tree_view_append_column (view, column);
+
+ renderer = gtk_cell_renderer_text_new ();
+ col_offset = gtk_tree_view_insert_column_with_attributes (view,
+ -1, _("Group"),
+ renderer,
+ "text", COL_NAME,
+ /* "editable", COL_EDITABLE, */
+ NULL);
+
+ g_object_set_data (G_OBJECT (renderer),
+ "column", GINT_TO_POINTER (COL_NAME));
+
+ column = gtk_tree_view_get_column (view, col_offset - 1);
+ gtk_tree_view_column_set_sort_column_id (column, COL_NAME);
+ gtk_tree_view_column_set_resizable (column,FALSE);
+ gtk_tree_view_column_set_clickable (GTK_TREE_VIEW_COLUMN (column), TRUE);
+
+ if (information->renderer) {
+ g_object_unref (information->renderer);
+ }
+
+ information->renderer = g_object_ref (renderer);
+}
+
+static void
+contact_widget_groups_populate_data (EmpathyContactWidget *information)
+{
+ GtkTreeView *view;
+ GtkListStore *store;
+ GtkTreeIter iter;
+ GList *my_groups, *l;
+ GList *all_groups;
+
+ view = GTK_TREE_VIEW (information->treeview_groups);
+ store = GTK_LIST_STORE (gtk_tree_view_get_model (view));
+ gtk_list_store_clear (store);
+
+ all_groups = empathy_contact_list_get_all_groups (EMPATHY_CONTACT_LIST (information->manager));
+ my_groups = empathy_contact_list_get_groups (EMPATHY_CONTACT_LIST (information->manager),
+ information->contact);
+
+ for (l = all_groups; l; l = l->next) {
+ const gchar *group_str;
+ gboolean enabled;
+
+ group_str = l->data;
+
+ enabled = g_list_find_custom (my_groups,
+ group_str,
+ (GCompareFunc) strcmp) != NULL;
+
+ gtk_list_store_append (store, &iter);
+ gtk_list_store_set (store, &iter,
+ COL_NAME, group_str,
+ COL_EDITABLE, TRUE,
+ COL_ENABLED, enabled,
+ -1);
+ }
+
+ g_list_foreach (all_groups, (GFunc) g_free, NULL);
+ g_list_foreach (my_groups, (GFunc) g_free, NULL);
+ g_list_free (all_groups);
+ g_list_free (my_groups);
+}
+
+static void
+contact_widget_groups_notify_cb (EmpathyContactWidget *information)
+{
+ /* FIXME: not implemented */
+}
+
+static gboolean
+contact_widget_model_find_name (EmpathyContactWidget *information,
+ const gchar *name,
+ GtkTreeIter *iter)
+{
+ GtkTreeView *view;
+ GtkTreeModel *model;
+ FindName data;
+
+ if (G_STR_EMPTY (name)) {
+ return FALSE;
+ }
+
+ data.information = information;
+ data.name = name;
+ data.found = FALSE;
+
+ view = GTK_TREE_VIEW (information->treeview_groups);
+ model = gtk_tree_view_get_model (view);
+
+ gtk_tree_model_foreach (model,
+ (GtkTreeModelForeachFunc) contact_widget_model_find_name_foreach,
+ &data);
+
+ if (data.found == TRUE) {
+ *iter = data.found_iter;
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static gboolean
+contact_widget_model_find_name_foreach (GtkTreeModel *model,
+ GtkTreePath *path,
+ GtkTreeIter *iter,
+ FindName *data)
+{
+ gchar *name;
+
+ gtk_tree_model_get (model, iter,
+ COL_NAME, &name,
+ -1);
+
+ if (!name) {
+ return FALSE;
+ }
+
+ if (data->name && strcmp (data->name, name) == 0) {
+ data->found = TRUE;
+ data->found_iter = *iter;
+
+ g_free (name);
+
+ return TRUE;
+ }
+
+ g_free (name);
+
+ return FALSE;
+}
+
+static void
+contact_widget_cell_toggled (GtkCellRendererToggle *cell,
+ gchar *path_string,
+ EmpathyContactWidget *information)
+{
+ GtkTreeView *view;
+ GtkTreeModel *model;
+ GtkListStore *store;
+ GtkTreePath *path;
+ GtkTreeIter iter;
+ gboolean enabled;
+ gchar *group;
+
+ view = GTK_TREE_VIEW (information->treeview_groups);
+ model = gtk_tree_view_get_model (view);
+ store = GTK_LIST_STORE (model);
+
+ path = gtk_tree_path_new_from_string (path_string);
+
+ gtk_tree_model_get_iter (model, &iter, path);
+ gtk_tree_model_get (model, &iter,
+ COL_ENABLED, &enabled,
+ COL_NAME, &group,
+ -1);
+
+ gtk_list_store_set (store, &iter, COL_ENABLED, !enabled, -1);
+ gtk_tree_path_free (path);
+
+ if (group) {
+ if (enabled) {
+ empathy_contact_list_remove_from_group (EMPATHY_CONTACT_LIST (information->manager),
+ information->contact,
+ group);
+ } else {
+ empathy_contact_list_add_to_group (EMPATHY_CONTACT_LIST (information->manager),
+ information->contact,
+ group);
+ }
+
+ g_free (group);
+ }
+}
+
+static void
+contact_widget_entry_group_changed_cb (GtkEditable *editable,
+ EmpathyContactWidget *information)
+{
+ GtkTreeIter iter;
+ const gchar *group;
+
+ group = gtk_entry_get_text (GTK_ENTRY (information->entry_group));
+
+ if (contact_widget_model_find_name (information, group, &iter)) {
+ gtk_widget_set_sensitive (GTK_WIDGET (information->button_group), FALSE);
+
+ } else {
+ gtk_widget_set_sensitive (GTK_WIDGET (information->button_group),
+ !G_STR_EMPTY (group));
+ }
+}
+
+static void
+contact_widget_entry_group_activate_cb (GtkEntry *entry,
+ EmpathyContactWidget *information)
+{
+ gtk_widget_activate (GTK_WIDGET (information->button_group));
+}
+
+static void
+contact_widget_button_group_clicked_cb (GtkButton *button,
+ EmpathyContactWidget *information)
+{
+ GtkTreeView *view;
+ GtkListStore *store;
+ GtkTreeIter iter;
+ const gchar *group;
+
+ view = GTK_TREE_VIEW (information->treeview_groups);
+ store = GTK_LIST_STORE (gtk_tree_view_get_model (view));
+
+ group = gtk_entry_get_text (GTK_ENTRY (information->entry_group));
+
+ gtk_list_store_append (store, &iter);
+ gtk_list_store_set (store, &iter,
+ COL_NAME, group,
+ COL_ENABLED, TRUE,
+ -1);
+
+ empathy_contact_list_add_to_group (EMPATHY_CONTACT_LIST (information->manager),
+ information->contact,
+ group);
+}
+
+static void
+contact_widget_details_setup (EmpathyContactWidget *information)
+{
+ /* FIXME: Needs new telepathy spec */
+ gtk_widget_hide (information->vbox_details);
+}
+
+static void
+contact_widget_details_update (EmpathyContactWidget *information)
+{
+ /* FIXME: Needs new telepathy spec */
+}
+
+static void
+contact_widget_client_setup (EmpathyContactWidget *information)
+{
+ /* FIXME: Needs new telepathy spec */
+ gtk_widget_hide (information->vbox_client);
+}
+
+static void
+contact_widget_client_update (EmpathyContactWidget *information)
+{
+ /* FIXME: Needs new telepathy spec */
+}
+
diff --git a/gnome-2-22/libempathy-gtk/empathy-contact-widget.glade b/gnome-2-22/libempathy-gtk/empathy-contact-widget.glade
new file mode 100644
index 000000000..4b204b7b6
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-contact-widget.glade
@@ -0,0 +1,983 @@
+<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
+<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
+
+<glade-interface>
+
+<widget class="GtkWindow" id="contact_window">
+ <property name="visible">True</property>
+ <property name="title" translatable="yes">Contact information</property>
+ <property name="type">GTK_WINDOW_TOPLEVEL</property>
+ <property name="window_position">GTK_WIN_POS_NONE</property>
+ <property name="modal">False</property>
+ <property name="resizable">True</property>
+ <property name="destroy_with_parent">False</property>
+ <property name="decorated">True</property>
+ <property name="skip_taskbar_hint">False</property>
+ <property name="skip_pager_hint">False</property>
+ <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
+ <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+ <property name="focus_on_map">True</property>
+ <property name="urgency_hint">False</property>
+
+ <child>
+ <widget class="GtkVBox" id="vbox_contact_widget">
+ <property name="homogeneous">False</property>
+ <property name="spacing">6</property>
+
+ <child>
+ <widget class="GtkVBox" id="vbox_contact">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">6</property>
+
+ <child>
+ <widget class="GtkLabel" id="label654">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;Contact&lt;/b&gt;</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">True</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkAlignment" id="alignment31">
+ <property name="visible">True</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xscale">1</property>
+ <property name="yscale">1</property>
+ <property name="top_padding">0</property>
+ <property name="bottom_padding">0</property>
+ <property name="left_padding">12</property>
+ <property name="right_padding">0</property>
+
+ <child>
+ <widget class="GtkHBox" id="hbox189">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">6</property>
+
+ <child>
+ <widget class="GtkVBox" id="vbox225">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">6</property>
+
+ <child>
+ <widget class="GtkTable" id="table_contact">
+ <property name="visible">True</property>
+ <property name="n_rows">3</property>
+ <property name="n_columns">2</property>
+ <property name="homogeneous">False</property>
+ <property name="row_spacing">6</property>
+ <property name="column_spacing">6</property>
+
+ <child>
+ <widget class="GtkLabel" id="label_alias">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Alias:</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label655">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Identifier:</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label680">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Account:</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">0</property>
+ <property name="bottom_attach">1</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkHBox" id="hbox_presence">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">6</property>
+
+ <child>
+ <widget class="GtkImage" id="image_state">
+ <property name="visible">True</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label_status">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes"></property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">True</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">True</property>
+ <property name="selectable">True</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkVBox" id="vbox_avatar">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+
+ <child>
+ <placeholder/>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkVBox" id="vbox_groups">
+ <property name="homogeneous">False</property>
+ <property name="spacing">6</property>
+
+ <child>
+ <widget class="GtkLabel" id="label672">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;Groups&lt;/b&gt;</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">True</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkAlignment" id="alignment33">
+ <property name="visible">True</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xscale">1</property>
+ <property name="yscale">1</property>
+ <property name="top_padding">0</property>
+ <property name="bottom_padding">0</property>
+ <property name="left_padding">12</property>
+ <property name="right_padding">0</property>
+
+ <child>
+ <widget class="GtkVBox" id="vbox224">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">6</property>
+
+ <child>
+ <widget class="GtkLabel" id="label679">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Select the groups you want this contact to appear in, you can select more than one group or no groups.</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">True</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">True</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkHBox" id="hbox188">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">12</property>
+
+ <child>
+ <widget class="GtkEntry" id="entry_group">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">True</property>
+ <property name="max_length">0</property>
+ <property name="text" translatable="yes"></property>
+ <property name="has_frame">True</property>
+ <property name="invisible_char">*</property>
+ <property name="activates_default">False</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkButton" id="button_group">
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">True</property>
+ <property name="label">_Add Group</property>
+ <property name="use_underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkScrolledWindow" id="scrolledwindow17">
+ <property name="height_request">100</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
+ <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+ <property name="shadow_type">GTK_SHADOW_IN</property>
+ <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
+
+ <child>
+ <widget class="GtkTreeView" id="treeview_groups">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="headers_visible">False</property>
+ <property name="rules_hint">False</property>
+ <property name="reorderable">False</property>
+ <property name="enable_search">False</property>
+ <property name="fixed_height_mode">False</property>
+ <property name="hover_selection">False</property>
+ <property name="hover_expand">False</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkVBox" id="vbox_details">
+ <property name="homogeneous">False</property>
+ <property name="spacing">6</property>
+
+ <child>
+ <widget class="GtkLabel" id="label649">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;Contact Details&lt;/b&gt;</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">True</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkAlignment" id="alignment30">
+ <property name="visible">True</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xscale">1</property>
+ <property name="yscale">1</property>
+ <property name="top_padding">0</property>
+ <property name="bottom_padding">0</property>
+ <property name="left_padding">12</property>
+ <property name="right_padding">0</property>
+
+ <child>
+ <widget class="GtkVBox" id="vbox218">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">6</property>
+
+ <child>
+ <widget class="GtkTable" id="table_details">
+ <property name="n_rows">4</property>
+ <property name="n_columns">2</property>
+ <property name="homogeneous">False</property>
+ <property name="row_spacing">6</property>
+ <property name="column_spacing">12</property>
+
+ <child>
+ <widget class="GtkLabel" id="label652">
+ <property name="label" translatable="yes">Birthday:</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label651">
+ <property name="label" translatable="yes">Web site:</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label650">
+ <property name="label" translatable="yes">Email:</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label670">
+ <property name="label" translatable="yes">Fullname:</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">0</property>
+ <property name="bottom_attach">1</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkHBox" id="hbox_details_requested">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">6</property>
+
+ <child>
+ <widget class="GtkImage" id="image885">
+ <property name="visible">True</property>
+ <property name="stock">gtk-dialog-info</property>
+ <property name="icon_size">4</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label653">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Information requested...</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">True</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">True</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkVBox" id="vbox_client">
+ <property name="homogeneous">False</property>
+ <property name="spacing">6</property>
+
+ <child>
+ <widget class="GtkLabel" id="label662">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;Client Information&lt;/b&gt;</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">True</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkAlignment" id="alignment32">
+ <property name="visible">True</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xscale">1</property>
+ <property name="yscale">1</property>
+ <property name="top_padding">0</property>
+ <property name="bottom_padding">0</property>
+ <property name="left_padding">12</property>
+ <property name="right_padding">0</property>
+
+ <child>
+ <widget class="GtkVBox" id="vbox222">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">6</property>
+
+ <child>
+ <widget class="GtkTable" id="table_client">
+ <property name="n_rows">3</property>
+ <property name="n_columns">2</property>
+ <property name="homogeneous">False</property>
+ <property name="row_spacing">6</property>
+ <property name="column_spacing">12</property>
+
+ <child>
+ <widget class="GtkLabel" id="label_os">
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes"></property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">True</property>
+ <property name="selectable">True</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">2</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label_version">
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes"></property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">True</property>
+ <property name="selectable">True</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">2</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label_client">
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes"></property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">True</property>
+ <property name="selectable">True</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">2</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">0</property>
+ <property name="bottom_attach">1</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label666">
+ <property name="label" translatable="yes">Client:</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">0</property>
+ <property name="bottom_attach">1</property>
+ <property name="x_options">fill</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label667">
+ <property name="label" translatable="yes">Version:</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">fill</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label668">
+ <property name="label" translatable="yes">OS:</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="x_options">fill</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkHBox" id="hbox_client_requested">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">6</property>
+
+ <child>
+ <widget class="GtkImage" id="image887">
+ <property name="visible">True</property>
+ <property name="stock">gtk-dialog-info</property>
+ <property name="icon_size">4</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label669">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Information requested...</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">True</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">True</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+</widget>
+
+</glade-interface>
diff --git a/gnome-2-22/libempathy-gtk/empathy-contact-widget.h b/gnome-2-22/libempathy-gtk/empathy-contact-widget.h
new file mode 100644
index 000000000..643867ef5
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-contact-widget.h
@@ -0,0 +1,52 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2007 Collabora Ltd.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Authors: Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#ifndef __EMPATHY_CONTACT_WIDGET_H__
+#define __EMPATHY_CONTACT_WIDGET_H__
+
+#include <gtk/gtk.h>
+
+#include <libempathy/empathy-contact.h>
+#include "empathy-account-chooser.h"
+
+G_BEGIN_DECLS
+
+typedef enum {
+ EMPATHY_CONTACT_WIDGET_EDIT_NONE = 0,
+ EMPATHY_CONTACT_WIDGET_EDIT_ALIAS = 1 << 0,
+ EMPATHY_CONTACT_WIDGET_EDIT_AVATAR = 1 << 1,
+ EMPATHY_CONTACT_WIDGET_EDIT_ACCOUNT = 1 << 2,
+ EMPATHY_CONTACT_WIDGET_EDIT_ID = 1 << 3,
+ EMPATHY_CONTACT_WIDGET_EDIT_GROUPS = 1 << 4,
+} EmpathyContactWidgetFlags;
+
+GtkWidget * empathy_contact_widget_new (EmpathyContact *contact,
+ EmpathyContactWidgetFlags flags);
+EmpathyContact *empathy_contact_widget_get_contact (GtkWidget *widget);
+void empathy_contact_widget_set_contact (GtkWidget *widget,
+ EmpathyContact *contact);
+void empathy_contact_widget_set_account_filter (GtkWidget *widget,
+ EmpathyAccountChooserFilterFunc filter,
+ gpointer user_data);
+
+G_END_DECLS
+
+#endif /* __EMPATHY_CONTACT_WIDGET_H__ */
diff --git a/gnome-2-22/libempathy-gtk/empathy-geometry.c b/gnome-2-22/libempathy-gtk/empathy-geometry.c
new file mode 100644
index 000000000..c8bbd2b21
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-geometry.c
@@ -0,0 +1,186 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2006-2007 Imendio AB
+ * Copyright (C) 2007-2008 Collabora Ltd.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * 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: Martyn Russell <martyn@imendio.com>
+ * Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#include "config.h"
+
+#include <sys/stat.h>
+
+#include <glib.h>
+#include <gdk/gdk.h>
+
+#include <libempathy/empathy-debug.h>
+
+#include "empathy-geometry.h"
+
+#define DEBUG_DOMAIN "Geometry"
+
+#define GEOMETRY_DIR_CREATE_MODE (S_IRUSR | S_IWUSR | S_IXUSR)
+#define GEOMETRY_FILE_CREATE_MODE (S_IRUSR | S_IWUSR)
+
+#define GEOMETRY_KEY_FILENAME "geometry.ini"
+#define GEOMETRY_FORMAT "%d,%d,%d,%d"
+#define GEOMETRY_GROUP_NAME "geometry"
+
+static gchar *geometry_get_filename (void);
+
+static gchar *
+geometry_get_filename (void)
+{
+ gchar *dir;
+ gchar *filename;
+
+ dir = g_build_filename (g_get_home_dir (), ".gnome2", PACKAGE_NAME, NULL);
+ if (!g_file_test (dir, G_FILE_TEST_EXISTS | G_FILE_TEST_IS_DIR)) {
+ empathy_debug (DEBUG_DOMAIN, "Creating directory:'%s'", dir);
+ g_mkdir_with_parents (dir, GEOMETRY_DIR_CREATE_MODE);
+ }
+
+ filename = g_build_filename (dir, GEOMETRY_KEY_FILENAME, NULL);
+ g_free (dir);
+
+ return filename;
+}
+
+void
+empathy_geometry_save (const gchar *name,
+ gint x,
+ gint y,
+ gint w,
+ gint h)
+{
+ GError *error = NULL;
+ GKeyFile *key_file;
+ gchar *filename;
+ GdkScreen *screen;
+ gint max_width;
+ gint max_height;
+ gchar *content;
+ gsize length;
+ gchar *str;
+
+ empathy_debug (DEBUG_DOMAIN, "Saving window geometry: x:%d, y:%d, w:%d, h:%d\n",
+ x, y, w, h);
+
+ screen = gdk_screen_get_default ();
+ max_width = gdk_screen_get_width (screen);
+ max_height = gdk_screen_get_height (screen);
+
+ w = CLAMP (w, 100, max_width);
+ h = CLAMP (h, 100, max_height);
+
+ x = CLAMP (x, 0, max_width - w);
+ y = CLAMP (y, 0, max_height - h);
+
+ str = g_strdup_printf (GEOMETRY_FORMAT, x, y, w, h);
+
+ key_file = g_key_file_new ();
+
+ filename = geometry_get_filename ();
+
+ g_key_file_load_from_file (key_file, filename, G_KEY_FILE_NONE, NULL);
+ g_key_file_set_string (key_file, GEOMETRY_GROUP_NAME, name, str);
+
+ g_free (str);
+
+ content = g_key_file_to_data (key_file, &length, NULL);
+ if (!g_file_set_contents (filename, content, length, &error)) {
+ g_warning ("Couldn't save window geometry, error:%d->'%s'",
+ error->code, error->message);
+ g_error_free (error);
+ }
+
+ g_free (content);
+ g_free (filename);
+ g_key_file_free (key_file);
+}
+
+void
+empathy_geometry_load (const gchar *name,
+ gint *x,
+ gint *y,
+ gint *w,
+ gint *h)
+{
+ GKeyFile *key_file;
+ gchar *filename;
+ gchar *str = NULL;
+
+ if (x) {
+ *x = -1;
+ }
+
+ if (y) {
+ *y = -1;
+ }
+
+ if (w) {
+ *w = -1;
+ }
+
+ if (h) {
+ *h = -1;
+ }
+
+ key_file = g_key_file_new ();
+
+ filename = geometry_get_filename ();
+
+ if (g_key_file_load_from_file (key_file, filename, G_KEY_FILE_NONE, NULL)) {
+ str = g_key_file_get_string (key_file, GEOMETRY_GROUP_NAME, name, NULL);
+ }
+
+ if (str) {
+ gint tmp_x, tmp_y, tmp_w, tmp_h;
+
+ sscanf (str, GEOMETRY_FORMAT, &tmp_x, &tmp_y, &tmp_w, &tmp_h);
+
+ if (x) {
+ *x = tmp_x;
+ }
+
+ if (y) {
+ *y = tmp_y;
+ }
+
+ if (w) {
+ *w = tmp_w;
+ }
+
+ if (h) {
+ *h = tmp_h;
+ }
+
+ g_free (str);
+ }
+
+ empathy_debug (DEBUG_DOMAIN, "Loading window geometry: x:%d, y:%d, w:%d, h:%d\n",
+ x ? *x : -1,
+ y ? *y : -1,
+ w ? *w : -1,
+ h ? *h : -1);
+
+ g_free (filename);
+ g_key_file_free (key_file);
+}
+
diff --git a/gnome-2-22/libempathy-gtk/empathy-geometry.h b/gnome-2-22/libempathy-gtk/empathy-geometry.h
new file mode 100644
index 000000000..512b64696
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-geometry.h
@@ -0,0 +1,45 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2006-2007 Imendio AB
+ * Copyright (C) 2007 Collabora Ltd.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * 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: Martyn Russell <martyn@imendio.com>
+ * Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#ifndef __EMPATHY_GEOMETRY_H__
+#define __EMPATHY_GEOMETRY_H__
+
+#include <glib.h>
+
+G_BEGIN_DECLS
+
+void empathy_geometry_save (const gchar *name,
+ gint x,
+ gint y,
+ gint w,
+ gint h);
+void empathy_geometry_load (const gchar *name,
+ gint *x,
+ gint *y,
+ gint *w,
+ gint *h);
+
+G_END_DECLS
+
+#endif /* __EMPATHY_GEOMETRY_H__ */
diff --git a/gnome-2-22/libempathy-gtk/empathy-group-chat.c b/gnome-2-22/libempathy-gtk/empathy-group-chat.c
new file mode 100644
index 000000000..16fb841be
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-group-chat.c
@@ -0,0 +1,700 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2002-2007 Imendio AB
+ * Copyright (C) 2007-2008 Collabora Ltd.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * 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: Mikael Hallendal <micke@imendio.com>
+ * Richard Hult <richard@imendio.com>
+ * Martyn Russell <martyn@imendio.com>
+ * Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#include "config.h"
+
+#include <string.h>
+
+#include <gdk/gdkkeysyms.h>
+#include <gtk/gtk.h>
+#include <glade/glade.h>
+#include <glib/gi18n.h>
+
+#include <telepathy-glib/util.h>
+
+#include <libempathy/empathy-tp-chat.h>
+#include <libempathy/empathy-tp-chatroom.h>
+#include <libempathy/empathy-contact.h>
+#include <libempathy/empathy-utils.h>
+#include <libempathy/empathy-debug.h>
+
+#include "empathy-group-chat.h"
+#include "empathy-chat.h"
+#include "empathy-chat-view.h"
+#include "empathy-contact-list-store.h"
+#include "empathy-contact-list-view.h"
+//#include "empathy-chat-invite.h"
+//#include "empathy-sound.h"
+#include "empathy-images.h"
+#include "empathy-ui-utils.h"
+#include "empathy-conf.h"
+#include "empathy-preferences.h"
+
+#define DEBUG_DOMAIN "GroupChat"
+
+#define GET_PRIV(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), EMPATHY_TYPE_GROUP_CHAT, EmpathyGroupChatPriv))
+
+struct _EmpathyGroupChatPriv {
+ EmpathyContactListStore *store;
+ EmpathyContactListView *view;
+ EmpathyTpChatroom *tp_chat;
+
+ GtkWidget *widget;
+ GtkWidget *hpaned;
+ GtkWidget *vbox_left;
+ GtkWidget *scrolled_window_chat;
+ GtkWidget *scrolled_window_input;
+ GtkWidget *scrolled_window_contacts;
+ GtkWidget *hbox_topic;
+ GtkWidget *label_topic;
+
+ gchar *topic;
+ gchar *name;
+ GCompletion *completion;
+
+ gint contacts_width;
+ gboolean contacts_visible;
+};
+
+static void group_chat_finalize (GObject *object);
+static void group_chat_create_ui (EmpathyGroupChat *chat);
+static void group_chat_widget_destroy_cb (GtkWidget *widget,
+ EmpathyGroupChat *chat);
+static void group_chat_members_changed_cb (EmpathyTpChatroom *tp_chat,
+ EmpathyContact *contact,
+ EmpathyContact *actor,
+ guint reason,
+ gchar *message,
+ gboolean is_member,
+ EmpathyGroupChat *chat);
+static void group_chat_topic_entry_activate_cb (GtkWidget *entry,
+ GtkDialog *dialog);
+static void group_chat_topic_response_cb (GtkWidget *dialog,
+ gint response,
+ EmpathyGroupChat *chat);
+static const gchar * group_chat_get_name (EmpathyChat *chat);
+static gchar * group_chat_get_tooltip (EmpathyChat *chat);
+static const gchar * group_chat_get_status_icon_name (EmpathyChat *chat);
+static GtkWidget * group_chat_get_widget (EmpathyChat *chat);
+static gboolean group_chat_is_group_chat (EmpathyChat *chat);
+static void group_chat_set_tp_chat (EmpathyChat *chat,
+ EmpathyTpChat *tp_chat);
+static void group_chat_subject_notify_cb (EmpathyTpChat *tp_chat,
+ GParamSpec *param,
+ EmpathyGroupChat *chat);
+static void group_chat_name_notify_cb (EmpathyTpChat *tp_chat,
+ GParamSpec *param,
+ EmpathyGroupChat *chat);
+static gboolean group_chat_key_press_event (EmpathyChat *chat,
+ GdkEventKey *event);
+static gint group_chat_contacts_completion_func (const gchar *s1,
+ const gchar *s2,
+ gsize n);
+
+G_DEFINE_TYPE (EmpathyGroupChat, empathy_group_chat, EMPATHY_TYPE_CHAT)
+
+static void
+empathy_group_chat_class_init (EmpathyGroupChatClass *klass)
+{
+ GObjectClass *object_class;
+ EmpathyChatClass *chat_class;
+
+ object_class = G_OBJECT_CLASS (klass);
+ chat_class = EMPATHY_CHAT_CLASS (klass);
+
+ object_class->finalize = group_chat_finalize;
+
+ chat_class->get_name = group_chat_get_name;
+ chat_class->get_tooltip = group_chat_get_tooltip;
+ chat_class->get_status_icon_name = group_chat_get_status_icon_name;
+ chat_class->get_widget = group_chat_get_widget;
+ chat_class->is_group_chat = group_chat_is_group_chat;
+ chat_class->set_tp_chat = group_chat_set_tp_chat;
+ chat_class->key_press_event = group_chat_key_press_event;
+
+ g_type_class_add_private (object_class, sizeof (EmpathyGroupChatPriv));
+}
+
+static void
+empathy_group_chat_init (EmpathyGroupChat *chat)
+{
+ EmpathyGroupChatPriv *priv;
+ EmpathyChatView *chatview;
+
+ priv = GET_PRIV (chat);
+
+ priv->contacts_visible = TRUE;
+
+ chatview = EMPATHY_CHAT_VIEW (EMPATHY_CHAT (chat)->view);
+ empathy_chat_view_set_is_group_chat (chatview, TRUE);
+
+ group_chat_create_ui (chat);
+}
+
+static void
+group_chat_finalize (GObject *object)
+{
+ EmpathyGroupChat *chat;
+ EmpathyGroupChatPriv *priv;
+
+ empathy_debug (DEBUG_DOMAIN, "Finalized:%p", object);
+
+ chat = EMPATHY_GROUP_CHAT (object);
+ priv = GET_PRIV (chat);
+
+ g_free (priv->name);
+ g_free (priv->topic);
+ g_object_unref (priv->store);
+ g_object_unref (priv->tp_chat);
+ g_completion_free (priv->completion);
+
+ G_OBJECT_CLASS (empathy_group_chat_parent_class)->finalize (object);
+}
+
+EmpathyGroupChat *
+empathy_group_chat_new (EmpathyTpChatroom *tp_chat)
+{
+ EmpathyGroupChat *chat;
+
+ g_return_val_if_fail (EMPATHY_IS_TP_CHAT (tp_chat), NULL);
+
+ chat = g_object_new (EMPATHY_TYPE_GROUP_CHAT,
+ "tp-chat", tp_chat,
+ NULL);
+
+ return chat;
+}
+
+gboolean
+empathy_group_chat_get_show_contacts (EmpathyGroupChat *chat)
+{
+ EmpathyGroupChat *group_chat;
+ EmpathyGroupChatPriv *priv;
+
+ g_return_val_if_fail (EMPATHY_IS_GROUP_CHAT (chat), FALSE);
+
+ group_chat = EMPATHY_GROUP_CHAT (chat);
+ priv = GET_PRIV (group_chat);
+
+ return priv->contacts_visible;
+}
+
+void
+empathy_group_chat_set_show_contacts (EmpathyGroupChat *chat,
+ gboolean show)
+{
+ EmpathyGroupChat *group_chat;
+ EmpathyGroupChatPriv *priv;
+
+ g_return_if_fail (EMPATHY_IS_GROUP_CHAT (chat));
+
+ group_chat = EMPATHY_GROUP_CHAT (chat);
+ priv = GET_PRIV (group_chat);
+
+ priv->contacts_visible = show;
+
+ if (show) {
+ gtk_widget_show (priv->scrolled_window_contacts);
+ gtk_paned_set_position (GTK_PANED (priv->hpaned),
+ priv->contacts_width);
+ } else {
+ priv->contacts_width = gtk_paned_get_position (GTK_PANED (priv->hpaned));
+ gtk_widget_hide (priv->scrolled_window_contacts);
+ }
+}
+
+void
+empathy_group_chat_set_topic (EmpathyGroupChat *chat)
+{
+ EmpathyGroupChatPriv *priv;
+ EmpathyChatWindow *chat_window;
+ GtkWidget *chat_dialog;
+ GtkWidget *dialog;
+ GtkWidget *entry;
+ GtkWidget *hbox;
+ const gchar *topic;
+
+ g_return_if_fail (EMPATHY_IS_GROUP_CHAT (chat));
+
+ priv = GET_PRIV (chat);
+
+ chat_window = empathy_chat_get_window (EMPATHY_CHAT (chat));
+ chat_dialog = empathy_chat_window_get_dialog (chat_window);
+
+ dialog = gtk_message_dialog_new (GTK_WINDOW (chat_dialog),
+ 0,
+ GTK_MESSAGE_QUESTION,
+ GTK_BUTTONS_OK_CANCEL,
+ _("Enter the new topic you want to set for this room:"));
+
+ topic = gtk_label_get_text (GTK_LABEL (priv->label_topic));
+
+ hbox = gtk_hbox_new (FALSE, 0);
+ gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox),
+ hbox, FALSE, TRUE, 4);
+
+ entry = gtk_entry_new ();
+ gtk_entry_set_text (GTK_ENTRY (entry), topic);
+ gtk_editable_select_region (GTK_EDITABLE (entry), 0, -1);
+
+ gtk_box_pack_start (GTK_BOX (hbox), entry, TRUE, TRUE, 4);
+
+ g_object_set (GTK_MESSAGE_DIALOG (dialog)->label, "use-markup", TRUE, NULL);
+ g_object_set_data (G_OBJECT (dialog), "entry", entry);
+
+ g_signal_connect (entry, "activate",
+ G_CALLBACK (group_chat_topic_entry_activate_cb),
+ dialog);
+ g_signal_connect (dialog, "response",
+ G_CALLBACK (group_chat_topic_response_cb),
+ chat);
+
+ gtk_widget_show_all (dialog);
+}
+
+static void
+group_chat_create_ui (EmpathyGroupChat *chat)
+{
+ EmpathyGroupChatPriv *priv;
+ GladeXML *glade;
+ GList *list = NULL;
+
+ priv = GET_PRIV (chat);
+
+ glade = empathy_glade_get_file ("empathy-group-chat.glade",
+ "group_chat_widget",
+ NULL,
+ "group_chat_widget", &priv->widget,
+ "hpaned", &priv->hpaned,
+ "vbox_left", &priv->vbox_left,
+ "scrolled_window_chat", &priv->scrolled_window_chat,
+ "scrolled_window_input", &priv->scrolled_window_input,
+ "hbox_topic", &priv->hbox_topic,
+ "label_topic", &priv->label_topic,
+ "scrolled_window_contacts", &priv->scrolled_window_contacts,
+ NULL);
+
+ empathy_glade_connect (glade,
+ chat,
+ "group_chat_widget", "destroy", group_chat_widget_destroy_cb,
+ NULL);
+
+ g_object_unref (glade);
+
+ g_object_set_data (G_OBJECT (priv->widget), "chat", g_object_ref (chat));
+
+ /* Add room GtkTextView. */
+ gtk_container_add (GTK_CONTAINER (priv->scrolled_window_chat),
+ GTK_WIDGET (EMPATHY_CHAT (chat)->view));
+ gtk_widget_show (GTK_WIDGET (EMPATHY_CHAT (chat)->view));
+
+ /* Add input GtkTextView */
+ gtk_container_add (GTK_CONTAINER (priv->scrolled_window_input),
+ EMPATHY_CHAT (chat)->input_text_view);
+ gtk_widget_show (EMPATHY_CHAT (chat)->input_text_view);
+
+ /* Add nick name completion */
+ priv->completion = g_completion_new ((GCompletionFunc) empathy_contact_get_name);
+ g_completion_set_compare (priv->completion,
+ group_chat_contacts_completion_func);
+
+ /* Set widget focus order */
+ list = g_list_append (NULL, priv->scrolled_window_input);
+ gtk_container_set_focus_chain (GTK_CONTAINER (priv->vbox_left), list);
+ g_list_free (list);
+
+ list = g_list_append (NULL, priv->vbox_left);
+ list = g_list_append (list, priv->scrolled_window_contacts);
+ gtk_container_set_focus_chain (GTK_CONTAINER (priv->hpaned), list);
+ g_list_free (list);
+
+ list = g_list_append (NULL, priv->hpaned);
+ list = g_list_append (list, priv->hbox_topic);
+ gtk_container_set_focus_chain (GTK_CONTAINER (priv->widget), list);
+ g_list_free (list);
+}
+
+static void
+group_chat_widget_destroy_cb (GtkWidget *widget,
+ EmpathyGroupChat *chat)
+{
+ empathy_debug (DEBUG_DOMAIN, "Destroyed");
+
+ g_object_unref (chat);
+}
+
+static void
+group_chat_members_changed_cb (EmpathyTpChatroom *tp_chat,
+ EmpathyContact *contact,
+ EmpathyContact *actor,
+ guint reason,
+ gchar *message,
+ gboolean is_member,
+ EmpathyGroupChat *chat)
+{
+ if (!EMPATHY_CHAT (chat)->block_events) {
+ gchar *str;
+ if (is_member) {
+ str = g_strdup_printf (_("%s has joined the room"),
+ empathy_contact_get_name (contact));
+ } else {
+ str = g_strdup_printf (_("%s has left the room"),
+ empathy_contact_get_name (contact));
+ }
+ empathy_chat_view_append_event (EMPATHY_CHAT (chat)->view, str);
+ g_free (str);
+ }
+}
+
+static void
+group_chat_topic_entry_activate_cb (GtkWidget *entry,
+ GtkDialog *dialog)
+{
+ gtk_dialog_response (dialog, GTK_RESPONSE_OK);
+}
+
+static void
+group_chat_topic_response_cb (GtkWidget *dialog,
+ gint response,
+ EmpathyGroupChat *chat)
+{
+ if (response == GTK_RESPONSE_OK) {
+ GtkWidget *entry;
+ const gchar *topic;
+
+ entry = g_object_get_data (G_OBJECT (dialog), "entry");
+ topic = gtk_entry_get_text (GTK_ENTRY (entry));
+
+ if (!G_STR_EMPTY (topic)) {
+ EmpathyGroupChatPriv *priv;
+
+ priv = GET_PRIV (chat);
+
+ empathy_tp_chatroom_set_topic (priv->tp_chat, topic);
+ }
+ }
+
+ gtk_widget_destroy (dialog);
+}
+
+static const gchar *
+group_chat_get_name (EmpathyChat *chat)
+{
+ EmpathyGroupChat *group_chat;
+ EmpathyGroupChatPriv *priv;
+
+ g_return_val_if_fail (EMPATHY_IS_GROUP_CHAT (chat), NULL);
+
+ group_chat = EMPATHY_GROUP_CHAT (chat);
+ priv = GET_PRIV (group_chat);
+
+ if (!priv->name) {
+ const gchar *id;
+ const gchar *server;
+
+ id = empathy_chat_get_id (chat);
+ server = strstr (id, "@");
+
+ if (server) {
+ priv->name = g_strndup (id, server - id);
+ } else {
+ priv->name = g_strdup (id);
+ }
+ }
+
+ return priv->name;
+}
+
+static gchar *
+group_chat_get_tooltip (EmpathyChat *chat)
+{
+ EmpathyGroupChat *group_chat;
+ EmpathyGroupChatPriv *priv;
+
+ g_return_val_if_fail (EMPATHY_IS_GROUP_CHAT (chat), NULL);
+
+ group_chat = EMPATHY_GROUP_CHAT (chat);
+ priv = GET_PRIV (group_chat);
+
+ if (priv->topic) {
+ gchar *topic, *tmp;
+
+ topic = g_strdup_printf (_("Topic: %s"), priv->topic);
+ tmp = g_strdup_printf ("%s\n%s", priv->name, topic);
+ g_free (topic);
+
+ return tmp;
+ }
+
+ return g_strdup (priv->name);
+}
+
+static const gchar *
+group_chat_get_status_icon_name (EmpathyChat *chat)
+{
+ return EMPATHY_IMAGE_GROUP_MESSAGE;
+}
+
+static GtkWidget *
+group_chat_get_widget (EmpathyChat *chat)
+{
+ EmpathyGroupChat *group_chat;
+ EmpathyGroupChatPriv *priv;
+
+ g_return_val_if_fail (EMPATHY_IS_GROUP_CHAT (chat), NULL);
+
+ group_chat = EMPATHY_GROUP_CHAT (chat);
+ priv = GET_PRIV (group_chat);
+
+ return priv->widget;
+}
+
+static gboolean
+group_chat_is_group_chat (EmpathyChat *chat)
+{
+ g_return_val_if_fail (EMPATHY_IS_GROUP_CHAT (chat), FALSE);
+
+ return TRUE;
+}
+
+static void
+group_chat_set_tp_chat (EmpathyChat *chat,
+ EmpathyTpChat *tp_chat)
+{
+ EmpathyGroupChat *group_chat;
+ EmpathyGroupChatPriv *priv;
+
+ g_return_if_fail (EMPATHY_IS_GROUP_CHAT (chat));
+
+ group_chat = EMPATHY_GROUP_CHAT (chat);
+ priv = GET_PRIV (group_chat);
+
+ /* Free all resources related to tp_chat */
+ if (priv->tp_chat) {
+ g_object_unref (priv->tp_chat);
+ priv->tp_chat = NULL;
+ }
+ if (priv->view) {
+ gtk_widget_destroy (GTK_WIDGET (priv->view));
+ g_object_unref (priv->store);
+ }
+ g_free (priv->name);
+ g_free (priv->topic);
+ priv->name = NULL;
+ priv->topic = NULL;
+
+ if (!tp_chat) {
+ /* We are no more connected */
+ gtk_widget_set_sensitive (priv->hbox_topic, FALSE);
+ gtk_widget_set_sensitive (priv->scrolled_window_contacts, FALSE);
+ return;
+ }
+
+ /* We are connected */
+ gtk_widget_set_sensitive (priv->hbox_topic, TRUE);
+ gtk_widget_set_sensitive (priv->scrolled_window_contacts, TRUE);
+
+ priv->tp_chat = g_object_ref (tp_chat);
+
+ if (empathy_tp_chatroom_get_invitation (priv->tp_chat, NULL, NULL)) {
+ empathy_tp_chatroom_accept_invitation (priv->tp_chat);
+ }
+
+ /* Create contact list */
+ priv->store = empathy_contact_list_store_new (EMPATHY_CONTACT_LIST (priv->tp_chat));
+ priv->view = empathy_contact_list_view_new (priv->store,
+ EMPATHY_CONTACT_LIST_FEATURE_CONTACT_CHAT |
+ EMPATHY_CONTACT_LIST_FEATURE_CONTACT_CALL |
+ EMPATHY_CONTACT_LIST_FEATURE_CONTACT_LOG |
+ EMPATHY_CONTACT_LIST_FEATURE_CONTACT_FT |
+ EMPATHY_CONTACT_LIST_FEATURE_CONTACT_INVITE |
+ EMPATHY_CONTACT_LIST_FEATURE_CONTACT_INFO);
+
+ gtk_container_add (GTK_CONTAINER (priv->scrolled_window_contacts),
+ GTK_WIDGET (priv->view));
+ gtk_widget_show (GTK_WIDGET (priv->view));
+
+ /* Connect signals */
+ g_signal_connect (priv->tp_chat, "members-changed",
+ G_CALLBACK (group_chat_members_changed_cb),
+ chat);
+ g_signal_connect (priv->tp_chat, "notify::subject",
+ G_CALLBACK (group_chat_subject_notify_cb),
+ chat);
+ g_signal_connect (priv->tp_chat, "notify::name",
+ G_CALLBACK (group_chat_name_notify_cb),
+ chat);
+}
+
+static void
+group_chat_subject_notify_cb (EmpathyTpChat *tp_chat,
+ GParamSpec *param,
+ EmpathyGroupChat *chat)
+{
+ EmpathyGroupChatPriv *priv;
+ gchar *str = NULL;
+
+ priv = GET_PRIV (chat);
+
+ g_object_get (priv->tp_chat, "subject", &str, NULL);
+ if (!tp_strdiff (priv->topic, str)) {
+ g_free (str);
+ return;
+ }
+
+ g_free (priv->topic);
+ priv->topic = str;
+ gtk_label_set_text (GTK_LABEL (priv->label_topic), priv->topic);
+
+ if (!EMPATHY_CHAT (chat)->block_events) {
+ if (!G_STR_EMPTY (priv->topic)) {
+ str = g_strdup_printf (_("Topic set to: %s"), priv->topic);
+ } else {
+ str = g_strdup (_("No topic defined"));
+ }
+ empathy_chat_view_append_event (EMPATHY_CHAT (chat)->view, str);
+ g_free (str);
+ }
+}
+
+static void
+group_chat_name_notify_cb (EmpathyTpChat *tp_chat,
+ GParamSpec *param,
+ EmpathyGroupChat *chat)
+{
+ EmpathyGroupChatPriv *priv;
+
+ priv = GET_PRIV (chat);
+
+ g_free (priv->name);
+ g_object_get (priv->tp_chat, "name", &priv->name, NULL);
+}
+
+static gboolean
+group_chat_key_press_event (EmpathyChat *chat,
+ GdkEventKey *event)
+{
+ EmpathyGroupChatPriv *priv = GET_PRIV (chat);
+
+ if (!(event->state & (GDK_CONTROL_MASK | GDK_SHIFT_MASK)) &&
+ event->keyval == GDK_Tab) {
+ GtkTextBuffer *buffer;
+ GtkTextIter start, current;
+ gchar *nick, *completed;
+ GList *list, *completed_list;
+ gboolean is_start_of_buffer;
+
+ buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (EMPATHY_CHAT (chat)->input_text_view));
+ gtk_text_buffer_get_iter_at_mark (buffer, &current, gtk_text_buffer_get_insert (buffer));
+
+ /* Get the start of the nick to complete. */
+ gtk_text_buffer_get_iter_at_mark (buffer, &start, gtk_text_buffer_get_insert (buffer));
+ gtk_text_iter_backward_word_start (&start);
+ is_start_of_buffer = gtk_text_iter_is_start (&start);
+
+ list = empathy_contact_list_get_members (EMPATHY_CONTACT_LIST (priv->tp_chat));
+ g_completion_add_items (priv->completion, list);
+
+ nick = gtk_text_buffer_get_text (buffer, &start, &current, FALSE);
+ completed_list = g_completion_complete (priv->completion,
+ nick,
+ &completed);
+
+ g_free (nick);
+
+ if (completed) {
+ guint len;
+ const gchar *text;
+ gchar *complete_char = NULL;
+
+ gtk_text_buffer_delete (buffer, &start, &current);
+
+ len = g_list_length (completed_list);
+
+ if (len == 1) {
+ /* If we only have one hit, use that text
+ * instead of the text in completed since the
+ * completed text will use the typed string
+ * which might be cased all wrong.
+ * Fixes #120876
+ * */
+ text = empathy_contact_get_name (completed_list->data);
+ } else {
+ text = completed;
+ }
+
+ gtk_text_buffer_insert_at_cursor (buffer, text, strlen (text));
+
+ if (len == 1 && is_start_of_buffer &&
+ empathy_conf_get_string (empathy_conf_get (),
+ EMPATHY_PREFS_CHAT_NICK_COMPLETION_CHAR,
+ &complete_char) &&
+ complete_char != NULL) {
+ gtk_text_buffer_insert_at_cursor (buffer,
+ complete_char,
+ strlen (complete_char));
+ gtk_text_buffer_insert_at_cursor (buffer, " ", 1);
+ g_free (complete_char);
+ }
+
+ g_free (completed);
+ }
+
+ g_completion_clear_items (priv->completion);
+
+ g_list_foreach (list, (GFunc) g_object_unref, NULL);
+ g_list_free (list);
+
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static gint
+group_chat_contacts_completion_func (const gchar *s1,
+ const gchar *s2,
+ gsize n)
+{
+ gchar *tmp, *nick1, *nick2;
+ gint ret;
+
+ tmp = g_utf8_normalize (s1, -1, G_NORMALIZE_DEFAULT);
+ nick1 = g_utf8_casefold (tmp, -1);
+ g_free (tmp);
+
+ tmp = g_utf8_normalize (s2, -1, G_NORMALIZE_DEFAULT);
+ nick2 = g_utf8_casefold (tmp, -1);
+ g_free (tmp);
+
+ ret = strncmp (nick1, nick2, n);
+
+ g_free (nick1);
+ g_free (nick2);
+
+ return ret;
+}
+
diff --git a/gnome-2-22/libempathy-gtk/empathy-group-chat.glade b/gnome-2-22/libempathy-gtk/empathy-group-chat.glade
new file mode 100644
index 000000000..5b40dc375
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-group-chat.glade
@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
+<!--*- mode: xml -*-->
+<glade-interface>
+ <widget class="GtkWindow" id="group_chat_window">
+ <property name="border_width">6</property>
+ <property name="title" translatable="yes">Group Chat</property>
+ <property name="default_width">1000</property>
+ <property name="default_height">800</property>
+ <property name="icon_name">system-users</property>
+ <child>
+ <widget class="GtkVBox" id="group_chat_widget">
+ <property name="visible">True</property>
+ <property name="border_width">4</property>
+ <property name="spacing">6</property>
+ <child>
+ <widget class="GtkHBox" id="hbox_topic">
+ <property name="visible">True</property>
+ <property name="spacing">6</property>
+ <child>
+ <widget class="GtkLabel" id="label80">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0</property>
+ <property name="label" translatable="yes">&lt;b&gt;Topic:&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label_topic">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="xalign">0</property>
+ <property name="use_markup">True</property>
+ <property name="wrap">True</property>
+ <property name="selectable">True</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_END</property>
+ <property name="single_line_mode">True</property>
+ </widget>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">2</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkHPaned" id="hpaned">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <widget class="GtkVBox" id="vbox_left">
+ <property name="width_request">600</property>
+ <property name="height_request">500</property>
+ <property name="visible">True</property>
+ <property name="spacing">6</property>
+ <child>
+ <widget class="GtkScrolledWindow" id="scrolled_window_chat">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+ <property name="shadow_type">GTK_SHADOW_IN</property>
+ <child>
+ <placeholder/>
+ </child>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkScrolledWindow" id="scrolled_window_input">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
+ <property name="vscrollbar_policy">GTK_POLICY_NEVER</property>
+ <property name="shadow_type">GTK_SHADOW_IN</property>
+ <child>
+ <placeholder/>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="resize">True</property>
+ <property name="shrink">True</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkScrolledWindow" id="scrolled_window_contacts">
+ <property name="width_request">200</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
+ <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+ <property name="shadow_type">GTK_SHADOW_IN</property>
+ <child>
+ <placeholder/>
+ </child>
+ </widget>
+ <packing>
+ <property name="resize">True</property>
+ <property name="shrink">True</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+</glade-interface>
diff --git a/gnome-2-22/libempathy-gtk/empathy-group-chat.h b/gnome-2-22/libempathy-gtk/empathy-group-chat.h
new file mode 100644
index 000000000..e0ce79462
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-group-chat.h
@@ -0,0 +1,67 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2002-2007 Imendio AB
+ * Copyright (C) 2007 Collabora Ltd.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * 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: Mikael Hallendal <micke@imendio.com>
+ * Richard Hult <richard@imendio.com>
+ * Martyn Russell <martyn@imendio.com>
+ * Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#ifndef __EMPATHY_GROUP_CHAT_H__
+#define __EMPATHY_GROUP_CHAT_H__
+
+G_BEGIN_DECLS
+
+#include <libempathy/empathy-tp-chatroom.h>
+#include <libempathy/empathy-contact.h>
+
+#define EMPATHY_TYPE_GROUP_CHAT (empathy_group_chat_get_type ())
+#define EMPATHY_GROUP_CHAT(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), EMPATHY_TYPE_GROUP_CHAT, EmpathyGroupChat))
+#define EMPATHY_GROUP_CHAT_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), EMPATHY_TYPE_GROUP_CHAT, EmpathyGroupChatClass))
+#define EMPATHY_IS_GROUP_CHAT(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), EMPATHY_TYPE_GROUP_CHAT))
+#define EMPATHY_IS_GROUP_CHAT_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), EMPATHY_TYPE_GROUP_CHAT))
+#define EMPATHY_GROUP_CHAT_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), EMPATHY_TYPE_GROUP_CHAT, EmpathyGroupChatClass))
+
+typedef struct _EmpathyGroupChat EmpathyGroupChat;
+typedef struct _EmpathyGroupChatClass EmpathyGroupChatClass;
+typedef struct _EmpathyGroupChatPriv EmpathyGroupChatPriv;
+
+#include "empathy-chat.h"
+
+struct _EmpathyGroupChat {
+ EmpathyChat parent;
+
+ EmpathyGroupChatPriv *priv;
+};
+
+struct _EmpathyGroupChatClass {
+ EmpathyChatClass parent_class;
+};
+
+GType empathy_group_chat_get_type (void) G_GNUC_CONST;
+EmpathyGroupChat *empathy_group_chat_new (EmpathyTpChatroom *tp_chat);
+gboolean empathy_group_chat_get_show_contacts (EmpathyGroupChat *chat);
+void empathy_group_chat_set_show_contacts (EmpathyGroupChat *chat,
+ gboolean show);
+void empathy_group_chat_set_topic (EmpathyGroupChat *chat);
+
+G_END_DECLS
+
+#endif /* __EMPATHY_GROUP_CHAT_H__ */
diff --git a/gnome-2-22/libempathy-gtk/empathy-images.h b/gnome-2-22/libempathy-gtk/empathy-images.h
new file mode 100644
index 000000000..254467819
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-images.h
@@ -0,0 +1,45 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2007 Collabora Ltd.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Authors: Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#ifndef __EMPATHY_IMAGES_H__
+#define __EMPATHY_IMAGES_H__
+
+G_BEGIN_DECLS
+
+#define EMPATHY_IMAGE_OFFLINE "empathy-offline"
+#define EMPATHY_IMAGE_HIDDEN "empathy-offline"
+#define EMPATHY_IMAGE_AVAILABLE "empathy-available"
+#define EMPATHY_IMAGE_BUSY "empathy-busy"
+#define EMPATHY_IMAGE_AWAY "empathy-away"
+#define EMPATHY_IMAGE_EXT_AWAY "empathy-extended-away"
+#define EMPATHY_IMAGE_UNKNOWN "empathy-pending"
+
+#define EMPATHY_IMAGE_MESSAGE "im-message"
+#define EMPATHY_IMAGE_NEW_MESSAGE "im-message-new"
+#define EMPATHY_IMAGE_TYPING "user-typing"
+#define EMPATHY_IMAGE_CONTACT_INFORMATION "gtk-info"
+#define EMPATHY_IMAGE_GROUP_MESSAGE "system-users"
+#define EMPATHY_IMAGE_VOIP "gnome-stock-mic"
+#define EMPATHY_IMAGE_LOG "document-open-recent"
+
+G_END_DECLS
+
+#endif /* __EMPATHY_IMAGES_ICONS_H__ */
diff --git a/gnome-2-22/libempathy-gtk/empathy-irc-network-dialog.c b/gnome-2-22/libempathy-gtk/empathy-irc-network-dialog.c
new file mode 100644
index 000000000..9a42c649c
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-irc-network-dialog.c
@@ -0,0 +1,579 @@
+/*
+ * Copyright (C) 2007-2008 Guillaume Desmottes
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Authors: Guillaume Desmottes <gdesmott@gnome.org>
+ */
+
+#include "config.h"
+
+#include <stdlib.h>
+#include <string.h>
+#include <sys/stat.h>
+
+#include <glib/gi18n.h>
+#include <gtk/gtk.h>
+#include <glade/glade.h>
+
+#include <libmissioncontrol/mc-account.h>
+#include <libmissioncontrol/mc-protocol.h>
+
+#include <libempathy/empathy-utils.h>
+#include <libempathy/empathy-debug.h>
+
+#include <libempathy/empathy-irc-network-manager.h>
+#include "empathy-ui-utils.h"
+#include "totem-subtitle-encoding.h"
+
+#include "empathy-irc-network-dialog.h"
+
+#define DEBUG_DOMAIN "AccountWidgetIRC"
+
+typedef struct {
+ EmpathyIrcNetwork *network;
+
+ GtkWidget *dialog;
+ GtkWidget *button_close;
+
+ GtkWidget *entry_network;
+ GtkWidget *combobox_charset;
+
+ GtkWidget *treeview_servers;
+ GtkWidget *button_add;
+ GtkWidget *button_remove;
+ GtkWidget *button_up;
+ GtkWidget *button_down;
+} EmpathyIrcNetworkDialog;
+
+static void
+irc_network_dialog_destroy_cb (GtkWidget *widget,
+ EmpathyIrcNetworkDialog *dialog)
+{
+ g_object_unref (dialog->network);
+
+ g_slice_free (EmpathyIrcNetworkDialog, dialog);
+}
+
+static void
+irc_network_dialog_close_clicked_cb (GtkWidget *widget,
+ EmpathyIrcNetworkDialog *dialog)
+{
+ gtk_widget_destroy (dialog->dialog);
+}
+
+enum {
+ COL_SRV_OBJ,
+ COL_ADR,
+ COL_PORT,
+ COL_SSL
+};
+
+static void
+add_server_to_store (GtkListStore *store,
+ EmpathyIrcServer *server,
+ GtkTreeIter *iter)
+{
+ gchar *address;
+ guint port;
+ gboolean ssl;
+
+ g_object_get (server,
+ "address", &address,
+ "port", &port,
+ "ssl", &ssl,
+ NULL);
+
+ gtk_list_store_insert_with_values (store, iter, -1,
+ COL_SRV_OBJ, server,
+ COL_ADR, address,
+ COL_PORT, port,
+ COL_SSL, ssl,
+ -1);
+
+ g_free (address);
+}
+
+static void
+irc_network_dialog_setup (EmpathyIrcNetworkDialog *dialog)
+{
+ gchar *name, *charset;
+ GSList *servers, *l;
+ GtkListStore *store;
+
+ g_object_get (dialog->network,
+ "name", &name,
+ "charset", &charset,
+ NULL);
+ gtk_entry_set_text (GTK_ENTRY (dialog->entry_network), name);
+
+ store = GTK_LIST_STORE (gtk_tree_view_get_model (
+ GTK_TREE_VIEW (dialog->treeview_servers)));
+
+ servers = empathy_irc_network_get_servers (dialog->network);
+ for (l = servers; l != NULL; l = g_slist_next (l))
+ {
+ EmpathyIrcServer *server = l->data;
+ GtkTreeIter iter;
+
+ add_server_to_store (store, server, &iter);
+ }
+
+ totem_subtitle_encoding_set (GTK_COMBO_BOX (dialog->combobox_charset),
+ charset);
+
+ g_slist_foreach (servers, (GFunc) g_object_unref, NULL);
+ g_slist_free (servers);
+ g_free (name);
+ g_free (charset);
+}
+
+static void
+irc_network_dialog_address_edited_cb (GtkCellRendererText *renderer,
+ gchar *path,
+ gchar *new_text,
+ EmpathyIrcNetworkDialog *dialog)
+{
+ EmpathyIrcServer *server;
+ GtkTreeModel *model;
+ GtkTreePath *treepath;
+ GtkTreeIter iter;
+
+ model = gtk_tree_view_get_model (GTK_TREE_VIEW (dialog->treeview_servers));
+ treepath = gtk_tree_path_new_from_string (path);
+ gtk_tree_model_get_iter (model, &iter, treepath);
+ gtk_tree_model_get (model, &iter,
+ COL_SRV_OBJ, &server,
+ -1);
+ gtk_list_store_set (GTK_LIST_STORE (model), &iter,
+ COL_ADR, new_text,
+ -1);
+
+ g_object_set (server, "address", new_text, NULL);
+
+ gtk_tree_path_free (treepath);
+ g_object_unref (server);
+}
+
+static void
+irc_network_dialog_port_edited_cb (GtkCellRendererText *renderer,
+ gchar *path,
+ gchar *new_text,
+ EmpathyIrcNetworkDialog *dialog)
+{
+ EmpathyIrcServer *server;
+ GtkTreeModel *model;
+ GtkTreePath *treepath;
+ GtkTreeIter iter;
+ guint port;
+
+ port = strtoul (new_text, NULL, 10);
+ model = gtk_tree_view_get_model (GTK_TREE_VIEW (dialog->treeview_servers));
+ treepath = gtk_tree_path_new_from_string (path);
+ gtk_tree_model_get_iter (model, &iter, treepath);
+ gtk_tree_model_get (model, &iter,
+ COL_SRV_OBJ, &server,
+ -1);
+ gtk_list_store_set (GTK_LIST_STORE (model), &iter,
+ COL_PORT, port,
+ -1);
+
+ g_object_set (server, "port", port, NULL);
+
+ gtk_tree_path_free (treepath);
+ g_object_unref (server);
+}
+
+static void
+irc_network_dialog_ssl_toggled_cb (GtkCellRendererText *renderer,
+ gchar *path,
+ EmpathyIrcNetworkDialog *dialog)
+{
+ EmpathyIrcServer *server;
+ GtkTreeModel *model;
+ GtkTreePath *treepath;
+ GtkTreeIter iter;
+ gboolean ssl;
+
+ model = gtk_tree_view_get_model (GTK_TREE_VIEW (dialog->treeview_servers));
+ treepath = gtk_tree_path_new_from_string (path);
+ gtk_tree_model_get_iter (model, &iter, treepath);
+ gtk_tree_model_get (model, &iter,
+ COL_SRV_OBJ, &server,
+ COL_SSL, &ssl,
+ -1);
+ ssl = !ssl;
+ gtk_list_store_set (GTK_LIST_STORE (model), &iter,
+ COL_SSL, ssl,
+ -1);
+
+ g_object_set (server, "ssl", ssl, NULL);
+
+ gtk_tree_path_free (treepath);
+ g_object_unref (server);
+}
+
+static gboolean
+irc_network_dialog_network_focus_cb (GtkWidget *widget,
+ GdkEventFocus *event,
+ EmpathyIrcNetworkDialog *dialog)
+{
+ const gchar *str;
+
+ str = gtk_entry_get_text (GTK_ENTRY (widget));
+
+ g_object_set (dialog->network, "name", str, NULL);
+
+ return FALSE;
+}
+
+static void
+irc_network_dialog_network_update_buttons (EmpathyIrcNetworkDialog *dialog)
+{
+ GtkTreeSelection *selection;
+ GtkTreeModel *model;
+ GtkTreePath *path;
+ GtkTreeIter iter;
+ gboolean can_remove = FALSE, can_move_up = FALSE, can_move_down = FALSE;
+ int selected;
+
+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (
+ dialog->treeview_servers));
+
+ if (gtk_tree_selection_get_selected (selection, &model, &iter))
+ {
+ path = gtk_tree_model_get_path (model, &iter);
+
+ selected = gtk_tree_path_get_indices (path)[0];
+
+ can_remove = TRUE;
+ can_move_up = selected > 0;
+ can_move_down =
+ selected < gtk_tree_model_iter_n_children (model, NULL) - 1;
+
+ gtk_tree_path_free (path);
+ }
+
+ gtk_widget_set_sensitive (dialog->button_remove, can_remove);
+ gtk_widget_set_sensitive (dialog->button_up, can_move_up);
+ gtk_widget_set_sensitive (dialog->button_down, can_move_down);
+}
+
+static void
+irc_network_dialog_button_add_clicked_cb (GtkWidget *widget,
+ EmpathyIrcNetworkDialog *dialog)
+{
+ EmpathyIrcServer *server;
+ GtkListStore *store;
+ GtkTreeIter iter;
+ GtkTreePath *path;
+ GtkTreeViewColumn *column;
+
+ store = GTK_LIST_STORE (gtk_tree_view_get_model (
+ GTK_TREE_VIEW (dialog->treeview_servers)));
+
+ server = empathy_irc_server_new (_("new server"), 6667, FALSE);
+ empathy_irc_network_append_server (dialog->network, server);
+ add_server_to_store (store, server, &iter);
+
+ path = gtk_tree_model_get_path (GTK_TREE_MODEL (store), &iter);
+ column = gtk_tree_view_get_column (GTK_TREE_VIEW (dialog->treeview_servers),
+ 0);
+ gtk_tree_view_set_cursor (GTK_TREE_VIEW (dialog->treeview_servers), path,
+ column, TRUE);
+
+ irc_network_dialog_network_update_buttons (dialog);
+
+ gtk_tree_path_free (path);
+ g_object_unref (server);
+}
+
+static void
+irc_network_dialog_button_remove_clicked_cb (GtkWidget *widget,
+ EmpathyIrcNetworkDialog *dialog)
+{
+ GtkTreeSelection *selection;
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+ EmpathyIrcServer *server;
+
+ selection = gtk_tree_view_get_selection (
+ GTK_TREE_VIEW (dialog->treeview_servers));
+
+ if (!gtk_tree_selection_get_selected (selection, &model, &iter))
+ return;
+
+ gtk_tree_model_get (model, &iter, COL_SRV_OBJ, &server, -1);
+
+ gtk_list_store_remove (GTK_LIST_STORE (model), &iter);
+ empathy_irc_network_remove_server (dialog->network, server);
+
+ irc_network_dialog_network_update_buttons (dialog);
+
+ g_object_unref (server);
+}
+
+static void
+irc_network_dialog_button_up_clicked_cb (GtkWidget *widget,
+ EmpathyIrcNetworkDialog *dialog)
+{
+ GtkTreeSelection *selection;
+ GtkTreeModel *model;
+ GtkTreeIter iter, iter_prev;
+ GtkTreePath *path;
+ gint *pos;
+ EmpathyIrcServer *server;
+
+ selection = gtk_tree_view_get_selection (
+ GTK_TREE_VIEW (dialog->treeview_servers));
+
+ if (!gtk_tree_selection_get_selected (selection, &model, &iter))
+ return;
+
+ path = gtk_tree_model_get_path (model, &iter);
+
+ if (!gtk_tree_path_prev (path))
+ {
+ gtk_tree_path_free (path);
+ return;
+ }
+
+ gtk_tree_model_get (model, &iter, COL_SRV_OBJ, &server, -1);
+
+ gtk_tree_model_get_iter (model, &iter_prev, path);
+ gtk_list_store_swap (GTK_LIST_STORE (model), &iter_prev, &iter);
+
+ pos = gtk_tree_path_get_indices (path);
+ empathy_irc_network_set_server_position (dialog->network, server, *pos);
+
+ irc_network_dialog_network_update_buttons (dialog);
+
+ g_object_unref (server);
+ gtk_tree_path_free (path);
+}
+
+static void
+irc_network_dialog_button_down_clicked_cb (GtkWidget *widget,
+ EmpathyIrcNetworkDialog *dialog)
+{
+ GtkTreeSelection *selection;
+ GtkTreeModel *model;
+ GtkTreeIter iter, iter_prev;
+ GtkTreePath *path;
+ EmpathyIrcServer *server;
+ gint *pos;
+
+ selection = gtk_tree_view_get_selection (
+ GTK_TREE_VIEW (dialog->treeview_servers));
+
+ if (!gtk_tree_selection_get_selected (selection, &model, &iter))
+ return;
+
+ path = gtk_tree_model_get_path (model, &iter);
+
+ gtk_tree_path_next (path);
+ if (!gtk_tree_model_get_iter (model, &iter_prev, path))
+ {
+ gtk_tree_path_free (path);
+ return;
+ }
+
+ gtk_tree_model_get (model, &iter, COL_SRV_OBJ, &server, -1);
+
+ gtk_list_store_swap (GTK_LIST_STORE (model), &iter_prev, &iter);
+
+ pos = gtk_tree_path_get_indices (path);
+ empathy_irc_network_set_server_position (dialog->network, server, *pos);
+
+ irc_network_dialog_network_update_buttons (dialog);
+
+ gtk_tree_path_free (path);
+}
+
+static void
+irc_network_dialog_selection_changed_cb (GtkTreeSelection *treeselection,
+ EmpathyIrcNetworkDialog *dialog)
+{
+ irc_network_dialog_network_update_buttons (dialog);
+}
+
+static void
+irc_network_dialog_combobox_charset_changed_cb (GtkWidget *combobox,
+ EmpathyIrcNetworkDialog *dialog)
+{
+ const gchar *charset;
+
+ charset = totem_subtitle_encoding_get_selected (GTK_COMBO_BOX (combobox));
+ g_object_set (dialog->network, "charset", charset, NULL);
+}
+
+static void
+change_network (EmpathyIrcNetworkDialog *dialog,
+ EmpathyIrcNetwork *network)
+{
+ GtkListStore *store;
+
+ if (dialog->network == network)
+ /* No need to change */
+ return;
+
+ if (dialog->network != NULL)
+ {
+ g_object_unref (dialog->network);
+ }
+
+ dialog->network = network;
+ g_object_ref (network);
+
+ store = GTK_LIST_STORE (gtk_tree_view_get_model (
+ GTK_TREE_VIEW (dialog->treeview_servers)));
+ gtk_list_store_clear (store);
+
+ irc_network_dialog_setup (dialog);
+}
+
+/**
+ * empathy_irc_network_dialog_show:
+ * @network: the #EmpathyIrcNetwork to configure
+ * @parent: the parent of this dialog
+ *
+ * Display a dialog to configure a given #EmpathyIrcNetwork.
+ * This function is a singleton so if a configuration dialog already
+ * exists we use this one to edit the network.
+ *
+ * Returns: The displayed #GtkDialog
+ */
+GtkWidget *
+empathy_irc_network_dialog_show (EmpathyIrcNetwork *network,
+ GtkWidget *parent)
+{
+ static EmpathyIrcNetworkDialog *dialog = NULL;
+ GladeXML *glade;
+ GtkListStore *store;
+ GtkCellRenderer *renderer;
+ GtkAdjustment *adjustment;
+ GtkTreeSelection *selection;
+ GtkTreeViewColumn *column;
+
+ g_return_val_if_fail (network != NULL, NULL);
+
+ if (dialog != NULL)
+ {
+ change_network (dialog, network);
+ gtk_window_present (GTK_WINDOW (dialog->dialog));
+
+ return dialog->dialog;
+ }
+
+ dialog = g_slice_new0 (EmpathyIrcNetworkDialog);
+
+ dialog->network = network;
+ g_object_ref (dialog->network);
+
+ glade = empathy_glade_get_file ("empathy-account-widget-irc.glade",
+ "irc_network_dialog",
+ NULL,
+ "irc_network_dialog", &dialog->dialog,
+ "button_close", &dialog->button_close,
+ "entry_network", &dialog->entry_network,
+ "combobox_charset", &dialog->combobox_charset,
+ "treeview_servers", &dialog->treeview_servers,
+ "button_add", &dialog->button_add,
+ "button_remove", &dialog->button_remove,
+ "button_up", &dialog->button_up,
+ "button_down", &dialog->button_down,
+ NULL);
+
+ store = gtk_list_store_new (4, G_TYPE_OBJECT, G_TYPE_STRING,
+ G_TYPE_UINT, G_TYPE_BOOLEAN);
+ gtk_tree_view_set_model (GTK_TREE_VIEW (dialog->treeview_servers),
+ GTK_TREE_MODEL (store));
+ g_object_unref (store);
+
+ /* address */
+ renderer = gtk_cell_renderer_text_new ();
+ g_object_set (renderer, "editable", TRUE, NULL);
+ g_signal_connect (renderer, "edited",
+ G_CALLBACK (irc_network_dialog_address_edited_cb), dialog);
+ gtk_tree_view_insert_column_with_attributes (
+ GTK_TREE_VIEW (dialog->treeview_servers),
+ -1, _("Server"), renderer, "text", COL_ADR,
+ NULL);
+
+ /* port */
+ adjustment = (GtkAdjustment *) gtk_adjustment_new (6667, 1, G_MAXUINT16,
+ 1, 10, 0);
+ renderer = gtk_cell_renderer_spin_new ();
+ g_object_set (renderer,
+ "editable", TRUE,
+ "adjustment", adjustment,
+ NULL);
+ g_signal_connect (renderer, "edited",
+ G_CALLBACK (irc_network_dialog_port_edited_cb), dialog);
+ gtk_tree_view_insert_column_with_attributes (
+ GTK_TREE_VIEW (dialog->treeview_servers),
+ -1, _("Port"), renderer, "text", COL_PORT,
+ NULL);
+ column = gtk_tree_view_get_column (GTK_TREE_VIEW (dialog->treeview_servers),
+ 1);
+ gtk_tree_view_column_set_expand (column, TRUE);
+
+ /* SSL */
+ renderer = gtk_cell_renderer_toggle_new ();
+ g_object_set (renderer, "activatable", TRUE, NULL);
+ g_signal_connect (renderer, "toggled",
+ G_CALLBACK (irc_network_dialog_ssl_toggled_cb), dialog);
+ gtk_tree_view_insert_column_with_attributes (
+ GTK_TREE_VIEW (dialog->treeview_servers),
+ -1, _("SSL"), renderer, "active", COL_SSL,
+ NULL);
+
+ selection = gtk_tree_view_get_selection (
+ GTK_TREE_VIEW (dialog->treeview_servers));
+ gtk_tree_selection_set_mode (selection, GTK_SELECTION_SINGLE);
+
+ /* charset */
+ totem_subtitle_encoding_init (GTK_COMBO_BOX (dialog->combobox_charset));
+
+ irc_network_dialog_setup (dialog);
+
+ empathy_glade_connect (glade, dialog,
+ "irc_network_dialog", "destroy", irc_network_dialog_destroy_cb,
+ "button_close", "clicked", irc_network_dialog_close_clicked_cb,
+ "entry_network", "focus-out-event", irc_network_dialog_network_focus_cb,
+ "button_add", "clicked", irc_network_dialog_button_add_clicked_cb,
+ "button_remove", "clicked", irc_network_dialog_button_remove_clicked_cb,
+ "button_up", "clicked", irc_network_dialog_button_up_clicked_cb,
+ "button_down", "clicked", irc_network_dialog_button_down_clicked_cb,
+ "combobox_charset", "changed", irc_network_dialog_combobox_charset_changed_cb,
+ NULL);
+
+ g_object_unref (glade);
+
+ g_object_add_weak_pointer (G_OBJECT (dialog->dialog),
+ (gpointer) &dialog);
+
+ g_signal_connect (selection, "changed",
+ G_CALLBACK (irc_network_dialog_selection_changed_cb),
+ dialog);
+
+ gtk_window_set_transient_for (GTK_WINDOW (dialog->dialog),
+ GTK_WINDOW (parent));
+ gtk_window_set_modal (GTK_WINDOW (dialog->dialog), TRUE);
+
+ irc_network_dialog_network_update_buttons (dialog);
+
+ return dialog->dialog;
+}
diff --git a/gnome-2-22/libempathy-gtk/empathy-irc-network-dialog.h b/gnome-2-22/libempathy-gtk/empathy-irc-network-dialog.h
new file mode 100644
index 000000000..985849696
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-irc-network-dialog.h
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2007-2008 Guillaume Desmottes
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Authors: Guillaume Desmottes <gdesmott@gnome.org>
+ */
+
+#ifndef __EMPATHY_IRC_NETWORK_DIALOG_H__
+#define __EMPATHY_IRC_NETWORK_DIALOG_H__
+
+#include <gtk/gtkwidget.h>
+
+#include <libempathy/empathy-irc-network.h>
+
+G_BEGIN_DECLS
+
+GtkWidget * empathy_irc_network_dialog_show (EmpathyIrcNetwork *network,
+ GtkWidget *parent);
+
+G_END_DECLS
+
+#endif /* __EMPATHY_IRC_NETWORK_DIALOG_H__ */
diff --git a/gnome-2-22/libempathy-gtk/empathy-log-window.c b/gnome-2-22/libempathy-gtk/empathy-log-window.c
new file mode 100644
index 000000000..c239ef5c3
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-log-window.c
@@ -0,0 +1,1104 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2006-2007 Imendio AB
+ * Copyright (C) 2007-2008 Collabora Ltd.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * 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: Martyn Russell <martyn@imendio.com>
+ * Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#include "config.h"
+
+#include <string.h>
+#include <stdlib.h>
+
+#include <glib/gi18n.h>
+#include <gtk/gtk.h>
+#include <glade/glade.h>
+
+#include <libempathy/empathy-log-manager.h>
+#include <libempathy/empathy-chatroom-manager.h>
+#include <libempathy/empathy-chatroom.h>
+#include <libempathy/empathy-message.h>
+#include <libempathy/empathy-debug.h>
+#include <libempathy/empathy-utils.h>
+#include <libempathy/empathy-time.h>
+
+#include "empathy-log-window.h"
+#include "empathy-account-chooser.h"
+#include "empathy-chat-view.h"
+#include "empathy-ui-utils.h"
+
+#define DEBUG_DOMAIN "LogWindow"
+
+typedef struct {
+ GtkWidget *window;
+
+ GtkWidget *notebook;
+
+ GtkWidget *entry_find;
+ GtkWidget *button_find;
+ GtkWidget *treeview_find;
+ GtkWidget *scrolledwindow_find;
+ EmpathyChatView *chatview_find;
+ GtkWidget *button_previous;
+ GtkWidget *button_next;
+
+ GtkWidget *vbox_chats;
+ GtkWidget *account_chooser_chats;
+ GtkWidget *entry_chats;
+ GtkWidget *calendar_chats;
+ GtkWidget *treeview_chats;
+ GtkWidget *scrolledwindow_chats;
+ EmpathyChatView *chatview_chats;
+
+ gchar *last_find;
+
+ EmpathyLogManager *log_manager;
+} EmpathyLogWindow;
+
+static void log_window_destroy_cb (GtkWidget *widget,
+ EmpathyLogWindow *window);
+static void log_window_entry_find_changed_cb (GtkWidget *entry,
+ EmpathyLogWindow *window);
+static void log_window_find_changed_cb (GtkTreeSelection *selection,
+ EmpathyLogWindow *window);
+static void log_window_find_populate (EmpathyLogWindow *window,
+ const gchar *search_criteria);
+static void log_window_find_setup (EmpathyLogWindow *window);
+static void log_window_button_find_clicked_cb (GtkWidget *widget,
+ EmpathyLogWindow *window);
+static void log_window_button_next_clicked_cb (GtkWidget *widget,
+ EmpathyLogWindow *window);
+static void log_window_button_previous_clicked_cb (GtkWidget *widget,
+ EmpathyLogWindow *window);
+static void log_window_chats_changed_cb (GtkTreeSelection *selection,
+ EmpathyLogWindow *window);
+static void log_window_chats_populate (EmpathyLogWindow *window);
+static void log_window_chats_setup (EmpathyLogWindow *window);
+static void log_window_chats_accounts_changed_cb (GtkWidget *combobox,
+ EmpathyLogWindow *window);
+static void log_window_chats_new_message_cb (EmpathyContact *own_contact,
+ EmpathyMessage *message,
+ EmpathyLogWindow *window);
+static void log_window_chats_set_selected (EmpathyLogWindow *window,
+ McAccount *account,
+ const gchar *chat_id,
+ gboolean is_chatroom);
+static gboolean log_window_chats_get_selected (EmpathyLogWindow *window,
+ McAccount **account,
+ gchar **chat_id,
+ gboolean *is_chatroom);
+static void log_window_chats_get_messages (EmpathyLogWindow *window,
+ const gchar *date_to_show);
+static void log_window_calendar_chats_day_selected_cb (GtkWidget *calendar,
+ EmpathyLogWindow *window);
+static void log_window_calendar_chats_month_changed_cb (GtkWidget *calendar,
+ EmpathyLogWindow *window);
+static void log_window_entry_chats_changed_cb (GtkWidget *entry,
+ EmpathyLogWindow *window);
+static void log_window_entry_chats_activate_cb (GtkWidget *entry,
+ EmpathyLogWindow *window);
+
+enum {
+ COL_FIND_ACCOUNT_ICON,
+ COL_FIND_ACCOUNT_NAME,
+ COL_FIND_ACCOUNT,
+ COL_FIND_CHAT_NAME,
+ COL_FIND_CHAT_ID,
+ COL_FIND_IS_CHATROOM,
+ COL_FIND_DATE,
+ COL_FIND_DATE_READABLE,
+ COL_FIND_COUNT
+};
+
+enum {
+ COL_CHAT_ICON,
+ COL_CHAT_NAME,
+ COL_CHAT_ACCOUNT,
+ COL_CHAT_ID,
+ COL_CHAT_IS_CHATROOM,
+ COL_CHAT_COUNT
+};
+
+GtkWidget *
+empathy_log_window_show (McAccount *account,
+ const gchar *chat_id,
+ gboolean is_chatroom,
+ GtkWindow *parent)
+{
+ static EmpathyLogWindow *window = NULL;
+ EmpathyAccountChooser *account_chooser;
+ GList *accounts;
+ gint account_num;
+ GladeXML *glade;
+
+ if (window) {
+ gtk_window_present (GTK_WINDOW (window->window));
+
+ if (account && chat_id) {
+ gtk_notebook_set_current_page (GTK_NOTEBOOK (window->notebook), 1);
+ log_window_chats_set_selected (window, account,
+ chat_id, is_chatroom);
+ }
+
+ return window->window;
+ }
+
+ window = g_new0 (EmpathyLogWindow, 1);
+ window->log_manager = empathy_log_manager_new ();
+
+ glade = empathy_glade_get_file ("empathy-log-window.glade",
+ "log_window",
+ NULL,
+ "log_window", &window->window,
+ "notebook", &window->notebook,
+ "entry_find", &window->entry_find,
+ "button_find", &window->button_find,
+ "treeview_find", &window->treeview_find,
+ "scrolledwindow_find", &window->scrolledwindow_find,
+ "button_previous", &window->button_previous,
+ "button_next", &window->button_next,
+ "entry_chats", &window->entry_chats,
+ "calendar_chats", &window->calendar_chats,
+ "vbox_chats", &window->vbox_chats,
+ "treeview_chats", &window->treeview_chats,
+ "scrolledwindow_chats", &window->scrolledwindow_chats,
+ NULL);
+ empathy_glade_connect (glade,
+ window,
+ "log_window", "destroy", log_window_destroy_cb,
+ "entry_find", "changed", log_window_entry_find_changed_cb,
+ "button_previous", "clicked", log_window_button_previous_clicked_cb,
+ "button_next", "clicked", log_window_button_next_clicked_cb,
+ "button_find", "clicked", log_window_button_find_clicked_cb,
+ "entry_chats", "changed", log_window_entry_chats_changed_cb,
+ "entry_chats", "activate", log_window_entry_chats_activate_cb,
+ NULL);
+
+ g_object_unref (glade);
+
+ g_object_add_weak_pointer (G_OBJECT (window->window),
+ (gpointer) &window);
+
+ /* We set this up here so we can block it when needed. */
+ g_signal_connect (window->calendar_chats, "day-selected",
+ G_CALLBACK (log_window_calendar_chats_day_selected_cb),
+ window);
+ g_signal_connect (window->calendar_chats, "month-changed",
+ G_CALLBACK (log_window_calendar_chats_month_changed_cb),
+ window);
+
+ /* Configure Search EmpathyChatView */
+ window->chatview_find = empathy_chat_view_new ();
+ gtk_container_add (GTK_CONTAINER (window->scrolledwindow_find),
+ GTK_WIDGET (window->chatview_find));
+ gtk_widget_show (GTK_WIDGET (window->chatview_find));
+
+ /* Configure Contacts EmpathyChatView */
+ window->chatview_chats = empathy_chat_view_new ();
+ gtk_container_add (GTK_CONTAINER (window->scrolledwindow_chats),
+ GTK_WIDGET (window->chatview_chats));
+ gtk_widget_show (GTK_WIDGET (window->chatview_chats));
+
+ /* Account chooser for chats */
+ window->account_chooser_chats = empathy_account_chooser_new ();
+ account_chooser = EMPATHY_ACCOUNT_CHOOSER (window->account_chooser_chats);
+
+ gtk_box_pack_start (GTK_BOX (window->vbox_chats),
+ window->account_chooser_chats,
+ FALSE, TRUE, 0);
+
+ g_signal_connect (window->account_chooser_chats, "changed",
+ G_CALLBACK (log_window_chats_accounts_changed_cb),
+ window);
+
+ /* Populate */
+ accounts = mc_accounts_list ();
+ account_num = g_list_length (accounts);
+ mc_accounts_list_free (accounts);
+
+ if (account_num > 1) {
+ gtk_widget_show (window->vbox_chats);
+ gtk_widget_show (window->account_chooser_chats);
+ } else {
+ gtk_widget_hide (window->vbox_chats);
+ gtk_widget_hide (window->account_chooser_chats);
+ }
+
+ /* Search List */
+ log_window_find_setup (window);
+
+ /* Contacts */
+ log_window_chats_setup (window);
+ log_window_chats_populate (window);
+
+ /* Select chat */
+ if (account && chat_id) {
+ gtk_notebook_set_current_page (GTK_NOTEBOOK (window->notebook), 1);
+ log_window_chats_set_selected (window, account,
+ chat_id, is_chatroom);
+ }
+
+ if (parent) {
+ gtk_window_set_transient_for (GTK_WINDOW (window->window),
+ GTK_WINDOW (parent));
+ }
+
+ gtk_widget_show (window->window);
+
+ return window->window;
+}
+
+static void
+log_window_destroy_cb (GtkWidget *widget,
+ EmpathyLogWindow *window)
+{
+ g_signal_handlers_disconnect_by_func (window->log_manager,
+ log_window_chats_new_message_cb,
+ window);
+
+ g_free (window->last_find);
+ g_object_unref (window->log_manager);
+
+ g_free (window);
+}
+
+/*
+ * Search code.
+ */
+static void
+log_window_entry_find_changed_cb (GtkWidget *entry,
+ EmpathyLogWindow *window)
+{
+ const gchar *str;
+ gboolean is_sensitive = TRUE;
+
+ str = gtk_entry_get_text (GTK_ENTRY (window->entry_find));
+
+ is_sensitive &= !G_STR_EMPTY (str);
+ is_sensitive &=
+ !window->last_find ||
+ (window->last_find && strcmp (window->last_find, str) != 0);
+
+ gtk_widget_set_sensitive (window->button_find, is_sensitive);
+}
+
+static void
+log_window_find_changed_cb (GtkTreeSelection *selection,
+ EmpathyLogWindow *window)
+{
+ GtkTreeView *view;
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+ McAccount *account;
+ gchar *chat_id;
+ gboolean is_chatroom;
+ gchar *date;
+ EmpathyMessage *message;
+ GList *messages;
+ GList *l;
+ gboolean can_do_previous;
+ gboolean can_do_next;
+
+ /* Get selected information */
+ view = GTK_TREE_VIEW (window->treeview_find);
+ model = gtk_tree_view_get_model (view);
+
+ if (!gtk_tree_selection_get_selected (selection, NULL, &iter)) {
+ gtk_widget_set_sensitive (window->button_previous, FALSE);
+ gtk_widget_set_sensitive (window->button_next, FALSE);
+
+ empathy_chat_view_clear (window->chatview_find);
+
+ return;
+ }
+
+ gtk_widget_set_sensitive (window->button_previous, TRUE);
+ gtk_widget_set_sensitive (window->button_next, TRUE);
+
+ gtk_tree_model_get (model, &iter,
+ COL_FIND_ACCOUNT, &account,
+ COL_FIND_CHAT_ID, &chat_id,
+ COL_FIND_IS_CHATROOM, &is_chatroom,
+ COL_FIND_DATE, &date,
+ -1);
+
+ /* Clear all current messages shown in the textview */
+ empathy_chat_view_clear (window->chatview_find);
+
+ /* Turn off scrolling temporarily */
+ empathy_chat_view_scroll (window->chatview_find, FALSE);
+
+ /* Get messages */
+ messages = empathy_log_manager_get_messages_for_date (window->log_manager,
+ account,
+ chat_id,
+ is_chatroom,
+ date);
+ g_object_unref (account);
+ g_free (date);
+ g_free (chat_id);
+
+ for (l = messages; l; l = l->next) {
+ message = l->data;
+ empathy_chat_view_append_message (window->chatview_find, message);
+ g_object_unref (message);
+ }
+ g_list_free (messages);
+
+ /* Scroll to the most recent messages */
+ empathy_chat_view_scroll (window->chatview_find, TRUE);
+
+ /* Highlight and find messages */
+ empathy_chat_view_highlight (window->chatview_find,
+ window->last_find);
+ empathy_chat_view_find_next (window->chatview_find,
+ window->last_find,
+ TRUE);
+ empathy_chat_view_find_abilities (window->chatview_find,
+ window->last_find,
+ &can_do_previous,
+ &can_do_next);
+ gtk_widget_set_sensitive (window->button_previous, can_do_previous);
+ gtk_widget_set_sensitive (window->button_next, can_do_next);
+ gtk_widget_set_sensitive (window->button_find, FALSE);
+}
+
+static void
+log_window_find_populate (EmpathyLogWindow *window,
+ const gchar *search_criteria)
+{
+ GList *hits, *l;
+
+ GtkTreeView *view;
+ GtkTreeModel *model;
+ GtkTreeSelection *selection;
+ GtkListStore *store;
+ GtkTreeIter iter;
+
+ view = GTK_TREE_VIEW (window->treeview_find);
+ model = gtk_tree_view_get_model (view);
+ selection = gtk_tree_view_get_selection (view);
+ store = GTK_LIST_STORE (model);
+
+ empathy_chat_view_clear (window->chatview_find);
+
+ gtk_list_store_clear (store);
+
+ if (G_STR_EMPTY (search_criteria)) {
+ /* Just clear the search. */
+ return;
+ }
+
+ hits = empathy_log_manager_search_new (window->log_manager, search_criteria);
+
+ for (l = hits; l; l = l->next) {
+ EmpathyLogSearchHit *hit;
+ const gchar *account_name;
+ const gchar *account_icon;
+ gchar *date_readable;
+
+ hit = l->data;
+
+ /* Protect against invalid data (corrupt or old log files. */
+ if (!hit->account || !hit->chat_id) {
+ continue;
+ }
+
+ date_readable = empathy_log_manager_get_date_readable (hit->date);
+ account_name = mc_account_get_display_name (hit->account);
+ account_icon = empathy_icon_name_from_account (hit->account);
+
+ gtk_list_store_append (store, &iter);
+ gtk_list_store_set (store, &iter,
+ COL_FIND_ACCOUNT_ICON, account_icon,
+ COL_FIND_ACCOUNT_NAME, account_name,
+ COL_FIND_ACCOUNT, hit->account,
+ COL_FIND_CHAT_NAME, hit->chat_id, /* FIXME */
+ COL_FIND_CHAT_ID, hit->chat_id,
+ COL_FIND_IS_CHATROOM, hit->is_chatroom,
+ COL_FIND_DATE, hit->date,
+ COL_FIND_DATE_READABLE, date_readable,
+ -1);
+
+ g_free (date_readable);
+
+ /* FIXME: Update COL_FIND_CHAT_NAME */
+ if (hit->is_chatroom) {
+ } else {
+ }
+ }
+
+ if (hits) {
+ empathy_log_manager_search_free (hits);
+ }
+}
+
+static void
+log_window_find_setup (EmpathyLogWindow *window)
+{
+ GtkTreeView *view;
+ GtkTreeModel *model;
+ GtkTreeSelection *selection;
+ GtkTreeSortable *sortable;
+ GtkTreeViewColumn *column;
+ GtkListStore *store;
+ GtkCellRenderer *cell;
+ gint offset;
+
+ view = GTK_TREE_VIEW (window->treeview_find);
+ selection = gtk_tree_view_get_selection (view);
+
+ /* New store */
+ store = gtk_list_store_new (COL_FIND_COUNT,
+ G_TYPE_STRING, /* account icon name */
+ G_TYPE_STRING, /* account name */
+ MC_TYPE_ACCOUNT, /* account */
+ G_TYPE_STRING, /* chat name */
+ G_TYPE_STRING, /* chat id */
+ G_TYPE_BOOLEAN, /* is chatroom */
+ G_TYPE_STRING, /* date */
+ G_TYPE_STRING); /* date_readable */
+
+ model = GTK_TREE_MODEL (store);
+ sortable = GTK_TREE_SORTABLE (store);
+
+ gtk_tree_view_set_model (view, model);
+
+ /* New column */
+ column = gtk_tree_view_column_new ();
+
+ cell = gtk_cell_renderer_pixbuf_new ();
+ gtk_tree_view_column_pack_start (column, cell, FALSE);
+ gtk_tree_view_column_add_attribute (column, cell,
+ "icon-name",
+ COL_FIND_ACCOUNT_ICON);
+
+ cell = gtk_cell_renderer_text_new ();
+ gtk_tree_view_column_pack_start (column, cell, TRUE);
+ gtk_tree_view_column_add_attribute (column, cell,
+ "text",
+ COL_FIND_ACCOUNT_NAME);
+
+ gtk_tree_view_column_set_title (column, _("Account"));
+ gtk_tree_view_append_column (view, column);
+
+ gtk_tree_view_column_set_resizable (column, TRUE);
+ gtk_tree_view_column_set_clickable (column, TRUE);
+
+ cell = gtk_cell_renderer_text_new ();
+ offset = gtk_tree_view_insert_column_with_attributes (view, -1, _("Conversation"),
+ cell, "text", COL_FIND_CHAT_NAME,
+ NULL);
+
+ column = gtk_tree_view_get_column (view, offset - 1);
+ gtk_tree_view_column_set_sort_column_id (column, COL_FIND_CHAT_NAME);
+ gtk_tree_view_column_set_resizable (column, TRUE);
+ gtk_tree_view_column_set_clickable (column, TRUE);
+
+ cell = gtk_cell_renderer_text_new ();
+ offset = gtk_tree_view_insert_column_with_attributes (view, -1, _("Date"),
+ cell, "text", COL_FIND_DATE_READABLE,
+ NULL);
+
+ column = gtk_tree_view_get_column (view, offset - 1);
+ gtk_tree_view_column_set_sort_column_id (column, COL_FIND_DATE);
+ gtk_tree_view_column_set_resizable (column, TRUE);
+ gtk_tree_view_column_set_clickable (column, TRUE);
+
+ /* Set up treeview properties */
+ gtk_tree_selection_set_mode (selection, GTK_SELECTION_SINGLE);
+ gtk_tree_sortable_set_sort_column_id (sortable,
+ COL_FIND_DATE,
+ GTK_SORT_ASCENDING);
+
+ /* Set up signals */
+ g_signal_connect (selection, "changed",
+ G_CALLBACK (log_window_find_changed_cb),
+ window);
+
+ g_object_unref (store);
+}
+
+static void
+log_window_button_find_clicked_cb (GtkWidget *widget,
+ EmpathyLogWindow *window)
+{
+ const gchar *str;
+
+ str = gtk_entry_get_text (GTK_ENTRY (window->entry_find));
+
+ /* Don't find the same crap again */
+ if (window->last_find && strcmp (window->last_find, str) == 0) {
+ return;
+ }
+
+ g_free (window->last_find);
+ window->last_find = g_strdup (str);
+
+ log_window_find_populate (window, str);
+}
+
+static void
+log_window_button_next_clicked_cb (GtkWidget *widget,
+ EmpathyLogWindow *window)
+{
+ if (window->last_find) {
+ gboolean can_do_previous;
+ gboolean can_do_next;
+
+ empathy_chat_view_find_next (window->chatview_find,
+ window->last_find,
+ FALSE);
+ empathy_chat_view_find_abilities (window->chatview_find,
+ window->last_find,
+ &can_do_previous,
+ &can_do_next);
+ gtk_widget_set_sensitive (window->button_previous, can_do_previous);
+ gtk_widget_set_sensitive (window->button_next, can_do_next);
+ }
+}
+
+static void
+log_window_button_previous_clicked_cb (GtkWidget *widget,
+ EmpathyLogWindow *window)
+{
+ if (window->last_find) {
+ gboolean can_do_previous;
+ gboolean can_do_next;
+
+ empathy_chat_view_find_previous (window->chatview_find,
+ window->last_find,
+ FALSE);
+ empathy_chat_view_find_abilities (window->chatview_find,
+ window->last_find,
+ &can_do_previous,
+ &can_do_next);
+ gtk_widget_set_sensitive (window->button_previous, can_do_previous);
+ gtk_widget_set_sensitive (window->button_next, can_do_next);
+ }
+}
+
+/*
+ * Chats Code
+ */
+
+static void
+log_window_chats_changed_cb (GtkTreeSelection *selection,
+ EmpathyLogWindow *window)
+{
+ /* Use last date by default */
+ gtk_calendar_clear_marks (GTK_CALENDAR (window->calendar_chats));
+
+ log_window_chats_get_messages (window, NULL);
+}
+
+static void
+log_window_chats_populate (EmpathyLogWindow *window)
+{
+ EmpathyAccountChooser *account_chooser;
+ McAccount *account;
+ GList *chats, *l;
+
+ GtkTreeView *view;
+ GtkTreeModel *model;
+ GtkTreeSelection *selection;
+ GtkListStore *store;
+ GtkTreeIter iter;
+
+ account_chooser = EMPATHY_ACCOUNT_CHOOSER (window->account_chooser_chats);
+ account = empathy_account_chooser_get_account (account_chooser);
+
+ view = GTK_TREE_VIEW (window->treeview_chats);
+ model = gtk_tree_view_get_model (view);
+ selection = gtk_tree_view_get_selection (view);
+ store = GTK_LIST_STORE (model);
+
+ /* Block signals to stop the logs being retrieved prematurely */
+ g_signal_handlers_block_by_func (selection,
+ log_window_chats_changed_cb,
+ window);
+
+ gtk_list_store_clear (store);
+
+ chats = empathy_log_manager_get_chats (window->log_manager, account);
+ for (l = chats; l; l = l->next) {
+ EmpathyLogSearchHit *hit;
+
+ hit = l->data;
+
+ gtk_list_store_append (store, &iter);
+ gtk_list_store_set (store, &iter,
+ COL_CHAT_ICON, "empathy-available", /* FIXME */
+ COL_CHAT_NAME, hit->chat_id,
+ COL_CHAT_ACCOUNT, account,
+ COL_CHAT_ID, hit->chat_id,
+ COL_CHAT_IS_CHATROOM, hit->is_chatroom,
+ -1);
+
+ /* FIXME: Update COL_CHAT_ICON/NAME */
+ if (hit->is_chatroom) {
+ } else {
+ }
+ }
+ empathy_log_manager_search_free (chats);
+
+ /* Unblock signals */
+ g_signal_handlers_unblock_by_func (selection,
+ log_window_chats_changed_cb,
+ window);
+
+
+ g_object_unref (account);
+}
+
+static void
+log_window_chats_setup (EmpathyLogWindow *window)
+{
+ GtkTreeView *view;
+ GtkTreeModel *model;
+ GtkTreeSelection *selection;
+ GtkTreeSortable *sortable;
+ GtkTreeViewColumn *column;
+ GtkListStore *store;
+ GtkCellRenderer *cell;
+
+ view = GTK_TREE_VIEW (window->treeview_chats);
+ selection = gtk_tree_view_get_selection (view);
+
+ /* new store */
+ store = gtk_list_store_new (COL_CHAT_COUNT,
+ G_TYPE_STRING, /* icon */
+ G_TYPE_STRING, /* name */
+ MC_TYPE_ACCOUNT, /* account */
+ G_TYPE_STRING, /* id */
+ G_TYPE_BOOLEAN); /* is chatroom */
+
+ model = GTK_TREE_MODEL (store);
+ sortable = GTK_TREE_SORTABLE (store);
+
+ gtk_tree_view_set_model (view, model);
+
+ /* new column */
+ column = gtk_tree_view_column_new ();
+
+ cell = gtk_cell_renderer_pixbuf_new ();
+ gtk_tree_view_column_pack_start (column, cell, FALSE);
+ gtk_tree_view_column_add_attribute (column, cell,
+ "icon-name",
+ COL_CHAT_ICON);
+
+ cell = gtk_cell_renderer_text_new ();
+ g_object_set (cell, "ellipsize", PANGO_ELLIPSIZE_END, NULL);
+ gtk_tree_view_column_pack_start (column, cell, TRUE);
+ gtk_tree_view_column_add_attribute (column, cell,
+ "text",
+ COL_CHAT_NAME);
+
+ gtk_tree_view_append_column (view, column);
+
+ /* set up treeview properties */
+ gtk_tree_selection_set_mode (selection, GTK_SELECTION_SINGLE);
+ gtk_tree_sortable_set_sort_column_id (sortable,
+ COL_CHAT_NAME,
+ GTK_SORT_ASCENDING);
+
+ /* set up signals */
+ g_signal_connect (selection, "changed",
+ G_CALLBACK (log_window_chats_changed_cb),
+ window);
+
+ g_object_unref (store);
+}
+
+static void
+log_window_chats_accounts_changed_cb (GtkWidget *combobox,
+ EmpathyLogWindow *window)
+{
+ /* Clear all current messages shown in the textview */
+ empathy_chat_view_clear (window->chatview_chats);
+
+ log_window_chats_populate (window);
+}
+
+static void
+log_window_chats_new_message_cb (EmpathyContact *own_contact,
+ EmpathyMessage *message,
+ EmpathyLogWindow *window)
+{
+ empathy_chat_view_append_message (window->chatview_chats, message);
+
+ /* Scroll to the most recent messages */
+ empathy_chat_view_scroll_down (window->chatview_chats);
+}
+
+static void
+log_window_chats_set_selected (EmpathyLogWindow *window,
+ McAccount *account,
+ const gchar *chat_id,
+ gboolean is_chatroom)
+{
+ EmpathyAccountChooser *account_chooser;
+ GtkTreeView *view;
+ GtkTreeModel *model;
+ GtkTreeSelection *selection;
+ GtkTreeIter iter;
+ GtkTreePath *path;
+ gboolean ok;
+
+ account_chooser = EMPATHY_ACCOUNT_CHOOSER (window->account_chooser_chats);
+ empathy_account_chooser_set_account (account_chooser, account);
+
+ view = GTK_TREE_VIEW (window->treeview_chats);
+ model = gtk_tree_view_get_model (view);
+ selection = gtk_tree_view_get_selection (view);
+
+ if (!gtk_tree_model_get_iter_first (model, &iter)) {
+ return;
+ }
+
+ for (ok = TRUE; ok; ok = gtk_tree_model_iter_next (model, &iter)) {
+ McAccount *this_account;
+ gchar *this_chat_id;
+ gboolean this_is_chatroom;
+
+ gtk_tree_model_get (model, &iter,
+ COL_CHAT_ACCOUNT, &this_account,
+ COL_CHAT_ID, &this_chat_id,
+ COL_CHAT_IS_CHATROOM, &this_is_chatroom,
+ -1);
+
+ if (empathy_account_equal (this_account, account) &&
+ strcmp (this_chat_id, chat_id) == 0 &&
+ this_is_chatroom == is_chatroom) {
+ gtk_tree_selection_select_iter (selection, &iter);
+ path = gtk_tree_model_get_path (model, &iter);
+ gtk_tree_view_scroll_to_cell (view, path, NULL, TRUE, 0.5, 0.0);
+ gtk_tree_path_free (path);
+ g_object_unref (this_account);
+ g_free (this_chat_id);
+ break;
+ }
+
+ g_object_unref (this_account);
+ g_free (this_chat_id);
+ }
+}
+
+static gboolean
+log_window_chats_get_selected (EmpathyLogWindow *window,
+ McAccount **account,
+ gchar **chat_id,
+ gboolean *is_chatroom)
+{
+ GtkTreeView *view;
+ GtkTreeModel *model;
+ GtkTreeSelection *selection;
+ GtkTreeIter iter;
+ gchar *id = NULL;
+ McAccount *acc = NULL;
+ gboolean room = FALSE;
+
+ view = GTK_TREE_VIEW (window->treeview_chats);
+ model = gtk_tree_view_get_model (view);
+ selection = gtk_tree_view_get_selection (view);
+
+ if (!gtk_tree_selection_get_selected (selection, NULL, &iter)) {
+ return FALSE;
+ }
+
+ gtk_tree_model_get (model, &iter,
+ COL_CHAT_ACCOUNT, &acc,
+ COL_CHAT_ID, &id,
+ COL_CHAT_IS_CHATROOM, &room,
+ -1);
+
+ if (chat_id) {
+ *chat_id = id;
+ } else {
+ g_free (id);
+ }
+ if (account) {
+ *account = acc;
+ } else {
+ g_object_unref (acc);
+ }
+ if (is_chatroom) {
+ *is_chatroom = room;
+ }
+
+ return TRUE;
+}
+
+static void
+log_window_chats_get_messages (EmpathyLogWindow *window,
+ const gchar *date_to_show)
+{
+ McAccount *account;
+ gchar *chat_id;
+ gboolean is_chatroom;
+ EmpathyMessage *message;
+ GList *messages;
+ GList *dates = NULL;
+ GList *l;
+ const gchar *date;
+ guint year_selected;
+ guint year;
+ guint month;
+ guint month_selected;
+ guint day;
+
+ if (!log_window_chats_get_selected (window, &account,
+ &chat_id, &is_chatroom)) {
+ return;
+ }
+
+ g_signal_handlers_block_by_func (window->calendar_chats,
+ log_window_calendar_chats_day_selected_cb,
+ window);
+
+ /* Either use the supplied date or get the last */
+ date = date_to_show;
+ if (!date) {
+ gboolean day_selected = FALSE;
+
+ /* Get a list of dates and show them on the calendar */
+ dates = empathy_log_manager_get_dates (window->log_manager,
+ account, chat_id,
+ is_chatroom);
+
+ for (l = dates; l; l = l->next) {
+ const gchar *str;
+
+ str = l->data;
+ if (!str) {
+ continue;
+ }
+
+ sscanf (str, "%4d%2d%2d", &year, &month, &day);
+ gtk_calendar_get_date (GTK_CALENDAR (window->calendar_chats),
+ &year_selected,
+ &month_selected,
+ NULL);
+
+ month_selected++;
+
+ if (!l->next) {
+ date = str;
+ }
+
+ if (year != year_selected || month != month_selected) {
+ continue;
+ }
+
+
+ empathy_debug (DEBUG_DOMAIN, "Marking date:'%s'", str);
+ gtk_calendar_mark_day (GTK_CALENDAR (window->calendar_chats), day);
+
+ if (l->next) {
+ continue;
+ }
+
+ day_selected = TRUE;
+
+ gtk_calendar_select_day (GTK_CALENDAR (window->calendar_chats), day);
+ }
+
+ if (!day_selected) {
+ /* Unselect the day in the calendar */
+ gtk_calendar_select_day (GTK_CALENDAR (window->calendar_chats), 0);
+ }
+ } else {
+ sscanf (date, "%4d%2d%2d", &year, &month, &day);
+ gtk_calendar_get_date (GTK_CALENDAR (window->calendar_chats),
+ &year_selected,
+ &month_selected,
+ NULL);
+
+ month_selected++;
+
+ if (year != year_selected && month != month_selected) {
+ day = 0;
+ }
+
+ gtk_calendar_select_day (GTK_CALENDAR (window->calendar_chats), day);
+ }
+
+ g_signal_handlers_unblock_by_func (window->calendar_chats,
+ log_window_calendar_chats_day_selected_cb,
+ window);
+
+ if (!date) {
+ goto OUT;
+ }
+
+ /* Clear all current messages shown in the textview */
+ empathy_chat_view_clear (window->chatview_chats);
+
+ /* Turn off scrolling temporarily */
+ empathy_chat_view_scroll (window->chatview_find, FALSE);
+
+ /* Get messages */
+ messages = empathy_log_manager_get_messages_for_date (window->log_manager,
+ account, chat_id,
+ is_chatroom,
+ date);
+
+ for (l = messages; l; l = l->next) {
+ message = l->data;
+
+ empathy_chat_view_append_message (window->chatview_chats,
+ message);
+ g_object_unref (message);
+ }
+ g_list_free (messages);
+
+ /* Turn back on scrolling */
+ empathy_chat_view_scroll (window->chatview_find, TRUE);
+
+ /* Scroll to the most recent messages */
+ empathy_chat_view_scroll_down (window->chatview_chats);
+
+ /* Give the search entry main focus */
+ gtk_widget_grab_focus (window->entry_chats);
+
+OUT:
+ g_list_foreach (dates, (GFunc) g_free, NULL);
+ g_list_free (dates);
+ g_object_unref (account);
+ g_free (chat_id);
+}
+
+static void
+log_window_calendar_chats_day_selected_cb (GtkWidget *calendar,
+ EmpathyLogWindow *window)
+{
+ guint year;
+ guint month;
+ guint day;
+
+ gchar *date;
+
+ gtk_calendar_get_date (GTK_CALENDAR (calendar), &year, &month, &day);
+
+ /* We need this hear because it appears that the months start from 0 */
+ month++;
+
+ date = g_strdup_printf ("%4.4d%2.2d%2.2d", year, month, day);
+
+ empathy_debug (DEBUG_DOMAIN, "Currently selected date is:'%s'", date);
+
+ log_window_chats_get_messages (window, date);
+
+ g_free (date);
+}
+
+static void
+log_window_calendar_chats_month_changed_cb (GtkWidget *calendar,
+ EmpathyLogWindow *window)
+{
+ McAccount *account;
+ gchar *chat_id;
+ gboolean is_chatroom;
+ guint year_selected;
+ guint month_selected;
+
+ GList *dates;
+ GList *l;
+
+ gtk_calendar_clear_marks (GTK_CALENDAR (calendar));
+
+ if (!log_window_chats_get_selected (window, &account,
+ &chat_id, &is_chatroom)) {
+ empathy_debug (DEBUG_DOMAIN, "No chat selected to get dates for...");
+ return;
+ }
+
+ g_object_get (calendar,
+ "month", &month_selected,
+ "year", &year_selected,
+ NULL);
+
+ /* We need this hear because it appears that the months start from 0 */
+ month_selected++;
+
+ /* Get the log object for this contact */
+ dates = empathy_log_manager_get_dates (window->log_manager, account,
+ chat_id, is_chatroom);
+ g_object_unref (account);
+ g_free (chat_id);
+
+ for (l = dates; l; l = l->next) {
+ const gchar *str;
+ guint year;
+ guint month;
+ guint day;
+
+ str = l->data;
+ if (!str) {
+ continue;
+ }
+
+ sscanf (str, "%4d%2d%2d", &year, &month, &day);
+
+ if (year == year_selected && month == month_selected) {
+ empathy_debug (DEBUG_DOMAIN, "Marking date:'%s'", str);
+ gtk_calendar_mark_day (GTK_CALENDAR (window->calendar_chats), day);
+ }
+ }
+
+ g_list_foreach (dates, (GFunc) g_free, NULL);
+ g_list_free (dates);
+
+ empathy_debug (DEBUG_DOMAIN,
+ "Currently showing month %d and year %d",
+ month_selected, year_selected);
+}
+
+static void
+log_window_entry_chats_changed_cb (GtkWidget *entry,
+ EmpathyLogWindow *window)
+{
+ const gchar *str;
+
+ str = gtk_entry_get_text (GTK_ENTRY (window->entry_chats));
+ empathy_chat_view_highlight (window->chatview_chats, str);
+
+ if (str) {
+ empathy_chat_view_find_next (window->chatview_chats,
+ str,
+ TRUE);
+ }
+}
+
+static void
+log_window_entry_chats_activate_cb (GtkWidget *entry,
+ EmpathyLogWindow *window)
+{
+ const gchar *str;
+
+ str = gtk_entry_get_text (GTK_ENTRY (window->entry_chats));
+
+ if (str) {
+ empathy_chat_view_find_next (window->chatview_chats,
+ str,
+ FALSE);
+ }
+}
+
diff --git a/gnome-2-22/libempathy-gtk/empathy-log-window.glade b/gnome-2-22/libempathy-gtk/empathy-log-window.glade
new file mode 100644
index 000000000..8dfd59c99
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-log-window.glade
@@ -0,0 +1,470 @@
+<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
+<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
+
+<glade-interface>
+
+<widget class="GtkWindow" id="log_window">
+ <property name="title" translatable="yes">Previous Conversations</property>
+ <property name="type">GTK_WINDOW_TOPLEVEL</property>
+ <property name="window_position">GTK_WIN_POS_NONE</property>
+ <property name="modal">False</property>
+ <property name="default_width">640</property>
+ <property name="default_height">450</property>
+ <property name="resizable">True</property>
+ <property name="destroy_with_parent">False</property>
+ <property name="icon_name">document-open-recent</property>
+ <property name="decorated">True</property>
+ <property name="skip_taskbar_hint">False</property>
+ <property name="skip_pager_hint">False</property>
+ <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
+ <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+ <property name="focus_on_map">True</property>
+ <property name="urgency_hint">False</property>
+
+ <child>
+ <widget class="GtkNotebook" id="notebook">
+ <property name="border_width">2</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="show_tabs">True</property>
+ <property name="show_border">True</property>
+ <property name="tab_pos">GTK_POS_TOP</property>
+ <property name="scrollable">False</property>
+ <property name="enable_popup">False</property>
+
+ <child>
+ <widget class="GtkVBox" id="vbox192">
+ <property name="border_width">12</property>
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">6</property>
+
+ <child>
+ <widget class="GtkHBox" id="hbox144">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">12</property>
+
+ <child>
+ <widget class="GtkLabel" id="label628">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_For:</property>
+ <property name="use_underline">True</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="mnemonic_widget">entry_find</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkEntry" id="entry_find">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="has_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">True</property>
+ <property name="max_length">0</property>
+ <property name="text" translatable="yes"></property>
+ <property name="has_frame">True</property>
+ <property name="invisible_char">*</property>
+ <property name="activates_default">True</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkButton" id="button_find">
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_default">True</property>
+ <property name="has_default">True</property>
+ <property name="can_focus">True</property>
+ <property name="label">gtk-find</property>
+ <property name="use_stock">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">False</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkVPaned" id="vpaned1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="position">120</property>
+
+ <child>
+ <widget class="GtkScrolledWindow" id="scrolledwindow14">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
+ <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+ <property name="shadow_type">GTK_SHADOW_IN</property>
+ <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
+
+ <child>
+ <widget class="GtkTreeView" id="treeview_find">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="headers_visible">True</property>
+ <property name="rules_hint">False</property>
+ <property name="reorderable">False</property>
+ <property name="enable_search">False</property>
+ <property name="fixed_height_mode">False</property>
+ <property name="hover_selection">False</property>
+ <property name="hover_expand">False</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="shrink">True</property>
+ <property name="resize">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkVBox" id="vbox215">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">6</property>
+
+ <child>
+ <widget class="GtkScrolledWindow" id="scrolledwindow_find">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
+ <property name="vscrollbar_policy">GTK_POLICY_ALWAYS</property>
+ <property name="shadow_type">GTK_SHADOW_IN</property>
+ <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
+
+ <child>
+ <placeholder/>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkHBox" id="hbox171">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">12</property>
+
+ <child>
+ <placeholder/>
+ </child>
+
+ <child>
+ <widget class="GtkButton" id="button_next">
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">True</property>
+ <property name="label">gtk-go-forward</property>
+ <property name="use_stock">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">False</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="pack_type">GTK_PACK_END</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkButton" id="button_previous">
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">True</property>
+ <property name="label">gtk-go-back</property>
+ <property name="use_stock">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">False</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="pack_type">GTK_PACK_END</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="shrink">True</property>
+ <property name="resize">True</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="tab_expand">False</property>
+ <property name="tab_fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label595">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Search</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="type">tab</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkTable" id="table7">
+ <property name="border_width">12</property>
+ <property name="visible">True</property>
+ <property name="n_rows">2</property>
+ <property name="n_columns">2</property>
+ <property name="homogeneous">False</property>
+ <property name="row_spacing">6</property>
+ <property name="column_spacing">6</property>
+
+ <child>
+ <widget class="GtkHBox" id="hbox143">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">6</property>
+
+ <child>
+ <widget class="GtkImage" id="image247">
+ <property name="visible">True</property>
+ <property name="stock">gtk-find</property>
+ <property name="icon_size">4</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkEntry" id="entry_chats">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">True</property>
+ <property name="max_length">0</property>
+ <property name="text" translatable="yes"></property>
+ <property name="has_frame">True</property>
+ <property name="invisible_char">*</property>
+ <property name="activates_default">True</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">0</property>
+ <property name="bottom_attach">1</property>
+ <property name="x_options">fill</property>
+ <property name="y_options">fill</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkVBox" id="vbox191">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">6</property>
+
+ <child>
+ <widget class="GtkScrolledWindow" id="scrolledwindow13">
+ <property name="width_request">150</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
+ <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+ <property name="shadow_type">GTK_SHADOW_IN</property>
+ <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
+
+ <child>
+ <widget class="GtkTreeView" id="treeview_chats">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="headers_visible">False</property>
+ <property name="rules_hint">False</property>
+ <property name="reorderable">False</property>
+ <property name="enable_search">True</property>
+ <property name="fixed_height_mode">False</property>
+ <property name="hover_selection">False</property>
+ <property name="hover_expand">False</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkCalendar" id="calendar_chats">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="display_options">GTK_CALENDAR_SHOW_HEADING|GTK_CALENDAR_SHOW_DAY_NAMES</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">fill</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkScrolledWindow" id="scrolledwindow_chats">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
+ <property name="vscrollbar_policy">GTK_POLICY_ALWAYS</property>
+ <property name="shadow_type">GTK_SHADOW_IN</property>
+ <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
+
+ <child>
+ <placeholder/>
+ </child>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkVBox" id="vbox_chats">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">6</property>
+
+ <child>
+ <placeholder/>
+ </child>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">0</property>
+ <property name="bottom_attach">1</property>
+ <property name="x_options">fill</property>
+ <property name="y_options">fill</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="tab_expand">False</property>
+ <property name="tab_fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label596">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Conversations</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="type">tab</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+</widget>
+
+</glade-interface>
diff --git a/gnome-2-22/libempathy-gtk/empathy-log-window.h b/gnome-2-22/libempathy-gtk/empathy-log-window.h
new file mode 100644
index 000000000..a45cbbb84
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-log-window.h
@@ -0,0 +1,39 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2006-2007 Imendio AB
+ * Copyright (C) 2007 Collabora Ltd.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * 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: Martyn Russell <martyn@imendio.com>
+ * Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#ifndef __EMPATHY_LOG_WINDOW_H__
+#define __EMPATHY_LOG_WINDOW_H__
+
+#include <libmissioncontrol/mc-account.h>
+
+G_BEGIN_DECLS
+
+GtkWidget * empathy_log_window_show (McAccount *account,
+ const gchar *chat_id,
+ gboolean chatroom,
+ GtkWindow *parent);
+
+G_END_DECLS
+
+#endif /* __EMPATHY_LOG_WINDOW_H__ */
diff --git a/gnome-2-22/libempathy-gtk/empathy-main-window.c b/gnome-2-22/libempathy-gtk/empathy-main-window.c
new file mode 100644
index 000000000..ca8a16abf
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-main-window.c
@@ -0,0 +1,1160 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2002-2007 Imendio AB
+ * Copyright (C) 2007-2008 Collabora Ltd.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * 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: Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#include <config.h>
+
+#include <sys/stat.h>
+#include <gtk/gtk.h>
+#include <glade/glade.h>
+#include <glib/gi18n.h>
+
+#include <libempathy/empathy-contact.h>
+#include <libempathy/empathy-debug.h>
+#include <libempathy/empathy-utils.h>
+#include <libempathy/empathy-chatroom-manager.h>
+#include <libempathy/empathy-chatroom.h>
+#include <libempathy/empathy-contact-list.h>
+#include <libempathy/empathy-contact-manager.h>
+#include <libempathy/empathy-contact-factory.h>
+#include <libempathy/empathy-status-presets.h>
+
+#include "empathy-main-window.h"
+#include "empathy-contact-dialogs.h"
+#include "ephy-spinner.h"
+#include "empathy-contact-list-store.h"
+#include "empathy-contact-list-view.h"
+#include "empathy-presence-chooser.h"
+#include "empathy-ui-utils.h"
+#include "empathy-geometry.h"
+#include "empathy-conf.h"
+#include "empathy-preferences.h"
+#include "empathy-accounts-dialog.h"
+#include "empathy-about-dialog.h"
+#include "empathy-new-chatroom-dialog.h"
+#include "empathy-chatrooms-window.h"
+#include "empathy-log-window.h"
+#include "empathy-new-message-dialog.h"
+#include "empathy-gtk-enum-types.h"
+
+#define DEBUG_DOMAIN "MainWindow"
+
+/* Minimum width of roster window if something goes wrong. */
+#define MIN_WIDTH 50
+
+/* Accels (menu shortcuts) can be configured and saved */
+#define ACCELS_FILENAME "accels.txt"
+
+/* Name in the geometry file */
+#define GEOMETRY_NAME "main-window"
+
+typedef struct {
+ EmpathyContactListView *list_view;
+ EmpathyContactListStore *list_store;
+ MissionControl *mc;
+ EmpathyChatroomManager *chatroom_manager;
+
+ GtkWidget *window;
+ GtkWidget *main_vbox;
+ GtkWidget *throbber;
+ GtkWidget *presence_toolbar;
+ GtkWidget *presence_chooser;
+ GtkWidget *errors_vbox;
+
+ GtkWidget *room;
+ GtkWidget *room_menu;
+ GtkWidget *room_sep;
+ GtkWidget *room_join_favorites;
+ GtkWidget *edit_context;
+ GtkWidget *edit_context_separator;
+
+ guint size_timeout_id;
+ GHashTable *errors;
+
+ /* Widgets that are enabled when there is... */
+ GList *widgets_connected; /* ... connected accounts */
+ GList *widgets_disconnected; /* ... disconnected accounts */
+} EmpathyMainWindow;
+
+static void main_window_destroy_cb (GtkWidget *widget,
+ EmpathyMainWindow *window);
+static void main_window_favorite_chatroom_menu_setup (EmpathyMainWindow *window);
+static void main_window_favorite_chatroom_menu_added_cb (EmpathyChatroomManager *manager,
+ EmpathyChatroom *chatroom,
+ EmpathyMainWindow *window);
+static void main_window_favorite_chatroom_menu_removed_cb (EmpathyChatroomManager *manager,
+ EmpathyChatroom *chatroom,
+ EmpathyMainWindow *window);
+static void main_window_favorite_chatroom_menu_activate_cb (GtkMenuItem *menu_item,
+ EmpathyChatroom *chatroom);
+static void main_window_favorite_chatroom_menu_update (EmpathyMainWindow *window);
+static void main_window_favorite_chatroom_menu_add (EmpathyMainWindow *window,
+ EmpathyChatroom *chatroom);
+static void main_window_favorite_chatroom_join (EmpathyChatroom *chatroom);
+static void main_window_chat_quit_cb (GtkWidget *widget,
+ EmpathyMainWindow *window);
+static void main_window_chat_new_message_cb (GtkWidget *widget,
+ EmpathyMainWindow *window);
+static void main_window_chat_history_cb (GtkWidget *widget,
+ EmpathyMainWindow *window);
+static void main_window_room_join_new_cb (GtkWidget *widget,
+ EmpathyMainWindow *window);
+static void main_window_room_join_favorites_cb (GtkWidget *widget,
+ EmpathyMainWindow *window);
+static void main_window_room_manage_favorites_cb (GtkWidget *widget,
+ EmpathyMainWindow *window);
+static void main_window_chat_add_contact_cb (GtkWidget *widget,
+ EmpathyMainWindow *window);
+static void main_window_chat_show_offline_cb (GtkCheckMenuItem *item,
+ EmpathyMainWindow *window);
+static gboolean main_window_edit_button_press_event_cb (GtkWidget *widget,
+ GdkEventButton *event,
+ EmpathyMainWindow *window);
+static void main_window_edit_accounts_cb (GtkWidget *widget,
+ EmpathyMainWindow *window);
+static void main_window_edit_personal_information_cb (GtkWidget *widget,
+ EmpathyMainWindow *window);
+static void main_window_edit_preferences_cb (GtkWidget *widget,
+ EmpathyMainWindow *window);
+static void main_window_help_about_cb (GtkWidget *widget,
+ EmpathyMainWindow *window);
+static void main_window_help_contents_cb (GtkWidget *widget,
+ EmpathyMainWindow *window);
+static gboolean main_window_throbber_button_press_event_cb (GtkWidget *throbber_ebox,
+ GdkEventButton *event,
+ EmpathyMainWindow *window);
+static void main_window_status_changed_cb (MissionControl *mc,
+ TpConnectionStatus status,
+ McPresence presence,
+ TpConnectionStatusReason reason,
+ const gchar *unique_name,
+ EmpathyMainWindow *window);
+static void main_window_update_status (EmpathyMainWindow *window);
+static void main_window_accels_load (void);
+static void main_window_accels_save (void);
+static void main_window_connection_items_setup (EmpathyMainWindow *window,
+ GladeXML *glade);
+static gboolean main_window_configure_event_timeout_cb (EmpathyMainWindow *window);
+static gboolean main_window_configure_event_cb (GtkWidget *widget,
+ GdkEventConfigure *event,
+ EmpathyMainWindow *window);
+static void main_window_notify_show_offline_cb (EmpathyConf *conf,
+ const gchar *key,
+ gpointer check_menu_item);
+static void main_window_notify_show_avatars_cb (EmpathyConf *conf,
+ const gchar *key,
+ EmpathyMainWindow *window);
+static void main_window_notify_compact_contact_list_cb (EmpathyConf *conf,
+ const gchar *key,
+ EmpathyMainWindow *window);
+static void main_window_notify_sort_criterium_cb (EmpathyConf *conf,
+ const gchar *key,
+ EmpathyMainWindow *window);
+
+GtkWidget *
+empathy_main_window_show (void)
+{
+ static EmpathyMainWindow *window = NULL;
+ EmpathyContactList *list_iface;
+ GladeXML *glade;
+ EmpathyConf *conf;
+ GtkWidget *sw;
+ GtkWidget *show_offline_widget;
+ GtkWidget *ebox;
+ GtkToolItem *item;
+ gboolean show_offline;
+ gboolean show_avatars;
+ gboolean compact_contact_list;
+ gint x, y, w, h;
+
+ if (window) {
+ empathy_window_present (GTK_WINDOW (window->window), TRUE);
+ return window->window;
+ }
+
+ window = g_new0 (EmpathyMainWindow, 1);
+
+ /* Set up interface */
+ glade = empathy_glade_get_file ("empathy-main-window.glade",
+ "main_window",
+ NULL,
+ "main_window", &window->window,
+ "main_vbox", &window->main_vbox,
+ "errors_vbox", &window->errors_vbox,
+ "chat_show_offline", &show_offline_widget,
+ "room", &window->room,
+ "room_sep", &window->room_sep,
+ "room_join_favorites", &window->room_join_favorites,
+ "edit_context", &window->edit_context,
+ "edit_context_separator", &window->edit_context_separator,
+ "presence_toolbar", &window->presence_toolbar,
+ "roster_scrolledwindow", &sw,
+ NULL);
+
+ empathy_glade_connect (glade,
+ window,
+ "main_window", "destroy", main_window_destroy_cb,
+ "main_window", "configure_event", main_window_configure_event_cb,
+ "chat_quit", "activate", main_window_chat_quit_cb,
+ "chat_new_message", "activate", main_window_chat_new_message_cb,
+ "chat_history", "activate", main_window_chat_history_cb,
+ "room_join_new", "activate", main_window_room_join_new_cb,
+ "room_join_favorites", "activate", main_window_room_join_favorites_cb,
+ "room_manage_favorites", "activate", main_window_room_manage_favorites_cb,
+ "chat_add_contact", "activate", main_window_chat_add_contact_cb,
+ "chat_show_offline", "toggled", main_window_chat_show_offline_cb,
+ "edit", "button-press-event", main_window_edit_button_press_event_cb,
+ "edit_accounts", "activate", main_window_edit_accounts_cb,
+ "edit_personal_information", "activate", main_window_edit_personal_information_cb,
+ "edit_preferences", "activate", main_window_edit_preferences_cb,
+ "help_about", "activate", main_window_help_about_cb,
+ "help_contents", "activate", main_window_help_contents_cb,
+ NULL);
+
+ /* Set up connection related widgets. */
+ main_window_connection_items_setup (window, glade);
+ g_object_unref (glade);
+
+ window->mc = empathy_mission_control_new ();
+ dbus_g_proxy_connect_signal (DBUS_G_PROXY (window->mc), "AccountStatusChanged",
+ G_CALLBACK (main_window_status_changed_cb),
+ window, NULL);
+
+ window->errors = g_hash_table_new_full (empathy_account_hash,
+ empathy_account_equal,
+ g_object_unref,
+ NULL);
+
+ /* Set up menu */
+ main_window_favorite_chatroom_menu_setup (window);
+
+ gtk_widget_hide (window->edit_context);
+ gtk_widget_hide (window->edit_context_separator);
+
+ /* Set up presence chooser */
+ window->presence_chooser = empathy_presence_chooser_new ();
+ gtk_widget_show (window->presence_chooser);
+ item = gtk_tool_item_new ();
+ gtk_widget_show (GTK_WIDGET (item));
+ gtk_container_add (GTK_CONTAINER (item), window->presence_chooser);
+ gtk_tool_item_set_is_important (item, TRUE);
+ gtk_tool_item_set_expand (item, TRUE);
+ gtk_toolbar_insert (GTK_TOOLBAR (window->presence_toolbar), item, -1);
+
+ /* Set up the throbber */
+ ebox = gtk_event_box_new ();
+ gtk_event_box_set_visible_window (GTK_EVENT_BOX (ebox), FALSE);
+ gtk_widget_set_tooltip_text (ebox, _("Show and edit accounts"));
+ g_signal_connect (ebox,
+ "button-press-event",
+ G_CALLBACK (main_window_throbber_button_press_event_cb),
+ window);
+ gtk_widget_show (ebox);
+
+ window->throbber = ephy_spinner_new ();
+ ephy_spinner_set_size (EPHY_SPINNER (window->throbber), GTK_ICON_SIZE_LARGE_TOOLBAR);
+ gtk_container_add (GTK_CONTAINER (ebox), window->throbber);
+ gtk_widget_show (window->throbber);
+
+ item = gtk_tool_item_new ();
+ gtk_container_add (GTK_CONTAINER (item), ebox);
+ gtk_toolbar_insert (GTK_TOOLBAR (window->presence_toolbar), item, -1);
+ gtk_widget_show (GTK_WIDGET (item));
+
+ /* Set up contact list. */
+ empathy_status_presets_get_all ();
+
+ list_iface = EMPATHY_CONTACT_LIST (empathy_contact_manager_new ());
+ window->list_store = empathy_contact_list_store_new (list_iface);
+ window->list_view = empathy_contact_list_view_new (window->list_store,
+ EMPATHY_CONTACT_LIST_FEATURE_ALL);
+ g_object_unref (list_iface);
+
+ gtk_widget_show (GTK_WIDGET (window->list_view));
+ gtk_container_add (GTK_CONTAINER (sw),
+ GTK_WIDGET (window->list_view));
+
+ /* Load user-defined accelerators. */
+ main_window_accels_load ();
+
+ /* Set window size. */
+ empathy_geometry_load (GEOMETRY_NAME, &x, &y, &w, &h);
+
+ if (w >= 1 && h >= 1) {
+ /* Use the defaults from the glade file if we
+ * don't have good w, h geometry.
+ */
+ empathy_debug (DEBUG_DOMAIN, "Configuring window default size w:%d, h:%d", w, h);
+ gtk_window_set_default_size (GTK_WINDOW (window->window), w, h);
+ }
+
+ if (x >= 0 && y >= 0) {
+ /* Let the window manager position it if we
+ * don't have good x, y coordinates.
+ */
+ empathy_debug (DEBUG_DOMAIN, "Configuring window default position x:%d, y:%d", x, y);
+ gtk_window_move (GTK_WINDOW (window->window), x, y);
+ }
+
+ conf = empathy_conf_get ();
+
+ /* Show offline ? */
+ empathy_conf_get_bool (conf,
+ EMPATHY_PREFS_CONTACTS_SHOW_OFFLINE,
+ &show_offline);
+ empathy_conf_notify_add (conf,
+ EMPATHY_PREFS_CONTACTS_SHOW_OFFLINE,
+ main_window_notify_show_offline_cb,
+ show_offline_widget);
+
+ gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (show_offline_widget),
+ show_offline);
+
+ /* Show avatars ? */
+ empathy_conf_get_bool (conf,
+ EMPATHY_PREFS_UI_SHOW_AVATARS,
+ &show_avatars);
+ empathy_conf_notify_add (conf,
+ EMPATHY_PREFS_UI_SHOW_AVATARS,
+ (EmpathyConfNotifyFunc) main_window_notify_show_avatars_cb,
+ window);
+ empathy_contact_list_store_set_show_avatars (window->list_store, show_avatars);
+
+ /* Is compact ? */
+ empathy_conf_get_bool (conf,
+ EMPATHY_PREFS_UI_COMPACT_CONTACT_LIST,
+ &compact_contact_list);
+ empathy_conf_notify_add (conf,
+ EMPATHY_PREFS_UI_COMPACT_CONTACT_LIST,
+ (EmpathyConfNotifyFunc) main_window_notify_compact_contact_list_cb,
+ window);
+ empathy_contact_list_store_set_is_compact (window->list_store, compact_contact_list);
+
+ /* Sort criterium */
+ empathy_conf_notify_add (conf,
+ EMPATHY_PREFS_CONTACTS_SORT_CRITERIUM,
+ (EmpathyConfNotifyFunc) main_window_notify_sort_criterium_cb,
+ window);
+ main_window_notify_sort_criterium_cb (conf,
+ EMPATHY_PREFS_CONTACTS_SORT_CRITERIUM,
+ window);
+
+ main_window_update_status (window);
+
+ return window->window;
+}
+
+static void
+main_window_destroy_cb (GtkWidget *widget,
+ EmpathyMainWindow *window)
+{
+ /* Save user-defined accelerators. */
+ main_window_accels_save ();
+
+ dbus_g_proxy_disconnect_signal (DBUS_G_PROXY (window->mc), "AccountStatusChanged",
+ G_CALLBACK (main_window_status_changed_cb),
+ window);
+
+ if (window->size_timeout_id) {
+ g_source_remove (window->size_timeout_id);
+ }
+
+ g_list_free (window->widgets_connected);
+ g_list_free (window->widgets_disconnected);
+
+ g_object_unref (window->mc);
+ g_object_unref (window->list_store);
+ g_hash_table_destroy (window->errors);
+
+ g_free (window);
+}
+
+static void
+main_window_favorite_chatroom_menu_setup (EmpathyMainWindow *window)
+{
+ GList *chatrooms, *l;
+
+ window->chatroom_manager = empathy_chatroom_manager_new ();
+ chatrooms = empathy_chatroom_manager_get_chatrooms (window->chatroom_manager, NULL);
+ window->room_menu = gtk_menu_item_get_submenu (GTK_MENU_ITEM (window->room));
+
+ for (l = chatrooms; l; l = l->next) {
+ main_window_favorite_chatroom_menu_add (window, l->data);
+ }
+
+ if (!chatrooms) {
+ gtk_widget_hide (window->room_sep);
+ }
+
+ gtk_widget_set_sensitive (window->room_join_favorites, chatrooms != NULL);
+
+ g_signal_connect (window->chatroom_manager, "chatroom-added",
+ G_CALLBACK (main_window_favorite_chatroom_menu_added_cb),
+ window);
+ g_signal_connect (window->chatroom_manager, "chatroom-removed",
+ G_CALLBACK (main_window_favorite_chatroom_menu_removed_cb),
+ window);
+
+ g_list_free (chatrooms);
+}
+
+static void
+main_window_favorite_chatroom_menu_added_cb (EmpathyChatroomManager *manager,
+ EmpathyChatroom *chatroom,
+ EmpathyMainWindow *window)
+{
+ main_window_favorite_chatroom_menu_add (window, chatroom);
+ gtk_widget_show (window->room_sep);
+ gtk_widget_set_sensitive (window->room_join_favorites, TRUE);
+}
+
+static void
+main_window_favorite_chatroom_menu_removed_cb (EmpathyChatroomManager *manager,
+ EmpathyChatroom *chatroom,
+ EmpathyMainWindow *window)
+{
+ GtkWidget *menu_item;
+
+ menu_item = g_object_get_data (G_OBJECT (chatroom), "menu_item");
+
+ g_object_set_data (G_OBJECT (chatroom), "menu_item", NULL);
+ gtk_widget_destroy (menu_item);
+
+ main_window_favorite_chatroom_menu_update (window);
+}
+
+static void
+main_window_favorite_chatroom_menu_activate_cb (GtkMenuItem *menu_item,
+ EmpathyChatroom *chatroom)
+{
+ main_window_favorite_chatroom_join (chatroom);
+}
+
+static void
+main_window_favorite_chatroom_menu_update (EmpathyMainWindow *window)
+{
+ GList *chatrooms;
+
+ chatrooms = empathy_chatroom_manager_get_chatrooms (window->chatroom_manager, NULL);
+
+ if (chatrooms) {
+ gtk_widget_show (window->room_sep);
+ } else {
+ gtk_widget_hide (window->room_sep);
+ }
+
+ gtk_widget_set_sensitive (window->room_join_favorites, chatrooms != NULL);
+ g_list_free (chatrooms);
+}
+
+static void
+main_window_favorite_chatroom_menu_add (EmpathyMainWindow *window,
+ EmpathyChatroom *chatroom)
+{
+ GtkWidget *menu_item;
+ const gchar *name;
+
+ if (g_object_get_data (G_OBJECT (chatroom), "menu_item")) {
+ return;
+ }
+
+ name = empathy_chatroom_get_name (chatroom);
+ menu_item = gtk_menu_item_new_with_label (name);
+
+ g_object_set_data (G_OBJECT (chatroom), "menu_item", menu_item);
+ g_signal_connect (menu_item, "activate",
+ G_CALLBACK (main_window_favorite_chatroom_menu_activate_cb),
+ chatroom);
+
+ gtk_menu_shell_insert (GTK_MENU_SHELL (window->room_menu),
+ menu_item, 3);
+
+ gtk_widget_show (menu_item);
+}
+
+static void
+main_window_favorite_chatroom_join (EmpathyChatroom *chatroom)
+{
+ MissionControl *mc;
+ McAccount *account;
+ const gchar *room;
+
+ mc = empathy_mission_control_new ();
+ account = empathy_chatroom_get_account (chatroom);
+ room = empathy_chatroom_get_room (chatroom);
+
+ empathy_debug (DEBUG_DOMAIN, "Requesting channel for '%s'", room);
+
+ mission_control_request_channel_with_string_handle (mc,
+ account,
+ TP_IFACE_CHANNEL_TYPE_TEXT,
+ room,
+ TP_HANDLE_TYPE_ROOM,
+ NULL, NULL);
+ g_object_unref (mc);
+}
+
+static void
+main_window_chat_quit_cb (GtkWidget *widget,
+ EmpathyMainWindow *window)
+{
+ gtk_main_quit ();
+}
+
+static void
+main_window_chat_new_message_cb (GtkWidget *widget,
+ EmpathyMainWindow *window)
+{
+ empathy_new_message_dialog_show (GTK_WINDOW (window->window));
+}
+
+static void
+main_window_chat_history_cb (GtkWidget *widget,
+ EmpathyMainWindow *window)
+{
+ empathy_log_window_show (NULL, NULL, FALSE, GTK_WINDOW (window->window));
+}
+
+static void
+main_window_room_join_new_cb (GtkWidget *widget,
+ EmpathyMainWindow *window)
+{
+ empathy_new_chatroom_dialog_show (GTK_WINDOW (window->window));
+}
+
+static void
+main_window_room_join_favorites_cb (GtkWidget *widget,
+ EmpathyMainWindow *window)
+{
+ GList *chatrooms, *l;
+
+ chatrooms = empathy_chatroom_manager_get_chatrooms (window->chatroom_manager, NULL);
+ for (l = chatrooms; l; l = l->next) {
+ main_window_favorite_chatroom_join (l->data);
+ }
+ g_list_free (chatrooms);
+}
+
+static void
+main_window_room_manage_favorites_cb (GtkWidget *widget,
+ EmpathyMainWindow *window)
+{
+ empathy_chatrooms_window_show (GTK_WINDOW (window->window));
+}
+
+static void
+main_window_chat_add_contact_cb (GtkWidget *widget,
+ EmpathyMainWindow *window)
+{
+ empathy_new_contact_dialog_show (GTK_WINDOW (window->window));
+}
+
+static void
+main_window_chat_show_offline_cb (GtkCheckMenuItem *item,
+ EmpathyMainWindow *window)
+{
+ gboolean current;
+
+ current = gtk_check_menu_item_get_active (item);
+
+ empathy_conf_set_bool (empathy_conf_get (),
+ EMPATHY_PREFS_CONTACTS_SHOW_OFFLINE,
+ current);
+
+ /* Turn off sound just while we alter the contact list. */
+ // FIXME: empathy_sound_set_enabled (FALSE);
+ empathy_contact_list_store_set_show_offline (window->list_store, current);
+ //empathy_sound_set_enabled (TRUE);
+}
+
+static gboolean
+main_window_edit_button_press_event_cb (GtkWidget *widget,
+ GdkEventButton *event,
+ EmpathyMainWindow *window)
+{
+ EmpathyContact *contact;
+ gchar *group;
+
+ if (!event->button == 1) {
+ return FALSE;
+ }
+
+ group = empathy_contact_list_view_get_selected_group (window->list_view);
+ if (group) {
+ GtkMenuItem *item;
+ GtkWidget *label;
+ GtkWidget *submenu;
+
+ item = GTK_MENU_ITEM (window->edit_context);
+ label = gtk_bin_get_child (GTK_BIN (item));
+ gtk_label_set_text (GTK_LABEL (label), _("Group"));
+
+ gtk_widget_show (window->edit_context);
+ gtk_widget_show (window->edit_context_separator);
+
+ submenu = empathy_contact_list_view_get_group_menu (window->list_view);
+ gtk_menu_item_set_submenu (item, submenu);
+
+ g_free (group);
+
+ return FALSE;
+ }
+
+ contact = empathy_contact_list_view_get_selected (window->list_view);
+ if (contact) {
+ GtkMenuItem *item;
+ GtkWidget *label;
+ GtkWidget *submenu;
+
+ item = GTK_MENU_ITEM (window->edit_context);
+ label = gtk_bin_get_child (GTK_BIN (item));
+ gtk_label_set_text (GTK_LABEL (label), _("Contact"));
+
+ gtk_widget_show (window->edit_context);
+ gtk_widget_show (window->edit_context_separator);
+
+ submenu = empathy_contact_list_view_get_contact_menu (window->list_view,
+ contact);
+ gtk_menu_item_set_submenu (item, submenu);
+
+ g_object_unref (contact);
+
+ return FALSE;
+ }
+
+ gtk_widget_hide (window->edit_context);
+ gtk_widget_hide (window->edit_context_separator);
+
+ return FALSE;
+}
+
+static void
+main_window_edit_accounts_cb (GtkWidget *widget,
+ EmpathyMainWindow *window)
+{
+ empathy_accounts_dialog_show (GTK_WINDOW (window->window));
+}
+
+static void
+main_window_edit_personal_information_cb (GtkWidget *widget,
+ EmpathyMainWindow *window)
+{
+ GSList *accounts;
+
+ accounts = mission_control_get_online_connections (window->mc, NULL);
+ if (accounts) {
+ EmpathyContactFactory *factory;
+ EmpathyContact *contact;
+ McAccount *account;
+
+ account = accounts->data;
+ factory = empathy_contact_factory_new ();
+ contact = empathy_contact_factory_get_user (factory, account);
+ empathy_contact_information_dialog_show (contact,
+ GTK_WINDOW (window->window),
+ TRUE, TRUE);
+ g_slist_foreach (accounts, (GFunc) g_object_unref, NULL);
+ g_slist_free (accounts);
+ g_object_unref (factory);
+ g_object_unref (contact);
+ }
+}
+
+static void
+main_window_edit_preferences_cb (GtkWidget *widget,
+ EmpathyMainWindow *window)
+{
+ empathy_preferences_show (GTK_WINDOW (window->window));
+}
+
+static void
+main_window_help_about_cb (GtkWidget *widget,
+ EmpathyMainWindow *window)
+{
+ empathy_about_dialog_new (GTK_WINDOW (window->window));
+}
+
+static void
+main_window_help_contents_cb (GtkWidget *widget,
+ EmpathyMainWindow *window)
+{
+ //empathy_help_show ();
+}
+
+static gboolean
+main_window_throbber_button_press_event_cb (GtkWidget *throbber_ebox,
+ GdkEventButton *event,
+ EmpathyMainWindow *window)
+{
+ if (event->type != GDK_BUTTON_PRESS ||
+ event->button != 1) {
+ return FALSE;
+ }
+
+ empathy_accounts_dialog_show (GTK_WINDOW (window->window));
+
+ return FALSE;
+}
+
+static void
+main_window_error_edit_clicked_cb (GtkButton *button,
+ EmpathyMainWindow *window)
+{
+ McAccount *account;
+ GtkWidget *error_widget;
+
+ empathy_accounts_dialog_show (GTK_WINDOW (window->window));
+
+ account = g_object_get_data (G_OBJECT (button), "account");
+ error_widget = g_hash_table_lookup (window->errors, account);
+ gtk_widget_destroy (error_widget);
+ g_hash_table_remove (window->errors, account);
+}
+
+static void
+main_window_error_clear_clicked_cb (GtkButton *button,
+ EmpathyMainWindow *window)
+{
+ McAccount *account;
+ GtkWidget *error_widget;
+
+ account = g_object_get_data (G_OBJECT (button), "account");
+ error_widget = g_hash_table_lookup (window->errors, account);
+ gtk_widget_destroy (error_widget);
+ g_hash_table_remove (window->errors, account);
+}
+
+static void
+main_window_error_display (EmpathyMainWindow *window,
+ McAccount *account,
+ const gchar *message)
+{
+ GtkWidget *child;
+ GtkWidget *table;
+ GtkWidget *image;
+ GtkWidget *button_edit;
+ GtkWidget *alignment;
+ GtkWidget *hbox;
+ GtkWidget *label;
+ GtkWidget *fixed;
+ GtkWidget *vbox;
+ GtkWidget *button_close;
+ gchar *str;
+
+ child = g_hash_table_lookup (window->errors, account);
+ if (child) {
+ label = g_object_get_data (G_OBJECT (child), "label");
+
+ /* Just set the latest error and return */
+ str = g_markup_printf_escaped ("<b>%s</b>\n%s",
+ mc_account_get_display_name (account),
+ message);
+ gtk_label_set_markup (GTK_LABEL (label), str);
+ g_free (str);
+
+ return;
+ }
+
+ child = gtk_vbox_new (FALSE, 0);
+ gtk_box_pack_start (GTK_BOX (window->errors_vbox), child, FALSE, TRUE, 0);
+ gtk_container_set_border_width (GTK_CONTAINER (child), 6);
+ gtk_widget_show (child);
+
+ table = gtk_table_new (2, 4, FALSE);
+ gtk_widget_show (table);
+ gtk_box_pack_start (GTK_BOX (child), table, TRUE, TRUE, 0);
+ gtk_table_set_row_spacings (GTK_TABLE (table), 12);
+ gtk_table_set_col_spacings (GTK_TABLE (table), 6);
+
+ image = gtk_image_new_from_stock (GTK_STOCK_DISCONNECT, GTK_ICON_SIZE_MENU);
+ gtk_widget_show (image);
+ gtk_table_attach (GTK_TABLE (table), image, 0, 1, 0, 2,
+ (GtkAttachOptions) (GTK_FILL),
+ (GtkAttachOptions) (GTK_FILL), 0, 0);
+ gtk_misc_set_alignment (GTK_MISC (image), 0.5, 0);
+
+ button_edit = gtk_button_new ();
+ gtk_widget_show (button_edit);
+ gtk_table_attach (GTK_TABLE (table), button_edit, 1, 2, 1, 2,
+ (GtkAttachOptions) (GTK_FILL),
+ (GtkAttachOptions) (0), 0, 0);
+
+ alignment = gtk_alignment_new (0.5, 0.5, 0, 0);
+ gtk_widget_show (alignment);
+ gtk_container_add (GTK_CONTAINER (button_edit), alignment);
+
+ hbox = gtk_hbox_new (FALSE, 2);
+ gtk_widget_show (hbox);
+ gtk_container_add (GTK_CONTAINER (alignment), hbox);
+
+ image = gtk_image_new_from_stock (GTK_STOCK_EDIT, GTK_ICON_SIZE_BUTTON);
+ gtk_widget_show (image);
+ gtk_box_pack_start (GTK_BOX (hbox), image, FALSE, FALSE, 0);
+
+ label = gtk_label_new_with_mnemonic (_("_Edit account"));
+ gtk_widget_show (label);
+ gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
+
+ fixed = gtk_fixed_new ();
+ gtk_widget_show (fixed);
+ gtk_table_attach (GTK_TABLE (table), fixed, 2, 3, 1, 2,
+ (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
+ (GtkAttachOptions) (GTK_FILL), 0, 0);
+
+ vbox = gtk_vbox_new (FALSE, 6);
+ gtk_widget_show (vbox);
+ gtk_table_attach (GTK_TABLE (table), vbox, 3, 4, 0, 2,
+ (GtkAttachOptions) (GTK_FILL),
+ (GtkAttachOptions) (GTK_FILL), 0, 0);
+
+ button_close = gtk_button_new ();
+ gtk_widget_show (button_close);
+ gtk_box_pack_start (GTK_BOX (vbox), button_close, FALSE, FALSE, 0);
+ gtk_button_set_relief (GTK_BUTTON (button_close), GTK_RELIEF_NONE);
+
+
+ image = gtk_image_new_from_stock ("gtk-close", GTK_ICON_SIZE_MENU);
+ gtk_widget_show (image);
+ gtk_container_add (GTK_CONTAINER (button_close), image);
+
+ label = gtk_label_new ("");
+ gtk_widget_show (label);
+ gtk_table_attach (GTK_TABLE (table), label, 1, 3, 0, 1,
+ (GtkAttachOptions) (GTK_EXPAND | GTK_SHRINK | GTK_FILL),
+ (GtkAttachOptions) (GTK_EXPAND | GTK_SHRINK | GTK_FILL), 0, 0);
+ gtk_widget_set_size_request (label, 175, -1);
+ gtk_label_set_use_markup (GTK_LABEL (label), TRUE);
+ gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
+ gtk_misc_set_alignment (GTK_MISC (label), 0, 0);
+
+ str = g_markup_printf_escaped ("<b>%s</b>\n%s",
+ mc_account_get_display_name (account),
+ message);
+ gtk_label_set_markup (GTK_LABEL (label), str);
+ g_free (str);
+
+ g_object_set_data (G_OBJECT (child), "label", label);
+ g_object_set_data_full (G_OBJECT (button_edit),
+ "account", g_object_ref (account),
+ g_object_unref);
+ g_object_set_data_full (G_OBJECT (button_close),
+ "account", g_object_ref (account),
+ g_object_unref);
+
+ g_signal_connect (button_edit, "clicked",
+ G_CALLBACK (main_window_error_edit_clicked_cb),
+ window);
+
+ g_signal_connect (button_close, "clicked",
+ G_CALLBACK (main_window_error_clear_clicked_cb),
+ window);
+
+ gtk_widget_show (window->errors_vbox);
+
+ g_hash_table_insert (window->errors, g_object_ref (account), child);
+}
+
+static void
+main_window_status_changed_cb (MissionControl *mc,
+ TpConnectionStatus status,
+ McPresence presence,
+ TpConnectionStatusReason reason,
+ const gchar *unique_name,
+ EmpathyMainWindow *window)
+{
+ McAccount *account;
+
+ main_window_update_status (window);
+
+ account = mc_account_lookup (unique_name);
+
+ if (status == TP_CONNECTION_STATUS_DISCONNECTED &&
+ reason > TP_CONNECTION_STATUS_REASON_REQUESTED) {
+ const gchar *message;
+
+ switch (reason) {
+ case TP_CONNECTION_STATUS_REASON_NETWORK_ERROR:
+ message = _("Network error");
+ break;
+ case TP_CONNECTION_STATUS_REASON_AUTHENTICATION_FAILED:
+ message = _("Authentication failed");
+ break;
+ case TP_CONNECTION_STATUS_REASON_ENCRYPTION_ERROR:
+ message = _("Encryption error");
+ break;
+ case TP_CONNECTION_STATUS_REASON_NAME_IN_USE:
+ message = _("Name in use");
+ break;
+ case TP_CONNECTION_STATUS_REASON_CERT_NOT_PROVIDED:
+ message = _("Certificate not provided");
+ break;
+ case TP_CONNECTION_STATUS_REASON_CERT_UNTRUSTED:
+ message = _("Certificate untrusted");
+ break;
+ case TP_CONNECTION_STATUS_REASON_CERT_EXPIRED:
+ message = _("Certificate expired");
+ break;
+ case TP_CONNECTION_STATUS_REASON_CERT_NOT_ACTIVATED:
+ message = _("Certificate not activated");
+ break;
+ case TP_CONNECTION_STATUS_REASON_CERT_HOSTNAME_MISMATCH:
+ message = _("Certificate hostname mismatch");
+ break;
+ case TP_CONNECTION_STATUS_REASON_CERT_FINGERPRINT_MISMATCH:
+ message = _("Certificate fingerprint mismatch");
+ break;
+ case TP_CONNECTION_STATUS_REASON_CERT_SELF_SIGNED:
+ message = _("Certificate self signed");
+ break;
+ case TP_CONNECTION_STATUS_REASON_CERT_OTHER_ERROR:
+ message = _("Certificate error");
+ break;
+ default:
+ message = _("Unknown error");
+ break;
+ }
+
+ main_window_error_display (window, account, message);
+ }
+
+ if (status == TP_CONNECTION_STATUS_CONNECTED) {
+ GtkWidget *error_widget;
+
+ /* Account connected without error, remove error message if any */
+ error_widget = g_hash_table_lookup (window->errors, account);
+ if (error_widget) {
+ gtk_widget_destroy (error_widget);
+ g_hash_table_remove (window->errors, account);
+ }
+ }
+
+ g_object_unref (account);
+}
+
+static void
+main_window_update_status (EmpathyMainWindow *window)
+{
+ GList *accounts, *l;
+ guint connected = 0;
+ guint connecting = 0;
+ guint disconnected = 0;
+
+ /* Count number of connected/connecting/disconnected accounts */
+ accounts = mc_accounts_list ();
+ for (l = accounts; l; l = l->next) {
+ McAccount *account;
+ guint status;
+
+ account = l->data;
+
+ status = mission_control_get_connection_status (window->mc,
+ account,
+ NULL);
+
+ if (status == 0) {
+ connected++;
+ } else if (status == 1) {
+ connecting++;
+ } else if (status == 2) {
+ disconnected++;
+ }
+
+ g_object_unref (account);
+ }
+ g_list_free (accounts);
+
+ /* Update the spinner state */
+ if (connecting > 0) {
+ ephy_spinner_start (EPHY_SPINNER (window->throbber));
+ } else {
+ ephy_spinner_stop (EPHY_SPINNER (window->throbber));
+ }
+
+ /* Update widgets sensibility */
+ for (l = window->widgets_connected; l; l = l->next) {
+ gtk_widget_set_sensitive (l->data, (connected > 0));
+ }
+
+ for (l = window->widgets_disconnected; l; l = l->next) {
+ gtk_widget_set_sensitive (l->data, (disconnected > 0));
+ }
+}
+
+/*
+ * Accels
+ */
+static void
+main_window_accels_load (void)
+{
+ gchar *filename;
+
+ filename = g_build_filename (g_get_home_dir (), ".gnome2", PACKAGE_NAME, ACCELS_FILENAME, NULL);
+ if (g_file_test (filename, G_FILE_TEST_EXISTS)) {
+ empathy_debug (DEBUG_DOMAIN, "Loading from:'%s'", filename);
+ gtk_accel_map_load (filename);
+ }
+
+ g_free (filename);
+}
+
+static void
+main_window_accels_save (void)
+{
+ gchar *dir;
+ gchar *file_with_path;
+
+ dir = g_build_filename (g_get_home_dir (), ".gnome2", PACKAGE_NAME, NULL);
+ g_mkdir_with_parents (dir, S_IRUSR | S_IWUSR | S_IXUSR);
+ file_with_path = g_build_filename (dir, ACCELS_FILENAME, NULL);
+ g_free (dir);
+
+ empathy_debug (DEBUG_DOMAIN, "Saving to:'%s'", file_with_path);
+ gtk_accel_map_save (file_with_path);
+
+ g_free (file_with_path);
+}
+
+static void
+main_window_connection_items_setup (EmpathyMainWindow *window,
+ GladeXML *glade)
+{
+ GList *list;
+ GtkWidget *w;
+ gint i;
+ const gchar *widgets_connected[] = {
+ "room",
+ "chat_new_message",
+ "chat_add_contact",
+ "edit_personal_information"
+ };
+ const gchar *widgets_disconnected[] = {
+ };
+
+ for (i = 0, list = NULL; i < G_N_ELEMENTS (widgets_connected); i++) {
+ w = glade_xml_get_widget (glade, widgets_connected[i]);
+ list = g_list_prepend (list, w);
+ }
+
+ window->widgets_connected = list;
+
+ for (i = 0, list = NULL; i < G_N_ELEMENTS (widgets_disconnected); i++) {
+ w = glade_xml_get_widget (glade, widgets_disconnected[i]);
+ list = g_list_prepend (list, w);
+ }
+
+ window->widgets_disconnected = list;
+}
+
+static gboolean
+main_window_configure_event_timeout_cb (EmpathyMainWindow *window)
+{
+ gint x, y, w, h;
+
+ gtk_window_get_size (GTK_WINDOW (window->window), &w, &h);
+ gtk_window_get_position (GTK_WINDOW (window->window), &x, &y);
+
+ empathy_geometry_save (GEOMETRY_NAME, x, y, w, h);
+
+ window->size_timeout_id = 0;
+
+ return FALSE;
+}
+
+static gboolean
+main_window_configure_event_cb (GtkWidget *widget,
+ GdkEventConfigure *event,
+ EmpathyMainWindow *window)
+{
+ if (window->size_timeout_id) {
+ g_source_remove (window->size_timeout_id);
+ }
+
+ window->size_timeout_id = g_timeout_add_seconds (1,
+ (GSourceFunc) main_window_configure_event_timeout_cb,
+ window);
+
+ return FALSE;
+}
+
+static void
+main_window_notify_show_offline_cb (EmpathyConf *conf,
+ const gchar *key,
+ gpointer check_menu_item)
+{
+ gboolean show_offline;
+
+ if (empathy_conf_get_bool (conf, key, &show_offline)) {
+ gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (check_menu_item),
+ show_offline);
+ }
+}
+
+static void
+main_window_notify_show_avatars_cb (EmpathyConf *conf,
+ const gchar *key,
+ EmpathyMainWindow *window)
+{
+ gboolean show_avatars;
+
+ if (empathy_conf_get_bool (conf, key, &show_avatars)) {
+ empathy_contact_list_store_set_show_avatars (window->list_store,
+ show_avatars);
+ }
+}
+
+static void
+main_window_notify_compact_contact_list_cb (EmpathyConf *conf,
+ const gchar *key,
+ EmpathyMainWindow *window)
+{
+ gboolean compact_contact_list;
+
+ if (empathy_conf_get_bool (conf, key, &compact_contact_list)) {
+ empathy_contact_list_store_set_is_compact (window->list_store,
+ compact_contact_list);
+ }
+}
+
+static void
+main_window_notify_sort_criterium_cb (EmpathyConf *conf,
+ const gchar *key,
+ EmpathyMainWindow *window)
+{
+ gchar *str = NULL;
+
+ if (empathy_conf_get_string (conf, key, &str) && str) {
+ GType type;
+ GEnumClass *enum_class;
+ GEnumValue *enum_value;
+
+ type = empathy_contact_list_store_sort_get_type ();
+ enum_class = G_ENUM_CLASS (g_type_class_peek (type));
+ enum_value = g_enum_get_value_by_nick (enum_class, str);
+ g_free (str);
+
+ if (enum_value) {
+ empathy_contact_list_store_set_sort_criterium (window->list_store,
+ enum_value->value);
+ }
+ }
+}
+
diff --git a/gnome-2-22/libempathy-gtk/empathy-main-window.glade b/gnome-2-22/libempathy-gtk/empathy-main-window.glade
new file mode 100644
index 000000000..02f69a38d
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-main-window.glade
@@ -0,0 +1,310 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
+<!--*- mode: xml -*-->
+<glade-interface>
+ <widget class="GtkWindow" id="main_window">
+ <property name="title" translatable="yes">Contact List</property>
+ <property name="default_width">225</property>
+ <property name="default_height">325</property>
+ <child>
+ <widget class="GtkVBox" id="main_vbox">
+ <property name="visible">True</property>
+ <child>
+ <widget class="GtkMenuBar" id="menubar2">
+ <property name="visible">True</property>
+ <child>
+ <widget class="GtkMenuItem" id="chat">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Chat</property>
+ <property name="use_underline">True</property>
+ <child>
+ <widget class="GtkMenu" id="chat_menu">
+ <child>
+ <widget class="GtkImageMenuItem" id="chat_new_message">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_New Conversation...</property>
+ <property name="use_underline">True</property>
+ <accelerator key="N" modifiers="GDK_CONTROL_MASK" signal="activate"/>
+ <child internal-child="image">
+ <widget class="GtkImage" id="image885">
+ <property name="visible">True</property>
+ <property name="icon_size">1</property>
+ <property name="icon_name">im-message-new</property>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkImageMenuItem" id="chat_history">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_View Previous Conversations</property>
+ <property name="use_underline">True</property>
+ <accelerator key="F3" modifiers="" signal="activate"/>
+ <child internal-child="image">
+ <widget class="GtkImage" id="image886">
+ <property name="visible">True</property>
+ <property name="icon_size">1</property>
+ <property name="icon_name">document-open-recent</property>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkSeparatorMenuItem" id="separator5">
+ <property name="visible">True</property>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkImageMenuItem" id="chat_add_contact">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Add Contact...</property>
+ <property name="use_underline">True</property>
+ <child internal-child="image">
+ <widget class="GtkImage" id="image887">
+ <property name="visible">True</property>
+ <property name="stock">gtk-add</property>
+ <property name="icon_size">1</property>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkSeparatorMenuItem" id="separator3">
+ <property name="visible">True</property>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkCheckMenuItem" id="chat_show_offline">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Show _Offline Contacts</property>
+ <property name="use_underline">True</property>
+ <accelerator key="H" modifiers="GDK_CONTROL_MASK" signal="activate"/>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkSeparatorMenuItem" id="separator6">
+ <property name="visible">True</property>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkImageMenuItem" id="chat_quit">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Quit</property>
+ <property name="use_underline">True</property>
+ <accelerator key="Q" modifiers="GDK_CONTROL_MASK" signal="activate"/>
+ <child internal-child="image">
+ <widget class="GtkImage" id="image888">
+ <property name="visible">True</property>
+ <property name="stock">gtk-quit</property>
+ <property name="icon_size">1</property>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkMenuItem" id="edit">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Edit</property>
+ <property name="use_underline">True</property>
+ <child>
+ <widget class="GtkMenu" id="edit_menu">
+ <child>
+ <widget class="GtkMenuItem" id="edit_context">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Context</property>
+ <property name="use_underline">True</property>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkSeparatorMenuItem" id="edit_context_separator">
+ <property name="visible">True</property>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkMenuItem" id="edit_accounts">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Accounts</property>
+ <property name="use_underline">True</property>
+ <accelerator key="F4" modifiers="" signal="activate"/>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkImageMenuItem" id="edit_personal_information">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Personal Information</property>
+ <property name="use_underline">True</property>
+ <child internal-child="image">
+ <widget class="GtkImage" id="image894">
+ <property name="visible">True</property>
+ <property name="icon_size">1</property>
+ <property name="icon_name">user-info</property>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkSeparatorMenuItem" id="separator2">
+ <property name="visible">True</property>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkImageMenuItem" id="edit_preferences">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Preferences</property>
+ <property name="use_underline">True</property>
+ <child internal-child="image">
+ <widget class="GtkImage" id="image891">
+ <property name="visible">True</property>
+ <property name="stock">gtk-preferences</property>
+ <property name="icon_size">1</property>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkMenuItem" id="room">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Room</property>
+ <property name="use_underline">True</property>
+ <child>
+ <widget class="GtkMenu" id="room_menu">
+ <child>
+ <widget class="GtkMenuItem" id="room_join_new">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Join _New...</property>
+ <property name="use_underline">True</property>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkMenuItem" id="room_join_favorites">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Join _Favorites</property>
+ <property name="use_underline">True</property>
+ <accelerator key="F5" modifiers="" signal="activate"/>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkSeparatorMenuItem" id="room_sep">
+ <property name="visible">True</property>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkSeparatorMenuItem" id="room_sep2">
+ <property name="visible">True</property>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkImageMenuItem" id="room_manage_favorites">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Manage Favorites</property>
+ <property name="use_underline">True</property>
+ <child internal-child="image">
+ <widget class="GtkImage" id="image890">
+ <property name="visible">True</property>
+ <property name="icon_size">1</property>
+ <property name="icon_name">system-users</property>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkMenuItem" id="help">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Help</property>
+ <property name="use_underline">True</property>
+ <child>
+ <widget class="GtkMenu" id="help_menu">
+ <child>
+ <widget class="GtkImageMenuItem" id="help_contents">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Contents</property>
+ <property name="use_underline">True</property>
+ <accelerator key="F1" modifiers="" signal="activate"/>
+ <child internal-child="image">
+ <widget class="GtkImage" id="image892">
+ <property name="visible">True</property>
+ <property name="stock">gtk-help</property>
+ <property name="icon_size">1</property>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkImageMenuItem" id="help_about">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_About</property>
+ <property name="use_underline">True</property>
+ <child internal-child="image">
+ <widget class="GtkImage" id="image893">
+ <property name="visible">True</property>
+ <property name="stock">gtk-about</property>
+ <property name="icon_size">1</property>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkToolbar" id="presence_toolbar">
+ <property name="visible">True</property>
+ <property name="toolbar_style">GTK_TOOLBAR_BOTH</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkVBox" id="errors_vbox">
+ <child>
+ <placeholder/>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkScrolledWindow" id="roster_scrolledwindow">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="has_focus">True</property>
+ <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
+ <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+ <property name="shadow_type">GTK_SHADOW_IN</property>
+ <child>
+ <placeholder/>
+ </child>
+ </widget>
+ <packing>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+</glade-interface>
diff --git a/gnome-2-22/libempathy-gtk/empathy-main-window.h b/gnome-2-22/libempathy-gtk/empathy-main-window.h
new file mode 100644
index 000000000..669a97872
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-main-window.h
@@ -0,0 +1,35 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2002-2007 Imendio AB
+ * Copyright (C) 2007 Collabora Ltd.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * 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: Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#ifndef __EMPATHY_MAIN_WINDOW_H__
+#define __EMPATHY_MAIN_WINDOW_H__
+
+#include <gtk/gtkwidget.h>
+
+G_BEGIN_DECLS
+
+GtkWidget *empathy_main_window_show (void);
+
+G_END_DECLS
+
+#endif /* __EMPATHY_MAIN_WINDOW_H__ */
diff --git a/gnome-2-22/libempathy-gtk/empathy-new-chatroom-dialog.c b/gnome-2-22/libempathy-gtk/empathy-new-chatroom-dialog.c
new file mode 100644
index 000000000..b33439407
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-new-chatroom-dialog.c
@@ -0,0 +1,566 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2006-2007 Imendio AB
+ * Copyright (C) 2007-2008 Collabora Ltd.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * 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: Martyn Russell <martyn@imendio.com>
+ * Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#include "config.h"
+
+#include <string.h>
+#include <stdio.h>
+
+#include <gtk/gtk.h>
+#include <glade/glade.h>
+#include <glib.h>
+#include <glib/gi18n.h>
+
+#include <libmissioncontrol/mission-control.h>
+#include <libmissioncontrol/mc-account.h>
+#include <libmissioncontrol/mc-profile.h>
+
+#include <libempathy/empathy-tp-roomlist.h>
+#include <libempathy/empathy-chatroom.h>
+#include <libempathy/empathy-utils.h>
+#include <libempathy/empathy-debug.h>
+
+#include "empathy-new-chatroom-dialog.h"
+#include "empathy-account-chooser.h"
+#include "empathy-ui-utils.h"
+#include "ephy-spinner.h"
+
+#define DEBUG_DOMAIN "NewChatroomDialog"
+
+typedef struct {
+ EmpathyTpRoomlist *room_list;
+
+ GtkWidget *window;
+ GtkWidget *vbox_widgets;
+ GtkWidget *table_info;
+ GtkWidget *label_account;
+ GtkWidget *account_chooser;
+ GtkWidget *label_server;
+ GtkWidget *entry_server;
+ GtkWidget *togglebutton_refresh;
+ GtkWidget *label_room;
+ GtkWidget *entry_room;
+ GtkWidget *vbox_browse;
+ GtkWidget *image_status;
+ GtkWidget *label_status;
+ GtkWidget *hbox_status;
+ GtkWidget *throbber;
+ GtkWidget *treeview;
+ GtkTreeModel *model;
+ GtkWidget *button_join;
+ GtkWidget *button_close;
+} EmpathyNewChatroomDialog;
+
+enum {
+ COL_NAME,
+ COL_ROOM,
+ COL_COUNT
+};
+
+static void new_chatroom_dialog_response_cb (GtkWidget *widget,
+ gint response,
+ EmpathyNewChatroomDialog *dialog);
+static void new_chatroom_dialog_destroy_cb (GtkWidget *widget,
+ EmpathyNewChatroomDialog *dialog);
+static void new_chatroom_dialog_model_setup (EmpathyNewChatroomDialog *dialog);
+static void new_chatroom_dialog_model_add_columns (EmpathyNewChatroomDialog *dialog);
+static void new_chatroom_dialog_update_widgets (EmpathyNewChatroomDialog *dialog);
+static void new_chatroom_dialog_account_changed_cb (GtkComboBox *combobox,
+ EmpathyNewChatroomDialog *dialog);
+static void new_chatroom_dialog_roomlist_destroy_cb (EmpathyTpRoomlist *room_list,
+ EmpathyNewChatroomDialog *dialog);
+static void new_chatroom_dialog_new_room_cb (EmpathyTpRoomlist *room_list,
+ EmpathyChatroom *chatroom,
+ EmpathyNewChatroomDialog *dialog);
+static void new_chatroom_dialog_listing_cb (EmpathyTpRoomlist *room_list,
+ gboolean listing,
+ EmpathyNewChatroomDialog *dialog);
+static void new_chatroom_dialog_model_clear (EmpathyNewChatroomDialog *dialog);
+static void new_chatroom_dialog_model_row_activated_cb (GtkTreeView *tree_view,
+ GtkTreePath *path,
+ GtkTreeViewColumn *column,
+ EmpathyNewChatroomDialog *dialog);
+static void new_chatroom_dialog_model_selection_changed (GtkTreeSelection *selection,
+ EmpathyNewChatroomDialog *dialog);
+static void new_chatroom_dialog_join (EmpathyNewChatroomDialog *dialog);
+static void new_chatroom_dialog_entry_changed_cb (GtkWidget *entry,
+ EmpathyNewChatroomDialog *dialog);
+static void new_chatroom_dialog_browse_start (EmpathyNewChatroomDialog *dialog);
+static void new_chatroom_dialog_browse_stop (EmpathyNewChatroomDialog *dialog);
+static void new_chatroom_dialog_entry_server_activate_cb (GtkWidget *widget,
+ EmpathyNewChatroomDialog *dialog);
+static void new_chatroom_dialog_togglebutton_refresh_toggled_cb (GtkWidget *widget,
+ EmpathyNewChatroomDialog *dialog);
+
+static EmpathyNewChatroomDialog *dialog_p = NULL;
+
+void
+empathy_new_chatroom_dialog_show (GtkWindow *parent)
+{
+ EmpathyNewChatroomDialog *dialog;
+ GladeXML *glade;
+ GtkSizeGroup *size_group;
+
+ if (dialog_p) {
+ gtk_window_present (GTK_WINDOW (dialog_p->window));
+ return;
+ }
+
+ dialog_p = dialog = g_new0 (EmpathyNewChatroomDialog, 1);
+
+ glade = empathy_glade_get_file ("empathy-new-chatroom-dialog.glade",
+ "new_chatroom_dialog",
+ NULL,
+ "new_chatroom_dialog", &dialog->window,
+ "table_info", &dialog->table_info,
+ "label_account", &dialog->label_account,
+ "label_server", &dialog->label_server,
+ "label_room", &dialog->label_room,
+ "entry_server", &dialog->entry_server,
+ "entry_room", &dialog->entry_room,
+ "togglebutton_refresh", &dialog->togglebutton_refresh,
+ "vbox_browse", &dialog->vbox_browse,
+ "image_status", &dialog->image_status,
+ "label_status", &dialog->label_status,
+ "hbox_status", &dialog->hbox_status,
+ "treeview", &dialog->treeview,
+ "button_join", &dialog->button_join,
+ NULL);
+
+ empathy_glade_connect (glade,
+ dialog,
+ "new_chatroom_dialog", "response", new_chatroom_dialog_response_cb,
+ "new_chatroom_dialog", "destroy", new_chatroom_dialog_destroy_cb,
+ "entry_server", "changed", new_chatroom_dialog_entry_changed_cb,
+ "entry_server", "activate", new_chatroom_dialog_entry_server_activate_cb,
+ "entry_room", "changed", new_chatroom_dialog_entry_changed_cb,
+ "togglebutton_refresh", "toggled", new_chatroom_dialog_togglebutton_refresh_toggled_cb,
+ NULL);
+
+ g_object_unref (glade);
+
+ g_object_add_weak_pointer (G_OBJECT (dialog->window), (gpointer) &dialog_p);
+
+ /* Label alignment */
+ size_group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);
+
+ gtk_size_group_add_widget (size_group, dialog->label_account);
+ gtk_size_group_add_widget (size_group, dialog->label_server);
+ gtk_size_group_add_widget (size_group, dialog->label_room);
+
+ g_object_unref (size_group);
+
+ /* Set up chatrooms treeview */
+ new_chatroom_dialog_model_setup (dialog);
+
+ /* Add throbber */
+ dialog->throbber = ephy_spinner_new ();
+ ephy_spinner_set_size (EPHY_SPINNER (dialog->throbber), GTK_ICON_SIZE_LARGE_TOOLBAR);
+ gtk_widget_show (dialog->throbber);
+
+ gtk_box_pack_start (GTK_BOX (dialog->hbox_status), dialog->throbber,
+ FALSE, FALSE, 0);
+
+ /* Account chooser for custom */
+ dialog->account_chooser = empathy_account_chooser_new ();
+ empathy_account_chooser_set_filter (EMPATHY_ACCOUNT_CHOOSER (dialog->account_chooser),
+ empathy_account_chooser_filter_is_connected,
+ NULL);
+ gtk_table_attach_defaults (GTK_TABLE (dialog->table_info),
+ dialog->account_chooser,
+ 1, 3, 0, 1);
+ gtk_widget_show (dialog->account_chooser);
+
+ g_signal_connect (GTK_COMBO_BOX (dialog->account_chooser), "changed",
+ G_CALLBACK (new_chatroom_dialog_account_changed_cb),
+ dialog);
+ new_chatroom_dialog_account_changed_cb (GTK_COMBO_BOX (dialog->account_chooser),
+ dialog);
+
+ if (parent) {
+ gtk_window_set_transient_for (GTK_WINDOW (dialog->window),
+ GTK_WINDOW (parent));
+ }
+
+ gtk_widget_show (dialog->window);
+}
+
+static void
+new_chatroom_dialog_response_cb (GtkWidget *widget,
+ gint response,
+ EmpathyNewChatroomDialog *dialog)
+{
+ if (response == GTK_RESPONSE_OK) {
+ new_chatroom_dialog_join (dialog);
+ }
+
+ gtk_widget_destroy (widget);
+}
+
+static void
+new_chatroom_dialog_destroy_cb (GtkWidget *widget,
+ EmpathyNewChatroomDialog *dialog)
+{
+ if (dialog->room_list) {
+ g_object_unref (dialog->room_list);
+ }
+ g_object_unref (dialog->model);
+
+ g_free (dialog);
+}
+
+static void
+new_chatroom_dialog_model_setup (EmpathyNewChatroomDialog *dialog)
+{
+ GtkTreeView *view;
+ GtkListStore *store;
+ GtkTreeSelection *selection;
+
+ /* View */
+ view = GTK_TREE_VIEW (dialog->treeview);
+
+ g_signal_connect (view, "row-activated",
+ G_CALLBACK (new_chatroom_dialog_model_row_activated_cb),
+ dialog);
+
+ /* Store/Model */
+ store = gtk_list_store_new (COL_COUNT,
+ G_TYPE_STRING, /* Image */
+ G_TYPE_STRING, /* Text */
+ G_TYPE_STRING); /* Room */
+
+ dialog->model = GTK_TREE_MODEL (store);
+ gtk_tree_view_set_model (view, dialog->model);
+
+ /* Selection */
+ selection = gtk_tree_view_get_selection (view);
+ gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (store),
+ COL_NAME, GTK_SORT_ASCENDING);
+
+ g_signal_connect (selection, "changed",
+ G_CALLBACK (new_chatroom_dialog_model_selection_changed),
+ dialog);
+
+ /* Columns */
+ new_chatroom_dialog_model_add_columns (dialog);
+}
+
+static void
+new_chatroom_dialog_model_add_columns (EmpathyNewChatroomDialog *dialog)
+{
+ GtkTreeView *view;
+ GtkTreeViewColumn *column;
+ GtkCellRenderer *cell;
+
+ view = GTK_TREE_VIEW (dialog->treeview);
+ gtk_tree_view_set_headers_visible (view, FALSE);
+
+ cell = gtk_cell_renderer_text_new ();
+ g_object_set (cell,
+ "xpad", (guint) 4,
+ "ypad", (guint) 1,
+ "ellipsize", PANGO_ELLIPSIZE_END,
+ NULL);
+
+ column = gtk_tree_view_column_new_with_attributes (_("Chat Rooms"),
+ cell,
+ "text", COL_NAME,
+ NULL);
+
+ gtk_tree_view_column_set_expand (column, TRUE);
+ gtk_tree_view_append_column (view, column);
+}
+
+static void
+new_chatroom_dialog_update_widgets (EmpathyNewChatroomDialog *dialog)
+{
+ EmpathyAccountChooser *account_chooser;
+ McAccount *account;
+ McProfile *profile;
+ const gchar *protocol;
+ const gchar *room;
+
+ account_chooser = EMPATHY_ACCOUNT_CHOOSER (dialog->account_chooser);
+ account = empathy_account_chooser_get_account (account_chooser);
+ profile = mc_account_get_profile (account);
+ protocol = mc_profile_get_protocol_name (profile);
+
+ gtk_entry_set_text (GTK_ENTRY (dialog->entry_server), "");
+
+ /* hardcode here known protocols */
+ if (strcmp (protocol, "jabber") == 0) {
+ gtk_widget_set_sensitive (dialog->entry_server, TRUE);
+ gtk_widget_show (dialog->vbox_browse);
+
+ }
+ else if (strcmp (protocol, "local-xmpp") == 0) {
+ gtk_widget_set_sensitive (dialog->entry_server, FALSE);
+ gtk_widget_show (dialog->vbox_browse);
+ }
+ else if (strcmp (protocol, "irc") == 0) {
+ gtk_widget_set_sensitive (dialog->entry_server, FALSE);
+ gtk_widget_show (dialog->vbox_browse);
+ } else {
+ gtk_widget_set_sensitive (dialog->entry_server, TRUE);
+ gtk_widget_show (dialog->vbox_browse);
+ }
+
+ room = gtk_entry_get_text (GTK_ENTRY (dialog->entry_room));
+ gtk_widget_set_sensitive (dialog->button_join, !G_STR_EMPTY (room));
+
+ /* Final set up of the dialog */
+ gtk_widget_grab_focus (dialog->entry_room);
+
+ g_object_unref (account);
+ g_object_unref (profile);
+}
+
+static void
+new_chatroom_dialog_account_changed_cb (GtkComboBox *combobox,
+ EmpathyNewChatroomDialog *dialog)
+{
+ EmpathyAccountChooser *account_chooser;
+ McAccount *account;
+ gboolean listing = FALSE;
+
+ if (dialog->room_list) {
+ g_object_unref (dialog->room_list);
+ }
+
+ ephy_spinner_stop (EPHY_SPINNER (dialog->throbber));
+ new_chatroom_dialog_model_clear (dialog);
+
+ account_chooser = EMPATHY_ACCOUNT_CHOOSER (dialog->account_chooser);
+ account = empathy_account_chooser_get_account (account_chooser);
+ dialog->room_list = empathy_tp_roomlist_new (account);
+
+ if (dialog->room_list) {
+ g_signal_connect (dialog->room_list, "destroy",
+ G_CALLBACK (new_chatroom_dialog_roomlist_destroy_cb),
+ dialog);
+ g_signal_connect (dialog->room_list, "new-room",
+ G_CALLBACK (new_chatroom_dialog_new_room_cb),
+ dialog);
+ g_signal_connect (dialog->room_list, "listing",
+ G_CALLBACK (new_chatroom_dialog_listing_cb),
+ dialog);
+
+ listing = empathy_tp_roomlist_is_listing (dialog->room_list);
+ if (listing) {
+ ephy_spinner_start (EPHY_SPINNER (dialog->throbber));
+ }
+ }
+
+ new_chatroom_dialog_update_widgets (dialog);
+}
+
+static void
+new_chatroom_dialog_roomlist_destroy_cb (EmpathyTpRoomlist *room_list,
+ EmpathyNewChatroomDialog *dialog)
+{
+ g_object_unref (dialog->room_list);
+ dialog->room_list = NULL;
+}
+
+static void
+new_chatroom_dialog_new_room_cb (EmpathyTpRoomlist *room_list,
+ EmpathyChatroom *chatroom,
+ EmpathyNewChatroomDialog *dialog)
+{
+ GtkTreeView *view;
+ GtkTreeSelection *selection;
+ GtkListStore *store;
+ GtkTreeIter iter;
+
+ empathy_debug (DEBUG_DOMAIN, "New chatroom listed: %s (%s)",
+ empathy_chatroom_get_name (chatroom),
+ empathy_chatroom_get_room (chatroom));
+
+ /* Add to model */
+ view = GTK_TREE_VIEW (dialog->treeview);
+ selection = gtk_tree_view_get_selection (view);
+ store = GTK_LIST_STORE (dialog->model);
+
+ gtk_list_store_append (store, &iter);
+ gtk_list_store_set (store, &iter,
+ COL_NAME, empathy_chatroom_get_name (chatroom),
+ COL_ROOM, empathy_chatroom_get_room (chatroom),
+ -1);
+}
+
+static void
+new_chatroom_dialog_listing_cb (EmpathyTpRoomlist *room_list,
+ gboolean listing,
+ EmpathyNewChatroomDialog *dialog)
+{
+ /* Update the throbber */
+ if (listing) {
+ ephy_spinner_start (EPHY_SPINNER (dialog->throbber));
+ } else {
+ ephy_spinner_stop (EPHY_SPINNER (dialog->throbber));
+ }
+
+ /* Update the refresh toggle button */
+ g_signal_handlers_block_by_func (dialog->togglebutton_refresh,
+ new_chatroom_dialog_togglebutton_refresh_toggled_cb,
+ dialog);
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (dialog->togglebutton_refresh),
+ listing);
+ g_signal_handlers_unblock_by_func (dialog->togglebutton_refresh,
+ new_chatroom_dialog_togglebutton_refresh_toggled_cb,
+ dialog);
+}
+
+static void
+new_chatroom_dialog_model_clear (EmpathyNewChatroomDialog *dialog)
+{
+ GtkListStore *store;
+
+ store = GTK_LIST_STORE (dialog->model);
+ gtk_list_store_clear (store);
+}
+
+static void
+new_chatroom_dialog_model_row_activated_cb (GtkTreeView *tree_view,
+ GtkTreePath *path,
+ GtkTreeViewColumn *column,
+ EmpathyNewChatroomDialog *dialog)
+{
+ gtk_widget_activate (dialog->button_join);
+}
+
+static void
+new_chatroom_dialog_model_selection_changed (GtkTreeSelection *selection,
+ EmpathyNewChatroomDialog *dialog)
+{
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+ gchar *room = NULL;
+ gchar *server = NULL;
+
+ if (!gtk_tree_selection_get_selected (selection, &model, &iter)) {
+ return;
+ }
+
+ gtk_tree_model_get (model, &iter, COL_ROOM, &room, -1);
+ server = strstr (room, "@");
+ if (server) {
+ *server = '\0';
+ server++;
+ }
+
+ gtk_entry_set_text (GTK_ENTRY (dialog->entry_server), server ? server : "");
+ gtk_entry_set_text (GTK_ENTRY (dialog->entry_room), room ? room : "");
+
+ g_free (room);
+}
+
+static void
+new_chatroom_dialog_join (EmpathyNewChatroomDialog *dialog)
+{
+ McAccount *account;
+ EmpathyAccountChooser *account_chooser;
+ MissionControl *mc;
+ const gchar *room;
+ const gchar *server = NULL;
+ gchar *room_name = NULL;
+
+ room = gtk_entry_get_text (GTK_ENTRY (dialog->entry_room));
+ server = gtk_entry_get_text (GTK_ENTRY (dialog->entry_server));
+
+ account_chooser = EMPATHY_ACCOUNT_CHOOSER (dialog->account_chooser);
+ account = empathy_account_chooser_get_account (account_chooser);
+
+ if (!G_STR_EMPTY (server)) {
+ room_name = g_strconcat (room, "@", server, NULL);
+ } else {
+ room_name = g_strdup (room);
+ }
+
+ empathy_debug (DEBUG_DOMAIN, "Requesting channel for '%s'", room_name);
+
+ mc = empathy_mission_control_new ();
+ mission_control_request_channel_with_string_handle (mc,
+ account,
+ TP_IFACE_CHANNEL_TYPE_TEXT,
+ room_name,
+ TP_HANDLE_TYPE_ROOM,
+ NULL, NULL);
+ g_free (room_name);
+ g_object_unref (mc);
+}
+
+static void
+new_chatroom_dialog_entry_changed_cb (GtkWidget *entry,
+ EmpathyNewChatroomDialog *dialog)
+{
+ if (entry == dialog->entry_room) {
+ const gchar *room;
+
+ room = gtk_entry_get_text (GTK_ENTRY (dialog->entry_room));
+ gtk_widget_set_sensitive (dialog->button_join, !G_STR_EMPTY (room));
+ /* FIXME: Select the room in the list */
+ }
+}
+
+static void
+new_chatroom_dialog_browse_start (EmpathyNewChatroomDialog *dialog)
+{
+ new_chatroom_dialog_model_clear (dialog);
+ if (dialog->room_list) {
+ empathy_tp_roomlist_start (dialog->room_list);
+ }
+}
+
+static void
+new_chatroom_dialog_browse_stop (EmpathyNewChatroomDialog *dialog)
+{
+ if (dialog->room_list) {
+ empathy_tp_roomlist_stop (dialog->room_list);
+ }
+}
+
+static void
+new_chatroom_dialog_entry_server_activate_cb (GtkWidget *widget,
+ EmpathyNewChatroomDialog *dialog)
+{
+ new_chatroom_dialog_togglebutton_refresh_toggled_cb (dialog->togglebutton_refresh,
+ dialog);
+}
+
+static void
+new_chatroom_dialog_togglebutton_refresh_toggled_cb (GtkWidget *widget,
+ EmpathyNewChatroomDialog *dialog)
+{
+ gboolean toggled;
+
+ toggled = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget));
+
+ if (toggled) {
+ new_chatroom_dialog_browse_start (dialog);
+ } else {
+ new_chatroom_dialog_browse_stop (dialog);
+ }
+}
+
diff --git a/gnome-2-22/libempathy-gtk/empathy-new-chatroom-dialog.glade b/gnome-2-22/libempathy-gtk/empathy-new-chatroom-dialog.glade
new file mode 100644
index 000000000..6b99dc3e1
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-new-chatroom-dialog.glade
@@ -0,0 +1,437 @@
+<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
+<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
+
+<glade-interface>
+
+<widget class="GtkDialog" id="new_chatroom_dialog">
+ <property name="border_width">5</property>
+ <property name="visible">True</property>
+ <property name="title" translatable="yes">Join New</property>
+ <property name="type">GTK_WINDOW_TOPLEVEL</property>
+ <property name="window_position">GTK_WIN_POS_NONE</property>
+ <property name="modal">False</property>
+ <property name="default_width">350</property>
+ <property name="resizable">False</property>
+ <property name="destroy_with_parent">False</property>
+ <property name="decorated">True</property>
+ <property name="skip_taskbar_hint">False</property>
+ <property name="skip_pager_hint">False</property>
+ <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
+ <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+ <property name="focus_on_map">True</property>
+ <property name="urgency_hint">False</property>
+ <property name="has_separator">False</property>
+
+ <child internal-child="vbox">
+ <widget class="GtkVBox" id="dialog-vbox4">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">6</property>
+
+ <child internal-child="action_area">
+ <widget class="GtkHButtonBox" id="dialog-action_area4">
+ <property name="visible">True</property>
+ <property name="layout_style">GTK_BUTTONBOX_END</property>
+
+ <child>
+ <widget class="GtkButton" id="button_cancel">
+ <property name="visible">True</property>
+ <property name="can_default">True</property>
+ <property name="can_focus">True</property>
+ <property name="label">gtk-close</property>
+ <property name="use_stock">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="response_id">-7</property>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkButton" id="button_join">
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_default">True</property>
+ <property name="has_default">True</property>
+ <property name="can_focus">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="response_id">-5</property>
+
+ <child>
+ <widget class="GtkAlignment" id="alignment4">
+ <property name="visible">True</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xscale">0</property>
+ <property name="yscale">0</property>
+ <property name="top_padding">0</property>
+ <property name="bottom_padding">0</property>
+ <property name="left_padding">0</property>
+ <property name="right_padding">0</property>
+
+ <child>
+ <widget class="GtkHBox" id="hbox29">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">2</property>
+
+ <child>
+ <widget class="GtkImage" id="image4">
+ <property name="visible">True</property>
+ <property name="stock">gtk-execute</property>
+ <property name="icon_size">4</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label79">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Join</property>
+ <property name="use_underline">True</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="pack_type">GTK_PACK_END</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkVBox" id="vbox_widgets">
+ <property name="border_width">5</property>
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">18</property>
+
+ <child>
+ <widget class="GtkTable" id="table_info">
+ <property name="visible">True</property>
+ <property name="n_rows">3</property>
+ <property name="n_columns">3</property>
+ <property name="homogeneous">False</property>
+ <property name="row_spacing">6</property>
+ <property name="column_spacing">6</property>
+
+ <child>
+ <widget class="GtkLabel" id="label_account">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Account:</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">0</property>
+ <property name="bottom_attach">1</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label_server">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Server:</property>
+ <property name="use_underline">True</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="mnemonic_widget">entry_server</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label_room">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Room:</property>
+ <property name="use_underline">True</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="mnemonic_widget">entry_room</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkEntry" id="entry_server">
+ <property name="visible">True</property>
+ <property name="tooltip" translatable="yes">Enter the server which hosts the room, or leave it empty if the room is on the current account's server</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">True</property>
+ <property name="max_length">0</property>
+ <property name="text" translatable="yes"></property>
+ <property name="has_frame">True</property>
+ <property name="invisible_char">*</property>
+ <property name="activates_default">False</property>
+ <property name="width_chars">25</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkToggleButton" id="togglebutton_refresh">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Re_fresh</property>
+ <property name="use_underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="active">False</property>
+ <property name="inconsistent">False</property>
+ </widget>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="right_attach">3</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkEntry" id="entry_room">
+ <property name="visible">True</property>
+ <property name="tooltip" translatable="yes">Enter the room name to join here or click on one or more rooms in the list.</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">True</property>
+ <property name="max_length">0</property>
+ <property name="text" translatable="yes"></property>
+ <property name="has_frame">True</property>
+ <property name="invisible_char">*</property>
+ <property name="activates_default">True</property>
+ <property name="width_chars">32</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">3</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkVBox" id="vbox_browse">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">6</property>
+
+ <child>
+ <widget class="GtkHBox" id="hbox_status">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">6</property>
+
+ <child>
+ <widget class="GtkHBox" id="hbox35">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">3</property>
+
+ <child>
+ <widget class="GtkImage" id="image_status">
+ <property name="visible">True</property>
+ <property name="icon_size">2</property>
+ <property name="icon_name">gtk-find</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label_status">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Browse:</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">True</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <placeholder/>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkScrolledWindow" id="scrolledwindow2">
+ <property name="height_request">150</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
+ <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+ <property name="shadow_type">GTK_SHADOW_IN</property>
+ <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
+
+ <child>
+ <widget class="GtkTreeView" id="treeview">
+ <property name="visible">True</property>
+ <property name="tooltip" translatable="yes">This list represents all chat rooms hosted on the server you have entered.</property>
+ <property name="can_focus">True</property>
+ <property name="headers_visible">False</property>
+ <property name="rules_hint">False</property>
+ <property name="reorderable">False</property>
+ <property name="enable_search">True</property>
+ <property name="fixed_height_mode">False</property>
+ <property name="hover_selection">False</property>
+ <property name="hover_expand">False</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+</widget>
+
+</glade-interface>
diff --git a/gnome-2-22/libempathy-gtk/empathy-new-chatroom-dialog.h b/gnome-2-22/libempathy-gtk/empathy-new-chatroom-dialog.h
new file mode 100644
index 000000000..2a126085d
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-new-chatroom-dialog.h
@@ -0,0 +1,34 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2006-2007 Imendio AB
+ * Copyright (C) 2007 Collabora Ltd.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * 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: Martyn Russell <martyn@imendio.com>
+ * Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#ifndef __EMPATHY_NEW_CHATROOMS_WINDOW_H__
+#define __EMPATHY_NEW_CHATROOMS_WINDOW_H__
+
+G_BEGIN_DECLS
+
+void empathy_new_chatroom_dialog_show (GtkWindow *parent);
+
+G_END_DECLS
+
+#endif /* __EMPATHY_NEW_CHATROOMS_WINDOW_H__ */
diff --git a/gnome-2-22/libempathy-gtk/empathy-new-message-dialog.c b/gnome-2-22/libempathy-gtk/empathy-new-message-dialog.c
new file mode 100644
index 000000000..6c588a660
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-new-message-dialog.c
@@ -0,0 +1,164 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2007-2008 Collabora Ltd.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Authors: Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#include <config.h>
+
+#include <string.h>
+#include <stdlib.h>
+
+#include <gtk/gtk.h>
+#include <glade/glade.h>
+#include <glib/gi18n.h>
+
+#include <libmissioncontrol/mc-account.h>
+#include <libmissioncontrol/mission-control.h>
+
+#include <libempathy/empathy-contact-factory.h>
+#include <libempathy/empathy-debug.h>
+#include <libempathy/empathy-utils.h>
+
+#include <libempathy-gtk/empathy-ui-utils.h>
+
+#include "empathy-new-message-dialog.h"
+#include "empathy-account-chooser.h"
+
+#define DEBUG_DOMAIN "NewMessageDialog"
+
+typedef struct {
+ GtkWidget *dialog;
+ GtkWidget *table_contact;
+ GtkWidget *account_chooser;
+ GtkWidget *entry_id;
+ GtkWidget *button_chat;
+ GtkWidget *button_call;
+} EmpathyNewMessageDialog;
+
+static void
+new_message_dialog_response_cb (GtkWidget *widget,
+ gint response,
+ EmpathyNewMessageDialog *dialog)
+{
+ McAccount *account;
+ const gchar *id;
+
+ account = empathy_account_chooser_get_account (EMPATHY_ACCOUNT_CHOOSER (dialog->account_chooser));
+ id = gtk_entry_get_text (GTK_ENTRY (dialog->entry_id));
+ if (!account || G_STR_EMPTY (id)) {
+ if (account) {
+ g_object_unref (account);
+ }
+ gtk_widget_destroy (widget);
+ return;
+ }
+
+ if (response == 1) {
+ empathy_call_with_contact_id (account, id);
+ }
+ else if (response == 2) {
+ empathy_chat_with_contact_id (account, id);
+ }
+
+ g_object_unref (account);
+ gtk_widget_destroy (widget);
+}
+
+static void
+new_message_change_state_button_cb (GtkEditable *editable,
+ EmpathyNewMessageDialog *dialog)
+{
+ const gchar *id;
+ gboolean sensitive;
+
+ id = gtk_entry_get_text (GTK_ENTRY (editable));
+ sensitive = !G_STR_EMPTY (id);
+
+ gtk_widget_set_sensitive (dialog->button_chat, sensitive);
+ gtk_widget_set_sensitive (dialog->button_call, sensitive);
+}
+
+static void
+new_message_dialog_destroy_cb (GtkWidget *widget,
+ EmpathyNewMessageDialog *dialog)
+{
+ g_free (dialog);
+}
+
+GtkWidget *
+empathy_new_message_dialog_show (GtkWindow *parent)
+{
+ static EmpathyNewMessageDialog *dialog = NULL;
+ GladeXML *glade;
+
+ if (dialog) {
+ gtk_window_present (GTK_WINDOW (dialog->dialog));
+ return dialog->dialog;
+ }
+
+ dialog = g_new0 (EmpathyNewMessageDialog, 1);
+
+ glade = empathy_glade_get_file ("empathy-new-message-dialog.glade",
+ "new_message_dialog",
+ NULL,
+ "new_message_dialog", &dialog->dialog,
+ "table_contact", &dialog->table_contact,
+ "entry_id", &dialog->entry_id,
+ "button_chat", &dialog->button_chat,
+ "button_call",&dialog->button_call,
+ NULL);
+
+ empathy_glade_connect (glade,
+ dialog,
+ "new_message_dialog", "destroy", new_message_dialog_destroy_cb,
+ "new_message_dialog", "response", new_message_dialog_response_cb,
+ "entry_id", "changed", new_message_change_state_button_cb,
+ NULL);
+
+ g_object_add_weak_pointer (G_OBJECT (dialog->dialog), (gpointer) &dialog);
+
+ g_object_unref (glade);
+
+ /* Create account chooser */
+ dialog->account_chooser = empathy_account_chooser_new ();
+ gtk_table_attach_defaults (GTK_TABLE (dialog->table_contact),
+ dialog->account_chooser,
+ 1, 2, 0, 1);
+ empathy_account_chooser_set_filter (EMPATHY_ACCOUNT_CHOOSER (dialog->account_chooser),
+ empathy_account_chooser_filter_is_connected,
+ NULL);
+ gtk_widget_show (dialog->account_chooser);
+
+ if (parent) {
+ gtk_window_set_transient_for (GTK_WINDOW (dialog->dialog),
+ GTK_WINDOW (parent));
+ }
+
+ gtk_widget_set_sensitive (dialog->button_chat, FALSE);
+ gtk_widget_set_sensitive (dialog->button_call, FALSE);
+
+#ifndef HAVE_VOIP
+ gtk_widget_hide (dialog->button_call);
+#endif
+
+ gtk_widget_show (dialog->dialog);
+
+ return dialog->dialog;
+}
+
diff --git a/gnome-2-22/libempathy-gtk/empathy-new-message-dialog.glade b/gnome-2-22/libempathy-gtk/empathy-new-message-dialog.glade
new file mode 100644
index 000000000..25f4b2254
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-new-message-dialog.glade
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
+<!--*- mode: xml -*-->
+<glade-interface>
+ <widget class="GtkDialog" id="new_message_dialog">
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="border_width">5</property>
+ <property name="title" translatable="yes">New Conversation</property>
+ <property name="resizable">False</property>
+ <property name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property>
+ <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
+ <property name="has_separator">False</property>
+ <child internal-child="vbox">
+ <widget class="GtkVBox" id="dialog-vbox1">
+ <property name="visible">True</property>
+ <property name="spacing">2</property>
+ <child>
+ <widget class="GtkTable" id="table_contact">
+ <property name="visible">True</property>
+ <property name="n_rows">2</property>
+ <property name="n_columns">2</property>
+ <property name="column_spacing">6</property>
+ <property name="row_spacing">6</property>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <widget class="GtkEntry" id="entry_id">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label2">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Contact ID:</property>
+ </widget>
+ <packing>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options"></property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label1">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Account:</property>
+ </widget>
+ <packing>
+ <property name="x_options"></property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child internal-child="action_area">
+ <widget class="GtkHButtonBox" id="dialog-action_area1">
+ <property name="visible">True</property>
+ <property name="layout_style">GTK_BUTTONBOX_END</property>
+ <child>
+ <widget class="GtkButton" id="button1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label">gtk-cancel</property>
+ <property name="use_stock">True</property>
+ <property name="response_id">-6</property>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkButton" id="button_call">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="response_id">1</property>
+ <child>
+ <widget class="GtkAlignment" id="alignment1">
+ <property name="visible">True</property>
+ <property name="xscale">0</property>
+ <property name="yscale">0</property>
+ <child>
+ <widget class="GtkHBox" id="hbox1">
+ <property name="visible">True</property>
+ <property name="spacing">2</property>
+ <child>
+ <widget class="GtkImage" id="image1">
+ <property name="visible">True</property>
+ <property name="icon_name">gnome-stock-mic</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label3">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Call</property>
+ <property name="use_underline">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkButton" id="button_chat">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="response_id">2</property>
+ <child>
+ <widget class="GtkAlignment" id="alignment2">
+ <property name="visible">True</property>
+ <property name="xscale">0</property>
+ <property name="yscale">0</property>
+ <child>
+ <widget class="GtkHBox" id="hbox2">
+ <property name="visible">True</property>
+ <property name="spacing">2</property>
+ <child>
+ <widget class="GtkImage" id="image2">
+ <property name="visible">True</property>
+ <property name="icon_name">im-message-new</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label4">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Chat</property>
+ <property name="use_underline">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="pack_type">GTK_PACK_END</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+</glade-interface>
diff --git a/gnome-2-22/libempathy-gtk/empathy-new-message-dialog.h b/gnome-2-22/libempathy-gtk/empathy-new-message-dialog.h
new file mode 100644
index 000000000..27e461f9b
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-new-message-dialog.h
@@ -0,0 +1,33 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2007 Collabora Ltd.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Authors: Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#ifndef __EMPATHY_NEW_MESSAGE_DIALOG_H__
+#define __EMPATHY_NEW_MESSAGE_DIALOG_H__
+
+#include <gtk/gtkwidget.h>
+
+G_BEGIN_DECLS
+
+GtkWidget *empathy_new_message_dialog_show (GtkWindow *parent);
+
+G_END_DECLS
+
+#endif /* __EMPATHY_NEW_MESSAGE_DIALOG_H__ */
diff --git a/gnome-2-22/libempathy-gtk/empathy-preferences.c b/gnome-2-22/libempathy-gtk/empathy-preferences.c
new file mode 100644
index 000000000..50c9d5660
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-preferences.c
@@ -0,0 +1,990 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2003-2007 Imendio AB
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * 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: Mikael Hallendal <micke@imendio.com>
+ * Richard Hult <richard@imendio.com>
+ * Martyn Russell <martyn@imendio.com>
+ */
+
+#include "config.h"
+
+#include <string.h>
+
+#include <gtk/gtk.h>
+#include <glade/glade.h>
+#include <glib/gi18n.h>
+
+#include "empathy-conf.h"
+#include "empathy-preferences.h"
+#include "empathy-ui-utils.h"
+#include "empathy-theme-manager.h"
+#include "empathy-spell.h"
+#include "empathy-contact-list-store.h"
+#include "empathy-gtk-enum-types.h"
+
+typedef struct {
+ GtkWidget *dialog;
+
+ GtkWidget *notebook;
+
+ GtkWidget *checkbutton_show_avatars;
+ GtkWidget *checkbutton_compact_contact_list;
+ GtkWidget *checkbutton_show_smileys;
+ GtkWidget *combobox_chat_theme;
+ GtkWidget *checkbutton_theme_chat_room;
+ GtkWidget *checkbutton_separate_chat_windows;
+ GtkWidget *checkbutton_autoconnect;
+ GtkWidget *radiobutton_contact_list_sort_by_name;
+ GtkWidget *radiobutton_contact_list_sort_by_state;
+
+ GtkWidget *checkbutton_sounds_for_messages;
+ GtkWidget *checkbutton_sounds_when_busy;
+ GtkWidget *checkbutton_sounds_when_away;
+ GtkWidget *checkbutton_popups_when_available;
+
+ GtkWidget *treeview_spell_checker;
+
+ GList *notify_ids;
+} EmpathyPreferences;
+
+static void preferences_setup_widgets (EmpathyPreferences *preferences);
+static void preferences_languages_setup (EmpathyPreferences *preferences);
+static void preferences_languages_add (EmpathyPreferences *preferences);
+static void preferences_languages_save (EmpathyPreferences *preferences);
+static gboolean preferences_languages_save_foreach (GtkTreeModel *model,
+ GtkTreePath *path,
+ GtkTreeIter *iter,
+ gchar **languages);
+static void preferences_languages_load (EmpathyPreferences *preferences);
+static gboolean preferences_languages_load_foreach (GtkTreeModel *model,
+ GtkTreePath *path,
+ GtkTreeIter *iter,
+ gchar **languages);
+static void preferences_languages_cell_toggled_cb (GtkCellRendererToggle *cell,
+ gchar *path_string,
+ EmpathyPreferences *preferences);
+static void preferences_themes_setup (EmpathyPreferences *preferences);
+static void preferences_widget_sync_bool (const gchar *key,
+ GtkWidget *widget);
+static void preferences_widget_sync_int (const gchar *key,
+ GtkWidget *widget);
+static void preferences_widget_sync_string (const gchar *key,
+ GtkWidget *widget);
+static void preferences_widget_sync_string_combo (const gchar *key,
+ GtkWidget *widget);
+static void preferences_notify_int_cb (EmpathyConf *conf,
+ const gchar *key,
+ gpointer user_data);
+static void preferences_notify_string_cb (EmpathyConf *conf,
+ const gchar *key,
+ gpointer user_data);
+static void preferences_notify_string_combo_cb (EmpathyConf *conf,
+ const gchar *key,
+ gpointer user_data);
+static void preferences_notify_bool_cb (EmpathyConf *conf,
+ const gchar *key,
+ gpointer user_data);
+static void preferences_notify_sensitivity_cb (EmpathyConf *conf,
+ const gchar *key,
+ gpointer user_data);
+static void preferences_hookup_spin_button (EmpathyPreferences *preferences,
+ const gchar *key,
+ GtkWidget *widget);
+static void preferences_hookup_entry (EmpathyPreferences *preferences,
+ const gchar *key,
+ GtkWidget *widget);
+static void preferences_hookup_toggle_button (EmpathyPreferences *preferences,
+ const gchar *key,
+ GtkWidget *widget);
+static void preferences_hookup_radio_button (EmpathyPreferences *preferences,
+ const gchar *key,
+ GtkWidget *widget);
+static void preferences_hookup_string_combo (EmpathyPreferences *preferences,
+ const gchar *key,
+ GtkWidget *widget);
+static void preferences_hookup_sensitivity (EmpathyPreferences *preferences,
+ const gchar *key,
+ GtkWidget *widget);
+static void preferences_spin_button_value_changed_cb (GtkWidget *button,
+ gpointer user_data);
+static void preferences_entry_value_changed_cb (GtkWidget *entry,
+ gpointer user_data);
+static void preferences_toggle_button_toggled_cb (GtkWidget *button,
+ gpointer user_data);
+static void preferences_radio_button_toggled_cb (GtkWidget *button,
+ gpointer user_data);
+static void preferences_string_combo_changed_cb (GtkWidget *button,
+ gpointer user_data);
+static void preferences_destroy_cb (GtkWidget *widget,
+ EmpathyPreferences *preferences);
+static void preferences_response_cb (GtkWidget *widget,
+ gint response,
+ EmpathyPreferences *preferences);
+
+enum {
+ COL_LANG_ENABLED,
+ COL_LANG_CODE,
+ COL_LANG_NAME,
+ COL_LANG_COUNT
+};
+
+enum {
+ COL_COMBO_VISIBLE_NAME,
+ COL_COMBO_NAME,
+ COL_COMBO_COUNT
+};
+
+static void
+preferences_setup_widgets (EmpathyPreferences *preferences)
+{
+ preferences_hookup_toggle_button (preferences,
+ EMPATHY_PREFS_SOUNDS_FOR_MESSAGES,
+ preferences->checkbutton_sounds_for_messages);
+ preferences_hookup_toggle_button (preferences,
+ EMPATHY_PREFS_SOUNDS_WHEN_AWAY,
+ preferences->checkbutton_sounds_when_away);
+ preferences_hookup_toggle_button (preferences,
+ EMPATHY_PREFS_SOUNDS_WHEN_BUSY,
+ preferences->checkbutton_sounds_when_busy);
+ preferences_hookup_toggle_button (preferences,
+ EMPATHY_PREFS_POPUPS_WHEN_AVAILABLE,
+ preferences->checkbutton_popups_when_available);
+
+ preferences_hookup_sensitivity (preferences,
+ EMPATHY_PREFS_SOUNDS_FOR_MESSAGES,
+ preferences->checkbutton_sounds_when_away);
+ preferences_hookup_sensitivity (preferences,
+ EMPATHY_PREFS_SOUNDS_FOR_MESSAGES,
+ preferences->checkbutton_sounds_when_busy);
+
+ preferences_hookup_toggle_button (preferences,
+ EMPATHY_PREFS_UI_SEPARATE_CHAT_WINDOWS,
+ preferences->checkbutton_separate_chat_windows);
+
+ preferences_hookup_toggle_button (preferences,
+ EMPATHY_PREFS_UI_SHOW_AVATARS,
+ preferences->checkbutton_show_avatars);
+
+ preferences_hookup_toggle_button (preferences,
+ EMPATHY_PREFS_UI_COMPACT_CONTACT_LIST,
+ preferences->checkbutton_compact_contact_list);
+
+ preferences_hookup_toggle_button (preferences,
+ EMPATHY_PREFS_CHAT_SHOW_SMILEYS,
+ preferences->checkbutton_show_smileys);
+
+ preferences_hookup_string_combo (preferences,
+ EMPATHY_PREFS_CHAT_THEME,
+ preferences->combobox_chat_theme);
+
+ preferences_hookup_toggle_button (preferences,
+ EMPATHY_PREFS_CHAT_THEME_CHAT_ROOM,
+ preferences->checkbutton_theme_chat_room);
+
+ preferences_hookup_radio_button (preferences,
+ EMPATHY_PREFS_CONTACTS_SORT_CRITERIUM,
+ preferences->radiobutton_contact_list_sort_by_name);
+
+ preferences_hookup_toggle_button (preferences,
+ EMPATHY_PREFS_AUTOCONNECT,
+ preferences->checkbutton_autoconnect);
+}
+
+static void
+preferences_languages_setup (EmpathyPreferences *preferences)
+{
+ GtkTreeView *view;
+ GtkListStore *store;
+ GtkTreeSelection *selection;
+ GtkTreeModel *model;
+ GtkTreeViewColumn *column;
+ GtkCellRenderer *renderer;
+ guint col_offset;
+
+ view = GTK_TREE_VIEW (preferences->treeview_spell_checker);
+
+ store = gtk_list_store_new (COL_LANG_COUNT,
+ G_TYPE_BOOLEAN, /* enabled */
+ G_TYPE_STRING, /* code */
+ G_TYPE_STRING); /* name */
+
+ gtk_tree_view_set_model (view, GTK_TREE_MODEL (store));
+
+ selection = gtk_tree_view_get_selection (view);
+ gtk_tree_selection_set_mode (selection, GTK_SELECTION_SINGLE);
+
+ model = GTK_TREE_MODEL (store);
+
+ renderer = gtk_cell_renderer_toggle_new ();
+ g_signal_connect (renderer, "toggled",
+ G_CALLBACK (preferences_languages_cell_toggled_cb),
+ preferences);
+
+ column = gtk_tree_view_column_new_with_attributes (NULL, renderer,
+ "active", COL_LANG_ENABLED,
+ NULL);
+
+ gtk_tree_view_append_column (view, column);
+
+ renderer = gtk_cell_renderer_text_new ();
+ col_offset = gtk_tree_view_insert_column_with_attributes (view,
+ -1, _("Language"),
+ renderer,
+ "text", COL_LANG_NAME,
+ NULL);
+
+ g_object_set_data (G_OBJECT (renderer),
+ "column", GINT_TO_POINTER (COL_LANG_NAME));
+
+ column = gtk_tree_view_get_column (view, col_offset - 1);
+ gtk_tree_view_column_set_sort_column_id (column, COL_LANG_NAME);
+ gtk_tree_view_column_set_resizable (column, FALSE);
+ gtk_tree_view_column_set_clickable (GTK_TREE_VIEW_COLUMN (column), TRUE);
+
+ g_object_unref (store);
+}
+
+static void
+preferences_languages_add (EmpathyPreferences *preferences)
+{
+ GtkTreeView *view;
+ GtkListStore *store;
+ GList *codes, *l;
+
+ view = GTK_TREE_VIEW (preferences->treeview_spell_checker);
+ store = GTK_LIST_STORE (gtk_tree_view_get_model (view));
+
+ codes = empathy_spell_get_language_codes ();
+
+ empathy_conf_set_bool (empathy_conf_get(),
+ EMPATHY_PREFS_CHAT_SPELL_CHECKER_ENABLED,
+ codes != NULL);
+ if (!codes) {
+ gtk_widget_set_sensitive (preferences->treeview_spell_checker, FALSE);
+ }
+
+ for (l = codes; l; l = l->next) {
+ GtkTreeIter iter;
+ const gchar *code;
+ const gchar *name;
+
+ code = l->data;
+ name = empathy_spell_get_language_name (code);
+ if (!name) {
+ continue;
+ }
+
+ gtk_list_store_append (store, &iter);
+ gtk_list_store_set (store, &iter,
+ COL_LANG_CODE, code,
+ COL_LANG_NAME, name,
+ -1);
+ }
+
+ empathy_spell_free_language_codes (codes);
+}
+
+static void
+preferences_languages_save (EmpathyPreferences *preferences)
+{
+ GtkTreeView *view;
+ GtkTreeModel *model;
+
+ gchar *languages = NULL;
+
+ view = GTK_TREE_VIEW (preferences->treeview_spell_checker);
+ model = gtk_tree_view_get_model (view);
+
+ gtk_tree_model_foreach (model,
+ (GtkTreeModelForeachFunc) preferences_languages_save_foreach,
+ &languages);
+
+ /* if user selects no languages, we don't want spell check */
+ empathy_conf_set_bool (empathy_conf_get (),
+ EMPATHY_PREFS_CHAT_SPELL_CHECKER_ENABLED,
+ languages != NULL);
+
+ empathy_conf_set_string (empathy_conf_get (),
+ EMPATHY_PREFS_CHAT_SPELL_CHECKER_LANGUAGES,
+ languages ? languages : "");
+
+ g_free (languages);
+}
+
+static gboolean
+preferences_languages_save_foreach (GtkTreeModel *model,
+ GtkTreePath *path,
+ GtkTreeIter *iter,
+ gchar **languages)
+{
+ gboolean enabled;
+ gchar *code;
+
+ if (!languages) {
+ return TRUE;
+ }
+
+ gtk_tree_model_get (model, iter, COL_LANG_ENABLED, &enabled, -1);
+ if (!enabled) {
+ return FALSE;
+ }
+
+ gtk_tree_model_get (model, iter, COL_LANG_CODE, &code, -1);
+ if (!code) {
+ return FALSE;
+ }
+
+ if (!(*languages)) {
+ *languages = g_strdup (code);
+ } else {
+ gchar *str = *languages;
+ *languages = g_strdup_printf ("%s,%s", str, code);
+ g_free (str);
+ }
+
+ g_free (code);
+
+ return FALSE;
+}
+
+static void
+preferences_languages_load (EmpathyPreferences *preferences)
+{
+ GtkTreeView *view;
+ GtkTreeModel *model;
+ gchar *value;
+ gchar **vlanguages;
+
+ if (!empathy_conf_get_string (empathy_conf_get (),
+ EMPATHY_PREFS_CHAT_SPELL_CHECKER_LANGUAGES,
+ &value) || !value) {
+ return;
+ }
+
+ vlanguages = g_strsplit (value, ",", -1);
+ g_free (value);
+
+ view = GTK_TREE_VIEW (preferences->treeview_spell_checker);
+ model = gtk_tree_view_get_model (view);
+
+ gtk_tree_model_foreach (model,
+ (GtkTreeModelForeachFunc) preferences_languages_load_foreach,
+ vlanguages);
+
+ g_strfreev (vlanguages);
+}
+
+static gboolean
+preferences_languages_load_foreach (GtkTreeModel *model,
+ GtkTreePath *path,
+ GtkTreeIter *iter,
+ gchar **languages)
+{
+ gchar *code;
+ gchar *lang;
+ gint i;
+ gboolean found = FALSE;
+
+ if (!languages) {
+ return TRUE;
+ }
+
+ gtk_tree_model_get (model, iter, COL_LANG_CODE, &code, -1);
+ if (!code) {
+ return FALSE;
+ }
+
+ for (i = 0, lang = languages[i]; lang; lang = languages[++i]) {
+ if (strcmp (lang, code) == 0) {
+ found = TRUE;
+ }
+ }
+
+ gtk_list_store_set (GTK_LIST_STORE (model), iter, COL_LANG_ENABLED, found, -1);
+ return FALSE;
+}
+
+static void
+preferences_languages_cell_toggled_cb (GtkCellRendererToggle *cell,
+ gchar *path_string,
+ EmpathyPreferences *preferences)
+{
+ GtkTreeView *view;
+ GtkTreeModel *model;
+ GtkListStore *store;
+ GtkTreePath *path;
+ GtkTreeIter iter;
+ gboolean enabled;
+
+ view = GTK_TREE_VIEW (preferences->treeview_spell_checker);
+ model = gtk_tree_view_get_model (view);
+ store = GTK_LIST_STORE (model);
+
+ path = gtk_tree_path_new_from_string (path_string);
+
+ gtk_tree_model_get_iter (model, &iter, path);
+ gtk_tree_model_get (model, &iter, COL_LANG_ENABLED, &enabled, -1);
+
+ enabled ^= 1;
+
+ gtk_list_store_set (store, &iter, COL_LANG_ENABLED, enabled, -1);
+ gtk_tree_path_free (path);
+
+ preferences_languages_save (preferences);
+}
+
+static void
+preferences_themes_setup (EmpathyPreferences *preferences)
+{
+ GtkComboBox *combo;
+ GtkListStore *model;
+ GtkTreeIter iter;
+ const gchar **themes;
+ gint i;
+
+ combo = GTK_COMBO_BOX (preferences->combobox_chat_theme);
+
+ model = gtk_list_store_new (COL_COMBO_COUNT,
+ G_TYPE_STRING,
+ G_TYPE_STRING);
+
+ themes = empathy_theme_manager_get_themes ();
+ for (i = 0; themes[i]; i += 2) {
+ gtk_list_store_append (model, &iter);
+ gtk_list_store_set (model, &iter,
+ COL_COMBO_VISIBLE_NAME, _(themes[i + 1]),
+ COL_COMBO_NAME, themes[i],
+ -1);
+ }
+
+ gtk_combo_box_set_model (combo, GTK_TREE_MODEL (model));
+ g_object_unref (model);
+}
+
+static void
+preferences_widget_sync_bool (const gchar *key, GtkWidget *widget)
+{
+ gboolean value;
+
+ if (empathy_conf_get_bool (empathy_conf_get (), key, &value)) {
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), value);
+ }
+}
+
+static void
+preferences_widget_sync_int (const gchar *key, GtkWidget *widget)
+{
+ gint value;
+
+ if (empathy_conf_get_int (empathy_conf_get (), key, &value)) {
+ if (GTK_IS_SPIN_BUTTON (widget)) {
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON (widget), value);
+ }
+ }
+}
+
+static void
+preferences_widget_sync_string (const gchar *key, GtkWidget *widget)
+{
+ gchar *value;
+
+ if (empathy_conf_get_string (empathy_conf_get (), key, &value) && value) {
+ if (GTK_IS_ENTRY (widget)) {
+ gtk_entry_set_text (GTK_ENTRY (widget), value);
+ } else if (GTK_IS_RADIO_BUTTON (widget)) {
+ if (strcmp (key, EMPATHY_PREFS_CONTACTS_SORT_CRITERIUM) == 0) {
+ GType type;
+ GEnumClass *enum_class;
+ GEnumValue *enum_value;
+ GSList *list;
+ GtkWidget *toggle_widget;
+
+ /* Get index from new string */
+ type = empathy_contact_list_store_sort_get_type ();
+ enum_class = G_ENUM_CLASS (g_type_class_peek (type));
+ enum_value = g_enum_get_value_by_nick (enum_class, value);
+
+ if (enum_value) {
+ list = gtk_radio_button_get_group (GTK_RADIO_BUTTON (widget));
+ toggle_widget = g_slist_nth_data (list, enum_value->value);
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle_widget), TRUE);
+ }
+ } else {
+ g_warning ("Unhandled key:'%s' just had string change", key);
+ }
+ }
+
+ g_free (value);
+ }
+}
+
+static void
+preferences_widget_sync_string_combo (const gchar *key, GtkWidget *widget)
+{
+ gchar *value;
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+ gboolean found;
+
+ if (!empathy_conf_get_string (empathy_conf_get (), key, &value)) {
+ return;
+ }
+
+ model = gtk_combo_box_get_model (GTK_COMBO_BOX (widget));
+
+ found = FALSE;
+ if (value && gtk_tree_model_get_iter_first (model, &iter)) {
+ gchar *name;
+
+ do {
+ gtk_tree_model_get (model, &iter,
+ COL_COMBO_NAME, &name,
+ -1);
+
+ if (strcmp (name, value) == 0) {
+ found = TRUE;
+ gtk_combo_box_set_active_iter (GTK_COMBO_BOX (widget), &iter);
+ break;
+ } else {
+ found = FALSE;
+ }
+
+ g_free (name);
+ } while (gtk_tree_model_iter_next (model, &iter));
+ }
+
+ /* Fallback to the first one. */
+ if (!found) {
+ if (gtk_tree_model_get_iter_first (model, &iter)) {
+ gtk_combo_box_set_active_iter (GTK_COMBO_BOX (widget), &iter);
+ }
+ }
+
+ g_free (value);
+}
+
+static void
+preferences_notify_int_cb (EmpathyConf *conf,
+ const gchar *key,
+ gpointer user_data)
+{
+ preferences_widget_sync_int (key, user_data);
+}
+
+static void
+preferences_notify_string_cb (EmpathyConf *conf,
+ const gchar *key,
+ gpointer user_data)
+{
+ preferences_widget_sync_string (key, user_data);
+}
+
+static void
+preferences_notify_string_combo_cb (EmpathyConf *conf,
+ const gchar *key,
+ gpointer user_data)
+{
+ preferences_widget_sync_string_combo (key, user_data);
+}
+
+static void
+preferences_notify_bool_cb (EmpathyConf *conf,
+ const gchar *key,
+ gpointer user_data)
+{
+ preferences_widget_sync_bool (key, user_data);
+}
+
+static void
+preferences_notify_sensitivity_cb (EmpathyConf *conf,
+ const gchar *key,
+ gpointer user_data)
+{
+ gboolean value;
+
+ if (empathy_conf_get_bool (conf, key, &value)) {
+ gtk_widget_set_sensitive (GTK_WIDGET (user_data), value);
+ }
+}
+
+static void
+preferences_add_id (EmpathyPreferences *preferences, guint id)
+{
+ preferences->notify_ids = g_list_prepend (preferences->notify_ids,
+ GUINT_TO_POINTER (id));
+}
+
+static void
+preferences_hookup_spin_button (EmpathyPreferences *preferences,
+ const gchar *key,
+ GtkWidget *widget)
+{
+ guint id;
+
+ /* Silence warning. */
+ if (0) {
+ preferences_hookup_spin_button (preferences, key, widget);
+ }
+
+ preferences_widget_sync_int (key, widget);
+
+ g_object_set_data_full (G_OBJECT (widget), "key",
+ g_strdup (key), g_free);
+
+ g_signal_connect (widget,
+ "value_changed",
+ G_CALLBACK (preferences_spin_button_value_changed_cb),
+ NULL);
+
+ id = empathy_conf_notify_add (empathy_conf_get (),
+ key,
+ preferences_notify_int_cb,
+ widget);
+ if (id) {
+ preferences_add_id (preferences, id);
+ }
+}
+
+static void
+preferences_hookup_entry (EmpathyPreferences *preferences,
+ const gchar *key,
+ GtkWidget *widget)
+{
+ guint id;
+
+ if (0) { /* Silent warning before we use this function. */
+ preferences_hookup_entry (preferences, key, widget);
+ }
+
+ preferences_widget_sync_string (key, widget);
+
+ g_object_set_data_full (G_OBJECT (widget), "key",
+ g_strdup (key), g_free);
+
+ g_signal_connect (widget,
+ "changed",
+ G_CALLBACK (preferences_entry_value_changed_cb),
+ NULL);
+
+ id = empathy_conf_notify_add (empathy_conf_get (),
+ key,
+ preferences_notify_string_cb,
+ widget);
+ if (id) {
+ preferences_add_id (preferences, id);
+ }
+}
+
+static void
+preferences_hookup_toggle_button (EmpathyPreferences *preferences,
+ const gchar *key,
+ GtkWidget *widget)
+{
+ guint id;
+
+ preferences_widget_sync_bool (key, widget);
+
+ g_object_set_data_full (G_OBJECT (widget), "key",
+ g_strdup (key), g_free);
+
+ g_signal_connect (widget,
+ "toggled",
+ G_CALLBACK (preferences_toggle_button_toggled_cb),
+ NULL);
+
+ id = empathy_conf_notify_add (empathy_conf_get (),
+ key,
+ preferences_notify_bool_cb,
+ widget);
+ if (id) {
+ preferences_add_id (preferences, id);
+ }
+}
+
+static void
+preferences_hookup_radio_button (EmpathyPreferences *preferences,
+ const gchar *key,
+ GtkWidget *widget)
+{
+ GSList *group, *l;
+ guint id;
+
+ preferences_widget_sync_string (key, widget);
+
+ group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (widget));
+ for (l = group; l; l = l->next) {
+ g_signal_connect (l->data,
+ "toggled",
+ G_CALLBACK (preferences_radio_button_toggled_cb),
+ NULL);
+
+ g_object_set_data_full (G_OBJECT (l->data), "key",
+ g_strdup (key), g_free);
+ }
+
+ id = empathy_conf_notify_add (empathy_conf_get (),
+ key,
+ preferences_notify_string_cb,
+ widget);
+ if (id) {
+ preferences_add_id (preferences, id);
+ }
+}
+
+static void
+preferences_hookup_string_combo (EmpathyPreferences *preferences,
+ const gchar *key,
+ GtkWidget *widget)
+{
+ guint id;
+
+ preferences_widget_sync_string_combo (key, widget);
+
+ g_object_set_data_full (G_OBJECT (widget), "key",
+ g_strdup (key), g_free);
+
+ g_signal_connect (widget,
+ "changed",
+ G_CALLBACK (preferences_string_combo_changed_cb),
+ NULL);
+
+ id = empathy_conf_notify_add (empathy_conf_get (),
+ key,
+ preferences_notify_string_combo_cb,
+ widget);
+ if (id) {
+ preferences_add_id (preferences, id);
+ }
+}
+
+static void
+preferences_hookup_sensitivity (EmpathyPreferences *preferences,
+ const gchar *key,
+ GtkWidget *widget)
+{
+ gboolean value;
+ guint id;
+
+ if (empathy_conf_get_bool (empathy_conf_get (), key, &value)) {
+ gtk_widget_set_sensitive (widget, value);
+ }
+
+ id = empathy_conf_notify_add (empathy_conf_get (),
+ key,
+ preferences_notify_sensitivity_cb,
+ widget);
+ if (id) {
+ preferences_add_id (preferences, id);
+ }
+}
+
+static void
+preferences_spin_button_value_changed_cb (GtkWidget *button,
+ gpointer user_data)
+{
+ const gchar *key;
+
+ key = g_object_get_data (G_OBJECT (button), "key");
+
+ empathy_conf_set_int (empathy_conf_get (),
+ key,
+ gtk_spin_button_get_value (GTK_SPIN_BUTTON (button)));
+}
+
+static void
+preferences_entry_value_changed_cb (GtkWidget *entry,
+ gpointer user_data)
+{
+ const gchar *key;
+
+ key = g_object_get_data (G_OBJECT (entry), "key");
+
+ empathy_conf_set_string (empathy_conf_get (),
+ key,
+ gtk_entry_get_text (GTK_ENTRY (entry)));
+}
+
+static void
+preferences_toggle_button_toggled_cb (GtkWidget *button,
+ gpointer user_data)
+{
+ const gchar *key;
+
+ key = g_object_get_data (G_OBJECT (button), "key");
+
+ empathy_conf_set_bool (empathy_conf_get (),
+ key,
+ gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (button)));
+}
+
+static void
+preferences_radio_button_toggled_cb (GtkWidget *button,
+ gpointer user_data)
+{
+ const gchar *key;
+ const gchar *value = NULL;
+
+ if (!gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (button))) {
+ return;
+ }
+
+ key = g_object_get_data (G_OBJECT (button), "key");
+
+ if (key && strcmp (key, EMPATHY_PREFS_CONTACTS_SORT_CRITERIUM) == 0) {
+ GSList *group;
+ GType type;
+ GEnumClass *enum_class;
+ GEnumValue *enum_value;
+
+ group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (button));
+
+ /* Get string from index */
+ type = empathy_contact_list_store_sort_get_type ();
+ enum_class = G_ENUM_CLASS (g_type_class_peek (type));
+ enum_value = g_enum_get_value (enum_class, g_slist_index (group, button));
+
+ if (!enum_value) {
+ g_warning ("No GEnumValue for EmpathyContactListSort with GtkRadioButton index:%d",
+ g_slist_index (group, button));
+ return;
+ }
+
+ value = enum_value->value_nick;
+ }
+
+ empathy_conf_set_string (empathy_conf_get (), key, value);
+}
+
+static void
+preferences_string_combo_changed_cb (GtkWidget *combo,
+ gpointer user_data)
+{
+ const gchar *key;
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+ gchar *name;
+
+ key = g_object_get_data (G_OBJECT (combo), "key");
+
+ if (gtk_combo_box_get_active_iter (GTK_COMBO_BOX (combo), &iter)) {
+ model = gtk_combo_box_get_model (GTK_COMBO_BOX (combo));
+
+ gtk_tree_model_get (model, &iter,
+ COL_COMBO_NAME, &name,
+ -1);
+ empathy_conf_set_string (empathy_conf_get (), key, name);
+ g_free (name);
+ }
+}
+
+static void
+preferences_response_cb (GtkWidget *widget,
+ gint response,
+ EmpathyPreferences *preferences)
+{
+ gtk_widget_destroy (widget);
+}
+
+static void
+preferences_destroy_cb (GtkWidget *widget,
+ EmpathyPreferences *preferences)
+{
+ GList *l;
+
+ for (l = preferences->notify_ids; l; l = l->next) {
+ guint id;
+
+ id = GPOINTER_TO_UINT (l->data);
+ empathy_conf_notify_remove (empathy_conf_get (), id);
+ }
+
+ g_list_free (preferences->notify_ids);
+ g_free (preferences);
+}
+
+GtkWidget *
+empathy_preferences_show (GtkWindow *parent)
+{
+ static EmpathyPreferences *preferences;
+ GladeXML *glade;
+
+ if (preferences) {
+ gtk_window_present (GTK_WINDOW (preferences->dialog));
+ return preferences->dialog;
+ }
+
+ preferences = g_new0 (EmpathyPreferences, 1);
+
+ glade = empathy_glade_get_file (
+ "empathy-preferences.glade",
+ "preferences_dialog",
+ NULL,
+ "preferences_dialog", &preferences->dialog,
+ "notebook", &preferences->notebook,
+ "checkbutton_show_avatars", &preferences->checkbutton_show_avatars,
+ "checkbutton_compact_contact_list", &preferences->checkbutton_compact_contact_list,
+ "checkbutton_show_smileys", &preferences->checkbutton_show_smileys,
+ "combobox_chat_theme", &preferences->combobox_chat_theme,
+ "checkbutton_theme_chat_room", &preferences->checkbutton_theme_chat_room,
+ "checkbutton_separate_chat_windows", &preferences->checkbutton_separate_chat_windows,
+ "checkbutton_autoconnect", &preferences->checkbutton_autoconnect,
+ "radiobutton_contact_list_sort_by_name", &preferences->radiobutton_contact_list_sort_by_name,
+ "radiobutton_contact_list_sort_by_state", &preferences->radiobutton_contact_list_sort_by_state,
+ "checkbutton_sounds_for_messages", &preferences->checkbutton_sounds_for_messages,
+ "checkbutton_sounds_when_busy", &preferences->checkbutton_sounds_when_busy,
+ "checkbutton_sounds_when_away", &preferences->checkbutton_sounds_when_away,
+ "checkbutton_popups_when_available", &preferences->checkbutton_popups_when_available,
+ "treeview_spell_checker", &preferences->treeview_spell_checker,
+ NULL);
+
+ empathy_glade_connect (glade,
+ preferences,
+ "preferences_dialog", "destroy", preferences_destroy_cb,
+ "preferences_dialog", "response", preferences_response_cb,
+ NULL);
+
+ g_object_unref (glade);
+
+ g_object_add_weak_pointer (G_OBJECT (preferences->dialog), (gpointer) &preferences);
+
+ preferences_themes_setup (preferences);
+
+ preferences_setup_widgets (preferences);
+
+ preferences_languages_setup (preferences);
+ preferences_languages_add (preferences);
+ preferences_languages_load (preferences);
+
+ if (empathy_spell_supported ()) {
+ GtkWidget *page;
+
+ page = gtk_notebook_get_nth_page (GTK_NOTEBOOK (preferences->notebook), 2);
+ gtk_widget_show (page);
+ }
+
+ if (parent) {
+ gtk_window_set_transient_for (GTK_WINDOW (preferences->dialog),
+ GTK_WINDOW (parent));
+ }
+
+ gtk_widget_show (preferences->dialog);
+
+ return preferences->dialog;
+}
+
diff --git a/gnome-2-22/libempathy-gtk/empathy-preferences.glade b/gnome-2-22/libempathy-gtk/empathy-preferences.glade
new file mode 100644
index 000000000..725844491
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-preferences.glade
@@ -0,0 +1,1063 @@
+<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
+<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
+
+<glade-interface>
+
+<widget class="GtkDialog" id="preferences_dialog">
+ <property name="border_width">5</property>
+ <property name="title" translatable="yes">Preferences</property>
+ <property name="type">GTK_WINDOW_TOPLEVEL</property>
+ <property name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property>
+ <property name="modal">False</property>
+ <property name="resizable">True</property>
+ <property name="destroy_with_parent">False</property>
+ <property name="icon_name">gtk-preferences</property>
+ <property name="decorated">True</property>
+ <property name="skip_taskbar_hint">False</property>
+ <property name="skip_pager_hint">False</property>
+ <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
+ <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+ <property name="focus_on_map">True</property>
+ <property name="urgency_hint">False</property>
+ <property name="has_separator">False</property>
+
+ <child internal-child="vbox">
+ <widget class="GtkVBox" id="dialog-vbox5">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">2</property>
+
+ <child internal-child="action_area">
+ <widget class="GtkHButtonBox" id="dialog-action_area5">
+ <property name="visible">True</property>
+ <property name="layout_style">GTK_BUTTONBOX_END</property>
+
+ <child>
+ <widget class="GtkButton" id="button_close">
+ <property name="visible">True</property>
+ <property name="can_default">True</property>
+ <property name="can_focus">True</property>
+ <property name="label">gtk-close</property>
+ <property name="use_stock">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="response_id">-6</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="pack_type">GTK_PACK_END</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkNotebook" id="notebook">
+ <property name="border_width">5</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="show_tabs">True</property>
+ <property name="show_border">True</property>
+ <property name="tab_pos">GTK_POS_TOP</property>
+ <property name="scrollable">False</property>
+ <property name="enable_popup">False</property>
+
+ <child>
+ <widget class="GtkVBox" id="vbox197">
+ <property name="border_width">12</property>
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">18</property>
+
+ <child>
+ <widget class="GtkFrame" id="frame3">
+ <property name="visible">True</property>
+ <property name="label_xalign">0</property>
+ <property name="label_yalign">0.5</property>
+ <property name="shadow_type">GTK_SHADOW_NONE</property>
+
+ <child>
+ <widget class="GtkAlignment" id="alignment11">
+ <property name="visible">True</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xscale">1</property>
+ <property name="yscale">1</property>
+ <property name="top_padding">6</property>
+ <property name="bottom_padding">0</property>
+ <property name="left_padding">12</property>
+ <property name="right_padding">0</property>
+
+ <child>
+ <widget class="GtkVBox" id="vbox199">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">6</property>
+
+ <child>
+ <widget class="GtkCheckButton" id="checkbutton_show_avatars">
+ <property name="visible">True</property>
+ <property name="tooltip" translatable="yes">Avatars are user chosen images shown in the contact list</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Show _avatars</property>
+ <property name="use_underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="active">True</property>
+ <property name="inconsistent">False</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkCheckButton" id="checkbutton_compact_contact_list">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Show co_mpact contact list</property>
+ <property name="use_underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="active">False</property>
+ <property name="inconsistent">False</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkCheckButton" id="checkbutton_show_smileys">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Show _smileys as images</property>
+ <property name="use_underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="active">True</property>
+ <property name="inconsistent">False</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label611">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;Appearance&lt;/b&gt;</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">True</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="type">label_item</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkFrame" id="frame4">
+ <property name="visible">True</property>
+ <property name="label_xalign">0</property>
+ <property name="label_yalign">0.5</property>
+ <property name="shadow_type">GTK_SHADOW_NONE</property>
+
+ <child>
+ <widget class="GtkAlignment" id="alignment12">
+ <property name="visible">True</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xscale">1</property>
+ <property name="yscale">1</property>
+ <property name="top_padding">6</property>
+ <property name="bottom_padding">0</property>
+ <property name="left_padding">12</property>
+ <property name="right_padding">0</property>
+
+ <child>
+ <widget class="GtkVBox" id="vbox218">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+
+ <child>
+ <widget class="GtkCheckButton" id="checkbutton_separate_chat_windows">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">_Open new chats in separate windows</property>
+ <property name="use_underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="active">False</property>
+ <property name="inconsistent">False</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkCheckButton" id="checkbutton_autoconnect">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Automatically _connect on startup </property>
+ <property name="use_underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="active">True</property>
+ <property name="inconsistent">False</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label612">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;Behaviour&lt;/b&gt;</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">True</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="type">label_item</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkFrame" id="frame13">
+ <property name="visible">True</property>
+ <property name="label_xalign">0</property>
+ <property name="label_yalign">0.5</property>
+ <property name="shadow_type">GTK_SHADOW_NONE</property>
+
+ <child>
+ <widget class="GtkAlignment" id="alignment31">
+ <property name="visible">True</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xscale">1</property>
+ <property name="yscale">1</property>
+ <property name="top_padding">6</property>
+ <property name="bottom_padding">0</property>
+ <property name="left_padding">12</property>
+ <property name="right_padding">0</property>
+
+ <child>
+ <widget class="GtkVBox" id="vbox217">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+
+ <child>
+ <widget class="GtkRadioButton" id="radiobutton_contact_list_sort_by_name">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Sort by _name</property>
+ <property name="use_underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="active">False</property>
+ <property name="inconsistent">False</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkRadioButton" id="radiobutton_contact_list_sort_by_state">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Sort by s_tate</property>
+ <property name="use_underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="active">False</property>
+ <property name="inconsistent">False</property>
+ <property name="draw_indicator">True</property>
+ <property name="group">radiobutton_contact_list_sort_by_name</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label644">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;Contact List&lt;/b&gt;</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">True</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="type">label_item</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="tab_expand">False</property>
+ <property name="tab_fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label602">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">General</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="type">tab</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkVBox" id="outer_vbox">
+ <property name="border_width">12</property>
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">18</property>
+
+ <child>
+ <widget class="GtkFrame" id="frame5">
+ <property name="visible">True</property>
+ <property name="label_xalign">0</property>
+ <property name="label_yalign">0.5</property>
+ <property name="shadow_type">GTK_SHADOW_NONE</property>
+
+ <child>
+ <widget class="GtkAlignment" id="alignment13">
+ <property name="visible">True</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xscale">1</property>
+ <property name="yscale">1</property>
+ <property name="top_padding">6</property>
+ <property name="bottom_padding">0</property>
+ <property name="left_padding">12</property>
+ <property name="right_padding">0</property>
+
+ <child>
+ <widget class="GtkVBox" id="vbox106">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">6</property>
+
+ <child>
+ <widget class="GtkCheckButton" id="checkbutton_sounds_for_messages">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">_Play sound when messages arrive</property>
+ <property name="use_underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="active">False</property>
+ <property name="inconsistent">False</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkCheckButton" id="checkbutton_sounds_when_busy">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Enable sounds when _busy</property>
+ <property name="use_underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="active">False</property>
+ <property name="inconsistent">False</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkCheckButton" id="checkbutton_sounds_when_away">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Enable sounds when _away</property>
+ <property name="use_underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="active">False</property>
+ <property name="inconsistent">False</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label613">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;Audio&lt;/b&gt;</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">True</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="type">label_item</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkFrame" id="frame6">
+ <property name="visible">True</property>
+ <property name="label_xalign">0</property>
+ <property name="label_yalign">0.5</property>
+ <property name="shadow_type">GTK_SHADOW_NONE</property>
+
+ <child>
+ <widget class="GtkAlignment" id="alignment14">
+ <property name="visible">True</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xscale">1</property>
+ <property name="yscale">1</property>
+ <property name="top_padding">6</property>
+ <property name="bottom_padding">0</property>
+ <property name="left_padding">12</property>
+ <property name="right_padding">0</property>
+
+ <child>
+ <widget class="GtkCheckButton" id="checkbutton_popups_when_available">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Display notifications when contacts come _online</property>
+ <property name="use_underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="active">False</property>
+ <property name="inconsistent">False</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ </child>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label614">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;Visual&lt;/b&gt;</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">True</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="type">label_item</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="tab_expand">False</property>
+ <property name="tab_fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label607">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Notifications</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="type">tab</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkVBox" id="vbox168">
+ <property name="border_width">12</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">18</property>
+
+ <child>
+ <widget class="GtkFrame" id="frame7">
+ <property name="visible">True</property>
+ <property name="label_xalign">0</property>
+ <property name="label_yalign">0.5</property>
+ <property name="shadow_type">GTK_SHADOW_NONE</property>
+
+ <child>
+ <widget class="GtkAlignment" id="alignment15">
+ <property name="visible">True</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xscale">1</property>
+ <property name="yscale">1</property>
+ <property name="top_padding">6</property>
+ <property name="bottom_padding">0</property>
+ <property name="left_padding">12</property>
+ <property name="right_padding">0</property>
+
+ <child>
+ <widget class="GtkVBox" id="vbox201">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">6</property>
+
+ <child>
+ <widget class="GtkHBox" id="hbox153">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+
+ <child>
+ <widget class="GtkHBox" id="hbox154">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">6</property>
+
+ <child>
+ <widget class="GtkScrolledWindow" id="scrolledwindow18">
+ <property name="visible">True</property>
+ <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+ <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+ <property name="shadow_type">GTK_SHADOW_IN</property>
+ <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
+
+ <child>
+ <widget class="GtkTreeView" id="treeview_spell_checker">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="headers_visible">False</property>
+ <property name="rules_hint">False</property>
+ <property name="reorderable">False</property>
+ <property name="enable_search">True</property>
+ <property name="fixed_height_mode">False</property>
+ <property name="hover_selection">False</property>
+ <property name="hover_expand">False</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkHBox" id="hbox155">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">6</property>
+
+ <child>
+ <widget class="GtkImage" id="image422">
+ <property name="visible">True</property>
+ <property name="stock">gtk-dialog-info</property>
+ <property name="icon_size">4</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label616">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;small&gt;The list of languages reflects only the languages for which you have a dictionary installed.&lt;/small&gt;</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">True</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">True</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label615">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;Enable spell checking for languages:&lt;/b&gt;</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">True</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="type">label_item</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <placeholder/>
+ </child>
+ </widget>
+ <packing>
+ <property name="tab_expand">False</property>
+ <property name="tab_fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label567">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Spell Checking</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="type">tab</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkVBox" id="vbox206">
+ <property name="border_width">12</property>
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">18</property>
+
+ <child>
+ <widget class="GtkFrame" id="frame11">
+ <property name="visible">True</property>
+ <property name="label_xalign">0</property>
+ <property name="label_yalign">0.5</property>
+ <property name="shadow_type">GTK_SHADOW_NONE</property>
+
+ <child>
+ <widget class="GtkAlignment" id="alignment19">
+ <property name="visible">True</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xscale">1</property>
+ <property name="yscale">1</property>
+ <property name="top_padding">6</property>
+ <property name="bottom_padding">0</property>
+ <property name="left_padding">12</property>
+ <property name="right_padding">0</property>
+
+ <child>
+ <widget class="GtkVBox" id="vbox207">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">6</property>
+
+ <child>
+ <widget class="GtkHBox" id="hbox139">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">12</property>
+
+ <child>
+ <widget class="GtkLabel" id="label586">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Chat Th_eme:</property>
+ <property name="use_underline">True</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="mnemonic_widget">combobox_chat_theme</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkComboBox" id="combobox_chat_theme">
+ <property name="visible">True</property>
+ <property name="items" translatable="yes"></property>
+ <property name="add_tearoffs">False</property>
+ <property name="focus_on_click">True</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label626">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;Appearance&lt;/b&gt;</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">True</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="type">label_item</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkFrame" id="frame12">
+ <property name="visible">True</property>
+ <property name="label_xalign">0</property>
+ <property name="label_yalign">0.5</property>
+ <property name="shadow_type">GTK_SHADOW_NONE</property>
+
+ <child>
+ <widget class="GtkAlignment" id="alignment20">
+ <property name="visible">True</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xscale">1</property>
+ <property name="yscale">1</property>
+ <property name="top_padding">6</property>
+ <property name="bottom_padding">0</property>
+ <property name="left_padding">12</property>
+ <property name="right_padding">0</property>
+
+ <child>
+ <widget class="GtkCheckButton" id="checkbutton_theme_chat_room">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">_Use for chat rooms</property>
+ <property name="use_underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="active">False</property>
+ <property name="inconsistent">False</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ </child>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label627">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;Options&lt;/b&gt;</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">True</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="type">label_item</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="tab_expand">False</property>
+ <property name="tab_fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label624">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Themes</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="type">tab</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+</widget>
+
+</glade-interface>
diff --git a/gnome-2-22/libempathy-gtk/empathy-preferences.h b/gnome-2-22/libempathy-gtk/empathy-preferences.h
new file mode 100644
index 000000000..750666b09
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-preferences.h
@@ -0,0 +1,62 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2003-2007 Imendio AB
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * 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: Mikael Hallendal <micke@imendio.com>
+ * Richard Hult <richard@imendio.com>
+ * Martyn Russell <martyn@imendio.com>
+ */
+
+#ifndef __EMPATHY_PREFERENCES_H__
+#define __EMPATHY_PREFERENCES_H__
+
+#include <gtk/gtkwindow.h>
+
+G_BEGIN_DECLS
+
+#define EMPATHY_PREFS_PATH "/apps/empathy"
+
+#define EMPATHY_PREFS_SOUNDS_FOR_MESSAGES EMPATHY_PREFS_PATH "/notifications/sounds_for_messages"
+#define EMPATHY_PREFS_SOUNDS_WHEN_AWAY EMPATHY_PREFS_PATH "/notifications/sounds_when_away"
+#define EMPATHY_PREFS_SOUNDS_WHEN_BUSY EMPATHY_PREFS_PATH "/notifications/sounds_when_busy"
+#define EMPATHY_PREFS_POPUPS_WHEN_AVAILABLE EMPATHY_PREFS_PATH "/notifications/popups_when_available"
+#define EMPATHY_PREFS_CHAT_SHOW_SMILEYS EMPATHY_PREFS_PATH "/conversation/graphical_smileys"
+#define EMPATHY_PREFS_CHAT_THEME EMPATHY_PREFS_PATH "/conversation/theme"
+#define EMPATHY_PREFS_CHAT_THEME_CHAT_ROOM EMPATHY_PREFS_PATH "/conversation/theme_chat_room"
+#define EMPATHY_PREFS_CHAT_SPELL_CHECKER_LANGUAGES EMPATHY_PREFS_PATH "/conversation/spell_checker_languages"
+#define EMPATHY_PREFS_CHAT_SPELL_CHECKER_ENABLED EMPATHY_PREFS_PATH "/conversation/spell_checker_enabled"
+#define EMPATHY_PREFS_CHAT_NICK_COMPLETION_CHAR EMPATHY_PREFS_PATH "/conversation/nick_completion_char"
+#define EMPATHY_PREFS_UI_SEPARATE_CHAT_WINDOWS EMPATHY_PREFS_PATH "/ui/separate_chat_windows"
+#define EMPATHY_PREFS_UI_MAIN_WINDOW_HIDDEN EMPATHY_PREFS_PATH "/ui/main_window_hidden"
+#define EMPATHY_PREFS_UI_AVATAR_DIRECTORY EMPATHY_PREFS_PATH "/ui/avatar_directory"
+#define EMPATHY_PREFS_UI_SHOW_AVATARS EMPATHY_PREFS_PATH "/ui/show_avatars"
+#define EMPATHY_PREFS_UI_COMPACT_CONTACT_LIST EMPATHY_PREFS_PATH "/ui/compact_contact_list"
+#define EMPATHY_PREFS_CONTACTS_SHOW_OFFLINE EMPATHY_PREFS_PATH "/contacts/show_offline"
+#define EMPATHY_PREFS_CONTACTS_SORT_CRITERIUM EMPATHY_PREFS_PATH "/contacts/sort_criterium"
+#define EMPATHY_PREFS_HINTS_CLOSE_MAIN_WINDOW EMPATHY_PREFS_PATH "/hints/close_main_window"
+#define EMPATHY_PREFS_SALUT_ACCOUNT_CREATED EMPATHY_PREFS_PATH "/accounts/salut_created"
+#define EMPATHY_PREFS_USE_NM EMPATHY_PREFS_PATH "/use_nm"
+#define EMPATHY_PREFS_AUTOCONNECT EMPATHY_PREFS_PATH "/autoconnect"
+
+GtkWidget * empathy_preferences_show (GtkWindow *parent);
+
+G_END_DECLS
+
+#endif /* __EMPATHY_PREFERENCES_H__ */
+
+
diff --git a/gnome-2-22/libempathy-gtk/empathy-presence-chooser.c b/gnome-2-22/libempathy-gtk/empathy-presence-chooser.c
new file mode 100644
index 000000000..dfed7bfc7
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-presence-chooser.c
@@ -0,0 +1,974 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2005-2007 Imendio AB
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * 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: Richard Hult <richard@imendio.com>
+ * Martyn Russell <martyn@imendio.com>
+ * Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#include "config.h"
+
+#include <string.h>
+#include <stdlib.h>
+
+#include <glib/gi18n.h>
+#include <gtk/gtk.h>
+#include <glade/glade.h>
+
+#include <telepathy-glib/util.h>
+#include <libmissioncontrol/mc-enum-types.h>
+
+#include <libempathy/empathy-idle.h>
+#include <libempathy/empathy-utils.h>
+#include <libempathy/empathy-debug.h>
+#include <libempathy/empathy-status-presets.h>
+
+#include "empathy-ui-utils.h"
+#include "empathy-images.h"
+#include "empathy-presence-chooser.h"
+
+#define GET_PRIV(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), EMPATHY_TYPE_PRESENCE_CHOOSER, EmpathyPresenceChooserPriv))
+
+#define DEBUG_DOMAIN "PresenceChooser"
+
+/* Flashing delay for icons (milliseconds). */
+#define FLASH_TIMEOUT 500
+
+typedef struct {
+ EmpathyIdle *idle;
+
+ GtkWidget *hbox;
+ GtkWidget *image;
+ GtkWidget *label;
+ GtkWidget *menu;
+
+ McPresence last_state;
+
+ McPresence flash_state_1;
+ McPresence flash_state_2;
+ guint flash_timeout_id;
+
+ /* The handle the kind of unnessecary scroll support. */
+ guint scroll_timeout_id;
+ McPresence scroll_state;
+ gchar *scroll_status;
+} EmpathyPresenceChooserPriv;
+
+typedef struct {
+ GtkWidget *dialog;
+ GtkWidget *checkbutton_save;
+ GtkWidget *comboboxentry_message;
+ GtkWidget *entry_message;
+ GtkWidget *combobox_status;
+ GtkTreeModel *model_status;
+} CustomMessageDialog;
+
+enum {
+ COL_ICON,
+ COL_LABEL,
+ COL_PRESENCE,
+ COL_COUNT
+};
+
+typedef struct {
+ McPresence state;
+ const gchar *status;
+} StateAndStatus;
+
+static CustomMessageDialog *message_dialog = NULL;
+/* States to be listed in the menu.
+ * Each state has a boolean telling if it can have custom message */
+static guint states[] = {MC_PRESENCE_AVAILABLE, TRUE,
+ MC_PRESENCE_DO_NOT_DISTURB, TRUE,
+ MC_PRESENCE_AWAY, TRUE,
+ MC_PRESENCE_HIDDEN, FALSE,
+ MC_PRESENCE_OFFLINE, FALSE};
+
+static void empathy_presence_chooser_class_init (EmpathyPresenceChooserClass *klass);
+static void empathy_presence_chooser_init (EmpathyPresenceChooser *chooser);
+static void presence_chooser_finalize (GObject *object);
+static void presence_chooser_presence_changed_cb (EmpathyPresenceChooser *chooser);
+static void presence_chooser_reset_scroll_timeout (EmpathyPresenceChooser *chooser);
+static gboolean presence_chooser_scroll_timeout_cb (EmpathyPresenceChooser *chooser);
+static gboolean presence_chooser_scroll_event_cb (EmpathyPresenceChooser *chooser,
+ GdkEventScroll *event,
+ gpointer user_data);
+static GList * presence_chooser_get_presets (EmpathyPresenceChooser *chooser);
+static StateAndStatus *presence_chooser_state_and_status_new (McPresence state,
+ const gchar *status);
+static gboolean presence_chooser_flash_timeout_cb (EmpathyPresenceChooser *chooser);
+static void presence_chooser_flash_start (EmpathyPresenceChooser *chooser,
+ McPresence state_1,
+ McPresence state_2);
+static void presence_chooser_flash_stop (EmpathyPresenceChooser *chooser,
+ McPresence state);
+static gboolean presence_chooser_button_press_event_cb (GtkWidget *chooser,
+ GdkEventButton *event,
+ gpointer user_data);
+static void presence_chooser_toggled_cb (GtkWidget *chooser,
+ gpointer user_data);
+static void presence_chooser_menu_popup (EmpathyPresenceChooser *chooser);
+static void presence_chooser_menu_popdown (EmpathyPresenceChooser *chooser);
+static void presence_chooser_menu_selection_done_cb (GtkMenuShell *menushell,
+ EmpathyPresenceChooser *chooser);
+static void presence_chooser_menu_destroy_cb (GtkWidget *menu,
+ EmpathyPresenceChooser *chooser);
+static void presence_chooser_menu_detach (GtkWidget *attach_widget,
+ GtkMenu *menu);
+static void presence_chooser_menu_align_func (GtkMenu *menu,
+ gint *x,
+ gint *y,
+ gboolean *push_in,
+ GtkWidget *widget);
+static void presence_chooser_menu_add_item (GtkWidget *menu,
+ const gchar *str,
+ McPresence state);
+static void presence_chooser_noncustom_activate_cb (GtkWidget *item,
+ gpointer user_data);
+static void presence_chooser_set_state (McPresence state,
+ const gchar *status);
+static void presence_chooser_custom_activate_cb (GtkWidget *item,
+ gpointer user_data);
+static void presence_chooser_dialog_show (void);
+
+G_DEFINE_TYPE (EmpathyPresenceChooser, empathy_presence_chooser, GTK_TYPE_TOGGLE_BUTTON);
+
+static void
+empathy_presence_chooser_class_init (EmpathyPresenceChooserClass *klass)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+ object_class->finalize = presence_chooser_finalize;
+
+ g_type_class_add_private (object_class, sizeof (EmpathyPresenceChooserPriv));
+}
+
+static void
+empathy_presence_chooser_init (EmpathyPresenceChooser *chooser)
+{
+ EmpathyPresenceChooserPriv *priv;
+ GtkWidget *arrow;
+ GtkWidget *alignment;
+
+ priv = GET_PRIV (chooser);
+
+ gtk_button_set_relief (GTK_BUTTON (chooser), GTK_RELIEF_NONE);
+ gtk_button_set_focus_on_click (GTK_BUTTON (chooser), FALSE);
+
+ alignment = gtk_alignment_new (0.5, 0.5, 1, 1);
+ gtk_widget_show (alignment);
+ gtk_container_add (GTK_CONTAINER (chooser), alignment);
+ gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 0, 0, 1, 0);
+
+ priv->hbox = gtk_hbox_new (FALSE, 1);
+ gtk_widget_show (priv->hbox);
+ gtk_container_add (GTK_CONTAINER (alignment), priv->hbox);
+
+ priv->image = gtk_image_new ();
+ gtk_widget_show (priv->image);
+ gtk_box_pack_start (GTK_BOX (priv->hbox), priv->image, FALSE, TRUE, 0);
+
+ priv->label = gtk_label_new (NULL);
+ gtk_widget_show (priv->label);
+ gtk_box_pack_start (GTK_BOX (priv->hbox), priv->label, TRUE, TRUE, 0);
+ gtk_label_set_ellipsize (GTK_LABEL (priv->label), PANGO_ELLIPSIZE_END);
+ gtk_misc_set_alignment (GTK_MISC (priv->label), 0, 0.5);
+ gtk_misc_set_padding (GTK_MISC (priv->label), 4, 1);
+
+ alignment = gtk_alignment_new (0.5, 0.5, 1, 1);
+ gtk_widget_show (alignment);
+ gtk_box_pack_start (GTK_BOX (priv->hbox), alignment, FALSE, FALSE, 0);
+
+ arrow = gtk_arrow_new (GTK_ARROW_DOWN, GTK_SHADOW_OUT);
+ gtk_widget_show (arrow);
+ gtk_container_add (GTK_CONTAINER (alignment), arrow);
+
+ g_signal_connect (chooser, "toggled",
+ G_CALLBACK (presence_chooser_toggled_cb),
+ NULL);
+ g_signal_connect (chooser, "button-press-event",
+ G_CALLBACK (presence_chooser_button_press_event_cb),
+ NULL);
+ g_signal_connect (chooser, "scroll-event",
+ G_CALLBACK (presence_chooser_scroll_event_cb),
+ NULL);
+
+ priv->idle = empathy_idle_new ();
+ presence_chooser_presence_changed_cb (chooser);
+ g_signal_connect_swapped (priv->idle, "notify",
+ G_CALLBACK (presence_chooser_presence_changed_cb),
+ chooser);
+}
+
+static void
+presence_chooser_finalize (GObject *object)
+{
+ EmpathyPresenceChooserPriv *priv;
+
+ priv = GET_PRIV (object);
+
+ if (priv->flash_timeout_id) {
+ g_source_remove (priv->flash_timeout_id);
+ }
+
+ if (priv->scroll_timeout_id) {
+ g_source_remove (priv->scroll_timeout_id);
+ }
+
+ g_signal_handlers_disconnect_by_func (priv->idle,
+ presence_chooser_presence_changed_cb,
+ object);
+ g_object_unref (priv->idle);
+
+ G_OBJECT_CLASS (empathy_presence_chooser_parent_class)->finalize (object);
+}
+
+GtkWidget *
+empathy_presence_chooser_new (void)
+{
+ GtkWidget *chooser;
+
+ chooser = g_object_new (EMPATHY_TYPE_PRESENCE_CHOOSER, NULL);
+
+ return chooser;
+}
+
+static void
+presence_chooser_presence_changed_cb (EmpathyPresenceChooser *chooser)
+{
+ EmpathyPresenceChooserPriv *priv;
+ McPresence state;
+ McPresence flash_state;
+ const gchar *status;
+
+ priv = GET_PRIV (chooser);
+
+ state = empathy_idle_get_state (priv->idle);
+ status = empathy_idle_get_status (priv->idle);
+ flash_state = empathy_idle_get_flash_state (priv->idle);
+
+ presence_chooser_reset_scroll_timeout (chooser);
+ gtk_label_set_text (GTK_LABEL (priv->label), status);
+
+ if (flash_state != MC_PRESENCE_UNSET) {
+ presence_chooser_flash_start (chooser, state, flash_state);
+ } else {
+ presence_chooser_flash_stop (chooser, state);
+ }
+}
+
+static void
+presence_chooser_reset_scroll_timeout (EmpathyPresenceChooser *chooser)
+{
+ EmpathyPresenceChooserPriv *priv;
+
+ priv = GET_PRIV (chooser);
+
+ if (priv->scroll_timeout_id) {
+ g_source_remove (priv->scroll_timeout_id);
+ priv->scroll_timeout_id = 0;
+ }
+
+ g_free (priv->scroll_status);
+ priv->scroll_status = NULL;
+}
+
+static gboolean
+presence_chooser_scroll_timeout_cb (EmpathyPresenceChooser *chooser)
+{
+ EmpathyPresenceChooserPriv *priv;
+
+ priv = GET_PRIV (chooser);
+
+ priv->scroll_timeout_id = 0;
+
+ empathy_idle_set_presence (priv->idle,
+ priv->scroll_state,
+ priv->scroll_status);
+
+ g_free (priv->scroll_status);
+ priv->scroll_status = NULL;
+
+ return FALSE;
+}
+
+static gboolean
+presence_chooser_scroll_event_cb (EmpathyPresenceChooser *chooser,
+ GdkEventScroll *event,
+ gpointer user_data)
+{
+ EmpathyPresenceChooserPriv *priv;
+ GList *list, *l;
+ const gchar *current_status;
+ StateAndStatus *sas;
+ gboolean match;
+
+ priv = GET_PRIV (chooser);
+
+ switch (event->direction) {
+ case GDK_SCROLL_UP:
+ break;
+ case GDK_SCROLL_DOWN:
+ break;
+ default:
+ return FALSE;
+ }
+
+ current_status = gtk_label_get_text (GTK_LABEL (priv->label));
+
+ /* Get the list of presets, which in this context means all the items
+ * without a trailing "...".
+ */
+ list = presence_chooser_get_presets (chooser);
+ sas = NULL;
+ match = FALSE;
+ for (l = list; l; l = l->next) {
+ sas = l->data;
+
+ if (sas->state == priv->last_state &&
+ strcmp (sas->status, current_status) == 0) {
+ sas = NULL;
+ match = TRUE;
+ if (event->direction == GDK_SCROLL_UP) {
+ if (l->prev) {
+ sas = l->prev->data;
+ }
+ }
+ else if (event->direction == GDK_SCROLL_DOWN) {
+ if (l->next) {
+ sas = l->next->data;
+ }
+ }
+ break;
+ }
+
+ sas = NULL;
+ }
+
+ if (sas) {
+ presence_chooser_reset_scroll_timeout (chooser);
+
+ priv->scroll_status = g_strdup (sas->status);
+ priv->scroll_state = sas->state;
+
+ priv->scroll_timeout_id =
+ g_timeout_add_seconds (1,
+ (GSourceFunc) presence_chooser_scroll_timeout_cb,
+ chooser);
+
+ presence_chooser_flash_stop (chooser, sas->state);
+ gtk_label_set_text (GTK_LABEL (priv->label), sas->status);
+ }
+ else if (!match) {
+ const gchar *status;
+ /* If we didn't get any match at all, it means the last state
+ * was a custom one. Just switch to the first one.
+ */
+ status = empathy_presence_get_default_message (states[0]);
+
+ presence_chooser_reset_scroll_timeout (chooser);
+ empathy_idle_set_presence (priv->idle, states[0], status);
+ }
+
+ g_list_foreach (list, (GFunc) g_free, NULL);
+ g_list_free (list);
+
+ return TRUE;
+}
+
+static GList *
+presence_chooser_get_presets (EmpathyPresenceChooser *chooser)
+{
+ GList *list = NULL;
+ guint i;
+
+ for (i = 0; i < G_N_ELEMENTS (states); i += 2) {
+ GList *presets, *p;
+ StateAndStatus *sas;
+ const gchar *status;
+
+ status = empathy_presence_get_default_message (states[i]);
+ sas = presence_chooser_state_and_status_new (states[i], status);
+ list = g_list_prepend (list, sas);
+
+ /* Go to next state if we don't want messages for that state */
+ if (!states[i+1]) {
+ continue;
+ }
+
+ presets = empathy_status_presets_get (states[i], 5);
+ for (p = presets; p; p = p->next) {
+ sas = presence_chooser_state_and_status_new (states[i], p->data);
+ list = g_list_prepend (list, sas);
+ }
+ g_list_free (presets);
+ }
+ list = g_list_reverse (list);
+
+ return list;
+}
+
+static StateAndStatus *
+presence_chooser_state_and_status_new (McPresence state,
+ const gchar *status)
+{
+ StateAndStatus *sas;
+
+ sas = g_new0 (StateAndStatus, 1);
+
+ sas->state = state;
+ sas->status = status;
+
+ return sas;
+}
+
+static gboolean
+presence_chooser_flash_timeout_cb (EmpathyPresenceChooser *chooser)
+{
+ EmpathyPresenceChooserPriv *priv;
+ McPresence state;
+ static gboolean on = FALSE;
+
+ priv = GET_PRIV (chooser);
+
+ if (on) {
+ state = priv->flash_state_1;
+ } else {
+ state = priv->flash_state_2;
+ }
+
+ gtk_image_set_from_icon_name (GTK_IMAGE (priv->image),
+ empathy_icon_name_for_presence (state),
+ GTK_ICON_SIZE_MENU);
+
+ on = !on;
+
+ return TRUE;
+}
+
+static void
+presence_chooser_flash_start (EmpathyPresenceChooser *chooser,
+ McPresence state_1,
+ McPresence state_2)
+{
+ EmpathyPresenceChooserPriv *priv;
+
+ g_return_if_fail (EMPATHY_IS_PRESENCE_CHOOSER (chooser));
+
+ priv = GET_PRIV (chooser);
+
+ priv->flash_state_1 = state_1;
+ priv->flash_state_2 = state_2;
+
+ if (!priv->flash_timeout_id) {
+ priv->flash_timeout_id = g_timeout_add (FLASH_TIMEOUT,
+ (GSourceFunc) presence_chooser_flash_timeout_cb,
+ chooser);
+ }
+}
+
+static void
+presence_chooser_flash_stop (EmpathyPresenceChooser *chooser,
+ McPresence state)
+{
+ EmpathyPresenceChooserPriv *priv;
+
+ g_return_if_fail (EMPATHY_IS_PRESENCE_CHOOSER (chooser));
+
+ priv = GET_PRIV (chooser);
+
+ if (priv->flash_timeout_id) {
+ g_source_remove (priv->flash_timeout_id);
+ priv->flash_timeout_id = 0;
+ }
+
+ gtk_image_set_from_icon_name (GTK_IMAGE (priv->image),
+ empathy_icon_name_for_presence (state),
+ GTK_ICON_SIZE_MENU);
+
+ priv->last_state = state;
+}
+
+static gboolean
+presence_chooser_button_press_event_cb (GtkWidget *chooser,
+ GdkEventButton *event,
+ gpointer user_data)
+{
+ if (event->button != 1 || event->type != GDK_BUTTON_PRESS) {
+ return FALSE;
+ }
+
+ if (!gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (chooser))) {
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (chooser), TRUE);
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static void
+presence_chooser_toggled_cb (GtkWidget *chooser,
+ gpointer user_data)
+{
+ if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (chooser))) {
+ presence_chooser_menu_popup (EMPATHY_PRESENCE_CHOOSER (chooser));
+ } else {
+ presence_chooser_menu_popdown (EMPATHY_PRESENCE_CHOOSER (chooser));
+ }
+}
+
+static void
+presence_chooser_menu_popup (EmpathyPresenceChooser *chooser)
+{
+ EmpathyPresenceChooserPriv *priv;
+ GtkWidget *menu;
+
+ priv = GET_PRIV (chooser);
+
+ if (priv->menu) {
+ return;
+ }
+
+ menu = empathy_presence_chooser_create_menu ();
+
+ g_signal_connect_after (menu, "selection-done",
+ G_CALLBACK (presence_chooser_menu_selection_done_cb),
+ chooser);
+
+ g_signal_connect (menu, "destroy",
+ G_CALLBACK (presence_chooser_menu_destroy_cb),
+ chooser);
+
+ gtk_menu_attach_to_widget (GTK_MENU (menu),
+ GTK_WIDGET (chooser),
+ presence_chooser_menu_detach);
+
+ gtk_menu_popup (GTK_MENU (menu),
+ NULL, NULL,
+ (GtkMenuPositionFunc) presence_chooser_menu_align_func,
+ chooser,
+ 1,
+ gtk_get_current_event_time ());
+
+ priv->menu = menu;
+}
+
+static void
+presence_chooser_menu_popdown (EmpathyPresenceChooser *chooser)
+{
+ EmpathyPresenceChooserPriv *priv;
+
+ priv = GET_PRIV (chooser);
+
+ if (priv->menu) {
+ gtk_widget_destroy (priv->menu);
+ }
+}
+
+static void
+presence_chooser_menu_selection_done_cb (GtkMenuShell *menushell,
+ EmpathyPresenceChooser *chooser)
+{
+ gtk_widget_destroy (GTK_WIDGET (menushell));
+
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (chooser), FALSE);
+}
+
+static void
+presence_chooser_menu_destroy_cb (GtkWidget *menu,
+ EmpathyPresenceChooser *chooser)
+{
+ EmpathyPresenceChooserPriv *priv;
+
+ priv = GET_PRIV (chooser);
+
+ priv->menu = NULL;
+}
+
+static void
+presence_chooser_menu_detach (GtkWidget *attach_widget,
+ GtkMenu *menu)
+{
+ /* We don't need to do anything, but attaching the menu means
+ * we don't own the ref count and it is cleaned up properly.
+ */
+}
+
+static void
+presence_chooser_menu_align_func (GtkMenu *menu,
+ gint *x,
+ gint *y,
+ gboolean *push_in,
+ GtkWidget *widget)
+{
+ GtkRequisition req;
+ GdkScreen *screen;
+ gint screen_height;
+
+ gtk_widget_size_request (GTK_WIDGET (menu), &req);
+
+ gdk_window_get_origin (widget->window, x, y);
+
+ *x += widget->allocation.x + 1;
+ *y += widget->allocation.y;
+
+ screen = gtk_widget_get_screen (GTK_WIDGET (menu));
+ screen_height = gdk_screen_get_height (screen);
+
+ if (req.height > screen_height) {
+ /* Too big for screen height anyway. */
+ *y = 0;
+ return;
+ }
+
+ if ((*y + req.height + widget->allocation.height) > screen_height) {
+ /* Can't put it below the button. */
+ *y -= req.height;
+ *y += 1;
+ } else {
+ /* Put menu below button. */
+ *y += widget->allocation.height;
+ *y -= 1;
+ }
+
+ *push_in = FALSE;
+}
+
+GtkWidget *
+empathy_presence_chooser_create_menu (void)
+{
+ const gchar *status;
+ GtkWidget *menu;
+ GtkWidget *item;
+ GtkWidget *image;
+ guint i;
+
+ menu = gtk_menu_new ();
+
+ for (i = 0; i < G_N_ELEMENTS (states); i += 2) {
+ GList *list, *l;
+
+ status = empathy_presence_get_default_message (states[i]);
+ presence_chooser_menu_add_item (menu,
+ status,
+ states[i]);
+
+ if (states[i+1]) {
+ /* Set custom messages if wanted */
+ list = empathy_status_presets_get (states[i], 5);
+ for (l = list; l; l = l->next) {
+ presence_chooser_menu_add_item (menu,
+ l->data,
+ states[i]);
+ }
+ g_list_free (list);
+ }
+
+ }
+
+ /* Separator. */
+ item = gtk_menu_item_new ();
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+ gtk_widget_show (item);
+
+ /* Custom messages */
+ item = gtk_image_menu_item_new_with_label (_("Custom messages..."));
+ image = gtk_image_new_from_stock (GTK_STOCK_EDIT, GTK_ICON_SIZE_MENU);
+ gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item), image);
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+ gtk_widget_show (image);
+ gtk_widget_show (item);
+
+ g_signal_connect (item,
+ "activate",
+ G_CALLBACK (presence_chooser_custom_activate_cb),
+ NULL);
+
+ return menu;
+}
+
+static void
+presence_chooser_menu_add_item (GtkWidget *menu,
+ const gchar *str,
+ McPresence state)
+{
+ GtkWidget *item;
+ GtkWidget *image;
+ const gchar *icon_name;
+
+ item = gtk_image_menu_item_new_with_label (str);
+ icon_name = empathy_icon_name_for_presence (state);
+
+ g_signal_connect (item, "activate",
+ G_CALLBACK (presence_chooser_noncustom_activate_cb),
+ NULL);
+
+ image = gtk_image_new_from_icon_name (icon_name, GTK_ICON_SIZE_MENU);
+ gtk_widget_show (image);
+
+ gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item), image);
+ gtk_widget_show (item);
+
+ g_object_set_data_full (G_OBJECT (item),
+ "status", g_strdup (str),
+ (GDestroyNotify) g_free);
+
+ g_object_set_data (G_OBJECT (item), "state", GINT_TO_POINTER (state));
+
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+}
+
+static void
+presence_chooser_noncustom_activate_cb (GtkWidget *item,
+ gpointer user_data)
+{
+ McPresence state;
+ const gchar *status;
+
+ status = g_object_get_data (G_OBJECT (item), "status");
+ state = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (item), "state"));
+
+ presence_chooser_set_state (state, status);
+}
+
+static void
+presence_chooser_set_state (McPresence state,
+ const gchar *status)
+{
+ EmpathyIdle *idle;
+
+ idle = empathy_idle_new ();
+ empathy_idle_set_presence (idle, state, status);
+ g_object_unref (idle);
+}
+
+static void
+presence_chooser_custom_activate_cb (GtkWidget *item,
+ gpointer user_data)
+{
+ presence_chooser_dialog_show ();
+}
+
+static McPresence
+presence_chooser_dialog_get_selected (CustomMessageDialog *dialog)
+{
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+ McPresence presence = LAST_MC_PRESENCE;
+
+ model = gtk_combo_box_get_model (GTK_COMBO_BOX (dialog->combobox_status));
+ if (gtk_combo_box_get_active_iter (GTK_COMBO_BOX (dialog->combobox_status), &iter)) {
+ gtk_tree_model_get (model, &iter,
+ COL_PRESENCE, &presence,
+ -1);
+ }
+
+ return presence;
+}
+
+static void
+presence_chooser_dialog_status_changed_cb (GtkWidget *widget,
+ CustomMessageDialog *dialog)
+{
+ GtkListStore *store;
+ GtkTreeIter iter;
+ McPresence presence = LAST_MC_PRESENCE;
+ GList *messages, *l;
+
+ presence = presence_chooser_dialog_get_selected (dialog);
+
+ store = gtk_list_store_new (1, G_TYPE_STRING);
+ messages = empathy_status_presets_get (presence, -1);
+ for (l = messages; l; l = l->next) {
+ gtk_list_store_append (store, &iter);
+ gtk_list_store_set (store, &iter, 0, l->data, -1);
+ }
+
+ gtk_entry_set_text (GTK_ENTRY (dialog->entry_message),
+ messages ? messages->data : "");
+
+ g_list_free (messages);
+
+ gtk_combo_box_set_model (GTK_COMBO_BOX (dialog->comboboxentry_message),
+ GTK_TREE_MODEL (store));
+
+ g_object_unref (store);
+}
+
+static void
+presence_chooser_dialog_message_changed_cb (GtkWidget *widget,
+ CustomMessageDialog *dialog)
+{
+ McPresence presence;
+ GList *messages, *l;
+ const gchar *text;
+ gboolean found = FALSE;
+
+ presence = presence_chooser_dialog_get_selected (dialog);
+ text = gtk_entry_get_text (GTK_ENTRY (dialog->entry_message));
+
+ messages = empathy_status_presets_get (presence, -1);
+ for (l = messages; l; l = l->next) {
+ if (!tp_strdiff (text, l->data)) {
+ found = TRUE;
+ break;
+ }
+ }
+ g_list_free (messages);
+
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (dialog->checkbutton_save),
+ found);
+}
+
+static void
+presence_chooser_dialog_save_toggled_cb (GtkWidget *widget,
+ CustomMessageDialog *dialog)
+{
+ gboolean active;
+ McPresence state;
+ const gchar *text;
+
+ active = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (dialog->checkbutton_save));
+ state = presence_chooser_dialog_get_selected (dialog);
+ text = gtk_entry_get_text (GTK_ENTRY (dialog->entry_message));
+
+ if (active) {
+ empathy_status_presets_set_last (state, text);
+ } else {
+ empathy_status_presets_remove (state, text);
+ }
+}
+
+static void
+presence_chooser_dialog_setup (CustomMessageDialog *dialog)
+{
+ GtkListStore *store;
+ GtkCellRenderer *renderer;
+ GtkTreeIter iter;
+ guint i;
+
+ store = gtk_list_store_new (COL_COUNT,
+ G_TYPE_STRING, /* Icon name */
+ G_TYPE_STRING, /* Label */
+ MC_TYPE_PRESENCE); /* Presence */
+ gtk_combo_box_set_model (GTK_COMBO_BOX (dialog->combobox_status),
+ GTK_TREE_MODEL (store));
+
+ renderer = gtk_cell_renderer_pixbuf_new ();
+ gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (dialog->combobox_status), renderer, FALSE);
+ gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (dialog->combobox_status), renderer,
+ "icon-name", COL_ICON,
+ NULL);
+ g_object_set (renderer, "stock-size", GTK_ICON_SIZE_BUTTON, NULL);
+
+ renderer = gtk_cell_renderer_text_new ();
+ gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (dialog->combobox_status), renderer, TRUE);
+ gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (dialog->combobox_status), renderer,
+ "text", COL_LABEL,
+ NULL);
+
+ for (i = 0; i < G_N_ELEMENTS (states); i += 2) {
+ if (!states[i+1]) {
+ continue;
+ }
+
+ gtk_list_store_append (store, &iter);
+ gtk_list_store_set (store, &iter,
+ COL_ICON, empathy_icon_name_for_presence (states[i]),
+ COL_LABEL, empathy_presence_get_default_message (states[i]),
+ COL_PRESENCE, states[i],
+ -1);
+ }
+
+ gtk_combo_box_set_active (GTK_COMBO_BOX (dialog->combobox_status), 0);
+}
+
+static void
+presence_chooser_dialog_response_cb (GtkWidget *widget,
+ gint response,
+ CustomMessageDialog *dialog)
+{
+ if (response == GTK_RESPONSE_APPLY) {
+ McPresence state;
+ const gchar *text;
+
+ state = presence_chooser_dialog_get_selected (dialog);
+ text = gtk_entry_get_text (GTK_ENTRY (dialog->entry_message));
+
+ presence_chooser_set_state (state, text);
+ }
+
+ gtk_widget_destroy (widget);
+}
+
+static void
+presence_chooser_dialog_destroy_cb (GtkWidget *widget,
+ CustomMessageDialog *dialog)
+{
+
+ g_free (dialog);
+ message_dialog = NULL;
+}
+
+static void
+presence_chooser_dialog_show (void)
+{
+ GladeXML *glade;
+
+ if (message_dialog) {
+ gtk_window_present (GTK_WINDOW (message_dialog->dialog));
+ return;
+ }
+
+ message_dialog = g_new0 (CustomMessageDialog, 1);
+ glade = empathy_glade_get_file ("empathy-presence-chooser.glade",
+ "custom_message_dialog",
+ NULL,
+ "custom_message_dialog", &message_dialog->dialog,
+ "checkbutton_save", &message_dialog->checkbutton_save,
+ "comboboxentry_message", &message_dialog->comboboxentry_message,
+ "combobox_status", &message_dialog->combobox_status,
+ NULL);
+ empathy_glade_connect (glade,
+ message_dialog,
+ "custom_message_dialog", "destroy", presence_chooser_dialog_destroy_cb,
+ "custom_message_dialog", "response", presence_chooser_dialog_response_cb,
+ "combobox_status", "changed", presence_chooser_dialog_status_changed_cb,
+ "checkbutton_save", "toggled", presence_chooser_dialog_save_toggled_cb,
+ NULL);
+
+ g_object_unref (glade);
+
+ /* Setup the message combobox */
+ message_dialog->entry_message = GTK_BIN (message_dialog->comboboxentry_message)->child;
+ gtk_entry_set_activates_default (GTK_ENTRY (message_dialog->entry_message), TRUE);
+ gtk_entry_set_width_chars (GTK_ENTRY (message_dialog->entry_message), 25);
+ g_signal_connect (message_dialog->entry_message, "changed",
+ G_CALLBACK (presence_chooser_dialog_message_changed_cb),
+ message_dialog);
+
+ presence_chooser_dialog_setup (message_dialog);
+
+ gtk_combo_box_entry_set_text_column (GTK_COMBO_BOX_ENTRY (message_dialog->comboboxentry_message), 0);
+
+ /* FIXME: Set transian for a window ? */
+
+ gtk_widget_show_all (message_dialog->dialog);
+}
+
diff --git a/gnome-2-22/libempathy-gtk/empathy-presence-chooser.glade b/gnome-2-22/libempathy-gtk/empathy-presence-chooser.glade
new file mode 100644
index 000000000..a3a26a156
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-presence-chooser.glade
@@ -0,0 +1,200 @@
+<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
+<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
+
+<glade-interface>
+<requires lib="gnome"/>
+
+<widget class="GtkDialog" id="custom_message_dialog">
+ <property name="border_width">5</property>
+ <property name="visible">True</property>
+ <property name="title" translatable="yes">Custom message</property>
+ <property name="type">GTK_WINDOW_TOPLEVEL</property>
+ <property name="window_position">GTK_WIN_POS_NONE</property>
+ <property name="modal">False</property>
+ <property name="resizable">False</property>
+ <property name="destroy_with_parent">False</property>
+ <property name="decorated">True</property>
+ <property name="skip_taskbar_hint">False</property>
+ <property name="skip_pager_hint">False</property>
+ <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
+ <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+ <property name="focus_on_map">True</property>
+ <property name="urgency_hint">False</property>
+ <property name="has_separator">False</property>
+
+ <child internal-child="vbox">
+ <widget class="GtkVBox" id="dialog-vbox6">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+
+ <child internal-child="action_area">
+ <widget class="GtkHButtonBox" id="dialog-action_area6">
+ <property name="visible">True</property>
+ <property name="layout_style">GTK_BUTTONBOX_END</property>
+
+ <child>
+ <widget class="GtkButton" id="closebutton1">
+ <property name="visible">True</property>
+ <property name="can_default">True</property>
+ <property name="can_focus">True</property>
+ <property name="label">gtk-cancel</property>
+ <property name="use_stock">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="response_id">-6</property>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkButton" id="button1">
+ <property name="visible">True</property>
+ <property name="can_default">True</property>
+ <property name="can_focus">True</property>
+ <property name="label">gtk-apply</property>
+ <property name="use_stock">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="response_id">-10</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="pack_type">GTK_PACK_END</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkTable" id="table1">
+ <property name="border_width">5</property>
+ <property name="visible">True</property>
+ <property name="n_rows">3</property>
+ <property name="n_columns">2</property>
+ <property name="homogeneous">False</property>
+ <property name="row_spacing">6</property>
+ <property name="column_spacing">6</property>
+
+ <child>
+ <widget class="GtkLabel" id="label471">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Status:</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">0</property>
+ <property name="bottom_attach">1</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label472">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Message:</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkCheckButton" id="checkbutton_save">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Save message</property>
+ <property name="use_underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="active">False</property>
+ <property name="inconsistent">False</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkComboBoxEntry" id="comboboxentry_message">
+ <property name="visible">True</property>
+ <property name="add_tearoffs">False</property>
+ <property name="has_frame">True</property>
+ <property name="focus_on_click">True</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">fill</property>
+ <property name="y_options">fill</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkComboBox" id="combobox_status">
+ <property name="visible">True</property>
+ <property name="add_tearoffs">False</property>
+ <property name="focus_on_click">True</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">0</property>
+ <property name="bottom_attach">1</property>
+ <property name="x_options">fill</property>
+ <property name="y_options">fill</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+</widget>
+
+</glade-interface>
diff --git a/gnome-2-22/libempathy-gtk/empathy-presence-chooser.h b/gnome-2-22/libempathy-gtk/empathy-presence-chooser.h
new file mode 100644
index 000000000..a04458d83
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-presence-chooser.h
@@ -0,0 +1,57 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2005-2007 Imendio AB
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * 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: Richard Hult <richard@imendio.com>
+ * Martyn Russell <martyn@imendio.com>
+ * Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#ifndef __EMPATHY_PRESENCE_CHOOSER_H__
+#define __EMPATHY_PRESENCE_CHOOSER_H__
+
+#include <gtk/gtk.h>
+
+G_BEGIN_DECLS
+
+#define EMPATHY_TYPE_PRESENCE_CHOOSER (empathy_presence_chooser_get_type ())
+#define EMPATHY_PRESENCE_CHOOSER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), EMPATHY_TYPE_PRESENCE_CHOOSER, EmpathyPresenceChooser))
+#define EMPATHY_PRESENCE_CHOOSER_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), EMPATHY_TYPE_PRESENCE_CHOOSER, EmpathyPresenceChooserClass))
+#define EMPATHY_IS_PRESENCE_CHOOSER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), EMPATHY_TYPE_PRESENCE_CHOOSER))
+#define EMPATHY_IS_PRESENCE_CHOOSER_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), EMPATHY_TYPE_PRESENCE_CHOOSER))
+#define EMPATHY_PRESENCE_CHOOSER_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), EMPATHY_TYPE_PRESENCE_CHOOSER, EmpathyPresenceChooserClass))
+
+typedef struct _EmpathyPresenceChooser EmpathyPresenceChooser;
+typedef struct _EmpathyPresenceChooserClass EmpathyPresenceChooserClass;
+
+struct _EmpathyPresenceChooser {
+ GtkToggleButton parent;
+};
+
+struct _EmpathyPresenceChooserClass {
+ GtkToggleButtonClass parent_class;
+};
+
+GType empathy_presence_chooser_get_type (void) G_GNUC_CONST;
+GtkWidget *empathy_presence_chooser_new (void);
+GtkWidget *empathy_presence_chooser_create_menu (void);
+
+G_END_DECLS
+
+#endif /* __EMPATHY_PRESENCE_CHOOSER_H__ */
+
diff --git a/gnome-2-22/libempathy-gtk/empathy-private-chat.c b/gnome-2-22/libempathy-gtk/empathy-private-chat.c
new file mode 100644
index 000000000..4ee02e467
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-private-chat.c
@@ -0,0 +1,362 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2002-2007 Imendio AB
+ * Copyright (C) 2007-2008 Collabora Ltd.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * 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: Mikael Hallendal <micke@imendio.com>
+ * Richard Hult <richard@imendio.com>
+ * Martyn Russell <martyn@imendio.com>
+ * Geert-Jan Van den Bogaerde <geertjan@gnome.org>
+ * Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#include "config.h"
+
+#include <string.h>
+
+#include <gtk/gtk.h>
+#include <glade/glade.h>
+#include <glib/gi18n.h>
+
+#include <libmissioncontrol/mission-control.h>
+
+#include <libempathy/empathy-debug.h>
+#include <libempathy/empathy-tp-chat.h>
+#include <libempathy/empathy-tp-contact-list.h>
+#include <libempathy/empathy-contact-factory.h>
+#include <libempathy/empathy-utils.h>
+
+#include "empathy-private-chat.h"
+#include "empathy-chat-view.h"
+#include "empathy-chat.h"
+#include "empathy-preferences.h"
+//#include "empathy-sound.h"
+#include "empathy-images.h"
+#include "empathy-ui-utils.h"
+
+#define DEBUG_DOMAIN "PrivateChat"
+
+#define GET_PRIV(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), EMPATHY_TYPE_PRIVATE_CHAT, EmpathyPrivateChatPriv))
+
+struct _EmpathyPrivateChatPriv {
+ EmpathyContactFactory *factory;
+ EmpathyContact *contact;
+ gchar *name;
+ gboolean is_online;
+ GtkWidget *widget;
+ GtkWidget *text_view_sw;
+};
+
+static void empathy_private_chat_class_init (EmpathyPrivateChatClass *klass);
+static void empathy_private_chat_init (EmpathyPrivateChat *chat);
+static void private_chat_finalize (GObject *object);
+static void private_chat_create_ui (EmpathyPrivateChat *chat);
+static void private_chat_contact_presence_updated_cb (EmpathyContact *contact,
+ GParamSpec *param,
+ EmpathyPrivateChat *chat);
+static void private_chat_contact_updated_cb (EmpathyContact *contact,
+ GParamSpec *param,
+ EmpathyPrivateChat *chat);
+static void private_chat_widget_destroy_cb (GtkWidget *widget,
+ EmpathyPrivateChat *chat);
+static const gchar * private_chat_get_name (EmpathyChat *chat);
+static gchar * private_chat_get_tooltip (EmpathyChat *chat);
+static const gchar * private_chat_get_status_icon_name (EmpathyChat *chat);
+static GtkWidget * private_chat_get_widget (EmpathyChat *chat);
+
+G_DEFINE_TYPE (EmpathyPrivateChat, empathy_private_chat, EMPATHY_TYPE_CHAT);
+
+
+static GObject *
+private_chat_constructor (GType type,
+ guint n_props,
+ GObjectConstructParam *props)
+{
+ GObject *chat;
+ EmpathyPrivateChatPriv *priv;
+ EmpathyTpChat *tp_chat;
+ TpChan *tp_chan;
+ McAccount *account;
+
+ chat = G_OBJECT_CLASS (empathy_private_chat_parent_class)->constructor (type, n_props, props);
+
+ priv = GET_PRIV (chat);
+
+ g_object_get (chat, "tp-chat", &tp_chat, NULL);
+ tp_chan = empathy_tp_chat_get_channel (tp_chat);
+ account = empathy_tp_chat_get_account (tp_chat);
+
+ priv->factory = empathy_contact_factory_new ();
+ priv->contact = empathy_contact_factory_get_from_handle (priv->factory,
+ account,
+ tp_chan->handle);
+
+ priv->name = g_strdup (empathy_contact_get_name (priv->contact));
+
+ g_signal_connect (priv->contact,
+ "notify::name",
+ G_CALLBACK (private_chat_contact_updated_cb),
+ chat);
+ g_signal_connect (priv->contact,
+ "notify::presence",
+ G_CALLBACK (private_chat_contact_presence_updated_cb),
+ chat);
+
+ priv->is_online = empathy_contact_is_online (priv->contact);
+
+ g_object_unref (tp_chat);
+
+ return chat;
+}
+
+static void
+empathy_private_chat_class_init (EmpathyPrivateChatClass *klass)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+ EmpathyChatClass *chat_class = EMPATHY_CHAT_CLASS (klass);
+
+ object_class->finalize = private_chat_finalize;
+ object_class->constructor = private_chat_constructor;
+
+ chat_class->get_name = private_chat_get_name;
+ chat_class->get_tooltip = private_chat_get_tooltip;
+ chat_class->get_status_icon_name = private_chat_get_status_icon_name;
+ chat_class->get_widget = private_chat_get_widget;
+ chat_class->set_tp_chat = NULL;
+
+ g_type_class_add_private (object_class, sizeof (EmpathyPrivateChatPriv));
+}
+
+static void
+empathy_private_chat_init (EmpathyPrivateChat *chat)
+{
+ private_chat_create_ui (chat);
+}
+
+static void
+private_chat_finalize (GObject *object)
+{
+ EmpathyPrivateChat *chat;
+ EmpathyPrivateChatPriv *priv;
+
+ chat = EMPATHY_PRIVATE_CHAT (object);
+ priv = GET_PRIV (chat);
+
+ g_signal_handlers_disconnect_by_func (priv->contact,
+ private_chat_contact_updated_cb,
+ chat);
+ g_signal_handlers_disconnect_by_func (priv->contact,
+ private_chat_contact_presence_updated_cb,
+ chat);
+
+ if (priv->contact) {
+ g_object_unref (priv->contact);
+ }
+ if (priv->factory) {
+ g_object_unref (priv->factory);
+ }
+ g_free (priv->name);
+
+ G_OBJECT_CLASS (empathy_private_chat_parent_class)->finalize (object);
+}
+
+static void
+private_chat_create_ui (EmpathyPrivateChat *chat)
+{
+ GladeXML *glade;
+ EmpathyPrivateChatPriv *priv;
+ GtkWidget *input_text_view_sw;
+
+ priv = GET_PRIV (chat);
+
+ glade = empathy_glade_get_file ("empathy-chat.glade",
+ "chat_widget",
+ NULL,
+ "chat_widget", &priv->widget,
+ "chat_view_sw", &priv->text_view_sw,
+ "input_text_view_sw", &input_text_view_sw,
+ NULL);
+
+ empathy_glade_connect (glade,
+ chat,
+ "chat_widget", "destroy", private_chat_widget_destroy_cb,
+ NULL);
+
+ g_object_unref (glade);
+
+ g_object_set_data (G_OBJECT (priv->widget), "chat", g_object_ref (chat));
+
+ gtk_container_add (GTK_CONTAINER (priv->text_view_sw),
+ GTK_WIDGET (EMPATHY_CHAT (chat)->view));
+ gtk_widget_show (GTK_WIDGET (EMPATHY_CHAT (chat)->view));
+
+ gtk_container_add (GTK_CONTAINER (input_text_view_sw),
+ EMPATHY_CHAT (chat)->input_text_view);
+ gtk_widget_show (EMPATHY_CHAT (chat)->input_text_view);
+}
+
+static void
+private_chat_contact_presence_updated_cb (EmpathyContact *contact,
+ GParamSpec *param,
+ EmpathyPrivateChat *chat)
+{
+ EmpathyPrivateChatPriv *priv;
+
+ priv = GET_PRIV (chat);
+
+ empathy_debug (DEBUG_DOMAIN, "Presence update for contact: %s",
+ empathy_contact_get_id (contact));
+
+ if (!empathy_contact_is_online (contact)) {
+ if (priv->is_online && !EMPATHY_CHAT (chat)->block_events) {
+ gchar *msg;
+
+ msg = g_strdup_printf (_("%s went offline"),
+ empathy_contact_get_name (priv->contact));
+ empathy_chat_view_append_event (EMPATHY_CHAT (chat)->view, msg);
+ g_free (msg);
+ }
+
+ priv->is_online = FALSE;
+
+ g_signal_emit_by_name (chat, "composing", FALSE);
+
+ } else {
+ if (!priv->is_online && !EMPATHY_CHAT (chat)->block_events) {
+ gchar *msg;
+
+ msg = g_strdup_printf (_("%s has come online"),
+ empathy_contact_get_name (priv->contact));
+ empathy_chat_view_append_event (EMPATHY_CHAT (chat)->view, msg);
+ g_free (msg);
+ }
+
+ priv->is_online = TRUE;
+
+ /* If offline message is not supported by CM we need to
+ * request a new Text Channel. */
+ if (!empathy_chat_is_connected (EMPATHY_CHAT (chat))) {
+ empathy_chat_with_contact (contact);
+ }
+ }
+
+ g_signal_emit_by_name (chat, "status-changed");
+}
+
+static void
+private_chat_contact_updated_cb (EmpathyContact *contact,
+ GParamSpec *param,
+ EmpathyPrivateChat *chat)
+{
+ EmpathyPrivateChatPriv *priv;
+
+ priv = GET_PRIV (chat);
+
+ if (strcmp (priv->name, empathy_contact_get_name (contact)) != 0) {
+ g_free (priv->name);
+ priv->name = g_strdup (empathy_contact_get_name (contact));
+ g_signal_emit_by_name (chat, "name-changed", priv->name);
+ }
+}
+
+static void
+private_chat_widget_destroy_cb (GtkWidget *widget,
+ EmpathyPrivateChat *chat)
+{
+ empathy_debug (DEBUG_DOMAIN, "Destroyed");
+
+ g_object_unref (chat);
+}
+
+static const gchar *
+private_chat_get_name (EmpathyChat *chat)
+{
+ EmpathyPrivateChatPriv *priv;
+
+ g_return_val_if_fail (EMPATHY_IS_PRIVATE_CHAT (chat), NULL);
+
+ priv = GET_PRIV (chat);
+
+ return priv->name;
+}
+
+static gchar *
+private_chat_get_tooltip (EmpathyChat *chat)
+{
+ EmpathyPrivateChatPriv *priv;
+ const gchar *status;
+
+ g_return_val_if_fail (EMPATHY_IS_PRIVATE_CHAT (chat), NULL);
+
+ priv = GET_PRIV (chat);
+
+ status = empathy_contact_get_status (priv->contact);
+
+ return g_strdup_printf ("%s\n%s",
+ empathy_contact_get_id (priv->contact),
+ status);
+}
+
+static const gchar *
+private_chat_get_status_icon_name (EmpathyChat *chat)
+{
+ EmpathyPrivateChatPriv *priv;
+
+ g_return_val_if_fail (EMPATHY_IS_PRIVATE_CHAT (chat), NULL);
+
+ priv = GET_PRIV (chat);
+
+ return empathy_icon_name_for_contact (priv->contact);
+}
+
+EmpathyContact *
+empathy_private_chat_get_contact (EmpathyPrivateChat *chat)
+{
+ EmpathyPrivateChatPriv *priv;
+
+ g_return_val_if_fail (EMPATHY_IS_PRIVATE_CHAT (chat), NULL);
+
+ priv = GET_PRIV (chat);
+
+ return priv->contact;
+}
+
+static GtkWidget *
+private_chat_get_widget (EmpathyChat *chat)
+{
+ EmpathyPrivateChatPriv *priv;
+
+ priv = GET_PRIV (chat);
+
+ return priv->widget;
+}
+
+EmpathyPrivateChat *
+empathy_private_chat_new (EmpathyTpChat *tp_chat)
+{
+ EmpathyPrivateChat *chat;
+
+ g_return_val_if_fail (EMPATHY_IS_TP_CHAT (tp_chat), NULL);
+
+ chat = g_object_new (EMPATHY_TYPE_PRIVATE_CHAT,
+ "tp-chat", tp_chat,
+ NULL);
+
+ return chat;
+}
+
diff --git a/gnome-2-22/libempathy-gtk/empathy-private-chat.h b/gnome-2-22/libempathy-gtk/empathy-private-chat.h
new file mode 100644
index 000000000..169809bb0
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-private-chat.h
@@ -0,0 +1,63 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2002-2007 Imendio AB
+ * Copyright (C) 2007 Collabora Ltd.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * 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: Mikael Hallendal <micke@imendio.com>
+ * Richard Hult <richard@imendio.com>
+ * Martyn Russell <martyn@imendio.com>
+ * Geert-Jan Van den Bogaerde <geertjan@gnome.org>
+ * Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#ifndef __EMPATHY_PRIVATE_CHAT_H__
+#define __EMPATHY_PRIVATE_CHAT_H__
+
+#include <libempathy/empathy-tp-chat.h>
+#include <libempathy/empathy-contact.h>
+
+G_BEGIN_DECLS
+
+#define EMPATHY_TYPE_PRIVATE_CHAT (empathy_private_chat_get_type ())
+#define EMPATHY_PRIVATE_CHAT(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), EMPATHY_TYPE_PRIVATE_CHAT, EmpathyPrivateChat))
+#define EMPATHY_PRIVATE_CHAT_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), EMPATHY_TYPE_PRIVATE_CHAT, EmpathyPrivateChatClass))
+#define EMPATHY_IS_PRIVATE_CHAT(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), EMPATHY_TYPE_PRIVATE_CHAT))
+#define EMPATHY_IS_PRIVATE_CHAT_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), EMPATHY_TYPE_PRIVATE_CHAT))
+#define EMPATHY_PRIVATE_CHAT_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), EMPATHY_TYPE_PRIVATE_CHAT, EmpathyPrivateChatClass))
+
+typedef struct _EmpathyPrivateChat EmpathyPrivateChat;
+typedef struct _EmpathyPrivateChatClass EmpathyPrivateChatClass;
+typedef struct _EmpathyPrivateChatPriv EmpathyPrivateChatPriv;
+
+#include "empathy-chat.h"
+
+struct _EmpathyPrivateChat {
+ EmpathyChat parent;
+};
+
+struct _EmpathyPrivateChatClass {
+ EmpathyChatClass parent;
+};
+
+GType empathy_private_chat_get_type (void);
+EmpathyPrivateChat * empathy_private_chat_new (EmpathyTpChat *tp_chat);
+EmpathyContact * empathy_private_chat_get_contact (EmpathyPrivateChat *chat);
+
+G_END_DECLS
+
+#endif /* __EMPATHY_PRIVATE_CHAT_H__ */
diff --git a/gnome-2-22/libempathy-gtk/empathy-profile-chooser.c b/gnome-2-22/libempathy-gtk/empathy-profile-chooser.c
new file mode 100644
index 000000000..6c46b6cc5
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-profile-chooser.c
@@ -0,0 +1,190 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2007-2008 Collabora Ltd.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Authors: Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#include <config.h>
+
+#include <string.h>
+
+#include <gtk/gtk.h>
+#include <libmissioncontrol/mc-profile.h>
+#include <libmissioncontrol/mc-protocol.h>
+
+#include "empathy-profile-chooser.h"
+#include "empathy-ui-utils.h"
+
+enum {
+ COL_ICON,
+ COL_LABEL,
+ COL_PROFILE,
+ COL_COUNT
+};
+
+McProfile*
+empathy_profile_chooser_get_selected (GtkWidget *widget)
+{
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+ McProfile *profile = NULL;
+
+ model = gtk_combo_box_get_model (GTK_COMBO_BOX (widget));
+ if (gtk_combo_box_get_active_iter (GTK_COMBO_BOX (widget), &iter)) {
+ gtk_tree_model_get (model, &iter,
+ COL_PROFILE, &profile,
+ -1);
+ }
+
+ return profile;
+}
+
+gint
+empathy_profile_chooser_n_profiles (GtkWidget *widget)
+{
+ GtkTreeModel *model;
+
+ model = gtk_combo_box_get_model (GTK_COMBO_BOX (widget));
+
+ return gtk_tree_model_iter_n_children (model, NULL);
+}
+
+static gint
+profile_chooser_sort_profile_value (McProfile *profile)
+{
+ guint i;
+ const gchar *profile_name;
+ const gchar *names[] = {"jabber",
+ "salut",
+ "gtalk",
+ NULL};
+
+ profile_name = mc_profile_get_unique_name (profile);
+
+ for (i = 0 ; names[i]; i++) {
+ if (strcmp (profile_name, names[i]) == 0) {
+ return i;
+ }
+ }
+
+ return i;
+}
+
+static gint
+profile_chooser_sort_func (GtkTreeModel *model,
+ GtkTreeIter *iter_a,
+ GtkTreeIter *iter_b,
+ gpointer user_data)
+{
+ McProfile *profile_a;
+ McProfile *profile_b;
+ gint cmp;
+
+ gtk_tree_model_get (model, iter_a,
+ COL_PROFILE, &profile_a,
+ -1);
+ gtk_tree_model_get (model, iter_b,
+ COL_PROFILE, &profile_b,
+ -1);
+
+ cmp = profile_chooser_sort_profile_value (profile_a);
+ cmp -= profile_chooser_sort_profile_value (profile_b);
+ if (cmp == 0) {
+ cmp = strcmp (mc_profile_get_display_name (profile_a),
+ mc_profile_get_display_name (profile_b));
+ }
+
+ g_object_unref (profile_a);
+ g_object_unref (profile_b);
+
+ return cmp;
+}
+
+GtkWidget *
+empathy_profile_chooser_new (void)
+{
+ GList *profiles, *l;
+ GtkListStore *store;
+ GtkCellRenderer *renderer;
+ GtkWidget *combo_box;
+ GtkTreeIter iter;
+ gboolean iter_set = FALSE;
+
+ /* set up combo box with new store */
+ store = gtk_list_store_new (COL_COUNT,
+ G_TYPE_STRING, /* Icon name */
+ G_TYPE_STRING, /* Label */
+ MC_TYPE_PROFILE); /* Profile */
+ combo_box = gtk_combo_box_new_with_model (GTK_TREE_MODEL (store));
+
+
+ renderer = gtk_cell_renderer_pixbuf_new ();
+ gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combo_box), renderer, FALSE);
+ gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combo_box), renderer,
+ "icon-name", COL_ICON,
+ NULL);
+ g_object_set (renderer, "stock-size", GTK_ICON_SIZE_BUTTON, NULL);
+
+ renderer = gtk_cell_renderer_text_new ();
+ gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combo_box), renderer, TRUE);
+ gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combo_box), renderer,
+ "text", COL_LABEL,
+ NULL);
+
+ profiles = mc_profiles_list ();
+ for (l = profiles; l; l = l->next) {
+ McProfile *profile;
+ McProtocol *protocol;
+
+ profile = l->data;
+
+ /* Check if the CM is installed, otherwise skip that profile.
+ * Workaround SF bug #1688779 */
+ protocol = mc_profile_get_protocol (profile);
+ if (!protocol) {
+ continue;
+ }
+ g_object_unref (protocol);
+
+ gtk_list_store_insert_with_values (store, &iter, 0,
+ COL_ICON, mc_profile_get_icon_name (profile),
+ COL_LABEL, mc_profile_get_display_name (profile),
+ COL_PROFILE, profile,
+ -1);
+ iter_set = TRUE;
+ }
+
+ /* Set the profile sort function */
+ gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (store),
+ COL_PROFILE,
+ profile_chooser_sort_func,
+ NULL, NULL);
+ gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (store),
+ COL_PROFILE,
+ GTK_SORT_ASCENDING);
+
+ if (iter_set) {
+ gtk_combo_box_set_active_iter (GTK_COMBO_BOX (combo_box), &iter);
+ }
+
+ mc_profiles_free_list (profiles);
+ g_object_unref (store);
+
+ return combo_box;
+}
+
diff --git a/gnome-2-22/libempathy-gtk/empathy-profile-chooser.h b/gnome-2-22/libempathy-gtk/empathy-profile-chooser.h
new file mode 100644
index 000000000..2cd74e351
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-profile-chooser.h
@@ -0,0 +1,34 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2007 Collabora Ltd.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Authors: Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#ifndef __EMPATHY_PROTOCOL_CHOOSER_H__
+#define __EMPATHY_PROTOCOL_CHOOSER_H__
+
+#include <libmissioncontrol/mc-profile.h>
+
+G_BEGIN_DECLS
+
+GtkWidget * empathy_profile_chooser_new (void);
+McProfile * empathy_profile_chooser_get_selected (GtkWidget *widget);
+gint empathy_profile_chooser_n_profiles (GtkWidget *widget);
+
+G_END_DECLS
+#endif /* __EMPATHY_PROTOCOL_CHOOSER_H__ */
diff --git a/gnome-2-22/libempathy-gtk/empathy-smiley-manager.c b/gnome-2-22/libempathy-gtk/empathy-smiley-manager.c
new file mode 100644
index 000000000..d32570bb3
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-smiley-manager.c
@@ -0,0 +1,353 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2007-2008 Collabora Ltd.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Authors: Dafydd Harrie <dafydd.harries@collabora.co.uk>
+ * Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#include <config.h>
+
+#include <string.h>
+
+#include <libempathy/empathy-debug.h>
+
+#include "empathy-smiley-manager.h"
+#include "empathy-ui-utils.h"
+
+#define GET_PRIV(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), \
+ EMPATHY_TYPE_SMILEY_MANAGER, EmpathySmileyManagerPriv))
+
+#define DEBUG_DOMAIN "SmileyManager"
+
+typedef struct {
+ gunichar c;
+ GdkPixbuf *pixbuf;
+ GSList *childrens;
+} SmileyManagerTree;
+
+struct _EmpathySmileyManagerPriv {
+ SmileyManagerTree *tree;
+ GSList *smileys;
+};
+
+static void empathy_smiley_manager_class_init (EmpathySmileyManagerClass *klass);
+static void empathy_smiley_manager_init (EmpathySmileyManager *manager);
+
+G_DEFINE_TYPE (EmpathySmileyManager, empathy_smiley_manager, G_TYPE_OBJECT);
+
+static SmileyManagerTree *
+smiley_manager_tree_new (gunichar c)
+{
+ SmileyManagerTree *tree;
+
+ tree = g_slice_new0 (SmileyManagerTree);
+ tree->c = c;
+ tree->pixbuf = NULL;
+ tree->childrens = NULL;
+
+ return tree;
+}
+
+static void
+smiley_manager_tree_free (SmileyManagerTree *tree)
+{
+ GSList *l;
+
+ if (!tree) {
+ return;
+ }
+
+ for (l = tree->childrens; l; l = l->next) {
+ smiley_manager_tree_free (l->data);
+ }
+
+ if (tree->pixbuf) {
+ g_object_unref (tree->pixbuf);
+ }
+ g_slist_free (tree->childrens);
+ g_slice_free (SmileyManagerTree, tree);
+}
+
+static EmpathySmiley *
+smiley_new (GdkPixbuf *pixbuf, const gchar *str)
+{
+ EmpathySmiley *smiley;
+
+ smiley = g_slice_new0 (EmpathySmiley);
+ if (pixbuf) {
+ smiley->pixbuf = g_object_ref (pixbuf);
+ }
+ smiley->str = g_strdup (str);
+
+ return smiley;
+}
+
+void
+empathy_smiley_free (EmpathySmiley *smiley)
+{
+ if (!smiley) {
+ return;
+ }
+
+ if (smiley->pixbuf) {
+ g_object_unref (smiley->pixbuf);
+ }
+ g_free (smiley->str);
+ g_slice_free (EmpathySmiley, smiley);
+}
+
+static void
+smiley_manager_finalize (GObject *object)
+{
+ EmpathySmileyManagerPriv *priv = GET_PRIV (object);
+
+ smiley_manager_tree_free (priv->tree);
+ g_slist_foreach (priv->smileys, (GFunc) empathy_smiley_free, NULL);
+ g_slist_free (priv->smileys);
+}
+
+static void
+empathy_smiley_manager_class_init (EmpathySmileyManagerClass *klass)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+ object_class->finalize = smiley_manager_finalize;
+
+ g_type_class_add_private (object_class, sizeof (EmpathySmileyManagerPriv));
+}
+
+static void
+empathy_smiley_manager_init (EmpathySmileyManager *manager)
+{
+ EmpathySmileyManagerPriv *priv = GET_PRIV (manager);
+
+ priv->tree = smiley_manager_tree_new ('\0');
+ priv->smileys = NULL;
+}
+
+EmpathySmileyManager *
+empathy_smiley_manager_new (void)
+{
+ static EmpathySmileyManager *manager = NULL;
+
+ if (!manager) {
+ manager = g_object_new (EMPATHY_TYPE_SMILEY_MANAGER, NULL);
+ g_object_add_weak_pointer (G_OBJECT (manager), (gpointer) &manager);
+ empathy_smiley_manager_load (manager);
+ } else {
+ g_object_ref (manager);
+ }
+
+ return manager;
+}
+
+static SmileyManagerTree *
+smiley_manager_tree_find_child (SmileyManagerTree *tree, gunichar c)
+{
+ GSList *l;
+
+ for (l = tree->childrens; l; l = l->next) {
+ SmileyManagerTree *child = l->data;
+
+ if (child->c == c) {
+ return child;
+ }
+ }
+
+ return NULL;
+}
+
+static SmileyManagerTree *
+smiley_manager_tree_find_or_insert_child (SmileyManagerTree *tree, gunichar c)
+{
+ SmileyManagerTree *child;
+
+ child = smiley_manager_tree_find_child (tree, c);
+
+ if (!child) {
+ child = smiley_manager_tree_new (c);
+ tree->childrens = g_slist_prepend (tree->childrens, child);
+ }
+
+ return child;
+}
+
+static void
+smiley_manager_tree_insert (SmileyManagerTree *tree,
+ GdkPixbuf *smiley,
+ const gchar *str)
+{
+ SmileyManagerTree *child;
+
+ child = smiley_manager_tree_find_or_insert_child (tree, g_utf8_get_char (str));
+
+ str = g_utf8_next_char (str);
+ if (*str) {
+ smiley_manager_tree_insert (child, smiley, str);
+ return;
+ }
+
+ child->pixbuf = g_object_ref (smiley);
+}
+
+static void
+smiley_manager_add_valist (EmpathySmileyManager *manager,
+ GdkPixbuf *smiley,
+ const gchar *first_str,
+ va_list var_args)
+{
+ EmpathySmileyManagerPriv *priv = GET_PRIV (manager);
+ const gchar *str;
+
+ for (str = first_str; str; str = va_arg (var_args, gchar*)) {
+ smiley_manager_tree_insert (priv->tree, smiley, str);
+ }
+
+ priv->smileys = g_slist_prepend (priv->smileys, smiley_new (smiley, first_str));
+}
+
+void
+empathy_smiley_manager_add (EmpathySmileyManager *manager,
+ const gchar *icon_name,
+ const gchar *first_str,
+ ...)
+{
+ GdkPixbuf *smiley;
+ va_list var_args;
+
+ g_return_if_fail (EMPATHY_IS_SMILEY_MANAGER (manager));
+ g_return_if_fail (!G_STR_EMPTY (icon_name));
+ g_return_if_fail (!G_STR_EMPTY (first_str));
+
+ smiley = empathy_pixbuf_from_icon_name (icon_name, GTK_ICON_SIZE_MENU);
+ if (smiley) {
+ va_start (var_args, first_str);
+ smiley_manager_add_valist (manager, smiley, first_str, var_args);
+ va_end (var_args);
+ g_object_unref (smiley);
+ }
+}
+
+void
+empathy_smiley_manager_add_from_pixbuf (EmpathySmileyManager *manager,
+ GdkPixbuf *smiley,
+ const gchar *first_str,
+ ...)
+{
+ va_list var_args;
+
+ g_return_if_fail (EMPATHY_IS_SMILEY_MANAGER (manager));
+ g_return_if_fail (GDK_IS_PIXBUF (smiley));
+ g_return_if_fail (!G_STR_EMPTY (first_str));
+
+ va_start (var_args, first_str);
+ smiley_manager_add_valist (manager, smiley, first_str, var_args);
+ va_end (var_args);
+}
+
+void
+empathy_smiley_manager_load (EmpathySmileyManager *manager)
+{
+ g_return_if_fail (EMPATHY_IS_SMILEY_MANAGER (manager));
+
+ /* From fd.o icon-naming spec */
+ empathy_smiley_manager_add (manager, "face-angel", "O:-)", "O:)", NULL);
+ empathy_smiley_manager_add (manager, "face-cool", "B-)", "B)", NULL);
+ empathy_smiley_manager_add (manager, "face-crying", ":'(", NULL);
+ empathy_smiley_manager_add (manager, "face-devilish", ">:-)", ">:)", NULL);
+ empathy_smiley_manager_add (manager, "face-embarrassed",":-[", ":[", ":-$", ":$", NULL);
+ empathy_smiley_manager_add (manager, "face-kiss", ":-*", ":*", NULL);
+ empathy_smiley_manager_add (manager, "face-monkey", ":-(|)", ":(|)", NULL);
+ empathy_smiley_manager_add (manager, "face-plain", ":-|", ":|", NULL);
+ empathy_smiley_manager_add (manager, "face-raspberry", ":-P", ":P", ":-p", ":p", NULL);
+ empathy_smiley_manager_add (manager, "face-sad", ":-(", ":(", NULL);
+ empathy_smiley_manager_add (manager, "face-smile", ":-)", ":)", NULL);
+ empathy_smiley_manager_add (manager, "face-smile-big", ":-D", ":D", ":-d", ":d", NULL);
+ empathy_smiley_manager_add (manager, "face-smirk", ":-!", ":!", NULL);
+ empathy_smiley_manager_add (manager, "face-surprise", ":-O", ":O", NULL);
+ empathy_smiley_manager_add (manager, "face-wink", ";-)", ";)", NULL);
+}
+
+GSList *
+empathy_smiley_manager_parse (EmpathySmileyManager *manager,
+ const gchar *text)
+{
+ EmpathySmileyManagerPriv *priv = GET_PRIV (manager);
+ EmpathySmiley *smiley;
+ SmileyManagerTree *cur_tree = priv->tree;
+ const gchar *t;
+ const gchar *cur_str = text;
+ GSList *smileys = NULL;
+
+ g_return_val_if_fail (EMPATHY_IS_SMILEY_MANAGER (manager), NULL);
+ g_return_val_if_fail (text != NULL, NULL);
+
+ for (t = text; *t; t = g_utf8_next_char (t)) {
+ SmileyManagerTree *child;
+ gunichar c;
+
+ c = g_utf8_get_char (t);
+ child = smiley_manager_tree_find_child (cur_tree, c);
+
+ if (cur_tree == priv->tree) {
+ if (child) {
+ if (t > cur_str) {
+ smiley = smiley_new (NULL, g_strndup (cur_str, t - cur_str));
+ smileys = g_slist_prepend (smileys, smiley);
+ }
+ cur_str = t;
+ cur_tree = child;
+ }
+
+ continue;
+ }
+
+ if (child) {
+ cur_tree = child;
+ continue;
+ }
+
+ smiley = smiley_new (cur_tree->pixbuf, g_strndup (cur_str, t - cur_str));
+ smileys = g_slist_prepend (smileys, smiley);
+ if (cur_tree->pixbuf) {
+ cur_str = t;
+ cur_tree = smiley_manager_tree_find_child (priv->tree, c);
+
+ if (!cur_tree) {
+ cur_tree = priv->tree;
+ }
+ } else {
+ cur_str = t;
+ cur_tree = priv->tree;
+ }
+ }
+
+ smiley = smiley_new (cur_tree->pixbuf, g_strndup (cur_str, t - cur_str));
+ smileys = g_slist_prepend (smileys, smiley);
+
+ return g_slist_reverse (smileys);
+}
+
+GSList *
+empathy_smiley_manager_get_all (EmpathySmileyManager *manager)
+{
+ EmpathySmileyManagerPriv *priv = GET_PRIV (manager);
+
+ return priv->smileys;
+}
+
diff --git a/gnome-2-22/libempathy-gtk/empathy-smiley-manager.h b/gnome-2-22/libempathy-gtk/empathy-smiley-manager.h
new file mode 100644
index 000000000..19604f108
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-smiley-manager.h
@@ -0,0 +1,74 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2007 Collabora Ltd.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Authors: Dafydd Harrie <dafydd.harries@collabora.co.uk>
+ * Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#ifndef __EMPATHY_SMILEY_MANAGER__H__
+#define __EMPATHY_SMILEY_MANAGER_H__
+
+#include <glib-object.h>
+#include <gtk/gtk.h>
+
+G_BEGIN_DECLS
+
+#define EMPATHY_TYPE_SMILEY_MANAGER (empathy_smiley_manager_get_type ())
+#define EMPATHY_SMILEY_MANAGER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), EMPATHY_TYPE_SMILEY_MANAGER, EmpathySmileyManager))
+#define EMPATHY_SMILEY_MANAGER_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), EMPATHY_TYPE_SMILEY_MANAGER, EmpathySmileyManagerClass))
+#define EMPATHY_IS_SMILEY_MANAGER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), EMPATHY_TYPE_SMILEY_MANAGER))
+#define EMPATHY_IS_SMILEY_MANAGER_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), EMPATHY_TYPE_SMILEY_MANAGER))
+#define EMPATHY_SMILEY_MANAGER_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), EMPATHY_TYPE_SMILEY_MANAGER, EmpathySmileyManagerClass))
+
+typedef struct _EmpathySmileyManager EmpathySmileyManager;
+typedef struct _EmpathySmileyManagerClass EmpathySmileyManagerClass;
+typedef struct _EmpathySmileyManagerPriv EmpathySmileyManagerPriv;
+
+struct _EmpathySmileyManager {
+ GObject parent;
+};
+
+struct _EmpathySmileyManagerClass {
+ GObjectClass parent_class;
+};
+
+typedef struct {
+ GdkPixbuf *pixbuf;
+ gchar *str;
+} EmpathySmiley;
+
+GType empathy_smiley_manager_get_type (void) G_GNUC_CONST;
+EmpathySmileyManager *empathy_smiley_manager_new (void);
+void empathy_smiley_manager_load (EmpathySmileyManager *manager);
+void empathy_smiley_manager_add (EmpathySmileyManager *manager,
+ const gchar *icon_name,
+ const gchar *first_str,
+ ...);
+void empathy_smiley_manager_add_from_pixbuf (EmpathySmileyManager *manager,
+ GdkPixbuf *smiley,
+ const gchar *first_str,
+ ...);
+GSList * empathy_smiley_manager_get_all (EmpathySmileyManager *manager);
+GSList * empathy_smiley_manager_parse (EmpathySmileyManager *manager,
+ const gchar *text);
+void empathy_smiley_free (EmpathySmiley *smiley);
+
+G_END_DECLS
+
+#endif /* __EMPATHY_SMILEY_MANAGER_H__ */
+
diff --git a/gnome-2-22/libempathy-gtk/empathy-spell-dialog.c b/gnome-2-22/libempathy-gtk/empathy-spell-dialog.c
new file mode 100644
index 000000000..7f4d75a13
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-spell-dialog.c
@@ -0,0 +1,267 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2004-2007 Imendio AB
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * 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 <glib/gi18n.h>
+#include <gtk/gtkcellrenderertext.h>
+#include <gtk/gtkdialog.h>
+#include <gtk/gtklabel.h>
+#include <gtk/gtkliststore.h>
+#include <gtk/gtktreeview.h>
+#include <gtk/gtktreeselection.h>
+#include <gtk/gtksizegroup.h>
+#include <glade/glade.h>
+
+#include "empathy-chat.h"
+#include "empathy-spell-dialog.h"
+#include "empathy-ui-utils.h"
+
+typedef struct {
+ GtkWidget *window;
+ GtkWidget *button_replace;
+ GtkWidget *label_word;
+ GtkWidget *treeview_words;
+
+ EmpathyChat *chat;
+
+ gchar *word;
+ GtkTextIter start;
+ GtkTextIter end;
+} EmpathySpellDialog;
+
+enum {
+ COL_SPELL_WORD,
+ COL_SPELL_COUNT
+};
+
+static void spell_dialog_model_populate_columns (EmpathySpellDialog *dialog);
+static void spell_dialog_model_populate_suggestions (EmpathySpellDialog *dialog);
+static void spell_dialog_model_row_activated_cb (GtkTreeView *tree_view,
+ GtkTreePath *path,
+ GtkTreeViewColumn *column,
+ EmpathySpellDialog *dialog);
+static void spell_dialog_model_selection_changed_cb (GtkTreeSelection *treeselection,
+ EmpathySpellDialog *dialog);
+static void spell_dialog_model_setup (EmpathySpellDialog *dialog);
+static void spell_dialog_response_cb (GtkWidget *widget,
+ gint response,
+ EmpathySpellDialog *dialog);
+static void spell_dialog_destroy_cb (GtkWidget *widget,
+ EmpathySpellDialog *dialog);
+
+static void
+spell_dialog_model_populate_columns (EmpathySpellDialog *dialog)
+{
+ GtkTreeModel *model;
+ GtkTreeViewColumn *column;
+ GtkCellRenderer *renderer;
+ guint col_offset;
+
+ model = gtk_tree_view_get_model (GTK_TREE_VIEW (dialog->treeview_words));
+
+ renderer = gtk_cell_renderer_text_new ();
+ col_offset = gtk_tree_view_insert_column_with_attributes (
+ GTK_TREE_VIEW (dialog->treeview_words),
+ -1, _("Word"),
+ renderer,
+ "text", COL_SPELL_WORD,
+ NULL);
+
+ g_object_set_data (G_OBJECT (renderer),
+ "column", GINT_TO_POINTER (COL_SPELL_WORD));
+
+ column = gtk_tree_view_get_column (GTK_TREE_VIEW (dialog->treeview_words), col_offset - 1);
+ gtk_tree_view_column_set_sort_column_id (column, COL_SPELL_WORD);
+ gtk_tree_view_column_set_resizable (column, FALSE);
+ gtk_tree_view_column_set_clickable (GTK_TREE_VIEW_COLUMN (column), TRUE);
+}
+
+static void
+spell_dialog_model_populate_suggestions (EmpathySpellDialog *dialog)
+{
+ GtkTreeModel *model;
+ GtkListStore *store;
+ GList *suggestions, *l;
+
+ model = gtk_tree_view_get_model (GTK_TREE_VIEW (dialog->treeview_words));
+ store = GTK_LIST_STORE (model);
+
+ suggestions = empathy_spell_get_suggestions (dialog->word);
+ for (l = suggestions; l; l=l->next) {
+ GtkTreeIter iter;
+ gchar *word;
+
+ word = l->data;
+
+ gtk_list_store_append (store, &iter);
+ gtk_list_store_set (store, &iter,
+ COL_SPELL_WORD, word,
+ -1);
+ }
+
+ empathy_spell_free_suggestions (suggestions);
+}
+
+static void
+spell_dialog_model_row_activated_cb (GtkTreeView *tree_view,
+ GtkTreePath *path,
+ GtkTreeViewColumn *column,
+ EmpathySpellDialog *dialog)
+{
+ spell_dialog_response_cb (dialog->window, GTK_RESPONSE_OK, dialog);
+}
+
+static void
+spell_dialog_model_selection_changed_cb (GtkTreeSelection *treeselection,
+ EmpathySpellDialog *dialog)
+{
+ gint count;
+
+ count = gtk_tree_selection_count_selected_rows (treeselection);
+ gtk_widget_set_sensitive (dialog->button_replace, (count == 1));
+}
+
+static void
+spell_dialog_model_setup (EmpathySpellDialog *dialog)
+{
+ GtkTreeView *view;
+ GtkListStore *store;
+ GtkTreeSelection *selection;
+
+ view = GTK_TREE_VIEW (dialog->treeview_words);
+
+ g_signal_connect (view, "row-activated",
+ G_CALLBACK (spell_dialog_model_row_activated_cb),
+ dialog);
+
+ store = gtk_list_store_new (COL_SPELL_COUNT,
+ G_TYPE_STRING); /* word */
+
+ gtk_tree_view_set_model (view, GTK_TREE_MODEL (store));
+
+ selection = gtk_tree_view_get_selection (view);
+ gtk_tree_selection_set_mode (selection, GTK_SELECTION_SINGLE);
+
+ g_signal_connect (selection, "changed",
+ G_CALLBACK (spell_dialog_model_selection_changed_cb),
+ dialog);
+
+ spell_dialog_model_populate_columns (dialog);
+ spell_dialog_model_populate_suggestions (dialog);
+
+ g_object_unref (store);
+}
+
+static void
+spell_dialog_destroy_cb (GtkWidget *widget,
+ EmpathySpellDialog *dialog)
+{
+ g_object_unref (dialog->chat);
+ g_free (dialog->word);
+
+ g_free (dialog);
+}
+
+static void
+spell_dialog_response_cb (GtkWidget *widget,
+ gint response,
+ EmpathySpellDialog *dialog)
+{
+ if (response == GTK_RESPONSE_OK) {
+ GtkTreeView *view;
+ GtkTreeModel *model;
+ GtkTreeSelection *selection;
+ GtkTreeIter iter;
+
+ gchar *new_word;
+
+ view = GTK_TREE_VIEW (dialog->treeview_words);
+ selection = gtk_tree_view_get_selection (view);
+
+ if (!gtk_tree_selection_get_selected (selection, &model, &iter)) {
+ return;
+ }
+
+ gtk_tree_model_get (model, &iter, COL_SPELL_WORD, &new_word, -1);
+
+ empathy_chat_correct_word (dialog->chat,
+ dialog->start,
+ dialog->end,
+ new_word);
+
+ g_free (new_word);
+ }
+
+ gtk_widget_destroy (dialog->window);
+}
+
+void
+empathy_spell_dialog_show (EmpathyChat *chat,
+ GtkTextIter start,
+ GtkTextIter end,
+ const gchar *word)
+{
+ EmpathySpellDialog *dialog;
+ GladeXML *gui;
+ gchar *str;
+
+ g_return_if_fail (chat != NULL);
+ g_return_if_fail (word != NULL);
+
+ dialog = g_new0 (EmpathySpellDialog, 1);
+
+ dialog->chat = g_object_ref (chat);
+
+ dialog->word = g_strdup (word);
+
+ dialog->start = start;
+ dialog->end = end;
+
+ gui = empathy_glade_get_file ("empathy-spell-dialog.glade",
+ "spell_dialog",
+ NULL,
+ "spell_dialog", &dialog->window,
+ "button_replace", &dialog->button_replace,
+ "label_word", &dialog->label_word,
+ "treeview_words", &dialog->treeview_words,
+ NULL);
+
+ empathy_glade_connect (gui,
+ dialog,
+ "spell_dialog", "response", spell_dialog_response_cb,
+ "spell_dialog", "destroy", spell_dialog_destroy_cb,
+ NULL);
+
+ g_object_unref (gui);
+
+ str = g_strdup_printf ("%s:\n<b>%s</b>",
+ _("Suggestions for the word"),
+ word);
+
+ gtk_label_set_markup (GTK_LABEL (dialog->label_word), str);
+ g_free (str);
+
+ spell_dialog_model_setup (dialog);
+
+ gtk_widget_show (dialog->window);
+}
diff --git a/gnome-2-22/libempathy-gtk/empathy-spell-dialog.glade b/gnome-2-22/libempathy-gtk/empathy-spell-dialog.glade
new file mode 100644
index 000000000..502fb0d13
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-spell-dialog.glade
@@ -0,0 +1,205 @@
+<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
+<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
+
+<glade-interface>
+
+<widget class="GtkDialog" id="spell_dialog">
+ <property name="border_width">5</property>
+ <property name="title" translatable="yes">Spell Checker</property>
+ <property name="type">GTK_WINDOW_TOPLEVEL</property>
+ <property name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property>
+ <property name="modal">True</property>
+ <property name="default_width">275</property>
+ <property name="default_height">225</property>
+ <property name="resizable">True</property>
+ <property name="destroy_with_parent">False</property>
+ <property name="decorated">True</property>
+ <property name="skip_taskbar_hint">False</property>
+ <property name="skip_pager_hint">False</property>
+ <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
+ <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+ <property name="focus_on_map">True</property>
+ <property name="urgency_hint">False</property>
+ <property name="has_separator">False</property>
+
+ <child internal-child="vbox">
+ <widget class="GtkVBox" id="dialog-vbox7">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">2</property>
+
+ <child internal-child="action_area">
+ <widget class="GtkHButtonBox" id="dialog-action_area7">
+ <property name="visible">True</property>
+ <property name="layout_style">GTK_BUTTONBOX_END</property>
+
+ <child>
+ <widget class="GtkButton" id="button_cancel">
+ <property name="visible">True</property>
+ <property name="can_default">True</property>
+ <property name="can_focus">True</property>
+ <property name="label">gtk-cancel</property>
+ <property name="use_stock">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="response_id">-6</property>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkButton" id="button_replace">
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_default">True</property>
+ <property name="can_focus">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="response_id">-5</property>
+
+ <child>
+ <widget class="GtkAlignment" id="alignment6">
+ <property name="visible">True</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xscale">0</property>
+ <property name="yscale">0</property>
+ <property name="top_padding">0</property>
+ <property name="bottom_padding">0</property>
+ <property name="left_padding">0</property>
+ <property name="right_padding">0</property>
+
+ <child>
+ <widget class="GtkHBox" id="hbox135">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">2</property>
+
+ <child>
+ <widget class="GtkImage" id="image245">
+ <property name="visible">True</property>
+ <property name="stock">gtk-convert</property>
+ <property name="icon_size">4</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label594">
+ <property name="visible">True</property>
+ <property name="label">_Replace</property>
+ <property name="use_underline">True</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="pack_type">GTK_PACK_END</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkVBox" id="vbox128">
+ <property name="border_width">5</property>
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">6</property>
+
+ <child>
+ <widget class="GtkLabel" id="label_word">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Suggestions for the word:</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">True</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">True</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkScrolledWindow" id="scrolledwindow9">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+ <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+ <property name="shadow_type">GTK_SHADOW_IN</property>
+ <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
+
+ <child>
+ <widget class="GtkTreeView" id="treeview_words">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="headers_visible">False</property>
+ <property name="rules_hint">False</property>
+ <property name="reorderable">False</property>
+ <property name="enable_search">True</property>
+ <property name="fixed_height_mode">False</property>
+ <property name="hover_selection">False</property>
+ <property name="hover_expand">False</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+</widget>
+
+</glade-interface>
diff --git a/gnome-2-22/libempathy-gtk/empathy-spell-dialog.h b/gnome-2-22/libempathy-gtk/empathy-spell-dialog.h
new file mode 100644
index 000000000..e6d2e4c7a
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-spell-dialog.h
@@ -0,0 +1,39 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2004-2007 Imendio AB
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * 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: Martyn Russell <martyn@imendio.com>
+ * Richard Hult <richard@imendio.com>
+ */
+
+#ifndef __EMPATHY_SPELL_DIALOG_H__
+#define __EMPATHY_SPELL_DIALOG_H__
+
+#include <gtk/gtktextiter.h>
+#include "empathy-chat.h"
+
+G_BEGIN_DECLS
+
+void empathy_spell_dialog_show (EmpathyChat *chat,
+ GtkTextIter start,
+ GtkTextIter end,
+ const gchar *word);
+
+G_END_DECLS
+
+#endif /* __EMPATHY_SPELL_DIALOG_H__ */
diff --git a/gnome-2-22/libempathy-gtk/empathy-spell.c b/gnome-2-22/libempathy-gtk/empathy-spell.c
new file mode 100644
index 000000000..b6620118a
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-spell.c
@@ -0,0 +1,452 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2004-2007 Imendio AB
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * 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: Martyn Russell <martyn@imendio.com>
+ * Richard Hult <richard@imendio.com>
+ */
+
+#include "config.h"
+
+#include <string.h>
+#include <stdlib.h>
+
+#include <glib/gi18n.h>
+
+#ifdef HAVE_ASPELL
+#include <aspell.h>
+#endif
+
+#include <libempathy/empathy-debug.h>
+
+#include "empathy-spell.h"
+#include "empathy-conf.h"
+#include "empathy-preferences.h"
+
+#define DEBUG_DOMAIN "Spell"
+
+#ifdef HAVE_ASPELL
+
+/* Note: We could use aspell_reset_cache (NULL); periodically if we wanted
+ * to...
+ */
+
+typedef struct {
+ AspellConfig *spell_config;
+ AspellCanHaveError *spell_possible_err;
+ AspellSpeller *spell_checker;
+} SpellLanguage;
+
+#define ISO_CODES_DATADIR ISO_CODES_PREFIX "/share/xml/iso-codes"
+#define ISO_CODES_LOCALESDIR ISO_CODES_PREFIX "/share/locale"
+
+static GHashTable *iso_code_names = NULL;
+static GList *languages = NULL;
+static gboolean empathy_conf_notify_inited = FALSE;
+
+static void
+spell_iso_codes_parse_start_tag (GMarkupParseContext *ctx,
+ const gchar *element_name,
+ const gchar **attr_names,
+ const gchar **attr_values,
+ gpointer data,
+ GError **error)
+{
+ const gchar *ccode_longB, *ccode_longT, *ccode;
+ const gchar *lang_name;
+
+ if (!g_str_equal (element_name, "iso_639_entry") ||
+ attr_names == NULL || attr_values == NULL) {
+ return;
+ }
+
+ ccode = NULL;
+ ccode_longB = NULL;
+ ccode_longT = NULL;
+ lang_name = NULL;
+
+ while (*attr_names && *attr_values) {
+ if (g_str_equal (*attr_names, "iso_639_1_code")) {
+ if (**attr_values) {
+ ccode = *attr_values;
+ }
+ }
+ else if (g_str_equal (*attr_names, "iso_639_2B_code")) {
+ if (**attr_values) {
+ ccode_longB = *attr_values;
+ }
+ }
+ else if (g_str_equal (*attr_names, "iso_639_2T_code")) {
+ if (**attr_values) {
+ ccode_longT = *attr_values;
+ }
+ }
+ else if (g_str_equal (*attr_names, "name")) {
+ lang_name = *attr_values;
+ }
+
+ attr_names++;
+ attr_values++;
+ }
+
+ if (!lang_name) {
+ return;
+ }
+
+ if (ccode) {
+ g_hash_table_insert (iso_code_names,
+ g_strdup (ccode),
+ g_strdup (lang_name));
+ }
+
+ if (ccode_longB) {
+ g_hash_table_insert (iso_code_names,
+ g_strdup (ccode_longB),
+ g_strdup (lang_name));
+ }
+
+ if (ccode_longT) {
+ g_hash_table_insert (iso_code_names,
+ g_strdup (ccode_longT),
+ g_strdup (lang_name));
+ }
+}
+
+static void
+spell_iso_code_names_init (void)
+{
+ GError *err = NULL;
+ gchar *buf;
+ gsize buf_len;
+
+ iso_code_names = g_hash_table_new_full (g_str_hash, g_str_equal,
+ g_free, g_free);
+
+ bindtextdomain ("iso_639", ISO_CODES_LOCALESDIR);
+ bind_textdomain_codeset ("iso_639", "UTF-8");
+
+ /* FIXME: We should read this in chunks and pass to the parser. */
+ if (g_file_get_contents (ISO_CODES_DATADIR "/iso_639.xml", &buf, &buf_len, &err)) {
+ GMarkupParseContext *ctx;
+ GMarkupParser parser = {
+ spell_iso_codes_parse_start_tag,
+ NULL, NULL, NULL, NULL
+ };
+
+ ctx = g_markup_parse_context_new (&parser, 0, NULL, NULL);
+ if (!g_markup_parse_context_parse (ctx, buf, buf_len, &err)) {
+ g_warning ("Failed to parse '%s': %s",
+ ISO_CODES_DATADIR"/iso_639.xml",
+ err->message);
+ g_error_free (err);
+ }
+
+ g_markup_parse_context_free (ctx);
+ g_free (buf);
+ } else {
+ g_warning ("Failed to load '%s': %s",
+ ISO_CODES_DATADIR"/iso_639.xml", err->message);
+ g_error_free (err);
+ }
+}
+
+static void
+spell_notify_languages_cb (EmpathyConf *conf,
+ const gchar *key,
+ gpointer user_data)
+{
+ GList *l;
+
+ empathy_debug (DEBUG_DOMAIN, "Resetting languages due to config change");
+
+ /* We just reset the languages list. */
+ for (l = languages; l; l = l->next) {
+ SpellLanguage *lang;
+
+ lang = l->data;
+
+ delete_aspell_config (lang->spell_config);
+ delete_aspell_speller (lang->spell_checker);
+
+ g_slice_free (SpellLanguage, lang);
+ }
+
+ g_list_free (languages);
+ languages = NULL;
+}
+
+static void
+spell_setup_languages (void)
+{
+ gchar *str;
+
+ if (!empathy_conf_notify_inited) {
+ empathy_conf_notify_add (empathy_conf_get (),
+ EMPATHY_PREFS_CHAT_SPELL_CHECKER_LANGUAGES,
+ spell_notify_languages_cb, NULL);
+
+ empathy_conf_notify_inited = TRUE;
+ }
+
+ if (languages) {
+ return;
+ }
+
+ if (empathy_conf_get_string (empathy_conf_get (),
+ EMPATHY_PREFS_CHAT_SPELL_CHECKER_LANGUAGES,
+ &str) && str) {
+ gchar **strv;
+ gint i;
+
+ strv = g_strsplit (str, ",", -1);
+
+ i = 0;
+ while (strv && strv[i]) {
+ SpellLanguage *lang;
+
+ empathy_debug (DEBUG_DOMAIN, "Setting up language:'%s'", strv[i]);
+
+ lang = g_slice_new0 (SpellLanguage);
+
+ lang->spell_config = new_aspell_config();
+
+ aspell_config_replace (lang->spell_config, "encoding", "utf-8");
+ aspell_config_replace (lang->spell_config, "lang", strv[i++]);
+
+ lang->spell_possible_err = new_aspell_speller (lang->spell_config);
+
+ if (aspell_error_number (lang->spell_possible_err) == 0) {
+ lang->spell_checker = to_aspell_speller (lang->spell_possible_err);
+ languages = g_list_append (languages, lang);
+ } else {
+ delete_aspell_config (lang->spell_config);
+ g_slice_free (SpellLanguage, lang);
+ }
+ }
+
+ if (strv) {
+ g_strfreev (strv);
+ }
+
+ g_free (str);
+ }
+}
+
+const char *
+empathy_spell_get_language_name (const char *code)
+{
+ const gchar *name;
+
+ g_return_val_if_fail (code != NULL, NULL);
+
+ if (!iso_code_names) {
+ spell_iso_code_names_init ();
+ }
+
+ name = g_hash_table_lookup (iso_code_names, code);
+ if (!name) {
+ return NULL;
+ }
+
+ return dgettext ("iso_639", name);
+}
+
+GList *
+empathy_spell_get_language_codes (void)
+{
+ AspellConfig *config;
+ AspellDictInfoList *dlist;
+ AspellDictInfoEnumeration *dels;
+ const AspellDictInfo *entry;
+ GList *codes = NULL;
+
+ config = new_aspell_config ();
+ dlist = get_aspell_dict_info_list (config);
+ dels = aspell_dict_info_list_elements (dlist);
+
+ while ((entry = aspell_dict_info_enumeration_next (dels)) != 0) {
+ if (g_list_find_custom (codes, entry->code, (GCompareFunc) strcmp)) {
+ continue;
+ }
+
+ codes = g_list_append (codes, g_strdup (entry->code));
+ }
+
+ delete_aspell_dict_info_enumeration (dels);
+ delete_aspell_config (config);
+
+ return codes;
+}
+
+void
+empathy_spell_free_language_codes (GList *codes)
+{
+ g_list_foreach (codes, (GFunc) g_free, NULL);
+ g_list_free (codes);
+}
+
+gboolean
+empathy_spell_check (const gchar *word)
+{
+ GList *l;
+ gint n_langs;
+ gboolean correct = FALSE;
+ gint len;
+ const gchar *p;
+ gunichar c;
+ gboolean digit;
+
+ g_return_val_if_fail (word != NULL, FALSE);
+
+ spell_setup_languages ();
+
+ if (!languages) {
+ empathy_debug (DEBUG_DOMAIN, "No languages to check against");
+ return TRUE;
+ }
+
+ /* Ignore certain cases like numbers, etc. */
+ for (p = word, digit = TRUE; *p && digit; p = g_utf8_next_char (p)) {
+ c = g_utf8_get_char (p);
+ digit = g_unichar_isdigit (c);
+ }
+
+ if (digit) {
+ /* We don't spell check digits. */
+ empathy_debug (DEBUG_DOMAIN, "Not spell checking word:'%s', it is all digits", word);
+ return TRUE;
+ }
+
+ len = strlen (word);
+ n_langs = g_list_length (languages);
+ for (l = languages; l; l = l->next) {
+ SpellLanguage *lang;
+
+ lang = l->data;
+
+ correct = aspell_speller_check (lang->spell_checker, word, len);
+ if (n_langs > 1 && correct) {
+ break;
+ }
+ }
+
+ return correct;
+}
+
+GList *
+empathy_spell_get_suggestions (const gchar *word)
+{
+ GList *l1;
+ GList *l2 = NULL;
+ const AspellWordList *suggestions;
+ AspellStringEnumeration *elements;
+ const char *next;
+ gint len;
+
+ g_return_val_if_fail (word != NULL, NULL);
+
+ spell_setup_languages ();
+
+ len = strlen (word);
+
+ for (l1 = languages; l1; l1 = l1->next) {
+ SpellLanguage *lang;
+
+ lang = l1->data;
+
+ suggestions = aspell_speller_suggest (lang->spell_checker,
+ word, len);
+
+ elements = aspell_word_list_elements (suggestions);
+
+ while ((next = aspell_string_enumeration_next (elements))) {
+ l2 = g_list_append (l2, g_strdup (next));
+ }
+
+ delete_aspell_string_enumeration (elements);
+ }
+
+ return l2;
+}
+
+gboolean
+empathy_spell_supported (void)
+{
+ if (g_getenv ("EMPATHY_SPELL_DISABLED")) {
+ empathy_debug (DEBUG_DOMAIN, "EMPATHY_SPELL_DISABLE env variable defined");
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+#else /* not HAVE_ASPELL */
+
+gboolean
+empathy_spell_supported (void)
+{
+ return FALSE;
+}
+
+GList *
+empathy_spell_get_suggestions (const gchar *word)
+{
+ empathy_debug (DEBUG_DOMAIN, "Support disabled, could not get suggestions");
+
+ return NULL;
+}
+
+gboolean
+empathy_spell_check (const gchar *word)
+{
+ empathy_debug (DEBUG_DOMAIN, "Support disabled, could not check spelling");
+
+ return TRUE;
+}
+
+const char *
+empathy_spell_get_language_name (const char *lang)
+{
+ empathy_debug (DEBUG_DOMAIN, "Support disabled, could not get language name");
+
+ return NULL;
+}
+
+GList *
+empathy_spell_get_language_codes (void)
+{
+ empathy_debug (DEBUG_DOMAIN, "Support disabled, could not get language codes");
+
+ return NULL;
+}
+
+void
+empathy_spell_free_language_codes (GList *codes)
+{
+}
+
+#endif /* HAVE_ASPELL */
+
+
+void
+empathy_spell_free_suggestions (GList *suggestions)
+{
+ g_list_foreach (suggestions, (GFunc) g_free, NULL);
+ g_list_free (suggestions);
+}
+
diff --git a/gnome-2-22/libempathy-gtk/empathy-spell.h b/gnome-2-22/libempathy-gtk/empathy-spell.h
new file mode 100644
index 000000000..4f483cf35
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-spell.h
@@ -0,0 +1,39 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2004-2007 Imendio AB
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * 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: Martyn Russell <martyn@imendio.com>
+ * Richard Hult <richard@imendio.com>
+ */
+
+#ifndef __EMPATHY_SPELL_H__
+#define __EMPATHY_SPELL_H__
+
+G_BEGIN_DECLS
+
+gboolean empathy_spell_supported (void);
+const gchar *empathy_spell_get_language_name (const gchar *code);
+GList *empathy_spell_get_language_codes (void);
+void empathy_spell_free_language_codes (GList *codes);
+gboolean empathy_spell_check (const gchar *word);
+GList * empathy_spell_get_suggestions (const gchar *word);
+void empathy_spell_free_suggestions (GList *suggestions);
+
+G_END_DECLS
+
+#endif /* __EMPATHY_SPELL_H__ */
diff --git a/gnome-2-22/libempathy-gtk/empathy-status-icon.c b/gnome-2-22/libempathy-gtk/empathy-status-icon.c
new file mode 100644
index 000000000..9f10bd37e
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-status-icon.c
@@ -0,0 +1,861 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2007-2008 Collabora Ltd.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Authors: Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#include <config.h>
+
+#include <string.h>
+
+#include <gtk/gtk.h>
+#include <glade/glade.h>
+#include <glib/gi18n.h>
+
+#include <libmissioncontrol/mission-control.h>
+
+#include <libempathy/empathy-contact-list.h>
+#include <libempathy/empathy-contact-manager.h>
+#include <libempathy/empathy-contact.h>
+#include <libempathy/empathy-tp-chat.h>
+#include <libempathy/empathy-debug.h>
+#include <libempathy/empathy-utils.h>
+#include <libempathy/empathy-idle.h>
+#include <libempathy/empathy-filter.h>
+
+#include "empathy-status-icon.h"
+#include "empathy-contact-dialogs.h"
+#include "empathy-presence-chooser.h"
+#include "empathy-conf.h"
+#include "empathy-preferences.h"
+#include "empathy-ui-utils.h"
+#include "empathy-accounts-dialog.h"
+#include "empathy-images.h"
+#include "empathy-new-message-dialog.h"
+
+
+#define GET_PRIV(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), \
+ EMPATHY_TYPE_STATUS_ICON, EmpathyStatusIconPriv))
+
+#define DEBUG_DOMAIN "StatusIcon"
+
+/* Number of ms to wait when blinking */
+#define BLINK_TIMEOUT 500
+
+typedef struct _StatusIconEvent StatusIconEvent;
+
+struct _EmpathyStatusIconPriv {
+ GtkStatusIcon *icon;
+ EmpathyContactManager *manager;
+ EmpathyFilter *text_filter;
+ EmpathyFilter *call_filter;
+ EmpathyIdle *idle;
+ MissionControl *mc;
+ GList *events;
+ gboolean showing_event_icon;
+ StatusIconEvent *flash_state_event;
+ guint blink_timeout;
+
+ GtkWindow *window;
+ GtkWidget *popup_menu;
+ GtkWidget *show_window_item;
+ GtkWidget *message_item;
+ GtkWidget *status_item;
+};
+
+typedef void (*EventActivatedFunc) (StatusIconEvent *event);
+
+struct _StatusIconEvent {
+ gchar *icon_name;
+ gchar *message;
+ EventActivatedFunc func;
+ gpointer user_data;
+};
+
+
+static void empathy_status_icon_class_init (EmpathyStatusIconClass *klass);
+static void empathy_status_icon_init (EmpathyStatusIcon *icon);
+static void status_icon_finalize (GObject *object);
+static void status_icon_text_filter_new_channel (EmpathyFilter *filter,
+ TpConn *tp_conn,
+ TpChan *tp_chan,
+ EmpathyStatusIcon *icon);
+static void status_icon_call_filter_new_channel (EmpathyFilter *filter,
+ TpConn *tp_conn,
+ TpChan *tp_chan,
+ EmpathyStatusIcon *icon);
+static void status_icon_message_received_cb (EmpathyTpChat *tp_chat,
+ EmpathyMessage *message,
+ EmpathyStatusIcon *icon);
+static void status_icon_idle_notify_cb (EmpathyStatusIcon *icon);
+static void status_icon_update_tooltip (EmpathyStatusIcon *icon);
+static void status_icon_set_from_state (EmpathyStatusIcon *icon);
+static void status_icon_set_visibility (EmpathyStatusIcon *icon,
+ gboolean visible,
+ gboolean store);
+static void status_icon_toggle_visibility (EmpathyStatusIcon *icon);
+static void status_icon_activate_cb (GtkStatusIcon *status_icon,
+ EmpathyStatusIcon *icon);
+static gboolean status_icon_delete_event_cb (GtkWidget *widget,
+ GdkEvent *event,
+ EmpathyStatusIcon *icon);
+static void status_icon_popup_menu_cb (GtkStatusIcon *status_icon,
+ guint button,
+ guint activate_time,
+ EmpathyStatusIcon *icon);
+static void status_icon_create_menu (EmpathyStatusIcon *icon);
+static void status_icon_new_message_cb (GtkWidget *widget,
+ EmpathyStatusIcon *icon);
+static void status_icon_quit_cb (GtkWidget *window,
+ EmpathyStatusIcon *icon);
+static void status_icon_show_hide_window_cb (GtkWidget *widget,
+ EmpathyStatusIcon *icon);
+static void status_icon_pendings_changed_cb (EmpathyContactManager *manager,
+ EmpathyContact *contact,
+ EmpathyContact *actor,
+ guint reason,
+ gchar *message,
+ gboolean is_pending,
+ EmpathyStatusIcon *icon);
+static void status_icon_event_subscribe_cb (StatusIconEvent *event);
+static void status_icon_event_flash_state_cb (StatusIconEvent *event);
+static void status_icon_event_msg_cb (StatusIconEvent *event);
+static StatusIconEvent * status_icon_event_new (EmpathyStatusIcon *icon,
+ const gchar *icon_name,
+ const gchar *message);
+static void status_icon_event_remove (EmpathyStatusIcon *icon,
+ StatusIconEvent *event);
+static gboolean status_icon_event_timeout_cb (EmpathyStatusIcon *icon);
+static void status_icon_event_free (StatusIconEvent *event);
+
+G_DEFINE_TYPE (EmpathyStatusIcon, empathy_status_icon, G_TYPE_OBJECT);
+
+static void
+status_icon_notify_use_nm_cb (EmpathyConf *conf,
+ const gchar *key,
+ gpointer user_data)
+{
+ EmpathyStatusIconPriv *priv = GET_PRIV (user_data);
+ gboolean use_nm;
+
+ if (empathy_conf_get_bool (conf, key, &use_nm)) {
+ empathy_idle_set_use_nm (priv->idle, use_nm);
+ }
+}
+
+static void
+status_icon_notify_visibility_cb (EmpathyConf *conf,
+ const gchar *key,
+ gpointer user_data)
+{
+ EmpathyStatusIcon *icon = user_data;
+ gboolean hidden = FALSE;
+
+ if (empathy_conf_get_bool (conf, key, &hidden)) {
+ status_icon_set_visibility (icon, !hidden, FALSE);
+ }
+}
+
+static void
+empathy_status_icon_class_init (EmpathyStatusIconClass *klass)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+ object_class->finalize = status_icon_finalize;
+
+ g_type_class_add_private (object_class, sizeof (EmpathyStatusIconPriv));
+}
+
+static void
+empathy_status_icon_init (EmpathyStatusIcon *icon)
+{
+ EmpathyStatusIconPriv *priv;
+ GList *pendings, *l;
+ gboolean use_nm;
+
+ priv = GET_PRIV (icon);
+
+ priv->icon = gtk_status_icon_new ();
+ priv->manager = empathy_contact_manager_new ();
+ priv->mc = empathy_mission_control_new ();
+ priv->text_filter = empathy_filter_new ("org.gnome.Empathy.ChatFilter",
+ "/org/gnome/Empathy/ChatFilter",
+ TP_IFACE_CHANNEL_TYPE_TEXT,
+ MC_FILTER_PRIORITY_DIALOG,
+ MC_FILTER_FLAG_INCOMING);
+ priv->call_filter = empathy_filter_new ("org.gnome.Empathy.CallFilter",
+ "/org/gnome/Empathy/CallFilter",
+ TP_IFACE_CHANNEL_TYPE_STREAMED_MEDIA,
+ MC_FILTER_PRIORITY_DIALOG,
+ MC_FILTER_FLAG_INCOMING);
+
+ /* Setup EmpathyIdle */
+ priv->idle = empathy_idle_new ();
+ empathy_conf_get_bool (empathy_conf_get (),
+ EMPATHY_PREFS_USE_NM,
+ &use_nm);
+ empathy_conf_notify_add (empathy_conf_get (),
+ EMPATHY_PREFS_USE_NM,
+ status_icon_notify_use_nm_cb,
+ icon);
+ empathy_idle_set_auto_away (priv->idle, TRUE);
+ empathy_idle_set_use_nm (priv->idle, use_nm);
+
+ /* make icon listen and respond to MAIN_WINDOW_HIDDEN changes */
+ empathy_conf_notify_add (empathy_conf_get (),
+ EMPATHY_PREFS_UI_MAIN_WINDOW_HIDDEN,
+ status_icon_notify_visibility_cb,
+ icon);
+
+ status_icon_create_menu (icon);
+ status_icon_idle_notify_cb (icon);
+
+ g_signal_connect (priv->text_filter, "new-channel",
+ G_CALLBACK (status_icon_text_filter_new_channel),
+ icon);
+ g_signal_connect (priv->call_filter, "new-channel",
+ G_CALLBACK (status_icon_call_filter_new_channel),
+ icon);
+ g_signal_connect_swapped (priv->idle, "notify",
+ G_CALLBACK (status_icon_idle_notify_cb),
+ icon);
+ g_signal_connect (priv->icon, "activate",
+ G_CALLBACK (status_icon_activate_cb),
+ icon);
+ g_signal_connect (priv->icon, "popup-menu",
+ G_CALLBACK (status_icon_popup_menu_cb),
+ icon);
+ g_signal_connect (priv->manager, "pendings-changed",
+ G_CALLBACK (status_icon_pendings_changed_cb),
+ icon);
+
+ pendings = empathy_contact_list_get_pendings (EMPATHY_CONTACT_LIST (priv->manager));
+ for (l = pendings; l; l = l->next) {
+ EmpathyPendingInfo *info;
+
+ info = l->data;
+ status_icon_pendings_changed_cb (priv->manager,
+ info->member,
+ info->actor,
+ 0,
+ info->message,
+ TRUE,
+ icon);
+ empathy_pending_info_free (info);
+ }
+ g_list_free (pendings);
+}
+
+static void
+status_icon_finalize (GObject *object)
+{
+ EmpathyStatusIconPriv *priv;
+
+ priv = GET_PRIV (object);
+
+ g_list_foreach (priv->events, (GFunc) status_icon_event_free, NULL);
+ g_list_free (priv->events);
+
+ if (priv->blink_timeout) {
+ g_source_remove (priv->blink_timeout);
+ }
+
+ g_object_unref (priv->icon);
+ g_object_unref (priv->window);
+ g_object_unref (priv->idle);
+ g_object_unref (priv->manager);
+ g_object_unref (priv->mc);
+ g_object_unref (priv->text_filter);
+ g_object_unref (priv->call_filter);
+}
+
+EmpathyStatusIcon *
+empathy_status_icon_new (GtkWindow *window)
+{
+ EmpathyStatusIconPriv *priv;
+ EmpathyStatusIcon *icon;
+ gboolean should_hide;
+
+ g_return_val_if_fail (GTK_IS_WINDOW (window), NULL);
+
+ icon = g_object_new (EMPATHY_TYPE_STATUS_ICON, NULL);
+ priv = GET_PRIV (icon);
+
+ priv->window = g_object_ref (window);
+
+ g_signal_connect (priv->window, "delete-event",
+ G_CALLBACK (status_icon_delete_event_cb),
+ icon);
+
+ empathy_conf_get_bool (empathy_conf_get (),
+ EMPATHY_PREFS_UI_MAIN_WINDOW_HIDDEN,
+ &should_hide);
+
+ if (gtk_window_is_active (priv->window) == should_hide) {
+ status_icon_set_visibility (icon, !should_hide, FALSE);
+ }
+
+ return icon;
+}
+
+static void
+status_icon_text_filter_new_channel (EmpathyFilter *filter,
+ TpConn *tp_conn,
+ TpChan *tp_chan,
+ EmpathyStatusIcon *icon)
+{
+ EmpathyStatusIconPriv *priv;
+ McAccount *account;
+ EmpathyTpChat *tp_chat;
+
+ priv = GET_PRIV (icon);
+
+ account = mission_control_get_account_for_connection (priv->mc, tp_conn, NULL);
+
+ empathy_debug (DEBUG_DOMAIN, "New text channel to be filtered for contact %s",
+ empathy_inspect_channel (account, tp_chan));
+
+ tp_chat = empathy_tp_chat_new (account, tp_chan);
+ g_object_set_data (G_OBJECT (tp_chat), "filter", filter);
+ g_object_unref (account);
+
+ g_signal_connect (tp_chat, "message-received",
+ G_CALLBACK (status_icon_message_received_cb),
+ icon);
+}
+
+static void
+status_icon_message_received_cb (EmpathyTpChat *tp_chat,
+ EmpathyMessage *message,
+ EmpathyStatusIcon *icon)
+{
+ EmpathyContact *sender;
+ gchar *msg;
+ StatusIconEvent *event;
+
+ empathy_debug (DEBUG_DOMAIN, "Message received, add event");
+
+ g_signal_handlers_disconnect_by_func (tp_chat,
+ status_icon_message_received_cb,
+ icon);
+
+ sender = empathy_message_get_sender (message);
+ msg = g_strdup_printf (_("New message from %s:\n%s"),
+ empathy_contact_get_name (sender),
+ empathy_message_get_body (message));
+
+ event = status_icon_event_new (icon, EMPATHY_IMAGE_NEW_MESSAGE, msg);
+ event->func = status_icon_event_msg_cb;
+ event->user_data = tp_chat;
+ g_free (msg);
+}
+
+static void
+status_icon_call_member_added_cb (EmpathyTpGroup *group,
+ EmpathyContact *member,
+ EmpathyContact *actor,
+ guint reason,
+ const gchar *message,
+ EmpathyStatusIcon *icon)
+{
+ EmpathyFilter *filter;
+
+ if (empathy_contact_is_user (member)) {
+ /* We are member, it's an outgoing call, we can dispatch
+ * the channel without asking the user */
+ empathy_debug (DEBUG_DOMAIN, "Process OUTGOING call channel");
+ filter = g_object_get_data (G_OBJECT (group), "filter");
+ empathy_filter_process (filter,
+ empathy_tp_group_get_channel (group),
+ TRUE);
+ g_object_unref (group);
+ }
+}
+
+static void
+status_icon_event_call_cb (StatusIconEvent *event)
+{
+ EmpathyFilter *filter;
+ EmpathyTpGroup *group;
+
+ empathy_debug (DEBUG_DOMAIN, "Dispatching call channel");
+
+ group = event->user_data;
+ filter = g_object_get_data (G_OBJECT (group), "filter");
+ empathy_filter_process (filter,
+ empathy_tp_group_get_channel (group),
+ TRUE);
+ g_object_unref (group);
+}
+
+static void
+status_icon_call_local_pending_cb (EmpathyTpGroup *group,
+ EmpathyContact *member,
+ EmpathyContact *actor,
+ guint reason,
+ const gchar *message,
+ EmpathyStatusIcon *icon)
+{
+ StatusIconEvent *event;
+
+ if (empathy_contact_is_user (member)) {
+ gchar *msg;
+
+ /* We are local pending, it's an incoming call, we need to ask
+ * the user if he wants to accept the call. */
+ empathy_debug (DEBUG_DOMAIN, "INCOMING call, add event");
+
+ msg = g_strdup_printf (_("Incoming call from %s:\n%s"),
+ empathy_contact_get_name (member),
+ message);
+
+ event = status_icon_event_new (icon, EMPATHY_IMAGE_VOIP, msg);
+ event->func = status_icon_event_call_cb;
+ event->user_data = group;
+ g_free (msg);
+ }
+}
+
+static void
+status_icon_call_filter_new_channel (EmpathyFilter *filter,
+ TpConn *tp_conn,
+ TpChan *tp_chan,
+ EmpathyStatusIcon *icon)
+{
+ EmpathyStatusIconPriv *priv;
+ McAccount *account;
+ EmpathyTpGroup *group;
+
+ priv = GET_PRIV (icon);
+
+ account = mission_control_get_account_for_connection (priv->mc, tp_conn, NULL);
+
+ empathy_debug (DEBUG_DOMAIN, "New media channel to be filtered");
+
+ /* FIXME: We have to check if the user is member or local-pending to
+ * know if it's an incoming or outgoing call because of the way we
+ * request media channels MC can't know if it's incoming or outgoing */
+ group = empathy_tp_group_new (account, tp_chan);
+ g_object_set_data (G_OBJECT (group), "filter", filter);
+ g_object_unref (account);
+
+ g_signal_connect (group, "member-added",
+ G_CALLBACK (status_icon_call_member_added_cb),
+ icon);
+ g_signal_connect (group, "local-pending",
+ G_CALLBACK (status_icon_call_local_pending_cb),
+ icon);
+}
+
+static void
+status_icon_idle_notify_cb (EmpathyStatusIcon *icon)
+{
+ EmpathyStatusIconPriv *priv;
+ McPresence flash_state;
+
+ priv = GET_PRIV (icon);
+
+ flash_state = empathy_idle_get_flash_state (priv->idle);
+ if (flash_state != MC_PRESENCE_UNSET) {
+ const gchar *icon_name;
+
+ icon_name = empathy_icon_name_for_presence (flash_state);
+ if (!priv->flash_state_event) {
+ /* We are now flashing */
+ priv->flash_state_event = status_icon_event_new (icon, icon_name, NULL);
+ priv->flash_state_event->user_data = icon;
+ priv->flash_state_event->func = status_icon_event_flash_state_cb;
+ } else {
+ /* We are still flashing but with another state */
+ g_free (priv->flash_state_event->icon_name);
+ priv->flash_state_event->icon_name = g_strdup (icon_name);
+ }
+ }
+ else if (priv->flash_state_event) {
+ /* We are no more flashing */
+ status_icon_event_remove (icon, priv->flash_state_event);
+ priv->flash_state_event = NULL;
+ }
+
+ if (!priv->showing_event_icon) {
+ status_icon_set_from_state (icon);
+ }
+
+ status_icon_update_tooltip (icon);
+}
+
+static void
+status_icon_update_tooltip (EmpathyStatusIcon *icon)
+{
+ EmpathyStatusIconPriv *priv;
+ const gchar *tooltip = NULL;
+
+ priv = GET_PRIV (icon);
+
+ if (priv->events) {
+ StatusIconEvent *event;
+
+ event = priv->events->data;
+ tooltip = event->message;
+ }
+
+ if (!tooltip) {
+ tooltip = empathy_idle_get_status (priv->idle);
+ }
+
+ gtk_status_icon_set_tooltip (priv->icon, tooltip);
+}
+
+static void
+status_icon_set_from_state (EmpathyStatusIcon *icon)
+{
+ EmpathyStatusIconPriv *priv;
+ McPresence state;
+ const gchar *icon_name;
+
+ priv = GET_PRIV (icon);
+
+ state = empathy_idle_get_state (priv->idle);
+ icon_name = empathy_icon_name_for_presence (state);
+ gtk_status_icon_set_from_icon_name (priv->icon, icon_name);
+}
+
+static void
+status_icon_set_visibility (EmpathyStatusIcon *icon,
+ gboolean visible,
+ gboolean store)
+{
+ EmpathyStatusIconPriv *priv;
+
+ priv = GET_PRIV (icon);
+
+ if (store) {
+ empathy_conf_set_bool (empathy_conf_get (),
+ EMPATHY_PREFS_UI_MAIN_WINDOW_HIDDEN, !visible);
+ }
+
+ if (!visible) {
+ empathy_window_iconify (priv->window, priv->icon);
+ } else {
+ GList *accounts;
+
+ empathy_window_present (GTK_WINDOW (priv->window), TRUE);
+
+ /* Show the accounts dialog if there is no enabled accounts */
+ accounts = mc_accounts_list_by_enabled (TRUE);
+ if (accounts) {
+ mc_accounts_list_free (accounts);
+ } else {
+ empathy_debug (DEBUG_DOMAIN,
+ "No enabled account, Showing account dialog");
+ empathy_accounts_dialog_show (GTK_WINDOW (priv->window));
+ }
+ }
+}
+
+static void
+status_icon_toggle_visibility (EmpathyStatusIcon *icon)
+{
+ EmpathyStatusIconPriv *priv = GET_PRIV (icon);
+ gboolean visible;
+
+ visible = gtk_window_is_active (priv->window);
+ status_icon_set_visibility (icon, !visible, TRUE);
+}
+
+static void
+status_icon_activate_cb (GtkStatusIcon *status_icon,
+ EmpathyStatusIcon *icon)
+{
+ EmpathyStatusIconPriv *priv;
+
+ priv = GET_PRIV (icon);
+
+ empathy_debug (DEBUG_DOMAIN, "Activated: %s",
+ priv->events ? "event" : "toggle");
+
+ if (priv->events) {
+ status_icon_event_remove (icon, priv->events->data);
+ } else {
+ status_icon_toggle_visibility (icon);
+ }
+}
+
+static gboolean
+status_icon_delete_event_cb (GtkWidget *widget,
+ GdkEvent *event,
+ EmpathyStatusIcon *icon)
+{
+ status_icon_set_visibility (icon, FALSE, TRUE);
+
+ return TRUE;
+}
+
+static void
+status_icon_popup_menu_cb (GtkStatusIcon *status_icon,
+ guint button,
+ guint activate_time,
+ EmpathyStatusIcon *icon)
+{
+ EmpathyStatusIconPriv *priv;
+ GtkWidget *submenu;
+ gboolean show;
+
+ priv = GET_PRIV (icon);
+
+ show = empathy_window_get_is_visible (GTK_WINDOW (priv->window));
+
+ g_signal_handlers_block_by_func (priv->show_window_item,
+ status_icon_show_hide_window_cb,
+ icon);
+ gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (priv->show_window_item),
+ show);
+ g_signal_handlers_unblock_by_func (priv->show_window_item,
+ status_icon_show_hide_window_cb,
+ icon);
+
+ submenu = empathy_presence_chooser_create_menu ();
+ gtk_menu_item_set_submenu (GTK_MENU_ITEM (priv->status_item),
+ submenu);
+
+ gtk_menu_popup (GTK_MENU (priv->popup_menu),
+ NULL, NULL,
+ gtk_status_icon_position_menu,
+ priv->icon,
+ button,
+ activate_time);
+}
+
+static void
+status_icon_create_menu (EmpathyStatusIcon *icon)
+{
+ EmpathyStatusIconPriv *priv;
+ GladeXML *glade;
+
+ priv = GET_PRIV (icon);
+
+ glade = empathy_glade_get_file ("empathy-status-icon.glade",
+ "tray_menu",
+ NULL,
+ "tray_menu", &priv->popup_menu,
+ "tray_show_list", &priv->show_window_item,
+ "tray_new_message", &priv->message_item,
+ "tray_status", &priv->status_item,
+ NULL);
+
+ empathy_glade_connect (glade,
+ icon,
+ "tray_show_list", "toggled", status_icon_show_hide_window_cb,
+ "tray_new_message", "activate", status_icon_new_message_cb,
+ "tray_quit", "activate", status_icon_quit_cb,
+ NULL);
+
+ g_object_unref (glade);
+}
+
+static void
+status_icon_new_message_cb (GtkWidget *widget,
+ EmpathyStatusIcon *icon)
+{
+ EmpathyStatusIconPriv *priv;
+
+ priv = GET_PRIV (icon);
+
+ empathy_new_message_dialog_show (NULL);
+}
+
+static void
+status_icon_quit_cb (GtkWidget *window,
+ EmpathyStatusIcon *icon)
+{
+ gtk_main_quit ();
+}
+
+static void
+status_icon_show_hide_window_cb (GtkWidget *widget,
+ EmpathyStatusIcon *icon)
+{
+ gboolean visible;
+
+ visible = gtk_check_menu_item_get_active (GTK_CHECK_MENU_ITEM (widget));
+ status_icon_set_visibility (icon, visible, TRUE);
+}
+
+static void
+status_icon_pendings_changed_cb (EmpathyContactManager *manager,
+ EmpathyContact *contact,
+ EmpathyContact *actor,
+ guint reason,
+ gchar *message,
+ gboolean is_pending,
+ EmpathyStatusIcon *icon)
+{
+ EmpathyStatusIconPriv *priv;
+ StatusIconEvent *event;
+ GString *str;
+ GList *l;
+
+ priv = GET_PRIV (icon);
+
+ if (!is_pending) {
+ /* FIXME: We should remove the event */
+ return;
+ }
+
+ for (l = priv->events; l; l = l->next) {
+ if (empathy_contact_equal (contact, ((StatusIconEvent*)l->data)->user_data)) {
+ return;
+ }
+ }
+
+ str = g_string_new (NULL);
+ g_string_printf (str, _("Subscription requested by %s"),
+ empathy_contact_get_name (contact));
+ if (!G_STR_EMPTY (message)) {
+ g_string_append_printf (str, _("\nMessage: %s"), message);
+ }
+
+ event = status_icon_event_new (icon, GTK_STOCK_DIALOG_QUESTION, str->str);
+ event->user_data = g_object_ref (contact);
+ event->func = status_icon_event_subscribe_cb;
+
+ g_string_free (str, TRUE);
+}
+
+static void
+status_icon_event_subscribe_cb (StatusIconEvent *event)
+{
+ EmpathyContact *contact;
+
+ contact = EMPATHY_CONTACT (event->user_data);
+
+ empathy_subscription_dialog_show (contact, NULL);
+
+ g_object_unref (contact);
+}
+
+static void
+status_icon_event_flash_state_cb (StatusIconEvent *event)
+{
+ EmpathyStatusIconPriv *priv;
+
+ priv = GET_PRIV (event->user_data);
+
+ empathy_idle_set_flash_state (priv->idle, MC_PRESENCE_UNSET);
+}
+
+static void
+status_icon_event_msg_cb (StatusIconEvent *event)
+{
+ EmpathyFilter *filter;
+ EmpathyTpChat *tp_chat;
+
+ empathy_debug (DEBUG_DOMAIN, "Dispatching text channel");
+
+ tp_chat = event->user_data;
+ filter = g_object_get_data (G_OBJECT (tp_chat), "filter");
+ empathy_filter_process (filter,
+ empathy_tp_chat_get_channel (tp_chat),
+ TRUE);
+
+ g_object_unref (tp_chat);
+}
+
+static StatusIconEvent *
+status_icon_event_new (EmpathyStatusIcon *icon,
+ const gchar *icon_name,
+ const gchar *message)
+{
+ EmpathyStatusIconPriv *priv;
+ StatusIconEvent *event;
+
+ priv = GET_PRIV (icon);
+
+ event = g_slice_new0 (StatusIconEvent);
+ event->icon_name = g_strdup (icon_name);
+ event->message = g_strdup (message);
+
+ priv->events = g_list_append (priv->events, event);
+ if (!priv->blink_timeout) {
+ priv->showing_event_icon = FALSE;
+ priv->blink_timeout = g_timeout_add (BLINK_TIMEOUT,
+ (GSourceFunc) status_icon_event_timeout_cb,
+ icon);
+ status_icon_event_timeout_cb (icon);
+ status_icon_update_tooltip (icon);
+ }
+
+ return event;
+}
+
+static void
+status_icon_event_remove (EmpathyStatusIcon *icon,
+ StatusIconEvent *event)
+{
+ EmpathyStatusIconPriv *priv;
+
+ priv = GET_PRIV (icon);
+
+ if (event->func) {
+ event->func (event);
+ }
+ priv->events = g_list_remove (priv->events, event);
+ status_icon_event_free (event);
+ priv->showing_event_icon = FALSE;
+ status_icon_update_tooltip (icon);
+ status_icon_set_from_state (icon);
+
+ if (priv->events) {
+ return;
+ }
+
+ if (priv->blink_timeout) {
+ g_source_remove (priv->blink_timeout);
+ priv->blink_timeout = 0;
+ }
+}
+
+static gboolean
+status_icon_event_timeout_cb (EmpathyStatusIcon *icon)
+{
+ EmpathyStatusIconPriv *priv;
+
+ priv = GET_PRIV (icon);
+
+ priv->showing_event_icon = !priv->showing_event_icon;
+
+ if (!priv->showing_event_icon) {
+ status_icon_set_from_state (icon);
+ } else {
+ StatusIconEvent *event;
+
+ event = priv->events->data;
+ gtk_status_icon_set_from_icon_name (priv->icon, event->icon_name);
+ }
+
+ return TRUE;
+}
+
+static void
+status_icon_event_free (StatusIconEvent *event)
+{
+ g_free (event->icon_name);
+ g_free (event->message);
+ g_slice_free (StatusIconEvent, event);
+}
+
diff --git a/gnome-2-22/libempathy-gtk/empathy-status-icon.glade b/gnome-2-22/libempathy-gtk/empathy-status-icon.glade
new file mode 100644
index 000000000..ab0f09f84
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-status-icon.glade
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
+<!--*- mode: xml -*-->
+<glade-interface>
+ <widget class="GtkMenu" id="tray_menu">
+ <child>
+ <widget class="GtkCheckMenuItem" id="tray_show_list">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Show Contact List</property>
+ <property name="use_underline">True</property>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkSeparatorMenuItem" id="avskiljare5">
+ <property name="visible">True</property>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkImageMenuItem" id="tray_new_message">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_New Conversation...</property>
+ <property name="use_underline">True</property>
+ <child internal-child="image">
+ <widget class="GtkImage" id="image599">
+ <property name="visible">True</property>
+ <property name="icon_size">1</property>
+ <property name="icon_name">im-message-new</property>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkMenuItem" id="tray_status">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Status</property>
+ <property name="use_underline">True</property>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkSeparatorMenuItem" id="avskiljare6">
+ <property name="visible">True</property>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkImageMenuItem" id="tray_quit">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Quit</property>
+ <property name="use_underline">True</property>
+ <child internal-child="image">
+ <widget class="GtkImage" id="image600">
+ <property name="visible">True</property>
+ <property name="stock">gtk-quit</property>
+ <property name="icon_size">1</property>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ </widget>
+</glade-interface>
diff --git a/gnome-2-22/libempathy-gtk/empathy-status-icon.h b/gnome-2-22/libempathy-gtk/empathy-status-icon.h
new file mode 100644
index 000000000..a7ca3c395
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-status-icon.h
@@ -0,0 +1,53 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2007 Collabora Ltd.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Authors: Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#ifndef __EMPATHY_STATUS_ICON_H__
+#define __EMPATHY_STATUS_ICON_H__
+
+#include <glib.h>
+
+G_BEGIN_DECLS
+
+#define EMPATHY_TYPE_STATUS_ICON (empathy_status_icon_get_type ())
+#define EMPATHY_STATUS_ICON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), EMPATHY_TYPE_STATUS_ICON, EmpathyStatusIcon))
+#define EMPATHY_STATUS_ICON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), EMPATHY_TYPE_STATUS_ICON, EmpathyStatusIconClass))
+#define EMPATHY_IS_STATUS_ICON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), EMPATHY_TYPE_STATUS_ICON))
+#define EMPATHY_IS_STATUS_ICON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), EMPATHY_TYPE_STATUS_ICON))
+#define EMPATHY_STATUS_ICON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), EMPATHY_TYPE_STATUS_ICON, EmpathyStatusIconClass))
+
+typedef struct _EmpathyStatusIcon EmpathyStatusIcon;
+typedef struct _EmpathyStatusIconClass EmpathyStatusIconClass;
+typedef struct _EmpathyStatusIconPriv EmpathyStatusIconPriv;
+
+struct _EmpathyStatusIcon {
+ GObject parent;
+};
+
+struct _EmpathyStatusIconClass {
+ GObjectClass parent_class;
+};
+
+GType empathy_status_icon_get_type (void) G_GNUC_CONST;
+EmpathyStatusIcon *empathy_status_icon_new (GtkWindow *window);
+
+G_END_DECLS
+
+#endif /* __EMPATHY_STATUS_ICON_H__ */
diff --git a/gnome-2-22/libempathy-gtk/empathy-theme-boxes.c b/gnome-2-22/libempathy-gtk/empathy-theme-boxes.c
new file mode 100644
index 000000000..7285a9e9e
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-theme-boxes.c
@@ -0,0 +1,837 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2007 Imendio AB
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * 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 <glib/gi18n.h>
+#include <gtk/gtk.h>
+
+#include <libempathy/empathy-debug.h>
+
+#include "empathy-ui-utils.h"
+#include "empathy-main-window.h"
+#include "empathy-theme-boxes.h"
+
+#define DEBUG_DOMAIN "FancyTheme"
+
+#define MARGIN 4
+#define HEADER_PADDING 2
+
+#define GET_PRIV(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), EMPATHY_TYPE_THEME_BOXES, EmpathyThemeBoxesPriv))
+
+typedef struct _EmpathyThemeBoxesPriv EmpathyThemeBoxesPriv;
+
+struct _EmpathyThemeBoxesPriv {
+ gchar *header_foreground;
+ gchar *header_background;
+ gchar *header_line_background;
+ gchar *text_foreground;
+ gchar *text_background;
+ gchar *action_foreground;
+ gchar *highlight_foreground;
+ gchar *time_foreground;
+ gchar *event_foreground;
+ gchar *invite_foreground;
+ gchar *link_foreground;
+};
+
+static void theme_boxes_finalize (GObject *object);
+static void theme_boxes_get_property (GObject *object,
+ guint param_id,
+ GValue *value,
+ GParamSpec *pspec);
+static void theme_boxes_set_property (GObject *object,
+ guint param_id,
+ const GValue *value,
+ GParamSpec *pspec);
+static void theme_boxes_define_theme_tags (EmpathyTheme *theme,
+ EmpathyChatView *view);
+static void theme_boxes_update_view (EmpathyTheme *theme,
+ EmpathyChatView *view);
+static void theme_boxes_append_message (EmpathyTheme *theme,
+ EmpathyChatView *view,
+ EmpathyMessage *message);
+static void theme_boxes_append_event (EmpathyTheme *theme,
+ EmpathyChatView *view,
+ const gchar *str);
+static void theme_boxes_append_timestamp (EmpathyTheme *theme,
+ EmpathyChatView *view,
+ EmpathyMessage *message,
+ gboolean show_date,
+ gboolean show_time);
+static void theme_boxes_append_spacing (EmpathyTheme *theme,
+ EmpathyChatView *view);
+
+enum {
+ PROP_0,
+ PROP_HEADER_FOREGROUND,
+ PROP_HEADER_BACKGROUND,
+ PROP_HEADER_LINE_BACKGROUND,
+ PROP_TEXT_FOREGROUND,
+ PROP_TEXT_BACKGROUND,
+ PROP_ACTION_FOREGROUND,
+ PROP_HIGHLIGHT_FOREGROUND,
+ PROP_TIME_FOREGROUND,
+ PROP_EVENT_FOREGROUND,
+ PROP_INVITE_FOREGROUND,
+ PROP_LINK_FOREGROUND
+};
+
+enum {
+ PROP_FLOP,
+ PROP_MY_PROP
+};
+
+G_DEFINE_TYPE (EmpathyThemeBoxes, empathy_theme_boxes, EMPATHY_TYPE_THEME);
+
+static void
+empathy_theme_boxes_class_init (EmpathyThemeBoxesClass *class)
+{
+ GObjectClass *object_class;
+ EmpathyThemeClass *theme_class;
+
+ object_class = G_OBJECT_CLASS (class);
+ theme_class = EMPATHY_THEME_CLASS (class);
+
+ object_class->finalize = theme_boxes_finalize;
+ object_class->get_property = theme_boxes_get_property;
+ object_class->set_property = theme_boxes_set_property;
+
+ theme_class->update_view = theme_boxes_update_view;
+ theme_class->append_message = theme_boxes_append_message;
+ theme_class->append_event = theme_boxes_append_event;
+ theme_class->append_timestamp = theme_boxes_append_timestamp;
+ theme_class->append_spacing = theme_boxes_append_spacing;
+
+ g_object_class_install_property (object_class,
+ PROP_HEADER_FOREGROUND,
+ g_param_spec_string ("header-foreground",
+ "",
+ "",
+ NULL,
+ G_PARAM_READWRITE));
+
+ g_object_class_install_property (object_class,
+ PROP_HEADER_BACKGROUND,
+ g_param_spec_string ("header-background",
+ "",
+ "",
+ NULL,
+ G_PARAM_READWRITE));
+
+ g_object_class_install_property (object_class,
+ PROP_HEADER_LINE_BACKGROUND,
+ g_param_spec_string ("header-line-background",
+ "",
+ "",
+ NULL,
+ G_PARAM_READWRITE));
+
+
+ g_object_class_install_property (object_class,
+ PROP_TEXT_FOREGROUND,
+ g_param_spec_string ("text-foreground",
+ "",
+ "",
+ NULL,
+ G_PARAM_READWRITE));
+
+ g_object_class_install_property (object_class,
+ PROP_TEXT_BACKGROUND,
+ g_param_spec_string ("text-background",
+ "",
+ "",
+ NULL,
+ G_PARAM_READWRITE));
+
+ g_object_class_install_property (object_class,
+ PROP_ACTION_FOREGROUND,
+ g_param_spec_string ("action-foreground",
+ "",
+ "",
+ NULL,
+ G_PARAM_READWRITE));
+
+ g_object_class_install_property (object_class,
+ PROP_HIGHLIGHT_FOREGROUND,
+ g_param_spec_string ("highlight-foreground",
+ "",
+ "",
+ NULL,
+ G_PARAM_READWRITE));
+
+ g_object_class_install_property (object_class,
+ PROP_TIME_FOREGROUND,
+ g_param_spec_string ("time-foreground",
+ "",
+ "",
+ NULL,
+ G_PARAM_READWRITE));
+
+ g_object_class_install_property (object_class,
+ PROP_EVENT_FOREGROUND,
+ g_param_spec_string ("event-foreground",
+ "",
+ "",
+ NULL,
+ G_PARAM_READWRITE));
+
+ g_object_class_install_property (object_class,
+ PROP_INVITE_FOREGROUND,
+ g_param_spec_string ("invite-foreground",
+ "",
+ "",
+ NULL,
+ G_PARAM_READWRITE));
+
+ g_object_class_install_property (object_class,
+ PROP_LINK_FOREGROUND,
+ g_param_spec_string ("link-foreground",
+ "",
+ "",
+ NULL,
+ G_PARAM_READWRITE));
+
+ g_type_class_add_private (object_class, sizeof (EmpathyThemeBoxesPriv));
+}
+
+static void
+empathy_theme_boxes_init (EmpathyThemeBoxes *theme)
+{
+ EmpathyThemeBoxesPriv *priv;
+
+ priv = GET_PRIV (theme);
+}
+
+static void
+theme_boxes_finalize (GObject *object)
+{
+ EmpathyThemeBoxesPriv *priv;
+
+ priv = GET_PRIV (object);
+
+ g_free (priv->header_foreground);
+ g_free (priv->header_background);
+ g_free (priv->header_line_background);
+ g_free (priv->text_foreground);
+ g_free (priv->text_background);
+ g_free (priv->action_foreground);
+ g_free (priv->highlight_foreground);
+ g_free (priv->time_foreground);
+ g_free (priv->event_foreground);
+ g_free (priv->invite_foreground);
+ g_free (priv->link_foreground);
+
+ (G_OBJECT_CLASS (empathy_theme_boxes_parent_class)->finalize) (object);
+}
+
+static void
+theme_boxes_get_property (GObject *object,
+ guint param_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ EmpathyThemeBoxesPriv *priv;
+
+ priv = GET_PRIV (object);
+
+ switch (param_id) {
+ case PROP_HEADER_FOREGROUND:
+ g_value_set_string (value, priv->header_foreground);
+ break;
+ case PROP_HEADER_BACKGROUND:
+ g_value_set_string (value, priv->header_background);
+ break;
+ case PROP_HEADER_LINE_BACKGROUND:
+ g_value_set_string (value, priv->header_line_background);
+ break;
+ case PROP_TEXT_FOREGROUND:
+ g_value_set_string (value, priv->text_foreground);
+ break;
+ case PROP_TEXT_BACKGROUND:
+ g_value_set_string (value, priv->text_background);
+ break;
+ case PROP_ACTION_FOREGROUND:
+ g_value_set_string (value, priv->action_foreground);
+ break;
+ case PROP_HIGHLIGHT_FOREGROUND:
+ g_value_set_string (value, priv->highlight_foreground);
+ break;
+ case PROP_TIME_FOREGROUND:
+ g_value_set_string (value, priv->time_foreground);
+ break;
+ case PROP_EVENT_FOREGROUND:
+ g_value_set_string (value, priv->event_foreground);
+ break;
+ case PROP_INVITE_FOREGROUND:
+ g_value_set_string (value, priv->invite_foreground);
+ break;
+ case PROP_LINK_FOREGROUND:
+ g_value_set_string (value, priv->link_foreground);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
+ break;
+ }
+}
+static void
+theme_boxes_set_property (GObject *object,
+ guint param_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ EmpathyThemeBoxesPriv *priv;
+
+ priv = GET_PRIV (object);
+
+ switch (param_id) {
+ case PROP_HEADER_FOREGROUND:
+ g_free (priv->header_foreground);
+ priv->header_foreground = g_value_dup_string (value);
+ g_object_notify (object, "header-foreground");
+ break;
+ case PROP_HEADER_BACKGROUND:
+ g_free (priv->header_background);
+ priv->header_background = g_value_dup_string (value);
+ g_object_notify (object, "header-background");
+ break;
+ case PROP_HEADER_LINE_BACKGROUND:
+ g_free (priv->header_line_background);
+ priv->header_line_background = g_value_dup_string (value);
+ g_object_notify (object, "header-line_background");
+ break;
+ case PROP_TEXT_FOREGROUND:
+ g_free (priv->text_foreground);
+ priv->text_foreground = g_value_dup_string (value);
+ g_object_notify (object, "text-foreground");
+ break;
+ case PROP_TEXT_BACKGROUND:
+ g_free (priv->text_background);
+ priv->text_background = g_value_dup_string (value);
+ g_object_notify (object, "text-background");
+ break;
+ case PROP_ACTION_FOREGROUND:
+ g_free (priv->action_foreground);
+ priv->action_foreground = g_value_dup_string (value);
+ g_object_notify (object, "action-foreground");
+ break;
+ case PROP_HIGHLIGHT_FOREGROUND:
+ g_free (priv->highlight_foreground);
+ priv->highlight_foreground = g_value_dup_string (value);
+ g_object_notify (object, "highlight-foreground");
+ break;
+ case PROP_TIME_FOREGROUND:
+ g_free (priv->time_foreground);
+ priv->time_foreground = g_value_dup_string (value);
+ g_object_notify (object, "time-foreground");
+ break;
+ case PROP_EVENT_FOREGROUND:
+ g_free (priv->event_foreground);
+ priv->event_foreground = g_value_dup_string (value);
+ g_object_notify (object, "event-foreground");
+ break;
+ case PROP_INVITE_FOREGROUND:
+ g_free (priv->invite_foreground);
+ priv->invite_foreground = g_value_dup_string (value);
+ g_object_notify (object, "invite-foreground");
+ break;
+ case PROP_LINK_FOREGROUND:
+ g_free (priv->link_foreground);
+ priv->link_foreground = g_value_dup_string (value);
+ g_object_notify (object, "link-foreground");
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
+ break;
+ }
+}
+
+static void
+theme_boxes_define_theme_tags (EmpathyTheme *theme, EmpathyChatView *view)
+{
+ EmpathyThemeBoxesPriv *priv;
+ GtkTextBuffer *buffer;
+ GtkTextTag *tag;
+
+ priv = GET_PRIV (theme);
+
+ buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
+
+ empathy_text_buffer_tag_set (buffer, "fancy-spacing",
+ "size", 3000,
+ "pixels-above-lines", 8,
+ NULL);
+
+ tag = empathy_text_buffer_tag_set (buffer, "fancy-header",
+ "weight", PANGO_WEIGHT_BOLD,
+ "pixels-above-lines", HEADER_PADDING,
+ "pixels-below-lines", HEADER_PADDING,
+ NULL);
+ if (priv->header_foreground) {
+ g_object_set (tag,
+ "foreground", priv->header_foreground,
+ "paragraph-background", priv->header_background,
+ NULL);
+ }
+
+ tag = empathy_text_buffer_tag_set (buffer, "fancy-header-line",
+ "size", 1,
+ NULL);
+ if (priv->header_line_background) {
+ g_object_set (tag,
+ "paragraph-background", priv->header_line_background,
+ NULL);
+ }
+
+ tag = empathy_text_buffer_tag_set (buffer, "fancy-body",
+ "pixels-above-lines", 4,
+ NULL);
+ if (priv->text_background) {
+ g_object_set (tag,
+ "paragraph-background", priv->text_background,
+ NULL);
+ }
+
+ if (priv->text_foreground) {
+ g_object_set (tag,
+ "foreground", priv->text_foreground,
+ NULL);
+ }
+
+ tag = empathy_text_buffer_tag_set (buffer, "fancy-action",
+ "style", PANGO_STYLE_ITALIC,
+ "pixels-above-lines", 4,
+ NULL);
+
+ if (priv->text_background) {
+ g_object_set (tag,
+ "paragraph-background", priv->text_background,
+ NULL);
+ }
+
+ if (priv->action_foreground) {
+ g_object_set (tag,
+ "foreground", priv->action_foreground,
+ NULL);
+ }
+
+ tag = empathy_text_buffer_tag_set (buffer, "fancy-highlight",
+ "weight", PANGO_WEIGHT_BOLD,
+ "pixels-above-lines", 4,
+ NULL);
+ if (priv->text_background) {
+ g_object_set (tag,
+ "paragraph-background", priv->text_background,
+ NULL);
+ }
+
+
+ if (priv->highlight_foreground) {
+ g_object_set (tag,
+ "foreground", priv->highlight_foreground,
+ NULL);
+ }
+
+ tag = empathy_text_buffer_tag_set (buffer, "fancy-time",
+ "justification", GTK_JUSTIFY_CENTER,
+ NULL);
+ if (priv->time_foreground) {
+ g_object_set (tag,
+ "foreground", priv->time_foreground,
+ NULL);
+ }
+
+ tag = empathy_text_buffer_tag_set (buffer, "fancy-event",
+ "justification", GTK_JUSTIFY_LEFT,
+ NULL);
+ if (priv->event_foreground) {
+ g_object_set (tag,
+ "foreground", priv->event_foreground,
+ NULL);
+ }
+
+ tag = empathy_text_buffer_tag_set (buffer, "invite", NULL);
+ if (priv->invite_foreground) {
+ g_object_set (tag,
+ "foreground", priv->invite_foreground,
+ NULL);
+ }
+
+ tag = empathy_text_buffer_tag_set (buffer, "fancy-link",
+ "underline", PANGO_UNDERLINE_SINGLE,
+ NULL);
+ if (priv->link_foreground) {
+ g_object_set (tag,
+ "foreground", priv->link_foreground,
+ NULL);
+ }
+}
+
+static void
+theme_boxes_update_view (EmpathyTheme *theme, EmpathyChatView *view)
+{
+ EmpathyThemeBoxesPriv *priv;
+
+ g_return_if_fail (EMPATHY_IS_THEME_BOXES (theme));
+ g_return_if_fail (EMPATHY_IS_CHAT_VIEW (view));
+
+ priv = GET_PRIV (theme);
+
+ theme_boxes_define_theme_tags (theme, view);
+
+ empathy_chat_view_set_margin (view, MARGIN);
+}
+
+static void
+table_size_allocate_cb (GtkWidget *view,
+ GtkAllocation *allocation,
+ GtkWidget *box)
+{
+ gint width, height;
+
+ gtk_widget_get_size_request (box, NULL, &height);
+
+ width = allocation->width;
+
+ width -= \
+ gtk_text_view_get_right_margin (GTK_TEXT_VIEW (view)) - \
+ gtk_text_view_get_left_margin (GTK_TEXT_VIEW (view));
+ width -= 2 * MARGIN;
+ width -= 2 * HEADER_PADDING;
+
+ gtk_widget_set_size_request (box, width, height);
+}
+
+static void
+theme_boxes_maybe_append_header (EmpathyTheme *theme,
+ EmpathyChatView *view,
+ EmpathyMessage *msg)
+{
+ EmpathyThemeBoxesPriv *priv;
+ EmpathyContact *contact;
+ GdkPixbuf *avatar = NULL;
+ GtkTextBuffer *buffer;
+ const gchar *name;
+ gboolean header;
+ GtkTextIter iter;
+ GtkWidget *label1, *label2;
+ GtkTextChildAnchor *anchor;
+ GtkWidget *box;
+ gchar *str;
+ time_t time;
+ gchar *tmp;
+ GtkTextIter start;
+ GdkColor color;
+ gboolean parse_success;
+ gboolean from_self;
+
+ priv = GET_PRIV (theme);
+
+ contact = empathy_message_get_sender (msg);
+ from_self = empathy_contact_is_user (contact);
+ buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
+
+ empathy_debug (DEBUG_DOMAIN, "Maybe add fancy header");
+
+ name = empathy_contact_get_name (contact);
+
+ header = FALSE;
+
+ /* Only insert a header if the previously inserted block is not the same
+ * as this one. This catches all the different cases:
+ */
+ if (empathy_chat_view_get_last_block_type (view) != EMPATHY_CHAT_VIEW_BLOCK_SELF &&
+ empathy_chat_view_get_last_block_type (view) != EMPATHY_CHAT_VIEW_BLOCK_OTHER) {
+ header = TRUE;
+ }
+ else if (from_self &&
+ empathy_chat_view_get_last_block_type (view) == EMPATHY_CHAT_VIEW_BLOCK_OTHER) {
+ header = TRUE;
+ }
+ else if (!from_self &&
+ empathy_chat_view_get_last_block_type (view) == EMPATHY_CHAT_VIEW_BLOCK_SELF) {
+ header = TRUE;
+ }
+ else if (!from_self &&
+ (!empathy_chat_view_get_last_contact (view) ||
+ !empathy_contact_equal (contact, empathy_chat_view_get_last_contact (view)))) {
+ header = TRUE;
+ }
+
+ if (!header) {
+ return;
+ }
+
+ empathy_theme_append_spacing (theme, view);
+
+ gtk_text_buffer_get_end_iter (buffer, &iter);
+ gtk_text_buffer_insert_with_tags_by_name (buffer,
+ &iter,
+ "\n",
+ -1,
+ "fancy-header-line",
+ NULL);
+
+ gtk_text_buffer_get_end_iter (buffer, &iter);
+ anchor = gtk_text_buffer_create_child_anchor (buffer, &iter);
+
+ box = gtk_hbox_new (FALSE, 0);
+
+
+ if (empathy_theme_get_show_avatars (theme)) {
+ avatar = empathy_chat_view_get_avatar_pixbuf_with_cache (contact);
+ if (avatar) {
+ GtkWidget *image;
+
+ image = gtk_image_new_from_pixbuf (avatar);
+
+ gtk_box_pack_start (GTK_BOX (box), image,
+ FALSE, TRUE, 2);
+ }
+ }
+
+ g_signal_connect_object (view, "size-allocate",
+ G_CALLBACK (table_size_allocate_cb),
+ box, 0);
+
+ str = g_strdup_printf ("<b>%s</b>", name);
+
+ label1 = g_object_new (GTK_TYPE_LABEL,
+ "label", str,
+ "use-markup", TRUE,
+ "xalign", 0.0,
+ NULL);
+
+ parse_success = priv->header_foreground &&
+ gdk_color_parse (priv->header_foreground, &color);
+
+ if (parse_success) {
+ gtk_widget_modify_fg (label1, GTK_STATE_NORMAL, &color);
+ }
+
+ g_free (str);
+
+ time = empathy_message_get_timestamp (msg);
+
+ tmp = empathy_time_to_string_local (time,
+ EMPATHY_TIME_FORMAT_DISPLAY_SHORT);
+ str = g_strdup_printf ("<i>%s</i>", tmp);
+ g_free (tmp);
+
+ label2 = g_object_new (GTK_TYPE_LABEL,
+ "label", str,
+ "use-markup", TRUE,
+ "xalign", 1.0,
+ NULL);
+
+ if (parse_success) {
+ gtk_widget_modify_fg (label2, GTK_STATE_NORMAL, &color);
+ }
+
+ g_free (str);
+
+ gtk_misc_set_alignment (GTK_MISC (label1), 0.0, 0.5);
+ gtk_misc_set_alignment (GTK_MISC (label2), 1.0, 0.5);
+
+ gtk_box_pack_start (GTK_BOX (box), label1, TRUE, TRUE, 0);
+ gtk_box_pack_start (GTK_BOX (box), label2, TRUE, TRUE, 0);
+
+ gtk_text_view_add_child_at_anchor (GTK_TEXT_VIEW (view),
+ box,
+ anchor);
+
+ gtk_widget_show_all (box);
+
+ gtk_text_buffer_get_end_iter (buffer, &iter);
+ start = iter;
+ gtk_text_iter_backward_char (&start);
+ gtk_text_buffer_apply_tag_by_name (buffer,
+ "fancy-header",
+ &start, &iter);
+
+ gtk_text_buffer_insert_with_tags_by_name (buffer,
+ &iter,
+ "\n",
+ -1,
+ "fancy-header",
+ NULL);
+
+ gtk_text_buffer_get_end_iter (buffer, &iter);
+ gtk_text_buffer_insert_with_tags_by_name (buffer,
+ &iter,
+ "\n",
+ -1,
+ "fancy-header-line",
+ NULL);
+}
+
+static void
+theme_boxes_append_message (EmpathyTheme *theme,
+ EmpathyChatView *view,
+ EmpathyMessage *message)
+{
+ EmpathyContact *sender;
+
+ empathy_theme_maybe_append_date_and_time (theme, view, message);
+ theme_boxes_maybe_append_header (theme, view, message);
+
+ sender = empathy_message_get_sender (message);
+
+ if (empathy_message_get_type (message) == EMPATHY_MESSAGE_TYPE_ACTION) {
+ gchar *body;
+
+ body = g_strdup_printf (" * %s %s",
+ empathy_contact_get_name (sender),
+ empathy_message_get_body (message));
+ empathy_theme_append_text (theme, view, body,
+ "fancy-action", "fancy-link");
+ } else {
+ empathy_theme_append_text (theme, view,
+ empathy_message_get_body (message),
+ "fancy-body", "fancy-link");
+ }
+
+ if (empathy_contact_is_user (sender)) {
+ empathy_chat_view_set_last_block_type (view, EMPATHY_CHAT_VIEW_BLOCK_SELF);
+ empathy_chat_view_set_last_contact (view, NULL);
+ } else {
+ empathy_chat_view_set_last_block_type (view, EMPATHY_CHAT_VIEW_BLOCK_OTHER);
+ empathy_chat_view_set_last_contact (view, sender);
+ }
+}
+
+static void
+theme_boxes_append_event (EmpathyTheme *theme,
+ EmpathyChatView *view,
+ const gchar *str)
+{
+ GtkTextBuffer *buffer;
+ GtkTextIter iter;
+ gchar *msg;
+
+ buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
+
+ empathy_theme_maybe_append_date_and_time (theme, view, NULL);
+
+ gtk_text_buffer_get_end_iter (buffer, &iter);
+
+ msg = g_strdup_printf (" - %s\n", str);
+
+ gtk_text_buffer_insert_with_tags_by_name (buffer, &iter,
+ msg, -1,
+ "fancy-event",
+ NULL);
+ g_free (msg);
+
+ empathy_chat_view_set_last_block_type (view, EMPATHY_CHAT_VIEW_BLOCK_EVENT);
+}
+
+static void
+theme_boxes_append_timestamp (EmpathyTheme *theme,
+ EmpathyChatView *view,
+ EmpathyMessage *message,
+ gboolean show_date,
+ gboolean show_time)
+{
+ GtkTextBuffer *buffer;
+ time_t timestamp;
+ GDate *date;
+ GtkTextIter iter;
+ GString *str;
+
+ if (!show_date) {
+ return;
+ }
+
+ buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
+
+ date = empathy_message_get_date_and_time (message, &timestamp);
+
+ str = g_string_new (NULL);
+
+ if (show_time || show_date) {
+ empathy_theme_append_spacing (theme, view);
+
+ g_string_append (str, "- ");
+ }
+
+ if (show_date) {
+ gchar buf[256];
+
+ g_date_strftime (buf, 256, _("%A %d %B %Y"), date);
+ g_string_append (str, buf);
+
+ if (show_time) {
+ g_string_append (str, ", ");
+ }
+ }
+
+ g_date_free (date);
+
+ if (show_time) {
+ gchar *tmp;
+
+ tmp = empathy_time_to_string_local (timestamp, EMPATHY_TIME_FORMAT_DISPLAY_SHORT);
+ g_string_append (str, tmp);
+ g_free (tmp);
+ }
+
+ if (show_time || show_date) {
+ g_string_append (str, " -\n");
+
+ gtk_text_buffer_get_end_iter (buffer, &iter);
+ gtk_text_buffer_insert_with_tags_by_name (buffer,
+ &iter,
+ str->str, -1,
+ "fancy-time",
+ NULL);
+
+ empathy_chat_view_set_last_block_type (view, EMPATHY_CHAT_VIEW_BLOCK_TIME);
+ empathy_chat_view_set_last_timestamp (view, timestamp);
+ }
+
+ g_string_free (str, TRUE);
+
+}
+
+static void
+theme_boxes_append_spacing (EmpathyTheme *theme,
+ EmpathyChatView *view)
+{
+ GtkTextBuffer *buffer;
+ GtkTextIter iter;
+
+ g_return_if_fail (EMPATHY_IS_THEME (theme));
+ g_return_if_fail (EMPATHY_IS_CHAT_VIEW (view));
+
+ buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
+
+ gtk_text_buffer_get_end_iter (buffer, &iter);
+ gtk_text_buffer_insert_with_tags_by_name (buffer,
+ &iter,
+ "\n",
+ -1,
+ "cut",
+ "fancy-spacing",
+ NULL);
+}
+
diff --git a/gnome-2-22/libempathy-gtk/empathy-theme-boxes.h b/gnome-2-22/libempathy-gtk/empathy-theme-boxes.h
new file mode 100644
index 000000000..b1f0033f3
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-theme-boxes.h
@@ -0,0 +1,53 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2007 Imendio AB
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * 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 __EMPATHY_THEME_BOXES_H__
+#define __EMPATHY_THEME_BOXES_H__
+
+#include <glib-object.h>
+
+#include "empathy-theme.h"
+
+G_BEGIN_DECLS
+
+#define EMPATHY_TYPE_THEME_BOXES (empathy_theme_boxes_get_type ())
+#define EMPATHY_THEME_BOXES(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), EMPATHY_TYPE_THEME_BOXES, EmpathyThemeBoxes))
+#define EMPATHY_THEME_BOXES_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), EMPATHY_TYPE_THEME_BOXES, EmpathyThemeBoxesClass))
+#define EMPATHY_IS_THEME_BOXES(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), EMPATHY_TYPE_THEME_BOXES))
+#define EMPATHY_IS_THEME_BOXES_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), EMPATHY_TYPE_THEME_BOXES))
+#define EMPATHY_THEME_BOXES_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), EMPATHY_TYPE_THEME_BOXES, EmpathyThemeBoxesClass))
+
+typedef struct _EmpathyThemeBoxes EmpathyThemeBoxes;
+typedef struct _EmpathyThemeBoxesClass EmpathyThemeBoxesClass;
+
+struct _EmpathyThemeBoxes {
+ EmpathyTheme parent;
+};
+
+struct _EmpathyThemeBoxesClass {
+ EmpathyThemeClass parent_class;
+};
+
+GType empathy_theme_boxes_get_type (void) G_GNUC_CONST;
+
+G_END_DECLS
+
+#endif /* __EMPATHY_THEME_BOXES_H__ */
+
diff --git a/gnome-2-22/libempathy-gtk/empathy-theme-irc.c b/gnome-2-22/libempathy-gtk/empathy-theme-irc.c
new file mode 100644
index 000000000..7cd9588bb
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-theme-irc.c
@@ -0,0 +1,352 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2007 Imendio AB
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * 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 <glib/gi18n.h>
+#include <libempathy/empathy-debug.h>
+
+#include "empathy-chat.h"
+#include "empathy-ui-utils.h"
+#include "empathy-theme-irc.h"
+
+#define DEBUG_DOMAIN "Theme"
+
+#define GET_PRIV(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), EMPATHY_TYPE_THEME_IRC, EmpathyThemeIrcPriv))
+
+typedef struct _EmpathyThemeIrcPriv EmpathyThemeIrcPriv;
+
+struct _EmpathyThemeIrcPriv {
+ gint my_prop;
+};
+
+static void theme_irc_finalize (GObject *object);
+static void theme_irc_update_view (EmpathyTheme *theme,
+ EmpathyChatView *view);
+static void theme_irc_append_message (EmpathyTheme *theme,
+ EmpathyChatView *view,
+ EmpathyMessage *message);
+static void theme_irc_append_event (EmpathyTheme *theme,
+ EmpathyChatView *view,
+ const gchar *str);
+static void theme_irc_append_timestamp (EmpathyTheme *theme,
+ EmpathyChatView *view,
+ EmpathyMessage *message,
+ gboolean show_date,
+ gboolean show_time);
+static void theme_irc_append_spacing (EmpathyTheme *theme,
+ EmpathyChatView *view);
+
+
+enum {
+ PROP_0,
+ PROP_MY_PROP
+};
+
+G_DEFINE_TYPE (EmpathyThemeIrc, empathy_theme_irc, EMPATHY_TYPE_THEME);
+
+static void
+empathy_theme_irc_class_init (EmpathyThemeIrcClass *class)
+{
+ GObjectClass *object_class;
+ EmpathyThemeClass *theme_class;
+
+ object_class = G_OBJECT_CLASS (class);
+ theme_class = EMPATHY_THEME_CLASS (class);
+
+ object_class->finalize = theme_irc_finalize;
+
+ theme_class->update_view = theme_irc_update_view;
+ theme_class->append_message = theme_irc_append_message;
+ theme_class->append_event = theme_irc_append_event;
+ theme_class->append_timestamp = theme_irc_append_timestamp;
+ theme_class->append_spacing = theme_irc_append_spacing;
+
+ g_type_class_add_private (object_class, sizeof (EmpathyThemeIrcPriv));
+}
+
+static void
+empathy_theme_irc_init (EmpathyThemeIrc *presence)
+{
+ EmpathyThemeIrcPriv *priv;
+
+ priv = GET_PRIV (presence);
+}
+
+static void
+theme_irc_finalize (GObject *object)
+{
+ EmpathyThemeIrcPriv *priv;
+
+ priv = GET_PRIV (object);
+
+ (G_OBJECT_CLASS (empathy_theme_irc_parent_class)->finalize) (object);
+}
+
+static void
+theme_irc_apply_theme_classic (EmpathyTheme *theme, EmpathyChatView *view)
+{
+ EmpathyThemeIrcPriv *priv;
+ GtkTextBuffer *buffer;
+
+ priv = GET_PRIV (theme);
+
+ buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
+
+ empathy_text_buffer_tag_set (buffer, "irc-spacing",
+ "size", 2000,
+ NULL);
+
+ empathy_text_buffer_tag_set (buffer, "irc-nick-self",
+ "foreground", "sea green",
+ NULL);
+
+ empathy_text_buffer_tag_set (buffer, "irc-body-self",
+ /* To get the default theme color: */
+ "foreground-set", FALSE,
+ NULL);
+
+ empathy_text_buffer_tag_set (buffer, "irc-action-self",
+ "foreground", "brown4",
+ "style", PANGO_STYLE_ITALIC,
+ NULL);
+
+ empathy_text_buffer_tag_set (buffer, "irc-nick-highlight",
+ "foreground", "indian red",
+ "weight", PANGO_WEIGHT_BOLD,
+ NULL);
+
+ empathy_text_buffer_tag_set (buffer, "irc-nick-other",
+ "foreground", "skyblue4",
+ NULL);
+
+ empathy_text_buffer_tag_set (buffer, "irc-body-other",
+ /* To get the default theme color: */
+ "foreground-set", FALSE,
+ NULL);
+
+ empathy_text_buffer_tag_set (buffer, "irc-action-other",
+ "foreground", "brown4",
+ "style", PANGO_STYLE_ITALIC,
+ NULL);
+
+ empathy_text_buffer_tag_set (buffer, "irc-time",
+ "foreground", "darkgrey",
+ "justification", GTK_JUSTIFY_CENTER,
+ NULL);
+
+ empathy_text_buffer_tag_set (buffer, "irc-event",
+ "foreground", "PeachPuff4",
+ "justification", GTK_JUSTIFY_LEFT,
+ NULL);
+
+ empathy_text_buffer_tag_set (buffer, "invite",
+ "foreground", "sienna",
+ NULL);
+
+ empathy_text_buffer_tag_set (buffer, "irc-link",
+ "foreground", "steelblue",
+ "underline", PANGO_UNDERLINE_SINGLE,
+ NULL);
+}
+
+
+static void
+theme_irc_update_view (EmpathyTheme *theme, EmpathyChatView *view)
+{
+ theme_irc_apply_theme_classic (theme, view);
+ empathy_chat_view_set_margin (view, 3);
+}
+
+static void
+theme_irc_append_message (EmpathyTheme *theme,
+ EmpathyChatView *view,
+ EmpathyMessage *message)
+{
+ GtkTextBuffer *buffer;
+ const gchar *name;
+ const gchar *nick_tag;
+ const gchar *body_tag;
+ GtkTextIter iter;
+ gchar *tmp;
+ EmpathyContact *contact;
+
+ empathy_theme_maybe_append_date_and_time (theme, view, message);
+
+ buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
+
+ contact = empathy_message_get_sender (message);
+ name = empathy_contact_get_name (contact);
+
+ if (empathy_message_get_type (message) == EMPATHY_MESSAGE_TYPE_ACTION) {
+ if (empathy_contact_is_user (contact)) {
+ body_tag = "irc-action-self";
+ } else {
+ body_tag = "irc-action-other";
+ }
+
+ tmp = g_strdup_printf (" * %s %s",
+ empathy_contact_get_name (contact),
+ empathy_message_get_body (message));
+ empathy_theme_append_text (theme, view, tmp,
+ body_tag, "irc-link");
+ g_free (tmp);
+ return;
+ }
+
+ if (empathy_contact_is_user (contact)) {
+ nick_tag = "irc-nick-self";
+ body_tag = "irc-body-self";
+ } else {
+ if (empathy_chat_should_highlight_nick (message)) {
+ nick_tag = "irc-nick-highlight";
+ } else {
+ nick_tag = "irc-nick-other";
+ }
+
+ body_tag = "irc-body-other";
+ }
+
+ gtk_text_buffer_get_end_iter (buffer, &iter);
+
+ /* The nickname. */
+ tmp = g_strdup_printf ("%s: ", name);
+ gtk_text_buffer_insert_with_tags_by_name (buffer,
+ &iter,
+ tmp,
+ -1,
+ "cut",
+ nick_tag,
+ NULL);
+ g_free (tmp);
+
+ /* The text body. */
+ empathy_theme_append_text (theme, view,
+ empathy_message_get_body (message),
+ body_tag, "irc-link");
+}
+
+static void
+theme_irc_append_event (EmpathyTheme *theme,
+ EmpathyChatView *view,
+ const gchar *str)
+{
+ GtkTextBuffer *buffer;
+ GtkTextIter iter;
+ gchar *msg;
+
+ buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
+
+ empathy_theme_maybe_append_date_and_time (theme, view, NULL);
+
+ gtk_text_buffer_get_end_iter (buffer, &iter);
+
+ msg = g_strdup_printf (" - %s\n", str);
+ gtk_text_buffer_insert_with_tags_by_name (buffer, &iter,
+ msg, -1,
+ "irc-event",
+ NULL);
+ g_free (msg);
+}
+
+static void
+theme_irc_append_timestamp (EmpathyTheme *theme,
+ EmpathyChatView *view,
+ EmpathyMessage *message,
+ gboolean show_date,
+ gboolean show_time)
+{
+ GtkTextBuffer *buffer;
+ time_t timestamp;
+ GDate *date;
+ GtkTextIter iter;
+ GString *str;
+
+ buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
+
+ date = empathy_message_get_date_and_time (message, &timestamp);
+
+ str = g_string_new (NULL);
+
+ if (show_time || show_date) {
+ empathy_theme_append_spacing (theme, view);
+
+ g_string_append (str, "- ");
+ }
+
+ if (show_date) {
+ gchar buf[256];
+
+ g_date_strftime (buf, 256, _("%A %d %B %Y"), date);
+ g_string_append (str, buf);
+
+ if (show_time) {
+ g_string_append (str, ", ");
+ }
+ }
+
+ g_date_free (date);
+
+ if (show_time) {
+ gchar *tmp;
+
+ tmp = empathy_time_to_string_local (timestamp, EMPATHY_TIME_FORMAT_DISPLAY_SHORT);
+ g_string_append (str, tmp);
+ g_free (tmp);
+ }
+
+ if (show_time || show_date) {
+ g_string_append (str, " -\n");
+
+ gtk_text_buffer_get_end_iter (buffer, &iter);
+ gtk_text_buffer_insert_with_tags_by_name (buffer,
+ &iter,
+ str->str, -1,
+ "irc-time",
+ NULL);
+
+ empathy_chat_view_set_last_timestamp (view, timestamp);
+ }
+
+ g_string_free (str, TRUE);
+}
+
+static void
+theme_irc_append_spacing (EmpathyTheme *theme,
+ EmpathyChatView *view)
+{
+ GtkTextBuffer *buffer;
+ GtkTextIter iter;
+
+ g_return_if_fail (EMPATHY_IS_THEME (theme));
+ g_return_if_fail (EMPATHY_IS_CHAT_VIEW (view));
+
+ buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
+
+ gtk_text_buffer_get_end_iter (buffer, &iter);
+ gtk_text_buffer_insert_with_tags_by_name (buffer,
+ &iter,
+ "\n",
+ -1,
+ "cut",
+ "irc-spacing",
+ NULL);
+}
+
diff --git a/gnome-2-22/libempathy-gtk/empathy-theme-irc.h b/gnome-2-22/libempathy-gtk/empathy-theme-irc.h
new file mode 100644
index 000000000..dc52a56c5
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-theme-irc.h
@@ -0,0 +1,53 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2007 Imendio AB
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * 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 __EMPATHY_THEME_IRC_H__
+#define __EMPATHY_THEME_IRC_H__
+
+#include <glib-object.h>
+
+#include "empathy-theme.h"
+
+G_BEGIN_DECLS
+
+#define EMPATHY_TYPE_THEME_IRC (empathy_theme_irc_get_type ())
+#define EMPATHY_THEME_IRC(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), EMPATHY_TYPE_THEME_IRC, EmpathyThemeIrc))
+#define EMPATHY_THEME_IRC_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), EMPATHY_TYPE_THEME_IRC, EmpathyThemeIrcClass))
+#define EMPATHY_IS_THEME_IRC(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), EMPATHY_TYPE_THEME_IRC))
+#define EMPATHY_IS_THEME_IRC_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), EMPATHY_TYPE_THEME_IRC))
+#define EMPATHY_THEME_IRC_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), EMPATHY_TYPE_THEME_IRC, EmpathyThemeIrcClass))
+
+typedef struct _EmpathyThemeIrc EmpathyThemeIrc;
+typedef struct _EmpathyThemeIrcClass EmpathyThemeIrcClass;
+
+struct _EmpathyThemeIrc {
+ EmpathyTheme parent;
+};
+
+struct _EmpathyThemeIrcClass {
+ EmpathyThemeClass parent_class;
+};
+
+GType empathy_theme_irc_get_type (void) G_GNUC_CONST;
+
+G_END_DECLS
+
+#endif /* __EMPATHY_THEME_IRC_H__ */
+
diff --git a/gnome-2-22/libempathy-gtk/empathy-theme-manager.c b/gnome-2-22/libempathy-gtk/empathy-theme-manager.c
new file mode 100644
index 000000000..94276c964
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-theme-manager.c
@@ -0,0 +1,449 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2005-2007 Imendio AB
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * 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 <glib/gi18n.h>
+#include <gtk/gtk.h>
+
+#include <libempathy/empathy-utils.h>
+
+#include "empathy-chat-view.h"
+#include "empathy-conf.h"
+#include "empathy-preferences.h"
+#include "empathy-theme.h"
+#include "empathy-theme-boxes.h"
+#include "empathy-theme-irc.h"
+#include "empathy-theme-manager.h"
+
+#define GET_PRIV(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), EMPATHY_TYPE_THEME_MANAGER, EmpathyThemeManagerPriv))
+
+typedef struct {
+ gchar *name;
+ guint name_notify_id;
+ guint room_notify_id;
+
+ gboolean show_avatars;
+ guint show_avatars_notify_id;
+
+ EmpathyTheme *clean_theme;
+ EmpathyTheme *simple_theme;
+ EmpathyTheme *blue_theme;
+ EmpathyTheme *classic_theme;
+
+ GtkSettings *settings;
+} EmpathyThemeManagerPriv;
+
+static void theme_manager_finalize (GObject *object);
+static void theme_manager_notify_name_cb (EmpathyConf *conf,
+ const gchar *key,
+ gpointer user_data);
+static void theme_manager_notify_room_cb (EmpathyConf *conf,
+ const gchar *key,
+ gpointer user_data);
+static void theme_manager_notify_show_avatars_cb (EmpathyConf *conf,
+ const gchar *key,
+ gpointer user_data);
+static void theme_manager_apply_theme (EmpathyThemeManager *manager,
+ EmpathyChatView *view,
+ const gchar *name);
+
+enum {
+ THEME_CHANGED,
+ LAST_SIGNAL
+};
+
+static guint signals[LAST_SIGNAL] = { 0 };
+
+static const gchar *themes[] = {
+ "classic", N_("Classic"),
+ "simple", N_("Simple"),
+ "clean", N_("Clean"),
+ "blue", N_("Blue"),
+ NULL
+};
+
+G_DEFINE_TYPE (EmpathyThemeManager, empathy_theme_manager, G_TYPE_OBJECT);
+
+static void
+theme_manager_gdk_color_to_hex (GdkColor *gdk_color, gchar *str_color)
+{
+ g_snprintf (str_color, 10,
+ "#%02x%02x%02x",
+ gdk_color->red >> 8,
+ gdk_color->green >> 8,
+ gdk_color->blue >> 8);
+}
+
+ static void
+theme_manager_color_hash_notify_cb (EmpathyThemeManager *manager)
+{
+ EmpathyThemeManagerPriv *priv;
+ GtkStyle *style;
+ gchar color[10];
+
+ priv = GET_PRIV (manager);
+
+ style = gtk_widget_get_default_style ();
+
+ g_object_freeze_notify (G_OBJECT (priv->simple_theme));
+
+ theme_manager_gdk_color_to_hex (&style->base[GTK_STATE_SELECTED], color);
+ g_object_set (priv->simple_theme,
+ "action-foreground", color,
+ "link-foreground", color,
+ NULL);
+
+ theme_manager_gdk_color_to_hex (&style->bg[GTK_STATE_SELECTED], color);
+ g_object_set (priv->simple_theme,
+ "header-background", color,
+ NULL);
+
+ theme_manager_gdk_color_to_hex (&style->dark[GTK_STATE_SELECTED], color);
+ g_object_set (priv->simple_theme,
+ "header-line-background", color,
+ NULL);
+
+ theme_manager_gdk_color_to_hex (&style->fg[GTK_STATE_SELECTED], color);
+ g_object_set (priv->simple_theme,
+ "header-foreground", color,
+ NULL);
+
+ g_object_thaw_notify (G_OBJECT (priv->simple_theme));
+
+#if 0
+
+FIXME: Make that work, it should update color when theme changes but it
+ doesnt seems to work with all themes.
+
+ g_object_get (priv->settings,
+ "color-hash", &color_hash,
+ NULL);
+
+ /*
+ * base_color: #ffffffffffff
+ * fg_color: #000000000000
+ * bg_color: #e6e6e7e7e8e8
+ * text_color: #000000000000
+ * selected_bg_color: #58589a9adbdb
+ * selected_fg_color: #ffffffffffff
+ */
+
+ color = g_hash_table_lookup (color_hash, "base_color");
+ if (color) {
+ theme_manager_gdk_color_to_hex (color, color_str);
+ g_object_set (priv->simple_theme,
+ "action-foreground", color_str,
+ "link-foreground", color_str,
+ NULL);
+ }
+
+ color = g_hash_table_lookup (color_hash, "selected_bg_color");
+ if (color) {
+ theme_manager_gdk_color_to_hex (color, color_str);
+ g_object_set (priv->simple_theme,
+ "header-background", color_str,
+ NULL);
+ }
+
+ color = g_hash_table_lookup (color_hash, "bg_color");
+ if (color) {
+ GdkColor tmp;
+
+ tmp = *color;
+ tmp.red /= 2;
+ tmp.green /= 2;
+ tmp.blue /= 2;
+ theme_manager_gdk_color_to_hex (&tmp, color_str);
+ g_object_set (priv->simple_theme,
+ "header-line-background", color_str,
+ NULL);
+ }
+
+ color = g_hash_table_lookup (color_hash, "selected_fg_color");
+ if (color) {
+ theme_manager_gdk_color_to_hex (color, color_str);
+ g_object_set (priv->simple_theme,
+ "header-foreground", color_str,
+ NULL);
+ }
+
+ g_hash_table_unref (color_hash);
+
+#endif
+}
+
+static void
+empathy_theme_manager_class_init (EmpathyThemeManagerClass *klass)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+ signals[THEME_CHANGED] =
+ g_signal_new ("theme-changed",
+ G_OBJECT_CLASS_TYPE (object_class),
+ G_SIGNAL_RUN_LAST,
+ 0,
+ NULL, NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE,
+ 0);
+
+ g_type_class_add_private (object_class, sizeof (EmpathyThemeManagerPriv));
+
+ object_class->finalize = theme_manager_finalize;
+}
+
+static void
+empathy_theme_manager_init (EmpathyThemeManager *manager)
+{
+ EmpathyThemeManagerPriv *priv;
+
+ priv = GET_PRIV (manager);
+
+ priv->name_notify_id =
+ empathy_conf_notify_add (empathy_conf_get (),
+ EMPATHY_PREFS_CHAT_THEME,
+ theme_manager_notify_name_cb,
+ manager);
+
+ priv->room_notify_id =
+ empathy_conf_notify_add (empathy_conf_get (),
+ EMPATHY_PREFS_CHAT_THEME_CHAT_ROOM,
+ theme_manager_notify_room_cb,
+ manager);
+
+ empathy_conf_get_string (empathy_conf_get (),
+ EMPATHY_PREFS_CHAT_THEME,
+ &priv->name);
+
+ /* Unused right now, but will be used soon. */
+ priv->show_avatars_notify_id =
+ empathy_conf_notify_add (empathy_conf_get (),
+ EMPATHY_PREFS_UI_SHOW_AVATARS,
+ theme_manager_notify_show_avatars_cb,
+ manager);
+
+ empathy_conf_get_bool (empathy_conf_get (),
+ EMPATHY_PREFS_UI_SHOW_AVATARS,
+ &priv->show_avatars);
+
+ priv->settings = gtk_settings_get_default ();
+ g_signal_connect_swapped (priv->settings, "notify::color-hash",
+ G_CALLBACK (theme_manager_color_hash_notify_cb),
+ manager);
+
+ priv->simple_theme = g_object_new (EMPATHY_TYPE_THEME_BOXES, NULL);
+ theme_manager_color_hash_notify_cb (manager);
+
+ priv->clean_theme = g_object_new (EMPATHY_TYPE_THEME_BOXES,
+ "header-foreground", "black",
+ "header-background", "#efefdf",
+ "header_line_background", "#e3e3d3",
+ "action_foreground", "brown4",
+ "time_foreground", "darkgrey",
+ "event_foreground", "darkgrey",
+ "invite_foreground", "sienna",
+ "link_foreground","#49789e",
+ NULL);
+
+ priv->blue_theme = g_object_new (EMPATHY_TYPE_THEME_BOXES,
+ "header_foreground", "black",
+ "header_background", "#88a2b4",
+ "header_line_background", "#7f96a4",
+ "text_foreground", "black",
+ "text_background", "#adbdc8",
+ "highlight_foreground", "black",
+ "action_foreground", "brown4",
+ "time_foreground", "darkgrey",
+ "event_foreground", "#7f96a4",
+ "invite_foreground", "sienna",
+ "link_foreground", "#49789e",
+ NULL);
+
+ priv->classic_theme = g_object_new (EMPATHY_TYPE_THEME_IRC, NULL);
+}
+
+static void
+theme_manager_finalize (GObject *object)
+{
+ EmpathyThemeManagerPriv *priv;
+
+ priv = GET_PRIV (object);
+
+ empathy_conf_notify_remove (empathy_conf_get (), priv->name_notify_id);
+ empathy_conf_notify_remove (empathy_conf_get (), priv->room_notify_id);
+ empathy_conf_notify_remove (empathy_conf_get (), priv->show_avatars_notify_id);
+
+ g_free (priv->name);
+
+ g_object_unref (priv->clean_theme);
+ g_object_unref (priv->simple_theme);
+ g_object_unref (priv->blue_theme);
+ g_object_unref (priv->classic_theme);
+
+ G_OBJECT_CLASS (empathy_theme_manager_parent_class)->finalize (object);
+}
+
+static void
+theme_manager_notify_name_cb (EmpathyConf *conf,
+ const gchar *key,
+ gpointer user_data)
+{
+ EmpathyThemeManager *manager;
+ EmpathyThemeManagerPriv *priv;
+ gchar *name;
+
+ manager = user_data;
+ priv = GET_PRIV (manager);
+
+ g_free (priv->name);
+
+ name = NULL;
+ if (!empathy_conf_get_string (conf, key, &name) ||
+ name == NULL || name[0] == 0) {
+ priv->name = g_strdup ("classic");
+ g_free (name);
+ } else {
+ priv->name = name;
+ }
+
+ g_signal_emit (manager, signals[THEME_CHANGED], 0, NULL);
+}
+
+static void
+theme_manager_notify_room_cb (EmpathyConf *conf,
+ const gchar *key,
+ gpointer user_data)
+{
+ g_signal_emit (user_data, signals[THEME_CHANGED], 0, NULL);
+}
+
+static void
+theme_manager_notify_show_avatars_cb (EmpathyConf *conf,
+ const gchar *key,
+ gpointer user_data)
+{
+ EmpathyThemeManager *manager;
+ EmpathyThemeManagerPriv *priv;
+ gboolean value;
+
+ manager = user_data;
+ priv = GET_PRIV (manager);
+
+ if (!empathy_conf_get_bool (conf, key, &value)) {
+ priv->show_avatars = FALSE;
+ } else {
+ priv->show_avatars = value;
+ }
+}
+
+static gboolean
+theme_manager_ensure_theme_exists (const gchar *name)
+{
+ gint i;
+
+ if (G_STR_EMPTY (name)) {
+ return FALSE;
+ }
+
+ for (i = 0; themes[i]; i += 2) {
+ if (strcmp (themes[i], name) == 0) {
+ return TRUE;
+ }
+ }
+
+ return FALSE;
+}
+
+static void
+theme_manager_apply_theme (EmpathyThemeManager *manager,
+ EmpathyChatView *view,
+ const gchar *name)
+{
+ EmpathyThemeManagerPriv *priv;
+ EmpathyTheme *theme;
+
+ priv = GET_PRIV (manager);
+
+ /* Make sure all tags are present. Note: not useful now but when we have
+ * user defined theme it will be.
+ */
+ if (theme_manager_ensure_theme_exists (name)) {
+ if (strcmp (name, "clean") == 0) {
+ theme = priv->clean_theme;
+ }
+ else if (strcmp (name, "simple") == 0) {
+ theme = priv->simple_theme;
+ }
+ else if (strcmp (name, "blue") == 0) {
+ theme = priv->blue_theme;
+ } else {
+ theme = priv->classic_theme;
+ }
+ } else {
+ theme = priv->classic_theme;
+ }
+
+ empathy_chat_view_set_theme (view, theme);
+}
+
+EmpathyThemeManager *
+empathy_theme_manager_get (void)
+{
+ static EmpathyThemeManager *manager = NULL;
+
+ if (!manager) {
+ manager = g_object_new (EMPATHY_TYPE_THEME_MANAGER, NULL);
+ }
+
+ return manager;
+}
+
+const gchar **
+empathy_theme_manager_get_themes (void)
+{
+ return themes;
+}
+
+void
+empathy_theme_manager_apply (EmpathyThemeManager *manager,
+ EmpathyChatView *view,
+ const gchar *name)
+{
+ EmpathyThemeManagerPriv *priv;
+
+ priv = GET_PRIV (manager);
+
+ theme_manager_apply_theme (manager, view, name);
+}
+
+void
+empathy_theme_manager_apply_saved (EmpathyThemeManager *manager,
+ EmpathyChatView *view)
+{
+ EmpathyThemeManagerPriv *priv;
+
+ priv = GET_PRIV (manager);
+
+ theme_manager_apply_theme (manager, view, priv->name);
+}
+
diff --git a/gnome-2-22/libempathy-gtk/empathy-theme-manager.h b/gnome-2-22/libempathy-gtk/empathy-theme-manager.h
new file mode 100644
index 000000000..6bd2d41f5
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-theme-manager.h
@@ -0,0 +1,57 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2005-2007 Imendio AB
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * 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 __EMPATHY_THEME_MANAGER_H__
+#define __EMPATHY_THEME_MANAGER_H__
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+#define EMPATHY_TYPE_THEME_MANAGER (empathy_theme_manager_get_type ())
+#define EMPATHY_THEME_MANAGER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), EMPATHY_TYPE_THEME_MANAGER, EmpathyThemeManager))
+#define EMPATHY_THEME_MANAGER_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), EMPATHY_TYPE_THEME_MANAGER, EmpathyThemeManagerClass))
+#define EMPATHY_IS_THEME_MANAGER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), EMPATHY_TYPE_THEME_MANAGER))
+#define EMPATHY_IS_THEME_MANAGER_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), EMPATHY_TYPE_THEME_MANAGER))
+#define EMPATHY_THEME_MANAGER_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), EMPATHY_TYPE_THEME_MANAGER, EmpathyThemeManagerClass))
+
+typedef struct _EmpathyThemeManager EmpathyThemeManager;
+typedef struct _EmpathyThemeManagerClass EmpathyThemeManagerClass;
+
+struct _EmpathyThemeManager {
+ GObject parent;
+};
+
+struct _EmpathyThemeManagerClass {
+ GObjectClass parent_class;
+};
+
+GType empathy_theme_manager_get_type (void) G_GNUC_CONST;
+EmpathyThemeManager *empathy_theme_manager_get (void);
+const gchar ** empathy_theme_manager_get_themes (void);
+void empathy_theme_manager_apply (EmpathyThemeManager *manager,
+ EmpathyChatView *view,
+ const gchar *theme);
+void empathy_theme_manager_apply_saved (EmpathyThemeManager *manager,
+ EmpathyChatView *view);
+
+G_END_DECLS
+
+#endif /* __EMPATHY_THEME_MANAGER_H__ */
diff --git a/gnome-2-22/libempathy-gtk/empathy-theme.c b/gnome-2-22/libempathy-gtk/empathy-theme.c
new file mode 100644
index 000000000..dae690b5c
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-theme.c
@@ -0,0 +1,417 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2007 Imendio AB
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * 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 <glib/gi18n.h>
+#include <gtk/gtk.h>
+
+#include <libempathy/empathy-debug.h>
+#include <libempathy/empathy-utils.h>
+
+#include "empathy-chat.h"
+#include "empathy-conf.h"
+#include "empathy-preferences.h"
+#include "empathy-theme.h"
+#include "empathy-smiley-manager.h"
+
+#define DEBUG_DOMAIN "Theme"
+
+/* Number of seconds between timestamps when using normal mode, 5 minutes. */
+#define TIMESTAMP_INTERVAL 300
+
+#define GET_PRIV(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), EMPATHY_TYPE_THEME, EmpathyThemePriv))
+
+typedef struct _EmpathyThemePriv EmpathyThemePriv;
+
+struct _EmpathyThemePriv {
+ EmpathySmileyManager *smiley_manager;
+ gboolean show_avatars;
+};
+
+static void theme_finalize (GObject *object);
+static void theme_get_property (GObject *object,
+ guint param_id,
+ GValue *value,
+ GParamSpec *pspec);
+static void theme_set_property (GObject *object,
+ guint param_id,
+ const GValue *value,
+ GParamSpec *pspec);
+
+
+G_DEFINE_TYPE (EmpathyTheme, empathy_theme, G_TYPE_OBJECT);
+
+enum {
+ PROP_0,
+ PROP_SHOW_AVATARS
+};
+
+static void
+empathy_theme_class_init (EmpathyThemeClass *class)
+{
+ GObjectClass *object_class;
+
+ object_class = G_OBJECT_CLASS (class);
+
+ object_class->finalize = theme_finalize;
+ object_class->get_property = theme_get_property;
+ object_class->set_property = theme_set_property;
+
+ class->update_view = NULL;
+ class->append_message = NULL;
+ class->append_event = NULL;
+ class->append_timestamp = NULL;
+ class->append_spacing = NULL;
+
+ g_object_class_install_property (object_class,
+ PROP_SHOW_AVATARS,
+ g_param_spec_boolean ("show-avatars",
+ "", "",
+ TRUE,
+ G_PARAM_READWRITE));
+
+ g_type_class_add_private (object_class, sizeof (EmpathyThemePriv));
+}
+
+static void
+empathy_theme_init (EmpathyTheme *presence)
+{
+ EmpathyThemePriv *priv;
+
+ priv = GET_PRIV (presence);
+
+ priv->smiley_manager = empathy_smiley_manager_new ();
+}
+
+static void
+theme_finalize (GObject *object)
+{
+ EmpathyThemePriv *priv;
+
+ priv = GET_PRIV (object);
+
+ if (priv->smiley_manager) {
+ g_object_unref (priv->smiley_manager);
+ }
+
+ (G_OBJECT_CLASS (empathy_theme_parent_class)->finalize) (object);
+}
+
+static void
+theme_get_property (GObject *object,
+ guint param_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ EmpathyThemePriv *priv;
+
+ priv = GET_PRIV (object);
+
+ switch (param_id) {
+ case PROP_SHOW_AVATARS:
+ g_value_set_boolean (value, priv->show_avatars);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
+ break;
+ }
+}
+
+static void
+theme_set_property (GObject *object,
+ guint param_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ EmpathyThemePriv *priv;
+
+ priv = GET_PRIV (object);
+
+ switch (param_id) {
+ case PROP_SHOW_AVATARS:
+ empathy_theme_set_show_avatars (EMPATHY_THEME (object),
+ g_value_get_boolean (value));
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
+ break;
+ }
+}
+
+void
+empathy_theme_maybe_append_date_and_time (EmpathyTheme *theme,
+ EmpathyChatView *view,
+ EmpathyMessage *message)
+{
+ time_t timestamp;
+ GDate *date, *last_date;
+ gboolean append_date, append_time;
+
+ date = empathy_message_get_date_and_time (message, &timestamp);
+
+ last_date = g_date_new ();
+ g_date_set_time (last_date, empathy_chat_view_get_last_timestamp (view));
+
+ append_date = FALSE;
+ append_time = FALSE;
+
+ if (g_date_compare (date, last_date) > 0) {
+ append_date = TRUE;
+ append_time = TRUE;
+ }
+
+ g_date_free (last_date);
+ g_date_free (date);
+
+ if (empathy_chat_view_get_last_timestamp (view) + TIMESTAMP_INTERVAL < timestamp) {
+ append_time = TRUE;
+ }
+
+ if (append_time || append_date) {
+ empathy_theme_append_timestamp (theme, view, message,
+ append_date, append_time);
+ }
+}
+
+void
+empathy_theme_update_view (EmpathyTheme *theme,
+ EmpathyChatView *view)
+{
+ if (!EMPATHY_THEME_GET_CLASS(theme)->update_view) {
+ g_error ("Theme must override update_view");
+ }
+
+ return EMPATHY_THEME_GET_CLASS(theme)->update_view (theme, view);
+}
+
+void
+empathy_theme_append_message (EmpathyTheme *theme,
+ EmpathyChatView *view,
+ EmpathyMessage *message)
+{
+ if (!EMPATHY_THEME_GET_CLASS(theme)->append_message) {
+ g_warning ("Theme should override append_message");
+ return;
+ }
+
+ EMPATHY_THEME_GET_CLASS(theme)->append_message (theme, view, message);
+}
+
+static void
+theme_insert_text_with_emoticons (GtkTextBuffer *buf,
+ GtkTextIter *iter,
+ const gchar *str,
+ EmpathySmileyManager *smiley_manager)
+{
+ gboolean use_smileys = FALSE;
+ GSList *smileys, *l;
+
+ empathy_conf_get_bool (empathy_conf_get (),
+ EMPATHY_PREFS_CHAT_SHOW_SMILEYS,
+ &use_smileys);
+
+ if (!use_smileys) {
+ gtk_text_buffer_insert (buf, iter, str, -1);
+ return;
+ }
+
+ smileys = empathy_smiley_manager_parse (smiley_manager, str);
+ for (l = smileys; l; l = l->next) {
+ EmpathySmiley *smiley;
+
+ smiley = l->data;
+ if (smiley->pixbuf) {
+ gtk_text_buffer_insert_pixbuf (buf, iter, smiley->pixbuf);
+ } else {
+ gtk_text_buffer_insert (buf, iter, smiley->str, -1);
+ }
+ empathy_smiley_free (smiley);
+ }
+ g_slist_free (smileys);
+}
+
+void
+empathy_theme_append_text (EmpathyTheme *theme,
+ EmpathyChatView *view,
+ const gchar *body,
+ const gchar *tag,
+ const gchar *link_tag)
+{
+ EmpathyThemePriv *priv;
+ GtkTextBuffer *buffer;
+ GtkTextIter start_iter, end_iter;
+ GtkTextMark *mark;
+ GtkTextIter iter;
+ gint num_matches, i;
+ GArray *start, *end;
+
+ priv = GET_PRIV (theme);
+ buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
+
+ gtk_text_buffer_get_end_iter (buffer, &start_iter);
+ mark = gtk_text_buffer_create_mark (buffer, NULL, &start_iter, TRUE);
+
+ start = g_array_new (FALSE, FALSE, sizeof (gint));
+ end = g_array_new (FALSE, FALSE, sizeof (gint));
+
+ num_matches = empathy_regex_match (EMPATHY_REGEX_ALL, body, start, end);
+
+ if (num_matches == 0) {
+ gtk_text_buffer_get_end_iter (buffer, &iter);
+ theme_insert_text_with_emoticons (buffer, &iter, body, priv->smiley_manager);
+ } else {
+ gint last = 0;
+ gint s = 0, e = 0;
+ gchar *tmp;
+
+ for (i = 0; i < num_matches; i++) {
+ s = g_array_index (start, gint, i);
+ e = g_array_index (end, gint, i);
+
+ if (s > last) {
+ tmp = empathy_substring (body, last, s);
+
+ gtk_text_buffer_get_end_iter (buffer, &iter);
+ theme_insert_text_with_emoticons (buffer,
+ &iter,
+ tmp,
+ priv->smiley_manager);
+ g_free (tmp);
+ }
+
+ tmp = empathy_substring (body, s, e);
+
+ gtk_text_buffer_get_end_iter (buffer, &iter);
+ if (!link_tag) {
+ gtk_text_buffer_insert (buffer, &iter,
+ tmp, -1);
+ } {
+ gtk_text_buffer_insert_with_tags_by_name (buffer,
+ &iter,
+ tmp,
+ -1,
+ link_tag,
+ "link",
+ NULL);
+ }
+
+ g_free (tmp);
+
+ last = e;
+ }
+
+ if (e < strlen (body)) {
+ tmp = empathy_substring (body, e, strlen (body));
+
+ gtk_text_buffer_get_end_iter (buffer, &iter);
+ theme_insert_text_with_emoticons (buffer,
+ &iter,
+ tmp,
+ priv->smiley_manager);
+ g_free (tmp);
+ }
+ }
+
+ g_array_free (start, TRUE);
+ g_array_free (end, TRUE);
+
+ gtk_text_buffer_get_end_iter (buffer, &iter);
+ gtk_text_buffer_insert (buffer, &iter, "\n", 1);
+
+ /* Apply the style to the inserted text. */
+ gtk_text_buffer_get_iter_at_mark (buffer, &start_iter, mark);
+ gtk_text_buffer_get_end_iter (buffer, &end_iter);
+
+ gtk_text_buffer_apply_tag_by_name (buffer,
+ tag,
+ &start_iter,
+ &end_iter);
+
+ gtk_text_buffer_delete_mark (buffer, mark);
+}
+
+void
+empathy_theme_append_event (EmpathyTheme *theme,
+ EmpathyChatView *view,
+ const gchar *str)
+{
+ if (!EMPATHY_THEME_GET_CLASS(theme)->append_event) {
+ return;
+ }
+
+ EMPATHY_THEME_GET_CLASS(theme)->append_event (theme, view, str);
+}
+
+void
+empathy_theme_append_spacing (EmpathyTheme *theme,
+ EmpathyChatView *view)
+{
+ if (!EMPATHY_THEME_GET_CLASS(theme)->append_spacing) {
+ return;
+ }
+
+ EMPATHY_THEME_GET_CLASS(theme)->append_spacing (theme, view);
+}
+
+
+void
+empathy_theme_append_timestamp (EmpathyTheme *theme,
+ EmpathyChatView *view,
+ EmpathyMessage *message,
+ gboolean show_date,
+ gboolean show_time)
+{
+ if (!EMPATHY_THEME_GET_CLASS(theme)->append_timestamp) {
+ return;
+ }
+
+ EMPATHY_THEME_GET_CLASS(theme)->append_timestamp (theme, view,
+ message, show_date,
+ show_time);
+}
+
+gboolean
+empathy_theme_get_show_avatars (EmpathyTheme *theme)
+{
+ EmpathyThemePriv *priv;
+
+ g_return_val_if_fail (EMPATHY_IS_THEME (theme), FALSE);
+
+ priv = GET_PRIV (theme);
+
+ return priv->show_avatars;
+}
+
+void
+empathy_theme_set_show_avatars (EmpathyTheme *theme, gboolean show)
+{
+ EmpathyThemePriv *priv;
+
+ g_return_if_fail (EMPATHY_IS_THEME (theme));
+
+ priv = GET_PRIV (theme);
+
+ priv->show_avatars = show;
+
+ g_object_notify (G_OBJECT (theme), "show-avatars");
+}
+
diff --git a/gnome-2-22/libempathy-gtk/empathy-theme.h b/gnome-2-22/libempathy-gtk/empathy-theme.h
new file mode 100644
index 000000000..34875bcb4
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-theme.h
@@ -0,0 +1,97 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2007 Imendio AB
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * 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 __EMPATHY_THEME_H__
+#define __EMPATHY_THEME_H__
+
+#include <glib-object.h>
+#include <gtk/gtktextbuffer.h>
+
+G_BEGIN_DECLS
+
+#define EMPATHY_TYPE_THEME (empathy_theme_get_type ())
+#define EMPATHY_THEME(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), EMPATHY_TYPE_THEME, EmpathyTheme))
+#define EMPATHY_THEME_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), EMPATHY_TYPE_THEME, EmpathyThemeClass))
+#define EMPATHY_IS_THEME(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), EMPATHY_TYPE_THEME))
+#define EMPATHY_IS_THEME_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), EMPATHY_TYPE_THEME))
+#define EMPATHY_THEME_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), EMPATHY_TYPE_THEME, EmpathyThemeClass))
+
+typedef struct _EmpathyTheme EmpathyTheme;
+typedef struct _EmpathyThemeClass EmpathyThemeClass;
+
+#include "empathy-chat-view.h"
+
+struct _EmpathyTheme {
+ GObject parent;
+};
+
+struct _EmpathyThemeClass {
+ GObjectClass parent_class;
+
+ /* <vtable> */
+ void (*update_view) (EmpathyTheme *theme,
+ EmpathyChatView *view);
+ void (*append_message) (EmpathyTheme *theme,
+ EmpathyChatView *view,
+ EmpathyMessage *message);
+ void (*append_event) (EmpathyTheme *theme,
+ EmpathyChatView *view,
+ const gchar *str);
+ void (*append_timestamp) (EmpathyTheme *theme,
+ EmpathyChatView *view,
+ EmpathyMessage *message,
+ gboolean show_date,
+ gboolean show_time);
+ void (*append_spacing) (EmpathyTheme *theme,
+ EmpathyChatView *view);
+};
+
+GType empathy_theme_get_type (void) G_GNUC_CONST;
+void empathy_theme_update_view (EmpathyTheme *theme,
+ EmpathyChatView *view);
+void empathy_theme_append_message (EmpathyTheme *theme,
+ EmpathyChatView *view,
+ EmpathyMessage *msg);
+void empathy_theme_append_text (EmpathyTheme *theme,
+ EmpathyChatView *view,
+ const gchar *body,
+ const gchar *tag,
+ const gchar *link_tag);
+void empathy_theme_append_spacing (EmpathyTheme *theme,
+ EmpathyChatView *view);
+void empathy_theme_append_event (EmpathyTheme *theme,
+ EmpathyChatView *view,
+ const gchar *str);
+void empathy_theme_append_timestamp (EmpathyTheme *theme,
+ EmpathyChatView *view,
+ EmpathyMessage *message,
+ gboolean show_date,
+ gboolean show_time);
+void empathy_theme_maybe_append_date_and_time (EmpathyTheme *theme,
+ EmpathyChatView *view,
+ EmpathyMessage *message);
+gboolean empathy_theme_get_show_avatars (EmpathyTheme *theme);
+void empathy_theme_set_show_avatars (EmpathyTheme *theme,
+ gboolean show);
+
+G_END_DECLS
+
+#endif /* __EMPATHY_THEME_H__ */
+
diff --git a/gnome-2-22/libempathy-gtk/empathy-ui-utils.c b/gnome-2-22/libempathy-gtk/empathy-ui-utils.c
new file mode 100644
index 000000000..80dcd4227
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-ui-utils.c
@@ -0,0 +1,1418 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2002-2007 Imendio AB
+ * Copyright (C) 2007-2008 Collabora Ltd.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * 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: Mikael Hallendal <micke@imendio.com>
+ * Richard Hult <richard@imendio.com>
+ * Martyn Russell <martyn@imendio.com>
+ * Xavier Claessens <xclaesse@gmail.com>
+ *
+ * Part of this file is copied from GtkSourceView (gtksourceiter.c):
+ * Paolo Maggi
+ * Jeroen Zwartepoorte
+ */
+
+#include <config.h>
+
+#include <string.h>
+#include <X11/Xatom.h>
+#include <gdk/gdkx.h>
+#include <glib/gi18n.h>
+#include <gtk/gtk.h>
+#include <glade/glade.h>
+#include <libgnomevfs/gnome-vfs-utils.h>
+
+#include <libmissioncontrol/mc-profile.h>
+
+#include <libempathy/empathy-debug.h>
+
+#include "empathy-ui-utils.h"
+#include "empathy-images.h"
+
+#define DEBUG_DOMAIN "UiUtils"
+
+struct SizeData {
+ gint width;
+ gint height;
+ gboolean preserve_aspect_ratio;
+};
+
+static GladeXML *
+get_glade_file (const gchar *filename,
+ const gchar *root,
+ const gchar *domain,
+ const gchar *first_required_widget,
+ va_list args)
+{
+ GladeXML *gui;
+ gchar *path;
+ const char *name;
+ GtkWidget **widget_ptr;
+
+ path = g_build_filename (g_getenv ("EMPATHY_SRCDIR"), "libempathy-gtk",
+ filename, NULL);
+ if (!g_file_test (path, G_FILE_TEST_EXISTS)) {
+ g_free (path);
+ path = g_build_filename (DATADIR, "empathy", filename, NULL);
+ }
+ empathy_debug (DEBUG_DOMAIN, "Loading glade file %s", path);
+
+ gui = glade_xml_new (path, root, domain);
+ g_free (path);
+
+ if (!gui) {
+ g_warning ("Couldn't find necessary glade file '%s'", filename);
+ }
+
+ for (name = first_required_widget; name; name = va_arg (args, char *)) {
+ widget_ptr = va_arg (args, void *);
+
+ *widget_ptr = glade_xml_get_widget (gui, name);
+
+ if (!*widget_ptr) {
+ g_warning ("Glade file '%s' is missing widget '%s'.",
+ filename, name);
+ continue;
+ }
+ }
+
+ return gui;
+}
+
+void
+empathy_glade_get_file_simple (const gchar *filename,
+ const gchar *root,
+ const gchar *domain,
+ const gchar *first_required_widget, ...)
+{
+ va_list args;
+ GladeXML *gui;
+
+ va_start (args, first_required_widget);
+
+ gui = get_glade_file (filename,
+ root,
+ domain,
+ first_required_widget,
+ args);
+
+ va_end (args);
+
+ if (gui) {
+ g_object_unref (gui);
+ }
+}
+
+GladeXML *
+empathy_glade_get_file (const gchar *filename,
+ const gchar *root,
+ const gchar *domain,
+ const gchar *first_required_widget, ...)
+{
+ va_list args;
+ GladeXML *gui;
+
+ va_start (args, first_required_widget);
+
+ gui = get_glade_file (filename,
+ root,
+ domain,
+ first_required_widget,
+ args);
+
+ va_end (args);
+
+ if (!gui) {
+ return NULL;
+ }
+
+ return gui;
+}
+
+void
+empathy_glade_connect (GladeXML *gui,
+ gpointer user_data,
+ gchar *first_widget, ...)
+{
+ va_list args;
+ const gchar *name;
+ const gchar *signal;
+ GtkWidget *widget;
+ gpointer *callback;
+
+ va_start (args, first_widget);
+
+ for (name = first_widget; name; name = va_arg (args, char *)) {
+ signal = va_arg (args, void *);
+ callback = va_arg (args, void *);
+
+ widget = glade_xml_get_widget (gui, name);
+ if (!widget) {
+ g_warning ("Glade file is missing widget '%s', aborting",
+ name);
+ continue;
+ }
+
+ g_signal_connect (widget,
+ signal,
+ G_CALLBACK (callback),
+ user_data);
+ }
+
+ va_end (args);
+}
+
+void
+empathy_glade_setup_size_group (GladeXML *gui,
+ GtkSizeGroupMode mode,
+ gchar *first_widget, ...)
+{
+ va_list args;
+ GtkWidget *widget;
+ GtkSizeGroup *size_group;
+ const gchar *name;
+
+ va_start (args, first_widget);
+
+ size_group = gtk_size_group_new (mode);
+
+ for (name = first_widget; name; name = va_arg (args, char *)) {
+ widget = glade_xml_get_widget (gui, name);
+ if (!widget) {
+ g_warning ("Glade file is missing widget '%s'", name);
+ continue;
+ }
+
+ gtk_size_group_add_widget (size_group, widget);
+ }
+
+ g_object_unref (size_group);
+
+ va_end (args);
+}
+
+const gchar *
+empathy_icon_name_from_account (McAccount *account)
+{
+ McProfile *profile;
+
+ profile = mc_account_get_profile (account);
+
+ return mc_profile_get_icon_name (profile);
+}
+
+const gchar *
+empathy_icon_name_for_presence (McPresence presence)
+{
+ switch (presence) {
+ case MC_PRESENCE_AVAILABLE:
+ return EMPATHY_IMAGE_AVAILABLE;
+ case MC_PRESENCE_DO_NOT_DISTURB:
+ return EMPATHY_IMAGE_BUSY;
+ case MC_PRESENCE_AWAY:
+ return EMPATHY_IMAGE_AWAY;
+ case MC_PRESENCE_EXTENDED_AWAY:
+ return EMPATHY_IMAGE_EXT_AWAY;
+ case MC_PRESENCE_HIDDEN:
+ return EMPATHY_IMAGE_HIDDEN;
+ case MC_PRESENCE_OFFLINE:
+ case MC_PRESENCE_UNSET:
+ return EMPATHY_IMAGE_OFFLINE;
+ default:
+ g_assert_not_reached ();
+ }
+
+ return NULL;
+}
+
+const gchar *
+empathy_icon_name_for_contact (EmpathyContact *contact)
+{
+ McPresence presence;
+
+ g_return_val_if_fail (EMPATHY_IS_CONTACT (contact),
+ EMPATHY_IMAGE_OFFLINE);
+
+ presence = empathy_contact_get_presence (contact);
+ return empathy_icon_name_for_presence (presence);
+}
+
+GdkPixbuf *
+empathy_pixbuf_from_data (gchar *data,
+ gsize data_size)
+{
+ GdkPixbufLoader *loader;
+ GdkPixbuf *pixbuf = NULL;
+ GError *error = NULL;
+
+ if (!data) {
+ return NULL;
+ }
+
+ loader = gdk_pixbuf_loader_new ();
+ if (!gdk_pixbuf_loader_write (loader, data, data_size, &error)) {
+ empathy_debug (DEBUG_DOMAIN, "Failed to write to pixbuf loader: %s",
+ error ? error->message : "No error given");
+ g_clear_error (&error);
+ g_object_unref (loader);
+ return NULL;
+ }
+ if (!gdk_pixbuf_loader_close (loader, &error)) {
+ empathy_debug (DEBUG_DOMAIN, "Failed to close pixbuf loader: %s",
+ error ? error->message : "No error given");
+ g_clear_error (&error);
+ g_object_unref (loader);
+ return NULL;
+ }
+
+ pixbuf = gdk_pixbuf_loader_get_pixbuf (loader);
+ if (pixbuf) {
+ g_object_ref (pixbuf);
+ }
+
+ g_object_unref (loader);
+
+ return pixbuf;
+}
+
+static void
+pixbuf_from_avatar_size_prepared_cb (GdkPixbufLoader *loader,
+ int width,
+ int height,
+ struct SizeData *data)
+{
+ g_return_if_fail (width > 0 && height > 0);
+
+ if (data->preserve_aspect_ratio && (data->width > 0 || data->height > 0)) {
+ if (width < data->width && height < data->height) {
+ width = width;
+ height = height;
+ }
+
+ if (data->width < 0) {
+ width = width * (double) data->height / (gdouble) height;
+ height = data->height;
+ } else if (data->height < 0) {
+ height = height * (double) data->width / (double) width;
+ width = data->width;
+ } else if ((double) height * (double) data->width >
+ (double) width * (double) data->height) {
+ width = 0.5 + (double) width * (double) data->height / (double) height;
+ height = data->height;
+ } else {
+ height = 0.5 + (double) height * (double) data->width / (double) width;
+ width = data->width;
+ }
+ } else {
+ if (data->width > 0) {
+ width = data->width;
+ }
+
+ if (data->height > 0) {
+ height = data->height;
+ }
+ }
+
+ gdk_pixbuf_loader_set_size (loader, width, height);
+}
+
+static void
+empathy_avatar_pixbuf_roundify (GdkPixbuf *pixbuf)
+{
+ gint width, height, rowstride;
+ guchar *pixels;
+
+ width = gdk_pixbuf_get_width (pixbuf);
+ height = gdk_pixbuf_get_height (pixbuf);
+ rowstride = gdk_pixbuf_get_rowstride (pixbuf);
+ pixels = gdk_pixbuf_get_pixels (pixbuf);
+
+ if (width < 6 || height < 6) {
+ return;
+ }
+
+ /* Top left */
+ pixels[3] = 0;
+ pixels[7] = 0x80;
+ pixels[11] = 0xC0;
+ pixels[rowstride + 3] = 0x80;
+ pixels[rowstride * 2 + 3] = 0xC0;
+
+ /* Top right */
+ pixels[width * 4 - 1] = 0;
+ pixels[width * 4 - 5] = 0x80;
+ pixels[width * 4 - 9] = 0xC0;
+ pixels[rowstride + (width * 4) - 1] = 0x80;
+ pixels[(2 * rowstride) + (width * 4) - 1] = 0xC0;
+
+ /* Bottom left */
+ pixels[(height - 1) * rowstride + 3] = 0;
+ pixels[(height - 1) * rowstride + 7] = 0x80;
+ pixels[(height - 1) * rowstride + 11] = 0xC0;
+ pixels[(height - 2) * rowstride + 3] = 0x80;
+ pixels[(height - 3) * rowstride + 3] = 0xC0;
+
+ /* Bottom right */
+ pixels[height * rowstride - 1] = 0;
+ pixels[(height - 1) * rowstride - 1] = 0x80;
+ pixels[(height - 2) * rowstride - 1] = 0xC0;
+ pixels[height * rowstride - 5] = 0x80;
+ pixels[height * rowstride - 9] = 0xC0;
+}
+
+static gboolean
+empathy_gdk_pixbuf_is_opaque (GdkPixbuf *pixbuf)
+{
+ gint width, height, rowstride, i;
+ guchar *pixels;
+ guchar *row;
+
+ width = gdk_pixbuf_get_width (pixbuf);
+ height = gdk_pixbuf_get_height (pixbuf);
+ rowstride = gdk_pixbuf_get_rowstride (pixbuf);
+ pixels = gdk_pixbuf_get_pixels (pixbuf);
+
+ row = pixels;
+ for (i = 3; i < rowstride; i+=4) {
+ if (row[i] < 0xfe) {
+ return FALSE;
+ }
+ }
+
+ for (i = 1; i < height - 1; i++) {
+ row = pixels + (i*rowstride);
+ if (row[3] < 0xfe || row[rowstride-1] < 0xfe) {
+ return FALSE;
+ }
+ }
+
+ row = pixels + ((height-1) * rowstride);
+ for (i = 3; i < rowstride; i+=4) {
+ if (row[i] < 0xfe) {
+ return FALSE;
+ }
+ }
+
+ return TRUE;
+}
+
+GdkPixbuf *
+empathy_pixbuf_from_avatar_scaled (EmpathyAvatar *avatar,
+ gint width,
+ gint height)
+{
+ GdkPixbuf *pixbuf;
+ GdkPixbufLoader *loader;
+ struct SizeData data;
+ GError *error = NULL;
+
+ if (!avatar) {
+ return NULL;
+ }
+
+ data.width = width;
+ data.height = height;
+ data.preserve_aspect_ratio = TRUE;
+
+ loader = gdk_pixbuf_loader_new ();
+
+ g_signal_connect (loader, "size-prepared",
+ G_CALLBACK (pixbuf_from_avatar_size_prepared_cb),
+ &data);
+
+ if (!gdk_pixbuf_loader_write (loader, avatar->data, avatar->len, &error)) {
+ g_warning ("Couldn't write avatar image:%p with "
+ "length:%" G_GSIZE_FORMAT " to pixbuf loader: %s",
+ avatar->data, avatar->len, error->message);
+ g_error_free (error);
+ return NULL;
+ }
+
+ gdk_pixbuf_loader_close (loader, NULL);
+
+ pixbuf = gdk_pixbuf_loader_get_pixbuf (loader);
+ if (!gdk_pixbuf_get_has_alpha (pixbuf)) {
+ GdkPixbuf *rounded_pixbuf;
+
+ rounded_pixbuf = gdk_pixbuf_new (GDK_COLORSPACE_RGB, TRUE, 8,
+ gdk_pixbuf_get_width (pixbuf),
+ gdk_pixbuf_get_height (pixbuf));
+ gdk_pixbuf_copy_area (pixbuf, 0, 0,
+ gdk_pixbuf_get_width (pixbuf),
+ gdk_pixbuf_get_height (pixbuf),
+ rounded_pixbuf,
+ 0, 0);
+ pixbuf = rounded_pixbuf;
+ } else {
+ g_object_ref (pixbuf);
+ }
+
+ if (empathy_gdk_pixbuf_is_opaque (pixbuf)) {
+ empathy_avatar_pixbuf_roundify (pixbuf);
+ }
+
+ g_object_unref (loader);
+
+ return pixbuf;
+}
+
+GdkPixbuf *
+empathy_pixbuf_avatar_from_contact_scaled (EmpathyContact *contact,
+ gint width,
+ gint height)
+{
+ EmpathyAvatar *avatar;
+
+ g_return_val_if_fail (EMPATHY_IS_CONTACT (contact), NULL);
+
+ avatar = empathy_contact_get_avatar (contact);
+
+ return empathy_pixbuf_from_avatar_scaled (avatar, width, height);
+}
+
+GdkPixbuf *
+empathy_pixbuf_scale_down_if_necessary (GdkPixbuf *pixbuf, gint max_size)
+{
+ gint width, height;
+ gdouble factor;
+
+ width = gdk_pixbuf_get_width (pixbuf);
+ height = gdk_pixbuf_get_height (pixbuf);
+
+ if (width > max_size || height > max_size) {
+ factor = (gdouble) max_size / MAX (width, height);
+
+ width = width * factor;
+ height = height * factor;
+
+ return gdk_pixbuf_scale_simple (pixbuf,
+ width, height,
+ GDK_INTERP_HYPER);
+ }
+
+ return g_object_ref (pixbuf);
+}
+
+GdkPixbuf *
+empathy_pixbuf_from_icon_name (const gchar *icon_name,
+ GtkIconSize icon_size)
+{
+ GtkIconTheme *theme;
+ GdkPixbuf *pixbuf = NULL;
+ GError *error = NULL;
+ gint w, h;
+ gint size = 48;
+
+ if (!icon_name) {
+ return NULL;
+ }
+
+ theme = gtk_icon_theme_get_default ();
+
+ if (gtk_icon_size_lookup (icon_size, &w, &h)) {
+ size = (w + h) / 2;
+ }
+
+ pixbuf = gtk_icon_theme_load_icon (theme,
+ icon_name,
+ size,
+ 0,
+ &error);
+ if (error) {
+ empathy_debug (DEBUG_DOMAIN, "Error loading icon: %s", error->message);
+ g_clear_error (&error);
+ }
+
+ return pixbuf;
+}
+
+/* Stolen from GtkSourceView, hence the weird intendation. Please keep it like
+ * that to make it easier to apply changes from the original code.
+ */
+#define GTK_TEXT_UNKNOWN_CHAR 0xFFFC
+
+/* this function acts like g_utf8_offset_to_pointer() except that if it finds a
+ * decomposable character it consumes the decomposition length from the given
+ * offset. So it's useful when the offset was calculated for the normalized
+ * version of str, but we need a pointer to str itself. */
+static const gchar *
+pointer_from_offset_skipping_decomp (const gchar *str, gint offset)
+{
+ gchar *casefold, *normal;
+ const gchar *p, *q;
+
+ p = str;
+ while (offset > 0)
+ {
+ q = g_utf8_next_char (p);
+ casefold = g_utf8_casefold (p, q - p);
+ normal = g_utf8_normalize (casefold, -1, G_NORMALIZE_NFD);
+ offset -= g_utf8_strlen (normal, -1);
+ g_free (casefold);
+ g_free (normal);
+ p = q;
+ }
+ return p;
+}
+
+static const gchar *
+g_utf8_strcasestr (const gchar *haystack, const gchar *needle)
+{
+ gsize needle_len;
+ gsize haystack_len;
+ const gchar *ret = NULL;
+ gchar *p;
+ gchar *casefold;
+ gchar *caseless_haystack;
+ gint i;
+
+ g_return_val_if_fail (haystack != NULL, NULL);
+ g_return_val_if_fail (needle != NULL, NULL);
+
+ casefold = g_utf8_casefold (haystack, -1);
+ caseless_haystack = g_utf8_normalize (casefold, -1, G_NORMALIZE_NFD);
+ g_free (casefold);
+
+ needle_len = g_utf8_strlen (needle, -1);
+ haystack_len = g_utf8_strlen (caseless_haystack, -1);
+
+ if (needle_len == 0)
+ {
+ ret = (gchar *)haystack;
+ goto finally_1;
+ }
+
+ if (haystack_len < needle_len)
+ {
+ ret = NULL;
+ goto finally_1;
+ }
+
+ p = (gchar*)caseless_haystack;
+ needle_len = strlen (needle);
+ i = 0;
+
+ while (*p)
+ {
+ if ((strncmp (p, needle, needle_len) == 0))
+ {
+ ret = pointer_from_offset_skipping_decomp (haystack, i);
+ goto finally_1;
+ }
+
+ p = g_utf8_next_char (p);
+ i++;
+ }
+
+finally_1:
+ g_free (caseless_haystack);
+
+ return ret;
+}
+
+static gboolean
+g_utf8_caselessnmatch (const char *s1, const char *s2,
+ gssize n1, gssize n2)
+{
+ gchar *casefold;
+ gchar *normalized_s1;
+ gchar *normalized_s2;
+ gint len_s1;
+ gint len_s2;
+ gboolean ret = FALSE;
+
+ g_return_val_if_fail (s1 != NULL, FALSE);
+ g_return_val_if_fail (s2 != NULL, FALSE);
+ g_return_val_if_fail (n1 > 0, FALSE);
+ g_return_val_if_fail (n2 > 0, FALSE);
+
+ casefold = g_utf8_casefold (s1, n1);
+ normalized_s1 = g_utf8_normalize (casefold, -1, G_NORMALIZE_NFD);
+ g_free (casefold);
+
+ casefold = g_utf8_casefold (s2, n2);
+ normalized_s2 = g_utf8_normalize (casefold, -1, G_NORMALIZE_NFD);
+ g_free (casefold);
+
+ len_s1 = strlen (normalized_s1);
+ len_s2 = strlen (normalized_s2);
+
+ if (len_s1 < len_s2)
+ goto finally_2;
+
+ ret = (strncmp (normalized_s1, normalized_s2, len_s2) == 0);
+
+finally_2:
+ g_free (normalized_s1);
+ g_free (normalized_s2);
+
+ return ret;
+}
+
+static void
+forward_chars_with_skipping (GtkTextIter *iter,
+ gint count,
+ gboolean skip_invisible,
+ gboolean skip_nontext,
+ gboolean skip_decomp)
+{
+ gint i;
+
+ g_return_if_fail (count >= 0);
+
+ i = count;
+
+ while (i > 0)
+ {
+ gboolean ignored = FALSE;
+
+ /* minimal workaround to avoid the infinite loop of bug #168247.
+ * It doesn't fix the problemjust the symptom...
+ */
+ if (gtk_text_iter_is_end (iter))
+ return;
+
+ if (skip_nontext && gtk_text_iter_get_char (iter) == GTK_TEXT_UNKNOWN_CHAR)
+ ignored = TRUE;
+
+ if (!ignored && skip_invisible &&
+ /* _gtk_text_btree_char_is_invisible (iter)*/ FALSE)
+ ignored = TRUE;
+
+ if (!ignored && skip_decomp)
+ {
+ /* being UTF8 correct sucks; this accounts for extra
+ offsets coming from canonical decompositions of
+ UTF8 characters (e.g. accented characters) which
+ g_utf8_normalize() performs */
+ gchar *normal;
+ gchar buffer[6];
+ gint buffer_len;
+
+ buffer_len = g_unichar_to_utf8 (gtk_text_iter_get_char (iter), buffer);
+ normal = g_utf8_normalize (buffer, buffer_len, G_NORMALIZE_NFD);
+ i -= (g_utf8_strlen (normal, -1) - 1);
+ g_free (normal);
+ }
+
+ gtk_text_iter_forward_char (iter);
+
+ if (!ignored)
+ --i;
+ }
+}
+
+static gboolean
+lines_match (const GtkTextIter *start,
+ const gchar **lines,
+ gboolean visible_only,
+ gboolean slice,
+ GtkTextIter *match_start,
+ GtkTextIter *match_end)
+{
+ GtkTextIter next;
+ gchar *line_text;
+ const gchar *found;
+ gint offset;
+
+ if (*lines == NULL || **lines == '\0')
+ {
+ if (match_start)
+ *match_start = *start;
+ if (match_end)
+ *match_end = *start;
+ return TRUE;
+ }
+
+ next = *start;
+ gtk_text_iter_forward_line (&next);
+
+ /* No more text in buffer, but *lines is nonempty */
+ if (gtk_text_iter_equal (start, &next))
+ return FALSE;
+
+ if (slice)
+ {
+ if (visible_only)
+ line_text = gtk_text_iter_get_visible_slice (start, &next);
+ else
+ line_text = gtk_text_iter_get_slice (start, &next);
+ }
+ else
+ {
+ if (visible_only)
+ line_text = gtk_text_iter_get_visible_text (start, &next);
+ else
+ line_text = gtk_text_iter_get_text (start, &next);
+ }
+
+ if (match_start) /* if this is the first line we're matching */
+ {
+ found = g_utf8_strcasestr (line_text, *lines);
+ }
+ else
+ {
+ /* If it's not the first line, we have to match from the
+ * start of the line.
+ */
+ if (g_utf8_caselessnmatch (line_text, *lines, strlen (line_text),
+ strlen (*lines)))
+ found = line_text;
+ else
+ found = NULL;
+ }
+
+ if (found == NULL)
+ {
+ g_free (line_text);
+ return FALSE;
+ }
+
+ /* Get offset to start of search string */
+ offset = g_utf8_strlen (line_text, found - line_text);
+
+ next = *start;
+
+ /* If match start needs to be returned, set it to the
+ * start of the search string.
+ */
+ forward_chars_with_skipping (&next, offset, visible_only, !slice, FALSE);
+ if (match_start)
+ {
+ *match_start = next;
+ }
+
+ /* Go to end of search string */
+ forward_chars_with_skipping (&next, g_utf8_strlen (*lines, -1), visible_only, !slice, TRUE);
+
+ g_free (line_text);
+
+ ++lines;
+
+ if (match_end)
+ *match_end = next;
+
+ /* pass NULL for match_start, since we don't need to find the
+ * start again.
+ */
+ return lines_match (&next, lines, visible_only, slice, NULL, match_end);
+}
+
+/* strsplit () that retains the delimiter as part of the string. */
+static gchar **
+strbreakup (const char *string,
+ const char *delimiter,
+ gint max_tokens)
+{
+ GSList *string_list = NULL, *slist;
+ gchar **str_array, *s, *casefold, *new_string;
+ guint i, n = 1;
+
+ g_return_val_if_fail (string != NULL, NULL);
+ g_return_val_if_fail (delimiter != NULL, NULL);
+
+ if (max_tokens < 1)
+ max_tokens = G_MAXINT;
+
+ s = strstr (string, delimiter);
+ if (s)
+ {
+ guint delimiter_len = strlen (delimiter);
+
+ do
+ {
+ guint len;
+
+ len = s - string + delimiter_len;
+ new_string = g_new (gchar, len + 1);
+ strncpy (new_string, string, len);
+ new_string[len] = 0;
+ casefold = g_utf8_casefold (new_string, -1);
+ g_free (new_string);
+ new_string = g_utf8_normalize (casefold, -1, G_NORMALIZE_NFD);
+ g_free (casefold);
+ string_list = g_slist_prepend (string_list, new_string);
+ n++;
+ string = s + delimiter_len;
+ s = strstr (string, delimiter);
+ } while (--max_tokens && s);
+ }
+
+ if (*string)
+ {
+ n++;
+ casefold = g_utf8_casefold (string, -1);
+ new_string = g_utf8_normalize (casefold, -1, G_NORMALIZE_NFD);
+ g_free (casefold);
+ string_list = g_slist_prepend (string_list, new_string);
+ }
+
+ str_array = g_new (gchar*, n);
+
+ i = n - 1;
+
+ str_array[i--] = NULL;
+ for (slist = string_list; slist; slist = slist->next)
+ str_array[i--] = slist->data;
+
+ g_slist_free (string_list);
+
+ return str_array;
+}
+
+gboolean
+empathy_text_iter_forward_search (const GtkTextIter *iter,
+ const gchar *str,
+ GtkTextIter *match_start,
+ GtkTextIter *match_end,
+ const GtkTextIter *limit)
+{
+ gchar **lines = NULL;
+ GtkTextIter match;
+ gboolean retval = FALSE;
+ GtkTextIter search;
+ gboolean visible_only;
+ gboolean slice;
+
+ g_return_val_if_fail (iter != NULL, FALSE);
+ g_return_val_if_fail (str != NULL, FALSE);
+
+ if (limit && gtk_text_iter_compare (iter, limit) >= 0)
+ return FALSE;
+
+ if (*str == '\0') {
+ /* If we can move one char, return the empty string there */
+ match = *iter;
+
+ if (gtk_text_iter_forward_char (&match)) {
+ if (limit && gtk_text_iter_equal (&match, limit)) {
+ return FALSE;
+ }
+
+ if (match_start) {
+ *match_start = match;
+ }
+ if (match_end) {
+ *match_end = match;
+ }
+ return TRUE;
+ } else {
+ return FALSE;
+ }
+ }
+
+ visible_only = TRUE;
+ slice = FALSE;
+
+ /* locate all lines */
+ lines = strbreakup (str, "\n", -1);
+
+ search = *iter;
+
+ do {
+ /* This loop has an inefficient worst-case, where
+ * gtk_text_iter_get_text () is called repeatedly on
+ * a single line.
+ */
+ GtkTextIter end;
+
+ if (limit && gtk_text_iter_compare (&search, limit) >= 0) {
+ break;
+ }
+
+ if (lines_match (&search, (const gchar**)lines,
+ visible_only, slice, &match, &end)) {
+ if (limit == NULL ||
+ (limit && gtk_text_iter_compare (&end, limit) <= 0)) {
+ retval = TRUE;
+
+ if (match_start) {
+ *match_start = match;
+ }
+ if (match_end) {
+ *match_end = end;
+ }
+ }
+ break;
+ }
+ } while (gtk_text_iter_forward_line (&search));
+
+ g_strfreev ((gchar**)lines);
+
+ return retval;
+}
+
+static const gchar *
+g_utf8_strrcasestr (const gchar *haystack, const gchar *needle)
+{
+ gsize needle_len;
+ gsize haystack_len;
+ const gchar *ret = NULL;
+ gchar *p;
+ gchar *casefold;
+ gchar *caseless_haystack;
+ gint i;
+
+ g_return_val_if_fail (haystack != NULL, NULL);
+ g_return_val_if_fail (needle != NULL, NULL);
+
+ casefold = g_utf8_casefold (haystack, -1);
+ caseless_haystack = g_utf8_normalize (casefold, -1, G_NORMALIZE_NFD);
+ g_free (casefold);
+
+ needle_len = g_utf8_strlen (needle, -1);
+ haystack_len = g_utf8_strlen (caseless_haystack, -1);
+
+ if (needle_len == 0)
+ {
+ ret = (gchar *)haystack;
+ goto finally_1;
+ }
+
+ if (haystack_len < needle_len)
+ {
+ ret = NULL;
+ goto finally_1;
+ }
+
+ i = haystack_len - needle_len;
+ p = g_utf8_offset_to_pointer (caseless_haystack, i);
+ needle_len = strlen (needle);
+
+ while (p >= caseless_haystack)
+ {
+ if (strncmp (p, needle, needle_len) == 0)
+ {
+ ret = pointer_from_offset_skipping_decomp (haystack, i);
+ goto finally_1;
+ }
+
+ p = g_utf8_prev_char (p);
+ i--;
+ }
+
+finally_1:
+ g_free (caseless_haystack);
+
+ return ret;
+}
+
+static gboolean
+backward_lines_match (const GtkTextIter *start,
+ const gchar **lines,
+ gboolean visible_only,
+ gboolean slice,
+ GtkTextIter *match_start,
+ GtkTextIter *match_end)
+{
+ GtkTextIter line, next;
+ gchar *line_text;
+ const gchar *found;
+ gint offset;
+
+ if (*lines == NULL || **lines == '\0')
+ {
+ if (match_start)
+ *match_start = *start;
+ if (match_end)
+ *match_end = *start;
+ return TRUE;
+ }
+
+ line = next = *start;
+ if (gtk_text_iter_get_line_offset (&next) == 0)
+ {
+ if (!gtk_text_iter_backward_line (&next))
+ return FALSE;
+ }
+ else
+ gtk_text_iter_set_line_offset (&next, 0);
+
+ if (slice)
+ {
+ if (visible_only)
+ line_text = gtk_text_iter_get_visible_slice (&next, &line);
+ else
+ line_text = gtk_text_iter_get_slice (&next, &line);
+ }
+ else
+ {
+ if (visible_only)
+ line_text = gtk_text_iter_get_visible_text (&next, &line);
+ else
+ line_text = gtk_text_iter_get_text (&next, &line);
+ }
+
+ if (match_start) /* if this is the first line we're matching */
+ {
+ found = g_utf8_strrcasestr (line_text, *lines);
+ }
+ else
+ {
+ /* If it's not the first line, we have to match from the
+ * start of the line.
+ */
+ if (g_utf8_caselessnmatch (line_text, *lines, strlen (line_text),
+ strlen (*lines)))
+ found = line_text;
+ else
+ found = NULL;
+ }
+
+ if (found == NULL)
+ {
+ g_free (line_text);
+ return FALSE;
+ }
+
+ /* Get offset to start of search string */
+ offset = g_utf8_strlen (line_text, found - line_text);
+
+ forward_chars_with_skipping (&next, offset, visible_only, !slice, FALSE);
+
+ /* If match start needs to be returned, set it to the
+ * start of the search string.
+ */
+ if (match_start)
+ {
+ *match_start = next;
+ }
+
+ /* Go to end of search string */
+ forward_chars_with_skipping (&next, g_utf8_strlen (*lines, -1), visible_only, !slice, TRUE);
+
+ g_free (line_text);
+
+ ++lines;
+
+ if (match_end)
+ *match_end = next;
+
+ /* try to match the rest of the lines forward, passing NULL
+ * for match_start so lines_match will try to match the entire
+ * line */
+ return lines_match (&next, lines, visible_only,
+ slice, NULL, match_end);
+}
+
+gboolean
+empathy_text_iter_backward_search (const GtkTextIter *iter,
+ const gchar *str,
+ GtkTextIter *match_start,
+ GtkTextIter *match_end,
+ const GtkTextIter *limit)
+{
+ gchar **lines = NULL;
+ GtkTextIter match;
+ gboolean retval = FALSE;
+ GtkTextIter search;
+ gboolean visible_only;
+ gboolean slice;
+
+ g_return_val_if_fail (iter != NULL, FALSE);
+ g_return_val_if_fail (str != NULL, FALSE);
+
+ if (limit && gtk_text_iter_compare (iter, limit) <= 0)
+ return FALSE;
+
+ if (*str == '\0')
+ {
+ /* If we can move one char, return the empty string there */
+ match = *iter;
+
+ if (gtk_text_iter_backward_char (&match))
+ {
+ if (limit && gtk_text_iter_equal (&match, limit))
+ return FALSE;
+
+ if (match_start)
+ *match_start = match;
+ if (match_end)
+ *match_end = match;
+ return TRUE;
+ }
+ else
+ {
+ return FALSE;
+ }
+ }
+
+ visible_only = TRUE;
+ slice = TRUE;
+
+ /* locate all lines */
+ lines = strbreakup (str, "\n", -1);
+
+ search = *iter;
+
+ while (TRUE)
+ {
+ /* This loop has an inefficient worst-case, where
+ * gtk_text_iter_get_text () is called repeatedly on
+ * a single line.
+ */
+ GtkTextIter end;
+
+ if (limit && gtk_text_iter_compare (&search, limit) <= 0)
+ break;
+
+ if (backward_lines_match (&search, (const gchar**)lines,
+ visible_only, slice, &match, &end))
+ {
+ if (limit == NULL || (limit &&
+ gtk_text_iter_compare (&end, limit) > 0))
+ {
+ retval = TRUE;
+
+ if (match_start)
+ *match_start = match;
+ if (match_end)
+ *match_end = end;
+ }
+ break;
+ }
+
+ if (gtk_text_iter_get_line_offset (&search) == 0)
+ {
+ if (!gtk_text_iter_backward_line (&search))
+ break;
+ }
+ else
+ {
+ gtk_text_iter_set_line_offset (&search, 0);
+ }
+ }
+
+ g_strfreev ((gchar**)lines);
+
+ return retval;
+}
+
+gboolean
+empathy_window_get_is_visible (GtkWindow *window)
+{
+ GdkWindowState state;
+ GdkWindow *gdk_window;
+
+ g_return_val_if_fail (GTK_IS_WINDOW (window), FALSE);
+
+ gdk_window = GTK_WIDGET (window)->window;
+ if (!gdk_window) {
+ return FALSE;
+ }
+
+ state = gdk_window_get_state (gdk_window);
+ if (state & (GDK_WINDOW_STATE_WITHDRAWN | GDK_WINDOW_STATE_ICONIFIED)) {
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+void
+empathy_window_iconify (GtkWindow *window, GtkStatusIcon *status_icon)
+{
+ GdkRectangle icon_location;
+ gulong data[4];
+ Display *dpy;
+ GdkWindow *gdk_window;
+
+ gtk_status_icon_get_geometry (status_icon, NULL, &icon_location, NULL);
+ gdk_window = GTK_WIDGET (window)->window;
+ dpy = gdk_x11_drawable_get_xdisplay (gdk_window);
+
+ data[0] = icon_location.x;
+ data[1] = icon_location.y;
+ data[2] = icon_location.width;
+ data[3] = icon_location.height;
+
+ XChangeProperty (dpy,
+ GDK_WINDOW_XID (gdk_window),
+ gdk_x11_get_xatom_by_name_for_display (gdk_drawable_get_display (gdk_window),
+ "_NET_WM_ICON_GEOMETRY"),
+ XA_CARDINAL, 32, PropModeReplace,
+ (guchar *)&data, 4);
+
+ gtk_window_set_skip_taskbar_hint (window, TRUE);
+ gtk_window_iconify (window);
+}
+
+/* Takes care of moving the window to the current workspace. */
+void
+empathy_window_present (GtkWindow *window,
+ gboolean steal_focus)
+{
+ guint32 timestamp;
+
+ g_return_if_fail (GTK_IS_WINDOW (window));
+
+ /* There are three cases: hidden, visible, visible on another
+ * workspace.
+ */
+
+ if (!empathy_window_get_is_visible (window)) {
+ /* Hide it so present brings it to the current workspace. */
+ gtk_widget_hide (GTK_WIDGET (window));
+ }
+
+ timestamp = gtk_get_current_event_time ();
+ gtk_window_set_skip_taskbar_hint (window, FALSE);
+ gtk_window_present_with_time (window, timestamp);
+ /* FIXME: This shouldn't be required as gtk_window_present's doc says
+ * it deiconify automatically. */
+ gtk_window_deiconify (window);
+}
+
+GtkWindow *
+empathy_get_toplevel_window (GtkWidget *widget)
+{
+ GtkWidget *toplevel;
+
+ g_return_val_if_fail (GTK_IS_WIDGET (widget), NULL);
+
+ toplevel = gtk_widget_get_toplevel (widget);
+ if (GTK_IS_WINDOW (toplevel) &&
+ GTK_WIDGET_TOPLEVEL (toplevel)) {
+ return GTK_WINDOW (toplevel);
+ }
+
+ return NULL;
+}
+
+/* The URL opening code can't handle schemeless strings, so we try to be
+ * smart and add http if there is no scheme or doesn't look like a mail
+ * address. This should work in most cases, and let us click on strings
+ * like "www.gnome.org".
+ */
+static gchar *
+fixup_url (const gchar *url)
+{
+ gchar *real_url;
+
+ if (!g_str_has_prefix (url, "http://") &&
+ !strstr (url, ":/") &&
+ !strstr (url, "@")) {
+ real_url = g_strdup_printf ("http://%s", url);
+ } else {
+ real_url = g_strdup (url);
+ }
+
+ return real_url;
+}
+
+void
+empathy_url_show (const char *url)
+{
+ gchar *real_url;
+ GnomeVFSResult res;
+
+ real_url = fixup_url (url);
+ res = gnome_vfs_url_show (real_url);
+ if (res != GNOME_VFS_OK) {
+ empathy_debug (DEBUG_DOMAIN, "Couldn't show URL %s: %s",
+ real_url,
+ gnome_vfs_result_to_string (res));
+ }
+
+ g_free (real_url);
+}
+
+static void
+link_button_hook (GtkLinkButton *button,
+ const gchar *link,
+ gpointer user_data)
+{
+ empathy_url_show (link);
+}
+
+GtkWidget *
+empathy_link_button_new (const gchar *url,
+ const gchar *title)
+{
+ static gboolean hook = FALSE;
+
+ if (!hook) {
+ hook = TRUE;
+ gtk_link_button_set_uri_hook (link_button_hook, NULL, NULL);
+ }
+
+ return gtk_link_button_new_with_label (url, title);
+}
+
+void
+empathy_toggle_button_set_state_quietly (GtkWidget *widget,
+ GCallback callback,
+ gpointer user_data,
+ gboolean active)
+{
+ g_return_if_fail (GTK_IS_TOGGLE_BUTTON (widget));
+
+ g_signal_handlers_block_by_func (widget, callback, user_data);
+ g_object_set (widget, "active", active, NULL);
+ g_signal_handlers_unblock_by_func (widget, callback, user_data);
+}
+
+GtkTextTag *
+empathy_text_buffer_tag_set (GtkTextBuffer *buffer,
+ const gchar *tag_name,
+ const gchar *first_property_name,
+ ...)
+{
+ GtkTextTagTable *table;
+ GtkTextTag *tag;
+
+ g_return_val_if_fail (GTK_IS_TEXT_BUFFER (buffer), NULL);
+ g_return_val_if_fail (tag_name != NULL, NULL);
+
+ table = gtk_text_buffer_get_tag_table (buffer);
+ tag = gtk_text_tag_table_lookup (table, tag_name);
+
+ if (!tag) {
+ tag = gtk_text_tag_new (tag_name);
+ gtk_text_tag_table_add (table, tag);
+ g_object_unref (tag);
+ } else {
+ /* Clear the old values so that we don't affect the new theme. */
+ g_object_set (tag,
+ "background-set", FALSE,
+ "foreground-set", FALSE,
+ "invisible-set", FALSE,
+ "justification-set", FALSE,
+ "paragraph-background-set", FALSE,
+ "pixels-above-lines-set", FALSE,
+ "pixels-below-lines-set", FALSE,
+ "rise-set", FALSE,
+ "scale-set", FALSE,
+ "size-set", FALSE,
+ "style-set", FALSE,
+ "weight-set", FALSE,
+ NULL);
+ }
+
+ if (first_property_name) {
+ va_list list;
+
+ va_start (list, first_property_name);
+ g_object_set_valist (G_OBJECT (tag), first_property_name, list);
+ va_end (list);
+ }
+
+ return tag;
+}
+
diff --git a/gnome-2-22/libempathy-gtk/empathy-ui-utils.h b/gnome-2-22/libempathy-gtk/empathy-ui-utils.h
new file mode 100644
index 000000000..1fb29a97d
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/empathy-ui-utils.h
@@ -0,0 +1,116 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2002-2007 Imendio AB
+ * Copyright (C) 2007 Collabora Ltd.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * 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: Mikael Hallendal <micke@imendio.com>
+ * Richard Hult <richard@imendio.com>
+ * Martyn Russell <martyn@imendio.com>
+ * Xavier Claessens <xclaesse@gmail.com>
+ *
+ * Part of this file is copied from GtkSourceView (gtksourceiter.c):
+ * Paolo Maggi
+ * Jeroen Zwartepoorte
+ */
+
+#ifndef __EMPATHY_UI_UTILS_H__
+#define __EMPATHY_UI_UTILS_H__
+
+#include <gtk/gtk.h>
+#include <glade/glade.h>
+
+#include <libmissioncontrol/mc-account.h>
+#include <libmissioncontrol/mc-profile.h>
+
+#include <libempathy/empathy-contact.h>
+#include <libempathy/empathy-avatar.h>
+
+#include "empathy-chat-view.h"
+
+G_BEGIN_DECLS
+
+#define G_STR_EMPTY(x) ((x) == NULL || (x)[0] == '\0')
+
+/* Glade */
+void empathy_glade_get_file_simple (const gchar *filename,
+ const gchar *root,
+ const gchar *domain,
+ const gchar *first_required_widget,
+ ...);
+GladeXML * empathy_glade_get_file (const gchar *filename,
+ const gchar *root,
+ const gchar *domain,
+ const gchar *first_required_widget,
+ ...);
+void empathy_glade_connect (GladeXML *gui,
+ gpointer user_data,
+ gchar *first_widget,
+ ...);
+void empathy_glade_setup_size_group (GladeXML *gui,
+ GtkSizeGroupMode mode,
+ gchar *first_widget,
+ ...);
+/* Pixbufs */
+const gchar * empathy_icon_name_from_account (McAccount *account);
+const gchar * empathy_icon_name_for_presence (McPresence presence);
+const gchar * empathy_icon_name_for_contact (EmpathyContact *contact);
+GdkPixbuf * empathy_pixbuf_from_data (gchar *data,
+ gsize data_size);
+GdkPixbuf * empathy_pixbuf_from_avatar_scaled (EmpathyAvatar *avatar,
+ gint width,
+ gint height);
+GdkPixbuf * empathy_pixbuf_avatar_from_contact_scaled (EmpathyContact *contact,
+ gint width,
+ gint height);
+GdkPixbuf * empathy_pixbuf_scale_down_if_necessary (GdkPixbuf *pixbuf,
+ gint max_size);
+GdkPixbuf * empathy_pixbuf_from_icon_name (const gchar *icon_name,
+ GtkIconSize icon_size);
+/* Text view */
+gboolean empathy_text_iter_forward_search (const GtkTextIter*iter,
+ const gchar *str,
+ GtkTextIter *match_start,
+ GtkTextIter *match_end,
+ const GtkTextIter*limit);
+gboolean empathy_text_iter_backward_search (const GtkTextIter*iter,
+ const gchar *str,
+ GtkTextIter *match_start,
+ GtkTextIter *match_end,
+ const GtkTextIter*limit);
+/* Windows */
+gboolean empathy_window_get_is_visible (GtkWindow *window);
+void empathy_window_present (GtkWindow *window,
+ gboolean steal_focus);
+void empathy_window_iconify (GtkWindow *window,
+ GtkStatusIcon *status_icon);
+GtkWindow * empathy_get_toplevel_window (GtkWidget *widget);
+void empathy_url_show (const char *url);
+void empathy_toggle_button_set_state_quietly (GtkWidget *widget,
+ GCallback callback,
+ gpointer user_data,
+ gboolean active);
+GtkWidget * empathy_link_button_new (const gchar *url,
+ const gchar *title);
+GtkTextTag *empathy_text_buffer_tag_set (GtkTextBuffer *buffer,
+ const gchar *tag_name,
+ const gchar *first_property_name,
+ ...);
+
+G_END_DECLS
+
+#endif /* __EMPATHY_UI_UTILS_H__ */
diff --git a/gnome-2-22/libempathy-gtk/ephy-spinner.c b/gnome-2-22/libempathy-gtk/ephy-spinner.c
new file mode 100644
index 000000000..a8f371df3
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/ephy-spinner.c
@@ -0,0 +1,977 @@
+/*
+ * Copyright © 2000 Eazel, Inc.
+ * Copyright © 2002-2004 Marco Pesenti Gritti
+ * Copyright © 2004, 2006 Christian Persch
+ *
+ * Nautilus is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * Nautilus is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public 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: Andy Hertzfeld <andy@eazel.com>
+ *
+ * Ephy port by Marco Pesenti Gritti <marco@it.gnome.org>
+ *
+ * $Id: ephy-spinner.c 2114 2006-12-25 12:15:00Z mr $
+ */
+
+#include "config.h"
+
+#include "ephy-spinner.h"
+
+/* #include "ephy-debug.h" */
+#define LOG(msg, args...)
+#define START_PROFILER(name)
+#define STOP_PROFILER(name)
+
+#include <gdk-pixbuf/gdk-pixbuf.h>
+#include <gtk/gtkicontheme.h>
+#include <gtk/gtkiconfactory.h>
+#include <gtk/gtksettings.h>
+
+/* Spinner cache implementation */
+
+#define EPHY_TYPE_SPINNER_CACHE (ephy_spinner_cache_get_type())
+#define EPHY_SPINNER_CACHE(object) (G_TYPE_CHECK_INSTANCE_CAST((object), EPHY_TYPE_SPINNER_CACHE, EphySpinnerCache))
+#define EPHY_SPINNER_CACHE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), EPHY_TYPE_SPINNER_CACHE, EphySpinnerCacheClass))
+#define EPHY_IS_SPINNER_CACHE(object) (G_TYPE_CHECK_INSTANCE_TYPE((object), EPHY_TYPE_SPINNER_CACHE))
+#define EPHY_IS_SPINNER_CACHE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), EPHY_TYPE_SPINNER_CACHE))
+#define EPHY_SPINNER_CACHE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), EPHY_TYPE_SPINNER_CACHE, EphySpinnerCacheClass))
+
+typedef struct _EphySpinnerCache EphySpinnerCache;
+typedef struct _EphySpinnerCacheClass EphySpinnerCacheClass;
+typedef struct _EphySpinnerCachePrivate EphySpinnerCachePrivate;
+
+struct _EphySpinnerCacheClass
+{
+ GObjectClass parent_class;
+};
+
+struct _EphySpinnerCache
+{
+ GObject parent_object;
+
+ /*< private >*/
+ EphySpinnerCachePrivate *priv;
+};
+
+#define EPHY_SPINNER_CACHE_GET_PRIVATE(object)(G_TYPE_INSTANCE_GET_PRIVATE ((object), EPHY_TYPE_SPINNER_CACHE, EphySpinnerCachePrivate))
+
+struct _EphySpinnerCachePrivate
+{
+ /* Hash table of GdkScreen -> EphySpinnerCacheData */
+ GHashTable *hash;
+};
+
+typedef struct
+{
+ guint ref_count;
+ GtkIconSize size;
+ int width;
+ int height;
+ GdkPixbuf **animation_pixbufs;
+ guint n_animation_pixbufs;
+} EphySpinnerImages;
+
+#define LAST_ICON_SIZE GTK_ICON_SIZE_DIALOG + 1
+#define SPINNER_ICON_NAME "process-working"
+#define SPINNER_FALLBACK_ICON_NAME "gnome-spinner"
+#define EPHY_SPINNER_IMAGES_INVALID ((EphySpinnerImages *) 0x1)
+
+typedef struct
+{
+ GdkScreen *screen;
+ GtkIconTheme *icon_theme;
+ EphySpinnerImages *images[LAST_ICON_SIZE];
+} EphySpinnerCacheData;
+
+static void ephy_spinner_cache_class_init (EphySpinnerCacheClass *klass);
+static void ephy_spinner_cache_init (EphySpinnerCache *cache);
+
+static GObjectClass *ephy_spinner_cache_parent_class;
+
+static GType
+ephy_spinner_cache_get_type (void)
+{
+ static GType type = 0;
+
+ if (G_UNLIKELY (type == 0))
+ {
+ const GTypeInfo our_info =
+ {
+ sizeof (EphySpinnerCacheClass),
+ NULL,
+ NULL,
+ (GClassInitFunc) ephy_spinner_cache_class_init,
+ NULL,
+ NULL,
+ sizeof (EphySpinnerCache),
+ 0,
+ (GInstanceInitFunc) ephy_spinner_cache_init
+ };
+
+ type = g_type_register_static (G_TYPE_OBJECT,
+ "EphySpinnerCache",
+ &our_info, 0);
+ }
+
+ return type;
+}
+
+static EphySpinnerImages *
+ephy_spinner_images_ref (EphySpinnerImages *images)
+{
+ g_return_val_if_fail (images != NULL, NULL);
+
+ images->ref_count++;
+
+ return images;
+}
+
+static void
+ephy_spinner_images_unref (EphySpinnerImages *images)
+{
+ g_return_if_fail (images != NULL);
+
+ images->ref_count--;
+ if (images->ref_count == 0)
+ {
+ guint i;
+
+ LOG ("Freeing spinner images %p for size %d", images, images->size);
+
+ for (i = 0; i < images->n_animation_pixbufs; ++i)
+ {
+ g_object_unref (images->animation_pixbufs[i]);
+ }
+ g_free (images->animation_pixbufs);
+
+ g_free (images);
+ }
+}
+
+static void
+ephy_spinner_cache_data_unload (EphySpinnerCacheData *data)
+{
+ GtkIconSize size;
+ EphySpinnerImages *images;
+
+ g_return_if_fail (data != NULL);
+
+ LOG ("EphySpinnerDataCache unload for screen %p", data->screen);
+
+ for (size = GTK_ICON_SIZE_INVALID; size < LAST_ICON_SIZE; ++size)
+ {
+ images = data->images[size];
+ data->images[size] = NULL;
+
+ if (images != NULL && images != EPHY_SPINNER_IMAGES_INVALID)
+ {
+ ephy_spinner_images_unref (images);
+ }
+ }
+}
+
+static GdkPixbuf *
+extract_frame (GdkPixbuf *grid_pixbuf,
+ int x,
+ int y,
+ int size)
+{
+ GdkPixbuf *pixbuf;
+
+ if (x + size > gdk_pixbuf_get_width (grid_pixbuf) ||
+ y + size > gdk_pixbuf_get_height (grid_pixbuf))
+ {
+ return NULL;
+ }
+
+ pixbuf = gdk_pixbuf_new_subpixbuf (grid_pixbuf,
+ x, y,
+ size, size);
+ g_return_val_if_fail (pixbuf != NULL, NULL);
+
+ return pixbuf;
+}
+
+static GdkPixbuf *
+scale_to_size (GdkPixbuf *pixbuf,
+ int dw,
+ int dh)
+{
+ GdkPixbuf *result;
+ int pw, ph;
+
+ g_return_val_if_fail (pixbuf != NULL, NULL);
+
+ pw = gdk_pixbuf_get_width (pixbuf);
+ ph = gdk_pixbuf_get_height (pixbuf);
+
+ if (pw != dw || ph != dh)
+ {
+ result = gdk_pixbuf_scale_simple (pixbuf, dw, dh,
+ GDK_INTERP_BILINEAR);
+ g_object_unref (pixbuf);
+ return result;
+ }
+
+ return pixbuf;
+}
+
+static EphySpinnerImages *
+ephy_spinner_images_load (GdkScreen *screen,
+ GtkIconTheme *icon_theme,
+ GtkIconSize icon_size)
+{
+ EphySpinnerImages *images;
+ GdkPixbuf *icon_pixbuf, *pixbuf;
+ GtkIconInfo *icon_info = NULL;
+ int grid_width, grid_height, x, y, requested_size, size, isw, ish, n;
+ const char *icon;
+ GSList *list = NULL, *l;
+
+ LOG ("EphySpinnerCacheData loading for screen %p at size %d", screen, icon_size);
+
+ START_PROFILER ("loading spinner animation")
+
+ if (!gtk_icon_size_lookup_for_settings (gtk_settings_get_for_screen (screen),
+ icon_size, &isw, &ish)) goto loser;
+
+ requested_size = MAX (ish, isw);
+
+ /* Load the animation. The 'rest icon' is the 0th frame */
+ icon_info = gtk_icon_theme_lookup_icon (icon_theme,
+ SPINNER_ICON_NAME,
+ requested_size, 0);
+ if (icon_info == NULL)
+ {
+ g_warning ("Throbber animation not found");
+
+ /* If the icon naming spec compliant name wasn't found, try the old name */
+ icon_info = gtk_icon_theme_lookup_icon (icon_theme,
+ SPINNER_FALLBACK_ICON_NAME,
+ requested_size, 0);
+ if (icon_info == NULL)
+ {
+ g_warning ("Throbber fallback animation not found either");
+ goto loser;
+ }
+ }
+ g_assert (icon_info != NULL);
+
+ size = gtk_icon_info_get_base_size (icon_info);
+ icon = gtk_icon_info_get_filename (icon_info);
+ if (icon == NULL) goto loser;
+
+ icon_pixbuf = gdk_pixbuf_new_from_file (icon, NULL);
+ gtk_icon_info_free (icon_info);
+ icon_info = NULL;
+
+ if (icon_pixbuf == NULL)
+ {
+ g_warning ("Could not load the spinner file");
+ goto loser;
+ }
+
+ grid_width = gdk_pixbuf_get_width (icon_pixbuf);
+ grid_height = gdk_pixbuf_get_height (icon_pixbuf);
+
+ n = 0;
+ for (y = 0; y < grid_height; y += size)
+ {
+ for (x = 0; x < grid_width ; x += size)
+ {
+ pixbuf = extract_frame (icon_pixbuf, x, y, size);
+
+ if (pixbuf)
+ {
+ list = g_slist_prepend (list, pixbuf);
+ ++n;
+ }
+ else
+ {
+ g_warning ("Cannot extract frame (%d, %d) from the grid\n", x, y);
+ }
+ }
+ }
+
+ g_object_unref (icon_pixbuf);
+
+ if (list == NULL) goto loser;
+ g_assert (n > 0);
+
+ if (size > requested_size)
+ {
+ for (l = list; l != NULL; l = l->next)
+ {
+ l->data = scale_to_size (l->data, isw, ish);
+ }
+ }
+
+ /* Now we've successfully got all the data */
+ images = g_new (EphySpinnerImages, 1);
+ images->ref_count = 1;
+
+ images->size = icon_size;
+ images->width = images->height = requested_size;
+
+ images->n_animation_pixbufs = n;
+ images->animation_pixbufs = g_new (GdkPixbuf *, n);
+
+ for (l = list; l != NULL; l = l->next)
+ {
+ g_assert (l->data != NULL);
+ images->animation_pixbufs[--n] = l->data;
+ }
+ g_assert (n == 0);
+
+ g_slist_free (list);
+
+ STOP_PROFILER ("loading spinner animation")
+
+ return images;
+
+loser:
+ if (icon_info)
+ {
+ gtk_icon_info_free (icon_info);
+ }
+ g_slist_foreach (list, (GFunc) g_object_unref, NULL);
+
+ STOP_PROFILER ("loading spinner animation")
+
+ return NULL;
+}
+
+static EphySpinnerCacheData *
+ephy_spinner_cache_data_new (GdkScreen *screen)
+{
+ EphySpinnerCacheData *data;
+
+ data = g_new0 (EphySpinnerCacheData, 1);
+
+ data->screen = screen;
+ data->icon_theme = gtk_icon_theme_get_for_screen (screen);
+ g_signal_connect_swapped (data->icon_theme, "changed",
+ G_CALLBACK (ephy_spinner_cache_data_unload),
+ data);
+
+ return data;
+}
+
+static void
+ephy_spinner_cache_data_free (EphySpinnerCacheData *data)
+{
+ g_return_if_fail (data != NULL);
+ g_return_if_fail (data->icon_theme != NULL);
+
+ g_signal_handlers_disconnect_by_func
+ (data->icon_theme,
+ G_CALLBACK (ephy_spinner_cache_data_unload), data);
+
+ ephy_spinner_cache_data_unload (data);
+
+ g_free (data);
+}
+
+static EphySpinnerImages *
+ephy_spinner_cache_get_images (EphySpinnerCache *cache,
+ GdkScreen *screen,
+ GtkIconSize icon_size)
+{
+ EphySpinnerCachePrivate *priv = cache->priv;
+ EphySpinnerCacheData *data;
+ EphySpinnerImages *images;
+
+ LOG ("Getting animation images for screen %p at size %d", screen, icon_size);
+
+ g_return_val_if_fail (icon_size >= 0 && icon_size < LAST_ICON_SIZE, NULL);
+
+ /* Backward compat: "invalid" meant "native" size which doesn't exist anymore */
+ if (icon_size == GTK_ICON_SIZE_INVALID)
+ {
+ icon_size = GTK_ICON_SIZE_DIALOG;
+ }
+
+ data = g_hash_table_lookup (priv->hash, screen);
+ if (data == NULL)
+ {
+ data = ephy_spinner_cache_data_new (screen);
+ /* FIXME: think about what happens when the screen's display is closed later on */
+ g_hash_table_insert (priv->hash, screen, data);
+ }
+
+ images = data->images[icon_size];
+ if (images == EPHY_SPINNER_IMAGES_INVALID)
+ {
+ /* Load failed, but don't try endlessly again! */
+ return NULL;
+ }
+
+ if (images != NULL)
+ {
+ /* Return cached data */
+ return ephy_spinner_images_ref (images);
+ }
+
+ images = ephy_spinner_images_load (screen, data->icon_theme, icon_size);
+
+ if (images == NULL)
+ {
+ /* Mark as failed-to-load */
+ data->images[icon_size] = EPHY_SPINNER_IMAGES_INVALID;
+
+ return NULL;
+ }
+
+ data->images[icon_size] = images;
+
+ return ephy_spinner_images_ref (images);
+}
+
+static void
+ephy_spinner_cache_init (EphySpinnerCache *cache)
+{
+ EphySpinnerCachePrivate *priv;
+
+ priv = cache->priv = EPHY_SPINNER_CACHE_GET_PRIVATE (cache);
+
+ LOG ("EphySpinnerCache initialising");
+
+ priv->hash = g_hash_table_new_full (g_direct_hash, g_direct_equal,
+ NULL,
+ (GDestroyNotify) ephy_spinner_cache_data_free);
+}
+
+static void
+ephy_spinner_cache_finalize (GObject *object)
+{
+ EphySpinnerCache *cache = EPHY_SPINNER_CACHE (object);
+ EphySpinnerCachePrivate *priv = cache->priv;
+
+ g_hash_table_destroy (priv->hash);
+
+ LOG ("EphySpinnerCache finalised");
+
+ G_OBJECT_CLASS (ephy_spinner_cache_parent_class)->finalize (object);
+}
+
+static void
+ephy_spinner_cache_class_init (EphySpinnerCacheClass *klass)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+ ephy_spinner_cache_parent_class = g_type_class_peek_parent (klass);
+
+ object_class->finalize = ephy_spinner_cache_finalize;
+
+ g_type_class_add_private (object_class, sizeof (EphySpinnerCachePrivate));
+}
+
+static EphySpinnerCache *spinner_cache = NULL;
+
+static EphySpinnerCache *
+ephy_spinner_cache_ref (void)
+{
+ if (spinner_cache == NULL)
+ {
+ EphySpinnerCache **cache_ptr;
+
+ spinner_cache = g_object_new (EPHY_TYPE_SPINNER_CACHE, NULL);
+ cache_ptr = &spinner_cache;
+ g_object_add_weak_pointer (G_OBJECT (spinner_cache),
+ (gpointer *) cache_ptr);
+
+ return spinner_cache;
+ }
+
+ return g_object_ref (spinner_cache);
+}
+
+/* Spinner implementation */
+
+#define SPINNER_TIMEOUT 125 /* ms */
+
+#define EPHY_SPINNER_GET_PRIVATE(object)(G_TYPE_INSTANCE_GET_PRIVATE ((object), EPHY_TYPE_SPINNER, EphySpinnerDetails))
+
+struct _EphySpinnerDetails
+{
+ GtkIconTheme *icon_theme;
+ EphySpinnerCache *cache;
+ GtkIconSize size;
+ EphySpinnerImages *images;
+ guint current_image;
+ guint timeout;
+ guint timer_task;
+ guint spinning : 1;
+ guint need_load : 1;
+};
+
+static void ephy_spinner_class_init (EphySpinnerClass *class);
+static void ephy_spinner_init (EphySpinner *spinner);
+
+static GObjectClass *parent_class;
+
+GType
+ephy_spinner_get_type (void)
+{
+ static GType type = 0;
+
+ if (G_UNLIKELY (type == 0))
+ {
+ const GTypeInfo our_info =
+ {
+ sizeof (EphySpinnerClass),
+ NULL, /* base_init */
+ NULL, /* base_finalize */
+ (GClassInitFunc) ephy_spinner_class_init,
+ NULL,
+ NULL, /* class_data */
+ sizeof (EphySpinner),
+ 0, /* n_preallocs */
+ (GInstanceInitFunc) ephy_spinner_init
+ };
+
+ type = g_type_register_static (GTK_TYPE_WIDGET,
+ "EphySpinner",
+ &our_info, 0);
+ }
+
+ return type;
+}
+
+static gboolean
+ephy_spinner_load_images (EphySpinner *spinner)
+{
+ EphySpinnerDetails *details = spinner->details;
+
+ if (details->need_load)
+ {
+ START_PROFILER ("ephy_spinner_load_images")
+
+ details->images =
+ ephy_spinner_cache_get_images
+ (details->cache,
+ gtk_widget_get_screen (GTK_WIDGET (spinner)),
+ details->size);
+
+ STOP_PROFILER ("ephy_spinner_load_images")
+
+ details->current_image = 0; /* 'rest' icon */
+ details->need_load = FALSE;
+ }
+
+ return details->images != NULL;
+}
+
+static void
+ephy_spinner_unload_images (EphySpinner *spinner)
+{
+ EphySpinnerDetails *details = spinner->details;
+
+ if (details->images != NULL)
+ {
+ ephy_spinner_images_unref (details->images);
+ details->images = NULL;
+ }
+
+ details->current_image = 0;
+ details->need_load = TRUE;
+}
+
+static void
+icon_theme_changed_cb (GtkIconTheme *icon_theme,
+ EphySpinner *spinner)
+{
+ ephy_spinner_unload_images (spinner);
+ gtk_widget_queue_resize (GTK_WIDGET (spinner));
+}
+
+static void
+ephy_spinner_init (EphySpinner *spinner)
+{
+ EphySpinnerDetails *details;
+
+ details = spinner->details = EPHY_SPINNER_GET_PRIVATE (spinner);
+
+ GTK_WIDGET_SET_FLAGS (GTK_WIDGET (spinner), GTK_NO_WINDOW);
+
+ details->cache = ephy_spinner_cache_ref ();
+ details->size = GTK_ICON_SIZE_DIALOG;
+ details->spinning = FALSE;
+ details->timeout = SPINNER_TIMEOUT;
+ details->need_load = TRUE;
+}
+
+static int
+ephy_spinner_expose (GtkWidget *widget,
+ GdkEventExpose *event)
+{
+ EphySpinner *spinner = EPHY_SPINNER (widget);
+ EphySpinnerDetails *details = spinner->details;
+ EphySpinnerImages *images;
+ GdkPixbuf *pixbuf;
+ GdkGC *gc;
+ int x_offset, y_offset, width, height;
+ GdkRectangle pix_area, dest;
+
+ if (!GTK_WIDGET_DRAWABLE (spinner))
+ {
+ return FALSE;
+ }
+
+ if (details->need_load &&
+ !ephy_spinner_load_images (spinner))
+ {
+ return FALSE;
+ }
+
+ images = details->images;
+ if (images == NULL)
+ {
+ return FALSE;
+ }
+
+ /* Otherwise |images| will be NULL anyway */
+ g_assert (images->n_animation_pixbufs > 0);
+
+ g_assert (details->current_image >= 0 &&
+ details->current_image < images->n_animation_pixbufs);
+
+ pixbuf = images->animation_pixbufs[details->current_image];
+
+ g_assert (pixbuf != NULL);
+
+ width = gdk_pixbuf_get_width (pixbuf);
+ height = gdk_pixbuf_get_height (pixbuf);
+
+ /* Compute the offsets for the image centered on our allocation */
+ x_offset = (widget->allocation.width - width) / 2;
+ y_offset = (widget->allocation.height - height) / 2;
+
+ pix_area.x = x_offset + widget->allocation.x;
+ pix_area.y = y_offset + widget->allocation.y;
+ pix_area.width = width;
+ pix_area.height = height;
+
+ if (!gdk_rectangle_intersect (&event->area, &pix_area, &dest))
+ {
+ return FALSE;
+ }
+
+ gc = gdk_gc_new (widget->window);
+ gdk_draw_pixbuf (widget->window, gc, pixbuf,
+ dest.x - x_offset - widget->allocation.x,
+ dest.y - y_offset - widget->allocation.y,
+ dest.x, dest.y,
+ dest.width, dest.height,
+ GDK_RGB_DITHER_MAX, 0, 0);
+ g_object_unref (gc);
+
+ return FALSE;
+}
+
+static gboolean
+bump_spinner_frame_cb (EphySpinner *spinner)
+{
+ EphySpinnerDetails *details = spinner->details;
+
+ /* This can happen when we've unloaded the images on a theme
+ * change, but haven't been in the queued size request yet.
+ * Just skip this update.
+ */
+ if (details->images == NULL) return TRUE;
+
+ details->current_image++;
+ if (details->current_image >= details->images->n_animation_pixbufs)
+ {
+ /* the 0th frame is the 'rest' icon */
+ details->current_image = MIN (1, details->images->n_animation_pixbufs);
+ }
+
+ gtk_widget_queue_draw (GTK_WIDGET (spinner));
+
+ /* run again */
+ return TRUE;
+}
+
+/**
+ * ephy_spinner_start:
+ * @spinner: a #EphySpinner
+ *
+ * Start the spinner animation.
+ **/
+void
+ephy_spinner_start (EphySpinner *spinner)
+{
+ EphySpinnerDetails *details = spinner->details;
+
+ details->spinning = TRUE;
+
+ if (GTK_WIDGET_MAPPED (GTK_WIDGET (spinner)) &&
+ details->timer_task == 0 &&
+ ephy_spinner_load_images (spinner))
+ {
+ /* the 0th frame is the 'rest' icon */
+ details->current_image = MIN (1, details->images->n_animation_pixbufs);
+
+ details->timer_task =
+ g_timeout_add_full (G_PRIORITY_LOW,
+ details->timeout,
+ (GSourceFunc) bump_spinner_frame_cb,
+ spinner,
+ NULL);
+ }
+}
+
+static void
+ephy_spinner_remove_update_callback (EphySpinner *spinner)
+{
+ EphySpinnerDetails *details = spinner->details;
+
+ if (details->timer_task != 0)
+ {
+ g_source_remove (details->timer_task);
+ details->timer_task = 0;
+ }
+}
+
+/**
+ * ephy_spinner_stop:
+ * @spinner: a #EphySpinner
+ *
+ * Stop the spinner animation.
+ **/
+void
+ephy_spinner_stop (EphySpinner *spinner)
+{
+ EphySpinnerDetails *details = spinner->details;
+
+ details->spinning = FALSE;
+ details->current_image = 0;
+
+ if (details->timer_task != 0)
+ {
+ ephy_spinner_remove_update_callback (spinner);
+
+ if (GTK_WIDGET_MAPPED (GTK_WIDGET (spinner)))
+ {
+ gtk_widget_queue_draw (GTK_WIDGET (spinner));
+ }
+ }
+}
+
+/*
+ * ephy_spinner_set_size:
+ * @spinner: a #EphySpinner
+ * @size: the size of type %GtkIconSize
+ *
+ * Set the size of the spinner.
+ **/
+void
+ephy_spinner_set_size (EphySpinner *spinner,
+ GtkIconSize size)
+{
+ if (size == GTK_ICON_SIZE_INVALID)
+ {
+ size = GTK_ICON_SIZE_DIALOG;
+ }
+
+ if (size != spinner->details->size)
+ {
+ ephy_spinner_unload_images (spinner);
+
+ spinner->details->size = size;
+
+ gtk_widget_queue_resize (GTK_WIDGET (spinner));
+ }
+}
+
+#if 0
+/*
+ * ephy_spinner_set_timeout:
+ * @spinner: a #EphySpinner
+ * @timeout: time delay between updates to the spinner.
+ *
+ * Sets the timeout delay for spinner updates.
+ **/
+void
+ephy_spinner_set_timeout (EphySpinner *spinner,
+ guint timeout)
+{
+ EphySpinnerDetails *details = spinner->details;
+
+ if (timeout != details->timeout)
+ {
+ ephy_spinner_stop (spinner);
+
+ details->timeout = timeout;
+
+ if (details->spinning)
+ {
+ ephy_spinner_start (spinner);
+ }
+ }
+}
+#endif
+
+static void
+ephy_spinner_size_request (GtkWidget *widget,
+ GtkRequisition *requisition)
+{
+ EphySpinner *spinner = EPHY_SPINNER (widget);
+ EphySpinnerDetails *details = spinner->details;
+
+ if ((details->need_load &&
+ !ephy_spinner_load_images (spinner)) ||
+ details->images == NULL)
+ {
+ requisition->width = requisition->height = 0;
+ gtk_icon_size_lookup_for_settings (gtk_widget_get_settings (widget),
+ details->size,
+ &requisition->width,
+ &requisition->height);
+ return;
+ }
+
+ requisition->width = details->images->width;
+ requisition->height = details->images->height;
+
+ /* FIXME fix this hack */
+ /* allocate some extra margin so we don't butt up against toolbar edges */
+ if (details->size != GTK_ICON_SIZE_MENU)
+ {
+ requisition->width += 2;
+ requisition->height += 2;
+ }
+}
+
+static void
+ephy_spinner_map (GtkWidget *widget)
+{
+ EphySpinner *spinner = EPHY_SPINNER (widget);
+ EphySpinnerDetails *details = spinner->details;
+
+ GTK_WIDGET_CLASS (parent_class)->map (widget);
+
+ if (details->spinning)
+ {
+ ephy_spinner_start (spinner);
+ }
+}
+
+static void
+ephy_spinner_unmap (GtkWidget *widget)
+{
+ EphySpinner *spinner = EPHY_SPINNER (widget);
+
+ ephy_spinner_remove_update_callback (spinner);
+
+ GTK_WIDGET_CLASS (parent_class)->unmap (widget);
+}
+
+static void
+ephy_spinner_dispose (GObject *object)
+{
+ EphySpinner *spinner = EPHY_SPINNER (object);
+
+ g_signal_handlers_disconnect_by_func
+ (spinner->details->icon_theme,
+ G_CALLBACK (icon_theme_changed_cb), spinner);
+
+ G_OBJECT_CLASS (parent_class)->dispose (object);
+}
+
+static void
+ephy_spinner_finalize (GObject *object)
+{
+ EphySpinner *spinner = EPHY_SPINNER (object);
+
+ ephy_spinner_remove_update_callback (spinner);
+ ephy_spinner_unload_images (spinner);
+
+ g_object_unref (spinner->details->cache);
+
+ G_OBJECT_CLASS (parent_class)->finalize (object);
+}
+
+static void
+ephy_spinner_screen_changed (GtkWidget *widget,
+ GdkScreen *old_screen)
+{
+ EphySpinner *spinner = EPHY_SPINNER (widget);
+ EphySpinnerDetails *details = spinner->details;
+ GdkScreen *screen;
+
+ if (GTK_WIDGET_CLASS (parent_class)->screen_changed)
+ {
+ GTK_WIDGET_CLASS (parent_class)->screen_changed (widget, old_screen);
+ }
+
+ screen = gtk_widget_get_screen (widget);
+
+ /* FIXME: this seems to be happening when then spinner is destroyed!? */
+ if (old_screen == screen) return;
+
+ /* We'll get mapped again on the new screen, but not unmapped from
+ * the old screen, so remove timeout here.
+ */
+ ephy_spinner_remove_update_callback (spinner);
+
+ ephy_spinner_unload_images (spinner);
+
+ if (old_screen != NULL)
+ {
+ g_signal_handlers_disconnect_by_func
+ (gtk_icon_theme_get_for_screen (old_screen),
+ G_CALLBACK (icon_theme_changed_cb), spinner);
+ }
+
+ details->icon_theme = gtk_icon_theme_get_for_screen (screen);
+ g_signal_connect (details->icon_theme, "changed",
+ G_CALLBACK (icon_theme_changed_cb), spinner);
+}
+
+static void
+ephy_spinner_class_init (EphySpinnerClass *class)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (class);
+ GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (class);
+
+ parent_class = g_type_class_peek_parent (class);
+
+ object_class->dispose = ephy_spinner_dispose;
+ object_class->finalize = ephy_spinner_finalize;
+
+ widget_class->expose_event = ephy_spinner_expose;
+ widget_class->size_request = ephy_spinner_size_request;
+ widget_class->map = ephy_spinner_map;
+ widget_class->unmap = ephy_spinner_unmap;
+ widget_class->screen_changed = ephy_spinner_screen_changed;
+
+ g_type_class_add_private (object_class, sizeof (EphySpinnerDetails));
+}
+
+/*
+ * ephy_spinner_new:
+ *
+ * Create a new #EphySpinner. The spinner is a widget
+ * that gives the user feedback about network status with
+ * an animated image.
+ *
+ * Return Value: the spinner #GtkWidget
+ **/
+GtkWidget *
+ephy_spinner_new (void)
+{
+ return GTK_WIDGET (g_object_new (EPHY_TYPE_SPINNER, NULL));
+}
diff --git a/gnome-2-22/libempathy-gtk/ephy-spinner.h b/gnome-2-22/libempathy-gtk/ephy-spinner.h
new file mode 100644
index 000000000..4435fe371
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/ephy-spinner.h
@@ -0,0 +1,70 @@
+/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
+/*
+ * Copyright © 2000 Eazel, Inc.
+ * Copyright © 2004, 2006 Christian Persch
+ *
+ * Nautilus is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * Nautilus is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public 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: Andy Hertzfeld <andy@eazel.com>
+ *
+ * $Id: ephy-spinner.h 2114 2006-12-25 12:15:00Z mr $
+ */
+
+#ifndef EPHY_SPINNER_H
+#define EPHY_SPINNER_H
+
+#include <gtk/gtkwidget.h>
+#include <gtk/gtkenums.h>
+
+G_BEGIN_DECLS
+
+#define EPHY_TYPE_SPINNER (ephy_spinner_get_type ())
+#define EPHY_SPINNER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), EPHY_TYPE_SPINNER, EphySpinner))
+#define EPHY_SPINNER_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), EPHY_TYPE_SPINNER, EphySpinnerClass))
+#define EPHY_IS_SPINNER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), EPHY_TYPE_SPINNER))
+#define EPHY_IS_SPINNER_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), EPHY_TYPE_SPINNER))
+#define EPHY_SPINNER_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), EPHY_TYPE_SPINNER, EphySpinnerClass))
+
+typedef struct _EphySpinner EphySpinner;
+typedef struct _EphySpinnerClass EphySpinnerClass;
+typedef struct _EphySpinnerDetails EphySpinnerDetails;
+
+struct _EphySpinner
+{
+ GtkWidget parent;
+
+ /*< private >*/
+ EphySpinnerDetails *details;
+};
+
+struct _EphySpinnerClass
+{
+ GtkWidgetClass parent_class;
+};
+
+GType ephy_spinner_get_type (void);
+
+GtkWidget *ephy_spinner_new (void);
+
+void ephy_spinner_start (EphySpinner *throbber);
+
+void ephy_spinner_stop (EphySpinner *throbber);
+
+void ephy_spinner_set_size (EphySpinner *spinner,
+ GtkIconSize size);
+
+G_END_DECLS
+
+#endif /* EPHY_SPINNER_H */
diff --git a/gnome-2-22/libempathy-gtk/libempathy-gtk.pc.in b/gnome-2-22/libempathy-gtk/libempathy-gtk.pc.in
new file mode 100644
index 000000000..4248387e8
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/libempathy-gtk.pc.in
@@ -0,0 +1,11 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: libempathy-gtk
+Description: Empathy interface library
+Requires: glib-2.0, gobject-2.0, gtk+-2.0, libglade-2.0, libmissioncontrol, libtelepathy, libempathy
+Version: @VERSION@
+Libs: -L${libdir} -lempathy-gtk
+Cflags: -I${includedir}
diff --git a/gnome-2-22/libempathy-gtk/totem-subtitle-encoding.c b/gnome-2-22/libempathy-gtk/totem-subtitle-encoding.c
new file mode 100644
index 000000000..e0eef082c
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/totem-subtitle-encoding.c
@@ -0,0 +1,585 @@
+/*
+ * Copyright (C) 2001-2006 Bastien Nocera <hadess@hadess.net>
+ *
+ * encoding list copied from gnome-terminal/encoding.c
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * The Totem project hereby grant permission for non-gpl compatible GStreamer
+ * plugins to be used and distributed together with GStreamer and Totem. This
+ * permission are above and beyond the permissions granted by the GPL license
+ * Totem is covered by.
+ *
+ * Monday 7th February 2005: Christian Schaller: Add exception clause.
+ * See license_change file for details.
+ *
+ */
+
+#include "config.h"
+#include <glib/gi18n.h>
+#include "totem-subtitle-encoding.h"
+#include <string.h>
+
+typedef enum
+{
+ SUBTITLE_ENCODING_CURRENT_LOCALE,
+
+ SUBTITLE_ENCODING_ISO_8859_6,
+ SUBTITLE_ENCODING_IBM_864,
+ SUBTITLE_ENCODING_MAC_ARABIC,
+ SUBTITLE_ENCODING_WINDOWS_1256,
+
+ SUBTITLE_ENCODING_ARMSCII_8,
+
+ SUBTITLE_ENCODING_ISO_8859_4,
+ SUBTITLE_ENCODING_ISO_8859_13,
+ SUBTITLE_ENCODING_WINDOWS_1257,
+
+ SUBTITLE_ENCODING_ISO_8859_14,
+
+ SUBTITLE_ENCODING_ISO_8859_2,
+ SUBTITLE_ENCODING_IBM_852,
+ SUBTITLE_ENCODING_MAC_CE,
+ SUBTITLE_ENCODING_WINDOWS_1250,
+
+ SUBTITLE_ENCODING_GB18030,
+ SUBTITLE_ENCODING_GB2312,
+ SUBTITLE_ENCODING_GBK,
+ SUBTITLE_ENCODING_HZ,
+
+ SUBTITLE_ENCODING_BIG5,
+ SUBTITLE_ENCODING_BIG5_HKSCS,
+ SUBTITLE_ENCODING_EUC_TW,
+
+ SUBTITLE_ENCODING_MAC_CROATIAN,
+
+ SUBTITLE_ENCODING_ISO_8859_5,
+ SUBTITLE_ENCODING_IBM_855,
+ SUBTITLE_ENCODING_ISO_IR_111,
+ SUBTITLE_ENCODING_KOI8_R,
+ SUBTITLE_ENCODING_MAC_CYRILLIC,
+ SUBTITLE_ENCODING_WINDOWS_1251,
+
+ SUBTITLE_ENCODING_CP_866,
+
+ SUBTITLE_ENCODING_MAC_UKRAINIAN,
+ SUBTITLE_ENCODING_KOI8_U,
+
+ SUBTITLE_ENCODING_GEOSTD8,
+
+ SUBTITLE_ENCODING_ISO_8859_7,
+ SUBTITLE_ENCODING_MAC_GREEK,
+ SUBTITLE_ENCODING_WINDOWS_1253,
+
+ SUBTITLE_ENCODING_MAC_GUJARATI,
+
+ SUBTITLE_ENCODING_MAC_GURMUKHI,
+
+ SUBTITLE_ENCODING_ISO_8859_8_I,
+ SUBTITLE_ENCODING_IBM_862,
+ SUBTITLE_ENCODING_MAC_HEBREW,
+ SUBTITLE_ENCODING_WINDOWS_1255,
+
+ SUBTITLE_ENCODING_ISO_8859_8,
+
+ SUBTITLE_ENCODING_MAC_DEVANAGARI,
+
+ SUBTITLE_ENCODING_MAC_ICELANDIC,
+
+ SUBTITLE_ENCODING_EUC_JP,
+ SUBTITLE_ENCODING_ISO_2022_JP,
+ SUBTITLE_ENCODING_SHIFT_JIS,
+
+ SUBTITLE_ENCODING_EUC_KR,
+ SUBTITLE_ENCODING_ISO_2022_KR,
+ SUBTITLE_ENCODING_JOHAB,
+ SUBTITLE_ENCODING_UHC,
+
+ SUBTITLE_ENCODING_ISO_8859_10,
+
+ SUBTITLE_ENCODING_MAC_FARSI,
+
+ SUBTITLE_ENCODING_ISO_8859_16,
+ SUBTITLE_ENCODING_MAC_ROMANIAN,
+
+ SUBTITLE_ENCODING_ISO_8859_3,
+
+ SUBTITLE_ENCODING_TIS_620,
+
+ SUBTITLE_ENCODING_ISO_8859_9,
+ SUBTITLE_ENCODING_IBM_857,
+ SUBTITLE_ENCODING_MAC_TURKISH,
+ SUBTITLE_ENCODING_WINDOWS_1254,
+
+ SUBTITLE_ENCODING_UTF_7,
+ SUBTITLE_ENCODING_UTF_8,
+ SUBTITLE_ENCODING_UTF_16,
+ SUBTITLE_ENCODING_UCS_2,
+ SUBTITLE_ENCODING_UCS_4,
+
+ SUBTITLE_ENCODING_ISO_8859_1,
+ SUBTITLE_ENCODING_ISO_8859_15,
+ SUBTITLE_ENCODING_IBM_850,
+ SUBTITLE_ENCODING_MAC_ROMAN,
+ SUBTITLE_ENCODING_WINDOWS_1252,
+
+ SUBTITLE_ENCODING_TCVN,
+ SUBTITLE_ENCODING_VISCII,
+ SUBTITLE_ENCODING_WINDOWS_1258,
+
+ SUBTITLE_ENCODING_LAST
+} SubtitleEncodingIndex;
+
+
+typedef struct
+{
+ int index;
+ gboolean valid;
+ char *charset;
+ char *name;
+} SubtitleEncoding;
+
+
+static SubtitleEncoding encodings[] = {
+
+ {SUBTITLE_ENCODING_CURRENT_LOCALE, TRUE,
+ NULL, N_("Current Locale")},
+
+ {SUBTITLE_ENCODING_ISO_8859_6, FALSE,
+ "ISO-8859-6", N_("Arabic")},
+ {SUBTITLE_ENCODING_IBM_864, FALSE,
+ "IBM864", N_("Arabic")},
+ {SUBTITLE_ENCODING_MAC_ARABIC, FALSE,
+ "MAC_ARABIC", N_("Arabic")},
+ {SUBTITLE_ENCODING_WINDOWS_1256, FALSE,
+ "WINDOWS-1256", N_("Arabic")},
+
+ {SUBTITLE_ENCODING_ARMSCII_8, FALSE,
+ "ARMSCII-8", N_("Armenian")},
+
+ {SUBTITLE_ENCODING_ISO_8859_4, FALSE,
+ "ISO-8859-4", N_("Baltic")},
+ {SUBTITLE_ENCODING_ISO_8859_13, FALSE,
+ "ISO-8859-13", N_("Baltic")},
+ {SUBTITLE_ENCODING_WINDOWS_1257, FALSE,
+ "WINDOWS-1257", N_("Baltic")},
+
+ {SUBTITLE_ENCODING_ISO_8859_14, FALSE,
+ "ISO-8859-14", N_("Celtic")},
+
+ {SUBTITLE_ENCODING_ISO_8859_2, FALSE,
+ "ISO-8859-2", N_("Central European")},
+ {SUBTITLE_ENCODING_IBM_852, FALSE,
+ "IBM852", N_("Central European")},
+ {SUBTITLE_ENCODING_MAC_CE, FALSE,
+ "MAC_CE", N_("Central European")},
+ {SUBTITLE_ENCODING_WINDOWS_1250, FALSE,
+ "WINDOWS-1250", N_("Central European")},
+
+ {SUBTITLE_ENCODING_GB18030, FALSE,
+ "GB18030", N_("Chinese Simplified")},
+ {SUBTITLE_ENCODING_GB2312, FALSE,
+ "GB2312", N_("Chinese Simplified")},
+ {SUBTITLE_ENCODING_GBK, FALSE,
+ "GBK", N_("Chinese Simplified")},
+ {SUBTITLE_ENCODING_HZ, FALSE,
+ "HZ", N_("Chinese Simplified")},
+
+ {SUBTITLE_ENCODING_BIG5, FALSE,
+ "BIG5", N_("Chinese Traditional")},
+ {SUBTITLE_ENCODING_BIG5_HKSCS, FALSE,
+ "BIG5-HKSCS", N_("Chinese Traditional")},
+ {SUBTITLE_ENCODING_EUC_TW, FALSE,
+ "EUC-TW", N_("Chinese Traditional")},
+
+ {SUBTITLE_ENCODING_MAC_CROATIAN, FALSE,
+ "MAC_CROATIAN", N_("Croatian")},
+
+ {SUBTITLE_ENCODING_ISO_8859_5, FALSE,
+ "ISO-8859-5", N_("Cyrillic")},
+ {SUBTITLE_ENCODING_IBM_855, FALSE,
+ "IBM855", N_("Cyrillic")},
+ {SUBTITLE_ENCODING_ISO_IR_111, FALSE,
+ "ISO-IR-111", N_("Cyrillic")},
+ {SUBTITLE_ENCODING_KOI8_R, FALSE,
+ "KOI8-R", N_("Cyrillic")},
+ {SUBTITLE_ENCODING_MAC_CYRILLIC, FALSE,
+ "MAC-CYRILLIC", N_("Cyrillic")},
+ {SUBTITLE_ENCODING_WINDOWS_1251, FALSE,
+ "WINDOWS-1251", N_("Cyrillic")},
+
+ {SUBTITLE_ENCODING_CP_866, FALSE,
+ "CP866", N_("Cyrillic/Russian")},
+
+ {SUBTITLE_ENCODING_MAC_UKRAINIAN, FALSE,
+ "MAC_UKRAINIAN", N_("Cyrillic/Ukrainian")},
+ {SUBTITLE_ENCODING_KOI8_U, FALSE,
+ "KOI8-U", N_("Cyrillic/Ukrainian")},
+
+ {SUBTITLE_ENCODING_GEOSTD8, FALSE,
+ "GEORGIAN-PS", N_("Georgian")},
+
+ {SUBTITLE_ENCODING_ISO_8859_7, FALSE,
+ "ISO-8859-7", N_("Greek")},
+ {SUBTITLE_ENCODING_MAC_GREEK, FALSE,
+ "MAC_GREEK", N_("Greek")},
+ {SUBTITLE_ENCODING_WINDOWS_1253, FALSE,
+ "WINDOWS-1253", N_("Greek")},
+
+ {SUBTITLE_ENCODING_MAC_GUJARATI, FALSE,
+ "MAC_GUJARATI", N_("Gujarati")},
+
+ {SUBTITLE_ENCODING_MAC_GURMUKHI, FALSE,
+ "MAC_GURMUKHI", N_("Gurmukhi")},
+
+ {SUBTITLE_ENCODING_ISO_8859_8_I, FALSE,
+ "ISO-8859-8-I", N_("Hebrew")},
+ {SUBTITLE_ENCODING_IBM_862, FALSE,
+ "IBM862", N_("Hebrew")},
+ {SUBTITLE_ENCODING_MAC_HEBREW, FALSE,
+ "MAC_HEBREW", N_("Hebrew")},
+ {SUBTITLE_ENCODING_WINDOWS_1255, FALSE,
+ "WINDOWS-1255", N_("Hebrew")},
+
+ {SUBTITLE_ENCODING_ISO_8859_8, FALSE,
+ "ISO-8859-8", N_("Hebrew Visual")},
+
+ {SUBTITLE_ENCODING_MAC_DEVANAGARI, FALSE,
+ "MAC_DEVANAGARI", N_("Hindi")},
+
+ {SUBTITLE_ENCODING_MAC_ICELANDIC, FALSE,
+ "MAC_ICELANDIC", N_("Icelandic")},
+
+ {SUBTITLE_ENCODING_EUC_JP, FALSE,
+ "EUC-JP", N_("Japanese")},
+ {SUBTITLE_ENCODING_ISO_2022_JP, FALSE,
+ "ISO2022JP", N_("Japanese")},
+ {SUBTITLE_ENCODING_SHIFT_JIS, FALSE,
+ "SHIFT-JIS", N_("Japanese")},
+
+ {SUBTITLE_ENCODING_EUC_KR, FALSE,
+ "EUC-KR", N_("Korean")},
+ {SUBTITLE_ENCODING_ISO_2022_KR, FALSE,
+ "ISO2022KR", N_("Korean")},
+ {SUBTITLE_ENCODING_JOHAB, FALSE,
+ "JOHAB", N_("Korean")},
+ {SUBTITLE_ENCODING_UHC, FALSE,
+ "UHC", N_("Korean")},
+
+ {SUBTITLE_ENCODING_ISO_8859_10, FALSE,
+ "ISO-8859-10", N_("Nordic")},
+
+ {SUBTITLE_ENCODING_MAC_FARSI, FALSE,
+ "MAC_FARSI", N_("Persian")},
+
+ {SUBTITLE_ENCODING_ISO_8859_16, FALSE,
+ "ISO-8859-16", N_("Romanian")},
+ {SUBTITLE_ENCODING_MAC_ROMANIAN, FALSE,
+ "MAC_ROMANIAN", N_("Romanian")},
+
+ {SUBTITLE_ENCODING_ISO_8859_3, FALSE,
+ "ISO-8859-3", N_("South European")},
+
+ {SUBTITLE_ENCODING_TIS_620, FALSE,
+ "TIS-620", N_("Thai")},
+
+ {SUBTITLE_ENCODING_ISO_8859_9, FALSE,
+ "ISO-8859-9", N_("Turkish")},
+ {SUBTITLE_ENCODING_IBM_857, FALSE,
+ "IBM857", N_("Turkish")},
+ {SUBTITLE_ENCODING_MAC_TURKISH, FALSE,
+ "MAC_TURKISH", N_("Turkish")},
+ {SUBTITLE_ENCODING_WINDOWS_1254, FALSE,
+ "WINDOWS-1254", N_("Turkish")},
+
+ {SUBTITLE_ENCODING_UTF_7, FALSE,
+ "UTF-7", N_("Unicode")},
+ {SUBTITLE_ENCODING_UTF_8, FALSE,
+ "UTF-8", N_("Unicode")},
+ {SUBTITLE_ENCODING_UTF_16, FALSE,
+ "UTF-16", N_("Unicode")},
+ {SUBTITLE_ENCODING_UCS_2, FALSE,
+ "UCS-2", N_("Unicode")},
+ {SUBTITLE_ENCODING_UCS_4, FALSE,
+ "UCS-4", N_("Unicode")},
+
+ {SUBTITLE_ENCODING_ISO_8859_1, FALSE,
+ "ISO-8859-1", N_("Western")},
+ {SUBTITLE_ENCODING_ISO_8859_15, FALSE,
+ "ISO-8859-15", N_("Western")},
+ {SUBTITLE_ENCODING_IBM_850, FALSE,
+ "IBM850", N_("Western")},
+ {SUBTITLE_ENCODING_MAC_ROMAN, FALSE,
+ "MAC_ROMAN", N_("Western")},
+ {SUBTITLE_ENCODING_WINDOWS_1252, FALSE,
+ "WINDOWS-1252", N_("Western")},
+
+ {SUBTITLE_ENCODING_TCVN, FALSE,
+ "TCVN", N_("Vietnamese")},
+ {SUBTITLE_ENCODING_VISCII, FALSE,
+ "VISCII", N_("Vietnamese")},
+ {SUBTITLE_ENCODING_WINDOWS_1258, FALSE,
+ "WINDOWS-1258", N_("Vietnamese")}
+};
+
+static const SubtitleEncoding *
+find_encoding_by_charset (const char *charset)
+{
+ int i;
+
+ i = 1; /* skip current locale */
+ while (i < SUBTITLE_ENCODING_LAST) {
+ if (strcasecmp (charset, encodings[i].charset) == 0)
+ return &encodings[i];
+
+ ++i;
+ }
+
+ if (strcasecmp (charset,
+ encodings[SUBTITLE_ENCODING_CURRENT_LOCALE].charset) == 0)
+ return &encodings[SUBTITLE_ENCODING_CURRENT_LOCALE];
+
+ return NULL;
+}
+
+static void
+subtitle_encoding_init (void)
+{
+ int i;
+ gsize bytes_read, bytes_written;
+ gchar *converted;
+ gchar ascii_sample[96];
+
+ g_get_charset ((const char **)
+ &encodings[SUBTITLE_ENCODING_CURRENT_LOCALE].charset);
+
+ g_assert (G_N_ELEMENTS (encodings) == SUBTITLE_ENCODING_LAST);
+
+ /* Initialize the sample text with all of the printing ASCII characters
+ * from space (32) to the tilde (126), 95 in all. */
+ for (i = 0; i < (int) sizeof (ascii_sample); i++)
+ ascii_sample[i] = i + 32;
+
+ ascii_sample[sizeof (ascii_sample) - 1] = '\0';
+
+ i = 0;
+ while (i < SUBTITLE_ENCODING_LAST) {
+ bytes_read = 0;
+ bytes_written = 0;
+
+ g_assert (encodings[i].index == i);
+
+ /* Translate the names */
+ encodings[i].name = _(encodings[i].name);
+
+ /* Test that the encoding is a proper superset of ASCII (which naive
+ * apps are going to use anyway) by attempting to validate the text
+ * using the current encoding. This also flushes out any encodings
+ * which the underlying GIConv implementation can't support.
+ */
+ converted = g_convert (ascii_sample, sizeof (ascii_sample) - 1,
+ encodings[i].charset, encodings[i].charset,
+ &bytes_read, &bytes_written, NULL);
+
+ /* The encoding is only valid if ASCII passes through cleanly. */
+ if (i == SUBTITLE_ENCODING_CURRENT_LOCALE)
+ encodings[i].valid = TRUE;
+ else
+ encodings[i].valid =
+ (bytes_read == (sizeof (ascii_sample) - 1)) &&
+ (converted != NULL) && (strcmp (converted, ascii_sample) == 0);
+
+#ifdef DEBUG_ENCODINGS
+ if (!encodings[i].valid) {
+ g_print ("Rejecting encoding %s as invalid:\n", encodings[i].charset);
+ g_print (" input \"%s\"\n", ascii_sample);
+ g_print (" output \"%s\"\n\n", converted ? converted : "(null)");
+ }
+#endif
+
+ /* Discard the converted string. */
+ g_free (converted);
+
+ ++i;
+ }
+}
+
+static int
+subtitle_encoding_get_index (const char *charset)
+{
+ const SubtitleEncoding *e;
+
+ e = find_encoding_by_charset (charset);
+ if (e != NULL)
+ return e->index;
+ else
+ return SUBTITLE_ENCODING_CURRENT_LOCALE;
+}
+
+static const char *
+subtitle_encoding_get_charset (int index)
+{
+ const SubtitleEncoding *e;
+
+ if (index >= SUBTITLE_ENCODING_LAST)
+ e = &encodings[SUBTITLE_ENCODING_CURRENT_LOCALE];
+ else if (index < SUBTITLE_ENCODING_CURRENT_LOCALE)
+ e = &encodings[SUBTITLE_ENCODING_CURRENT_LOCALE];
+ else if (!encodings[index].valid)
+ e = &encodings[SUBTITLE_ENCODING_CURRENT_LOCALE];
+ else
+ e = &encodings[index];
+ return e->charset;
+}
+
+enum
+{
+ INDEX_COL,
+ NAME_COL
+};
+
+static gint
+compare (GtkTreeModel * model, GtkTreeIter * a, GtkTreeIter * b, gpointer data)
+{
+ gchar *str_a, *str_b;
+ gint result;
+
+ gtk_tree_model_get (model, a, NAME_COL, &str_a, -1);
+ gtk_tree_model_get (model, b, NAME_COL, &str_b, -1);
+
+ result = strcmp (str_a, str_b);
+
+ g_free (str_a);
+ g_free (str_b);
+
+ return result;
+}
+
+static void
+is_encoding_sensitive (GtkCellLayout * cell_layout,
+ GtkCellRenderer * cell,
+ GtkTreeModel * tree_model, GtkTreeIter * iter, gpointer data)
+{
+
+ gboolean sensitive;
+
+ sensitive = !gtk_tree_model_iter_has_child (tree_model, iter);
+ g_object_set (cell, "sensitive", sensitive, NULL);
+}
+
+static GtkTreeModel *
+subtitle_encoding_create_store (void)
+{
+ gchar *label;
+ gchar *lastlang = "";
+ GtkTreeIter iter, iter2;
+ GtkTreeStore *store;
+ int i;
+
+ store = gtk_tree_store_new (2, G_TYPE_INT, G_TYPE_STRING);
+
+ for (i = 0; i < SUBTITLE_ENCODING_LAST; i++) {
+ if (encodings[i].valid) {
+ if (strcmp (lastlang, encodings[i].name)) {
+ lastlang = encodings[i].name;
+ gtk_tree_store_append (store, &iter, NULL);
+ gtk_tree_store_set (store, &iter, INDEX_COL,
+ -1, NAME_COL, lastlang, -1);
+ }
+ label = g_strdup_printf("%s (%s)", lastlang, encodings[i].charset);
+ gtk_tree_store_append (store, &iter2, &iter);
+ gtk_tree_store_set (store, &iter2, INDEX_COL,
+ encodings[i].index, NAME_COL, label, -1);
+ g_free(label);
+ }
+ }
+ gtk_tree_sortable_set_default_sort_func (GTK_TREE_SORTABLE (store),
+ compare, NULL, NULL);
+ gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (store),
+ NAME_COL, GTK_SORT_ASCENDING);
+ return GTK_TREE_MODEL (store);
+}
+
+static void
+subtitle_encoding_combo_render (GtkComboBox * combo)
+{
+ GtkCellRenderer *renderer;
+
+ renderer = gtk_cell_renderer_text_new ();
+ gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combo), renderer, TRUE);
+ gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combo), renderer,
+ "text", NAME_COL, NULL);
+ gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (combo),
+ renderer, is_encoding_sensitive, NULL, NULL);
+}
+
+const char *
+totem_subtitle_encoding_get_selected (GtkComboBox * combo)
+{
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+ gint index = -1;
+
+ model = gtk_combo_box_get_model (combo);
+ if (gtk_combo_box_get_active_iter (combo, &iter)) {
+ gtk_tree_model_get (model, &iter, INDEX_COL, &index, -1);
+ }
+ if (index == -1)
+ return NULL;
+ return subtitle_encoding_get_charset (index);
+}
+
+void
+totem_subtitle_encoding_set (GtkComboBox * combo, const char *encoding)
+{
+ GtkTreeModel *model;
+ GtkTreeIter iter, iter2;
+ gint index, i;
+
+ g_return_if_fail (encoding != NULL);
+
+ model = gtk_combo_box_get_model (combo);
+ index = subtitle_encoding_get_index (encoding);
+ gtk_tree_model_get_iter_first (model, &iter);
+ do {
+ if (!gtk_tree_model_iter_has_child (model, &iter))
+ continue;
+ if (!gtk_tree_model_iter_children (model, &iter2, &iter))
+ continue;
+ do {
+ gtk_tree_model_get (model, &iter2, INDEX_COL, &i, -1);
+ if (i == index)
+ break;
+ } while (gtk_tree_model_iter_next (model, &iter2));
+ if (i == index)
+ break;
+ } while (gtk_tree_model_iter_next (model, &iter));
+ gtk_combo_box_set_active_iter (combo, &iter2);
+}
+
+void
+totem_subtitle_encoding_init (GtkComboBox *combo)
+{
+ GtkTreeModel *model;
+ subtitle_encoding_init ();
+ model = subtitle_encoding_create_store ();
+ gtk_combo_box_set_model (combo, model);
+ g_object_unref (model);
+ subtitle_encoding_combo_render (combo);
+}
+
+/*
+ * vim: sw=2 ts=8 cindent noai bs=2
+ */
diff --git a/gnome-2-22/libempathy-gtk/totem-subtitle-encoding.h b/gnome-2-22/libempathy-gtk/totem-subtitle-encoding.h
new file mode 100644
index 000000000..7283f003a
--- /dev/null
+++ b/gnome-2-22/libempathy-gtk/totem-subtitle-encoding.h
@@ -0,0 +1,12 @@
+/* Encoding stuff */
+
+#ifndef TOTEM_SUBTITLE_ENCODING_H
+#define TOTEM_SUBTITLE_ENCODING_H
+
+#include <gtk/gtk.h>
+
+void totem_subtitle_encoding_init (GtkComboBox *combo);
+void totem_subtitle_encoding_set (GtkComboBox *combo, const char *encoding);
+const char * totem_subtitle_encoding_get_selected (GtkComboBox *combo);
+
+#endif /* SUBTITLE_ENCODING_H */
diff --git a/gnome-2-22/libempathy/.gitignore b/gnome-2-22/libempathy/.gitignore
new file mode 100644
index 000000000..8617dcbd0
--- /dev/null
+++ b/gnome-2-22/libempathy/.gitignore
@@ -0,0 +1,4 @@
+empathy-chandler-glue.h
+empathy-marshal.*
+empathy-filter-glue.h
+tp-stream-engine-gen.h
diff --git a/gnome-2-22/libempathy/Makefile.am b/gnome-2-22/libempathy/Makefile.am
new file mode 100644
index 000000000..f88a8cbc8
--- /dev/null
+++ b/gnome-2-22/libempathy/Makefile.am
@@ -0,0 +1,185 @@
+AM_CPPFLAGS = \
+ -I. \
+ -I$(top_srcdir) \
+ -I$(top_builddir) \
+ -DDATADIR=\""$(datadir)"\" \
+ $(LIBEMPATHY_CFLAGS) \
+ $(WARN_CFLAGS)
+
+BUILT_SOURCES = \
+ empathy-marshal.h \
+ empathy-marshal.c \
+ empathy-marshal.list \
+ empathy-enum-types.h \
+ empathy-enum-types.c \
+ empathy-filter-glue.h \
+ empathy-chandler-glue.h
+
+lib_LTLIBRARIES = libempathy.la
+
+libempathy_la_SOURCES = \
+ empathy-avatar.c \
+ empathy-time.c \
+ empathy-status-presets.c \
+ empathy-debug.c \
+ empathy-utils.c \
+ empathy-message.c \
+ empathy-chatroom-manager.c \
+ empathy-chatroom.c \
+ empathy-contact.c \
+ empathy-contact-groups.c \
+ empathy-contact-list.c \
+ empathy-contact-manager.c \
+ empathy-contact-factory.c \
+ empathy-tp-contact-factory.c \
+ empathy-tp-group.c \
+ empathy-tp-contact-list.c \
+ empathy-tp-chat.c \
+ empathy-tp-chatroom.c \
+ empathy-tp-roomlist.c \
+ empathy-tp-call.c \
+ empathy-chandler.c \
+ empathy-filter.c \
+ empathy-idle.c \
+ empathy-log-manager.c \
+ empathy-irc-network-manager.c \
+ empathy-irc-network.c \
+ empathy-irc-server.c
+
+# do not distribute generated files
+nodist_libempathy_la_SOURCES =\
+ $(BUILT_SOURCES)
+
+libempathy_la_LIBADD = \
+ $(top_builddir)/extensions/libemp-extensions.la \
+ $(LIBEMPATHY_LIBS)
+
+libempathy_la_LDFLAGS = \
+ -version-info ${LIBEMPATHY_CURRENT}:${LIBEMPATHY_REVISION}:${LIBEMPATHY_AGE} \
+ -export-symbols-regex ^empathy_
+
+libempathy_headers = \
+ empathy-avatar.h \
+ empathy-time.h \
+ empathy-status-presets.h \
+ empathy-debug.h \
+ empathy-utils.h \
+ empathy-message.h \
+ empathy-chatroom-manager.h \
+ empathy-chatroom.h \
+ empathy-contact.h \
+ empathy-contact-groups.h \
+ empathy-contact-list.h \
+ empathy-contact-manager.h \
+ empathy-contact-factory.h \
+ empathy-tp-contact-factory.h \
+ empathy-tp-group.h \
+ empathy-tp-contact-list.h \
+ empathy-tp-chat.h \
+ empathy-tp-chatroom.h \
+ empathy-tp-roomlist.h \
+ empathy-tp-call.h \
+ empathy-chandler.h \
+ empathy-filter.h \
+ empathy-idle.h \
+ empathy-log-manager.h \
+ empathy-irc-network-manager.h \
+ empathy-irc-network.h \
+ empathy-irc-server.h
+
+libempathy_includedir = $(includedir)/libempathy/
+libempathy_include_HEADERS = \
+ $(libempathy_headers) \
+ empathy-enum-types.h
+
+empathy-marshal.list: $(libempathy_la_SOURCES) Makefile.am
+ ( cd $(srcdir) && \
+ sed -n -e 's/.*empathy_marshal_\([[:upper:][:digit:]]*__[[:upper:][:digit:]_]*\).*/\1/p' \
+ $(libempathy_la_SOURCES) ) \
+ | sed -e 's/__/:/' -e 'y/_/,/' | sort -u > $@.tmp
+ if cmp -s $@.tmp $@; then \
+ rm $@.tmp; \
+ else \
+ mv $@.tmp $@; \
+ fi
+
+%-marshal.h: %-marshal.list Makefile
+ $(GLIB_GENMARSHAL) --header --prefix=_$(subst -,_,$*)_marshal $< > $*-marshal.h
+
+%-marshal.c: %-marshal.list Makefile
+ echo "#include \"empathy-marshal.h\"" > $@ && \
+ $(GLIB_GENMARSHAL) --body --prefix=_$(subst -,_,$*)_marshal $< >> $*-marshal.c
+
+empathy-chandler-glue.h: empathy-chandler.xml Makefile
+ $(LIBTOOL) --mode=execute $(DBUS_BINDING_TOOL) --prefix=empathy_chandler --mode=glib-server --output=$@ $<
+empathy-filter-glue.h: empathy-filter.xml Makefile
+ $(LIBTOOL) --mode=execute $(DBUS_BINDING_TOOL) --prefix=empathy_filter --mode=glib-server --output=$@ $<
+
+
+empathy-enum-types.h: stamp-empathy-enum-types.h
+ @true
+stamp-empathy-enum-types.h: $(libempathy_headers) Makefile
+ (cd $(srcdir) \
+ && glib-mkenums \
+ --fhead "#ifndef __LIBEMPATHY_ENUM_TYPES_H__\n" \
+ --fhead "#define __LIBEMPATHY_ENUM_TYPES_H__ 1\n\n" \
+ --fhead "#include <glib-object.h>\n\n" \
+ --fhead "G_BEGIN_DECLS\n\n" \
+ --ftail "G_END_DECLS\n\n" \
+ --ftail "#endif /* __LIBEMPATHY_ENUM_TYPES_H__ */\n" \
+ --fprod "#include <libempathy/@filename@>\n" \
+ --eprod "#define EMPATHY_TYPE_@ENUMSHORT@ @enum_name@_get_type()\n" \
+ --eprod "GType @enum_name@_get_type (void);\n" \
+ $(libempathy_headers) ) > xgen-gth \
+ && (cmp -s xgen-gth empathy-enum-type.h || cp xgen-gth empathy-enum-types.h) \
+ && rm -f xgen-gth \
+ && echo timestamp > $(@F)
+
+empathy-enum-types.c: $(libempathy_headers) Makefile
+ (cd $(srcdir) \
+ && glib-mkenums \
+ --fhead "#include <config.h>\n" \
+ --fhead "#include <glib-object.h>\n" \
+ --fhead "#include \"empathy-enum-types.h\"\n\n" \
+ --fprod "\n/* enumerations from \"@filename@\" */" \
+ --vhead "static const G@Type@Value _@enum_name@_values[] = {" \
+ --vprod " { @VALUENAME@, \"@VALUENAME@\", \"@valuenick@\" }," \
+ --vtail " { 0, NULL, NULL }\n};\n\n" \
+ --vtail "GType\n@enum_name@_get_type (void)\n{\n" \
+ --vtail " static GType type = 0;\n\n" \
+ --vtail " if (!type)\n" \
+ --vtail " type = g_@type@_register_static (\"@EnumName@\", _@enum_name@_values);\n\n" \
+ --vtail " return type;\n}\n\n" \
+ $(libempathy_headers) ) > xgen-gtc \
+ && cp xgen-gtc $(@F) \
+ && rm -f xgen-gtc
+
+dtddir = $(datadir)/empathy
+dtd_DATA = \
+ empathy-status-presets.dtd \
+ empathy-contact-groups.dtd \
+ empathy-chatroom-manager.dtd \
+ empathy-irc-networks.dtd
+
+stylesheetdir = $(datadir)/empathy
+stylesheet_DATA = \
+ empathy-log-manager.xsl
+
+ircnetworksdir = $(datadir)/empathy
+ircnetworks_DATA = \
+ irc-networks.xml
+
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA = libempathy.pc
+
+EXTRA_DIST = \
+ empathy-marshal.list \
+ empathy-chandler.xml \
+ empathy-filter.xml \
+ $(stylesheet_DATA) \
+ $(dtd_DATA) \
+ $(ircnetworks_DATA)
+
+CLEANFILES = \
+ $(BUILT_SOURCES) \
+ stamp-empathy-enum-types.h
diff --git a/gnome-2-22/libempathy/empathy-avatar.c b/gnome-2-22/libempathy/empathy-avatar.c
new file mode 100644
index 000000000..f03178ba6
--- /dev/null
+++ b/gnome-2-22/libempathy/empathy-avatar.c
@@ -0,0 +1,180 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2006 Xavier Claessens <xclaesse@gmail.com>
+ * Copyright (C) 2007-2008 Collabora Ltd.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Authors: Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#include "config.h"
+
+#include <telepathy-glib/util.h>
+
+#include "empathy-avatar.h"
+#include "empathy-utils.h"
+#include "empathy-debug.h"
+
+#define DEBUG_DOMAIN "Avatar"
+
+GType
+empathy_avatar_get_type (void)
+{
+ static GType type_id = 0;
+
+ if (!type_id) {
+ type_id = g_boxed_type_register_static ("EmpathyAvatar",
+ (GBoxedCopyFunc) empathy_avatar_ref,
+ (GBoxedFreeFunc) empathy_avatar_unref);
+ }
+
+ return type_id;
+}
+
+static gchar *
+avatar_get_filename (const gchar *token)
+{
+ gchar *avatar_path;
+ gchar *avatar_file;
+ gchar *token_escaped;
+
+ avatar_path = g_build_filename (g_get_home_dir (),
+ ".gnome2",
+ PACKAGE_NAME,
+ "avatars",
+ NULL);
+ g_mkdir_with_parents (avatar_path, 0700);
+
+ token_escaped = tp_escape_as_identifier (token);
+ avatar_file = g_build_filename (avatar_path, token_escaped, NULL);
+
+ g_free (token_escaped);
+ g_free (avatar_path);
+
+ return avatar_file;
+}
+
+static EmpathyAvatar *
+avatar_new (guchar *data,
+ gsize len,
+ gchar *format,
+ gchar *token)
+{
+ EmpathyAvatar *avatar;
+
+ avatar = g_slice_new0 (EmpathyAvatar);
+ avatar->data = data;
+ avatar->len = len;
+ avatar->format = format;
+ avatar->token = token;
+ avatar->refcount = 1;
+
+ return avatar;
+}
+
+EmpathyAvatar *
+empathy_avatar_new (const guchar *data,
+ const gsize len,
+ const gchar *format,
+ const gchar *token)
+{
+ EmpathyAvatar *avatar;
+ gchar *filename;
+ GError *error = NULL;
+
+ g_return_val_if_fail (data != NULL, NULL);
+ g_return_val_if_fail (len > 0, NULL);
+ g_return_val_if_fail (format != NULL, NULL);
+ g_return_val_if_fail (!G_STR_EMPTY (token), NULL);
+
+ avatar = avatar_new (g_memdup (data, len),
+ len,
+ g_strdup (format),
+ g_strdup (token));
+
+ /* Save to cache if not yet in it */
+ filename = avatar_get_filename (token);
+ if (!g_file_test (filename, G_FILE_TEST_EXISTS)) {
+ if (!g_file_set_contents (filename, data, len, &error)) {
+ empathy_debug (DEBUG_DOMAIN,
+ "Failed to save avatar in cache: %s",
+ error ? error->message : "No error given");
+ g_clear_error (&error);
+ } else {
+ empathy_debug (DEBUG_DOMAIN, "Avatar saved to %s", filename);
+ }
+ }
+ g_free (filename);
+
+ return avatar;
+}
+
+EmpathyAvatar *
+empathy_avatar_new_from_cache (const gchar *token)
+{
+ EmpathyAvatar *avatar = NULL;
+ gchar *filename;
+ gchar *data = NULL;
+ gsize len;
+ GError *error = NULL;
+
+ g_return_val_if_fail (!G_STR_EMPTY (token), NULL);
+
+ /* Load the avatar from file if it exists */
+ filename = avatar_get_filename (token);
+ if (g_file_test (filename, G_FILE_TEST_EXISTS)) {
+ if (!g_file_get_contents (filename, &data, &len, &error)) {
+ empathy_debug (DEBUG_DOMAIN,
+ "Failed to load avatar from cache: %s",
+ error ? error->message : "No error given");
+ g_clear_error (&error);
+ }
+ }
+
+ if (data) {
+ empathy_debug (DEBUG_DOMAIN, "Avatar loaded from %s", filename);
+ avatar = avatar_new (data, len, NULL, g_strdup (token));
+ }
+
+ g_free (filename);
+
+ return avatar;
+}
+
+void
+empathy_avatar_unref (EmpathyAvatar *avatar)
+{
+ g_return_if_fail (avatar != NULL);
+
+ avatar->refcount--;
+ if (avatar->refcount == 0) {
+ g_free (avatar->data);
+ g_free (avatar->format);
+ g_free (avatar->token);
+ g_slice_free (EmpathyAvatar, avatar);
+ }
+}
+
+EmpathyAvatar *
+empathy_avatar_ref (EmpathyAvatar *avatar)
+{
+ g_return_val_if_fail (avatar != NULL, NULL);
+
+ avatar->refcount++;
+
+ return avatar;
+}
+
diff --git a/gnome-2-22/libempathy/empathy-avatar.h b/gnome-2-22/libempathy/empathy-avatar.h
new file mode 100644
index 000000000..6d8b67709
--- /dev/null
+++ b/gnome-2-22/libempathy/empathy-avatar.h
@@ -0,0 +1,53 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2006 Xavier Claessens <xclaesse@gmail.com>
+ * Copyright (C) 2007 Collabora Ltd.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Authors: Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#ifndef __EMPATHY_AVATAR_H__
+#define __EMPATHY_AVATAR_H__
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+#define EMPATHY_TYPE_AVATAR (empathy_avatar_get_type ())
+
+typedef struct _EmpathyAvatar EmpathyAvatar;
+
+struct _EmpathyAvatar {
+ guchar *data;
+ gsize len;
+ gchar *format;
+ gchar *token;
+ guint refcount;
+};
+
+GType empathy_avatar_get_type (void) G_GNUC_CONST;
+EmpathyAvatar * empathy_avatar_new (const guchar *avatar,
+ const gsize len,
+ const gchar *format,
+ const gchar *token);
+EmpathyAvatar * empathy_avatar_new_from_cache (const gchar *token);
+EmpathyAvatar * empathy_avatar_ref (EmpathyAvatar *avatar);
+void empathy_avatar_unref (EmpathyAvatar *avatar);
+
+G_END_DECLS
+
+#endif /* __EMPATHY_AVATAR_H__ */
diff --git a/gnome-2-22/libempathy/empathy-chandler.c b/gnome-2-22/libempathy/empathy-chandler.c
new file mode 100644
index 000000000..7ac1ddfbb
--- /dev/null
+++ b/gnome-2-22/libempathy/empathy-chandler.c
@@ -0,0 +1,158 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2007-2008 Collabora Ltd.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Authors: Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#include <config.h>
+
+#include <dbus/dbus-glib.h>
+
+#include <libtelepathy/tp-helpers.h>
+#include <libtelepathy/tp-conn.h>
+#include <libtelepathy/tp-chan.h>
+
+#include "empathy-chandler.h"
+#include "empathy-debug.h"
+#include "empathy-marshal.h"
+
+#define DEBUG_DOMAIN "EmpathyChandler"
+
+static gboolean empathy_chandler_handle_channel (EmpathyChandler *chandler,
+ const gchar *bus_name,
+ const gchar *connection,
+ const gchar *channel_type,
+ const gchar *channel,
+ guint handle_type,
+ guint handle,
+ GError **error);
+
+#include "empathy-chandler-glue.h"
+
+enum {
+ NEW_CHANNEL,
+ LAST_SIGNAL
+};
+
+static guint signals[LAST_SIGNAL];
+
+G_DEFINE_TYPE (EmpathyChandler, empathy_chandler, G_TYPE_OBJECT)
+
+static void
+empathy_chandler_class_init (EmpathyChandlerClass *klass)
+{
+ signals[NEW_CHANNEL] =
+ g_signal_new ("new-channel",
+ G_OBJECT_CLASS_TYPE (klass),
+ G_SIGNAL_RUN_LAST,
+ 0,
+ NULL, NULL,
+ _empathy_marshal_VOID__OBJECT_OBJECT,
+ G_TYPE_NONE,
+ 2, TELEPATHY_CONN_TYPE, TELEPATHY_CHAN_TYPE);
+}
+
+static void
+empathy_chandler_init (EmpathyChandler *chandler)
+{
+}
+
+EmpathyChandler *
+empathy_chandler_new (const gchar *bus_name,
+ const gchar *object_path)
+{
+ static gboolean initialized = FALSE;
+ EmpathyChandler *chandler;
+ DBusGProxy *proxy;
+ guint result;
+ GError *error = NULL;
+
+ if (!initialized) {
+ dbus_g_object_type_install_info (EMPATHY_TYPE_CHANDLER,
+ &dbus_glib_empathy_chandler_object_info);
+ initialized = TRUE;
+ }
+
+ proxy = dbus_g_proxy_new_for_name (tp_get_bus (),
+ DBUS_SERVICE_DBUS,
+ DBUS_PATH_DBUS,
+ DBUS_INTERFACE_DBUS);
+
+ if (!dbus_g_proxy_call (proxy, "RequestName", &error,
+ G_TYPE_STRING, bus_name,
+ G_TYPE_UINT, DBUS_NAME_FLAG_DO_NOT_QUEUE,
+ G_TYPE_INVALID,
+ G_TYPE_UINT, &result,
+ G_TYPE_INVALID)) {
+ empathy_debug (DEBUG_DOMAIN,
+ "Failed to request name: %s",
+ error ? error->message : "No error given");
+ g_clear_error (&error);
+
+ return NULL;
+ }
+ g_object_unref (proxy);
+
+ chandler = g_object_new (EMPATHY_TYPE_CHANDLER, NULL);
+ dbus_g_connection_register_g_object (tp_get_bus (),
+ object_path,
+ G_OBJECT (chandler));
+
+ return chandler;
+}
+
+static gboolean
+empathy_chandler_handle_channel (EmpathyChandler *chandler,
+ const gchar *bus_name,
+ const gchar *connection,
+ const gchar *channel_type,
+ const gchar *channel,
+ guint handle_type,
+ guint handle,
+ GError **error)
+{
+ TpChan *tp_chan;
+ TpConn *tp_conn;
+
+ tp_conn = tp_conn_new_without_connect (tp_get_bus (),
+ bus_name,
+ connection,
+ NULL,
+ error);
+ if (!tp_conn) {
+ return FALSE;
+ }
+
+ tp_chan = tp_chan_new (tp_get_bus(),
+ bus_name,
+ channel,
+ channel_type,
+ handle_type,
+ handle);
+
+ empathy_debug (DEBUG_DOMAIN, "New channel to be handled: "
+ "type=%s handle=%d",
+ channel_type, handle);
+ g_signal_emit (chandler, signals[NEW_CHANNEL], 0, tp_conn, tp_chan);
+
+ g_object_unref (tp_chan);
+ g_object_unref (tp_conn);
+
+ return TRUE;
+}
+
diff --git a/gnome-2-22/libempathy/empathy-chandler.h b/gnome-2-22/libempathy/empathy-chandler.h
new file mode 100644
index 000000000..32ffeb7a7
--- /dev/null
+++ b/gnome-2-22/libempathy/empathy-chandler.h
@@ -0,0 +1,53 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2007 Collabora Ltd.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Authors: Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#ifndef __EMPATHY_CHANDLER_H__
+#define __EMPATHY_CHANDLER_H__
+
+#include <glib.h>
+
+G_BEGIN_DECLS
+
+#define EMPATHY_TYPE_CHANDLER (empathy_chandler_get_type ())
+#define EMPATHY_CHANDLER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), EMPATHY_TYPE_CHANDLER, EmpathyChandler))
+#define EMPATHY_CHANDLER_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), EMPATHY_TYPE_CHANDLER, EmpathyChandlerClass))
+#define EMPATHY_IS_CHANDLER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), EMPATHY_TYPE_CHANDLER))
+#define EMPATHY_IS_CHANDLER_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), EMPATHY_TYPE_CHANDLER))
+#define EMPATHY_CHANDLER_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), EMPATHY_TYPE_CHANDLER, EmpathyChandlerClass))
+
+typedef struct _EmpathyChandler EmpathyChandler;
+typedef struct _EmpathyChandlerClass EmpathyChandlerClass;
+
+struct _EmpathyChandler {
+ GObject parent;
+};
+
+struct _EmpathyChandlerClass {
+ GObjectClass parent_class;
+};
+
+GType empathy_chandler_get_type (void) G_GNUC_CONST;
+EmpathyChandler *empathy_chandler_new (const gchar *bus_name,
+ const gchar *object_path);
+
+G_END_DECLS
+
+#endif /* __EMPATHY_CHANDLER_H__ */
diff --git a/gnome-2-22/libempathy/empathy-chandler.xml b/gnome-2-22/libempathy/empathy-chandler.xml
new file mode 100644
index 000000000..0fb264e5f
--- /dev/null
+++ b/gnome-2-22/libempathy/empathy-chandler.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<node name="/">
+ <interface name="org.freedesktop.Telepathy.ChannelHandler">
+ <method name="HandleChannel">
+ <arg direction="in" type="s" name="bus_name" />
+ <arg direction="in" type="o" name="connection" />
+ <arg direction="in" type="s" name="channel_type" />
+ <arg direction="in" type="o" name="channel" />
+ <arg direction="in" type="u" name="handle_type" />
+ <arg direction="in" type="u" name="handle" />
+ </method>
+ </interface>
+</node>
diff --git a/gnome-2-22/libempathy/empathy-chatroom-manager.c b/gnome-2-22/libempathy/empathy-chatroom-manager.c
new file mode 100644
index 000000000..0e0c2be2b
--- /dev/null
+++ b/gnome-2-22/libempathy/empathy-chatroom-manager.c
@@ -0,0 +1,501 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2004-2007 Imendio AB
+ * Copyright (C) 2007-2008 Collabora Ltd.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * 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: Xavier Claessens <xclaesse@gmail.com>
+ * Martyn Russell <martyn@imendio.com>
+ */
+
+#include "config.h"
+
+#include <string.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+
+#include <libxml/parser.h>
+#include <libxml/tree.h>
+
+#include "empathy-debug.h"
+#include "empathy-chatroom-manager.h"
+#include "empathy-utils.h"
+
+#define DEBUG_DOMAIN "ChatroomManager"
+
+#define GET_PRIV(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), EMPATHY_TYPE_CHATROOM_MANAGER, EmpathyChatroomManagerPriv))
+
+#define CHATROOMS_XML_FILENAME "chatrooms.xml"
+#define CHATROOMS_DTD_FILENAME "empathy-chatroom-manager.dtd"
+
+struct _EmpathyChatroomManagerPriv {
+ GList *chatrooms;
+};
+
+static void empathy_chatroom_manager_class_init (EmpathyChatroomManagerClass *klass);
+static void empathy_chatroom_manager_init (EmpathyChatroomManager *manager);
+static void chatroom_manager_finalize (GObject *object);
+static gboolean chatroom_manager_get_all (EmpathyChatroomManager *manager);
+static gboolean chatroom_manager_file_parse (EmpathyChatroomManager *manager,
+ const gchar *filename);
+static void chatroom_manager_parse_chatroom (EmpathyChatroomManager *manager,
+ xmlNodePtr node);
+static gboolean chatroom_manager_file_save (EmpathyChatroomManager *manager);
+
+enum {
+ CHATROOM_ADDED,
+ CHATROOM_REMOVED,
+ LAST_SIGNAL
+};
+
+static guint signals[LAST_SIGNAL];
+
+G_DEFINE_TYPE (EmpathyChatroomManager, empathy_chatroom_manager, G_TYPE_OBJECT);
+
+static void
+empathy_chatroom_manager_class_init (EmpathyChatroomManagerClass *klass)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+ object_class->finalize = chatroom_manager_finalize;
+
+ signals[CHATROOM_ADDED] =
+ g_signal_new ("chatroom-added",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST,
+ 0,
+ NULL, NULL,
+ g_cclosure_marshal_VOID__OBJECT,
+ G_TYPE_NONE,
+ 1, EMPATHY_TYPE_CHATROOM);
+ signals[CHATROOM_REMOVED] =
+ g_signal_new ("chatroom-removed",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST,
+ 0,
+ NULL, NULL,
+ g_cclosure_marshal_VOID__OBJECT,
+ G_TYPE_NONE,
+ 1, EMPATHY_TYPE_CHATROOM);
+
+ g_type_class_add_private (object_class,
+ sizeof (EmpathyChatroomManagerPriv));
+}
+
+static void
+empathy_chatroom_manager_init (EmpathyChatroomManager *manager)
+{
+ EmpathyChatroomManagerPriv *priv;
+
+ priv = GET_PRIV (manager);
+}
+
+static void
+chatroom_manager_finalize (GObject *object)
+{
+ EmpathyChatroomManagerPriv *priv;
+
+ priv = GET_PRIV (object);
+
+ g_list_foreach (priv->chatrooms, (GFunc) g_object_unref, NULL);
+ g_list_free (priv->chatrooms);
+
+ (G_OBJECT_CLASS (empathy_chatroom_manager_parent_class)->finalize) (object);
+}
+
+EmpathyChatroomManager *
+empathy_chatroom_manager_new (void)
+{
+ static EmpathyChatroomManager *manager = NULL;
+
+ if (!manager) {
+ EmpathyChatroomManagerPriv *priv;
+
+ manager = g_object_new (EMPATHY_TYPE_CHATROOM_MANAGER, NULL);
+ priv = GET_PRIV (manager);
+ chatroom_manager_get_all (manager);
+
+ g_object_add_weak_pointer (G_OBJECT (manager), (gpointer) &manager);
+ } else {
+ g_object_ref (manager);
+ }
+
+ return manager;
+}
+
+gboolean
+empathy_chatroom_manager_add (EmpathyChatroomManager *manager,
+ EmpathyChatroom *chatroom)
+{
+ EmpathyChatroomManagerPriv *priv;
+
+ g_return_val_if_fail (EMPATHY_IS_CHATROOM_MANAGER (manager), FALSE);
+ g_return_val_if_fail (EMPATHY_IS_CHATROOM (chatroom), FALSE);
+
+ priv = GET_PRIV (manager);
+
+ /* don't add more than once */
+ if (!empathy_chatroom_manager_find (manager,
+ empathy_chatroom_get_account (chatroom),
+ empathy_chatroom_get_room (chatroom))) {
+ priv->chatrooms = g_list_prepend (priv->chatrooms, g_object_ref (chatroom));
+ chatroom_manager_file_save (manager);
+
+ g_signal_emit (manager, signals[CHATROOM_ADDED], 0, chatroom);
+
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+void
+empathy_chatroom_manager_remove (EmpathyChatroomManager *manager,
+ EmpathyChatroom *chatroom)
+{
+ EmpathyChatroomManagerPriv *priv;
+ GList *l;
+
+ g_return_if_fail (EMPATHY_IS_CHATROOM_MANAGER (manager));
+ g_return_if_fail (EMPATHY_IS_CHATROOM (chatroom));
+
+ priv = GET_PRIV (manager);
+
+ for (l = priv->chatrooms; l; l = l->next) {
+ EmpathyChatroom *this_chatroom;
+
+ this_chatroom = l->data;
+
+ if (empathy_chatroom_equal (chatroom, this_chatroom)) {
+ priv->chatrooms = g_list_delete_link (priv->chatrooms, l);
+
+ chatroom_manager_file_save (manager);
+
+ g_signal_emit (manager, signals[CHATROOM_REMOVED], 0, this_chatroom);
+ g_object_unref (this_chatroom);
+ break;
+ }
+ }
+}
+
+EmpathyChatroom *
+empathy_chatroom_manager_find (EmpathyChatroomManager *manager,
+ McAccount *account,
+ const gchar *room)
+{
+ EmpathyChatroomManagerPriv *priv;
+ GList *l;
+
+ g_return_val_if_fail (EMPATHY_IS_CHATROOM_MANAGER (manager), NULL);
+ g_return_val_if_fail (MC_IS_ACCOUNT (account), NULL);
+ g_return_val_if_fail (room != NULL, NULL);
+
+ priv = GET_PRIV (manager);
+
+ for (l = priv->chatrooms; l; l = l->next) {
+ EmpathyChatroom *chatroom;
+ McAccount *this_account;
+ const gchar *this_room;
+
+ chatroom = l->data;
+ this_account = empathy_chatroom_get_account (chatroom);
+ this_room = empathy_chatroom_get_room (chatroom);
+
+ if (this_account && this_room &&
+ empathy_account_equal (account, this_account) &&
+ strcmp (this_room, room) == 0) {
+ return chatroom;
+ }
+ }
+
+ return NULL;
+}
+
+GList *
+empathy_chatroom_manager_get_chatrooms (EmpathyChatroomManager *manager,
+ McAccount *account)
+{
+ EmpathyChatroomManagerPriv *priv;
+ GList *chatrooms, *l;
+
+ g_return_val_if_fail (EMPATHY_IS_CHATROOM_MANAGER (manager), NULL);
+
+ priv = GET_PRIV (manager);
+
+ if (!account) {
+ return g_list_copy (priv->chatrooms);
+ }
+
+ chatrooms = NULL;
+ for (l = priv->chatrooms; l; l = l->next) {
+ EmpathyChatroom *chatroom;
+
+ chatroom = l->data;
+
+ if (empathy_account_equal (account,
+ empathy_chatroom_get_account (chatroom))) {
+ chatrooms = g_list_append (chatrooms, chatroom);
+ }
+ }
+
+ return chatrooms;
+}
+
+guint
+empathy_chatroom_manager_get_count (EmpathyChatroomManager *manager,
+ McAccount *account)
+{
+ EmpathyChatroomManagerPriv *priv;
+ GList *l;
+ guint count = 0;
+
+ g_return_val_if_fail (EMPATHY_IS_CHATROOM_MANAGER (manager), 0);
+
+ priv = GET_PRIV (manager);
+
+ if (!account) {
+ return g_list_length (priv->chatrooms);
+ }
+
+ for (l = priv->chatrooms; l; l = l->next) {
+ EmpathyChatroom *chatroom;
+
+ chatroom = l->data;
+
+ if (empathy_account_equal (account,
+ empathy_chatroom_get_account (chatroom))) {
+ count++;
+ }
+ }
+
+ return count;
+}
+
+void
+empathy_chatroom_manager_store (EmpathyChatroomManager *manager)
+{
+ g_return_if_fail (EMPATHY_IS_CHATROOM_MANAGER (manager));
+
+ chatroom_manager_file_save (manager);
+}
+
+/*
+ * API to save/load and parse the chatrooms file.
+ */
+
+static gboolean
+chatroom_manager_get_all (EmpathyChatroomManager *manager)
+{
+ EmpathyChatroomManagerPriv *priv;
+ gchar *dir;
+ gchar *file_with_path = NULL;
+
+ priv = GET_PRIV (manager);
+
+ dir = g_build_filename (g_get_home_dir (), ".gnome2", PACKAGE_NAME, NULL);
+ if (!g_file_test (dir, G_FILE_TEST_EXISTS | G_FILE_TEST_IS_DIR)) {
+ g_mkdir_with_parents (dir, S_IRUSR | S_IWUSR | S_IXUSR);
+ }
+
+ file_with_path = g_build_filename (dir, CHATROOMS_XML_FILENAME, NULL);
+ g_free (dir);
+
+ /* read file in */
+ if (g_file_test (file_with_path, G_FILE_TEST_EXISTS) &&
+ !chatroom_manager_file_parse (manager, file_with_path)) {
+ g_free (file_with_path);
+ return FALSE;
+ }
+
+ g_free (file_with_path);
+
+ return TRUE;
+}
+
+static gboolean
+chatroom_manager_file_parse (EmpathyChatroomManager *manager,
+ const gchar *filename)
+{
+ EmpathyChatroomManagerPriv *priv;
+ xmlParserCtxtPtr ctxt;
+ xmlDocPtr doc;
+ xmlNodePtr chatrooms;
+ xmlNodePtr node;
+
+ priv = GET_PRIV (manager);
+
+ empathy_debug (DEBUG_DOMAIN, "Attempting to parse file:'%s'...", filename);
+
+ ctxt = xmlNewParserCtxt ();
+
+ /* Parse and validate the file. */
+ doc = xmlCtxtReadFile (ctxt, filename, NULL, 0);
+ if (!doc) {
+ g_warning ("Failed to parse file:'%s'", filename);
+ xmlFreeParserCtxt (ctxt);
+ return FALSE;
+ }
+
+ if (!empathy_xml_validate (doc, CHATROOMS_DTD_FILENAME)) {
+ g_warning ("Failed to validate file:'%s'", filename);
+ xmlFreeDoc(doc);
+ xmlFreeParserCtxt (ctxt);
+ return FALSE;
+ }
+
+ /* The root node, chatrooms. */
+ chatrooms = xmlDocGetRootElement (doc);
+
+ for (node = chatrooms->children; node; node = node->next) {
+ if (strcmp ((gchar *) node->name, "chatroom") == 0) {
+ chatroom_manager_parse_chatroom (manager, node);
+ }
+ }
+
+ empathy_debug (DEBUG_DOMAIN,
+ "Parsed %d chatrooms",
+ g_list_length (priv->chatrooms));
+
+ xmlFreeDoc(doc);
+ xmlFreeParserCtxt (ctxt);
+
+ return TRUE;
+}
+
+static void
+chatroom_manager_parse_chatroom (EmpathyChatroomManager *manager,
+ xmlNodePtr node)
+{
+ EmpathyChatroomManagerPriv *priv;
+ EmpathyChatroom *chatroom;
+ McAccount *account;
+ xmlNodePtr child;
+ gchar *str;
+ gchar *name;
+ gchar *room;
+ gchar *account_id;
+ gboolean auto_connect;
+
+ priv = GET_PRIV (manager);
+
+ /* default values. */
+ name = NULL;
+ room = NULL;
+ auto_connect = TRUE;
+ account_id = NULL;
+
+ for (child = node->children; child; child = child->next) {
+ gchar *tag;
+
+ if (xmlNodeIsText (child)) {
+ continue;
+ }
+
+ tag = (gchar *) child->name;
+ str = (gchar *) xmlNodeGetContent (child);
+
+ if (strcmp (tag, "name") == 0) {
+ name = g_strdup (str);
+ }
+ else if (strcmp (tag, "room") == 0) {
+ room = g_strdup (str);
+ }
+ else if (strcmp (tag, "auto_connect") == 0) {
+ if (strcmp (str, "yes") == 0) {
+ auto_connect = TRUE;
+ } else {
+ auto_connect = FALSE;
+ }
+ }
+ else if (strcmp (tag, "account") == 0) {
+ account_id = g_strdup (str);
+ }
+
+ xmlFree (str);
+ }
+
+ account = mc_account_lookup (account_id);
+ if (!account) {
+ g_free (name);
+ g_free (room);
+ g_free (account_id);
+ return;
+ }
+
+ chatroom = empathy_chatroom_new_full (account, room, name, auto_connect);
+ priv->chatrooms = g_list_prepend (priv->chatrooms, chatroom);
+ g_signal_emit (manager, signals[CHATROOM_ADDED], 0, chatroom);
+
+ g_object_unref (account);
+ g_free (name);
+ g_free (room);
+ g_free (account_id);
+}
+
+static gboolean
+chatroom_manager_file_save (EmpathyChatroomManager *manager)
+{
+ EmpathyChatroomManagerPriv *priv;
+ xmlDocPtr doc;
+ xmlNodePtr root;
+ GList *l;
+ gchar *dir;
+ gchar *file;
+
+ priv = GET_PRIV (manager);
+
+ dir = g_build_filename (g_get_home_dir (), ".gnome2", PACKAGE_NAME, NULL);
+ if (!g_file_test (dir, G_FILE_TEST_EXISTS | G_FILE_TEST_IS_DIR)) {
+ g_mkdir_with_parents (dir, S_IRUSR | S_IWUSR | S_IXUSR);
+ }
+
+ file = g_build_filename (dir, CHATROOMS_XML_FILENAME, NULL);
+ g_free (dir);
+
+ doc = xmlNewDoc ("1.0");
+ root = xmlNewNode (NULL, "chatrooms");
+ xmlDocSetRootElement (doc, root);
+
+ for (l = priv->chatrooms; l; l = l->next) {
+ EmpathyChatroom *chatroom;
+ xmlNodePtr node;
+ const gchar *account_id;
+
+ chatroom = l->data;
+ account_id = mc_account_get_unique_name (empathy_chatroom_get_account (chatroom));
+
+ node = xmlNewChild (root, NULL, "chatroom", NULL);
+ xmlNewTextChild (node, NULL, "name", empathy_chatroom_get_name (chatroom));
+ xmlNewTextChild (node, NULL, "room", empathy_chatroom_get_room (chatroom));
+ xmlNewTextChild (node, NULL, "account", account_id);
+ xmlNewTextChild (node, NULL, "auto_connect", empathy_chatroom_get_auto_connect (chatroom) ? "yes" : "no");
+ }
+
+ /* Make sure the XML is indented properly */
+ xmlIndentTreeOutput = 1;
+
+ empathy_debug (DEBUG_DOMAIN, "Saving file:'%s'", file);
+ xmlSaveFormatFileEnc (file, doc, "utf-8", 1);
+ xmlFreeDoc (doc);
+
+ xmlCleanupParser ();
+ xmlMemoryDump ();
+
+ g_free (file);
+
+ return TRUE;
+}
diff --git a/gnome-2-22/libempathy/empathy-chatroom-manager.dtd b/gnome-2-22/libempathy/empathy-chatroom-manager.dtd
new file mode 100644
index 000000000..df6b953f6
--- /dev/null
+++ b/gnome-2-22/libempathy/empathy-chatroom-manager.dtd
@@ -0,0 +1,17 @@
+<!--
+ DTD for Empathys Chat Rooms.
+ by Martyn Russell <martyn@imendio.com>
+ v0.2
+-->
+
+<!-- Root element. -->
+<!ELEMENT chatrooms (chatroom*)>
+
+<!ELEMENT chatroom
+ (name,room,account,(auto_connect?))>
+
+<!ELEMENT name (#PCDATA)>
+<!ELEMENT room (#PCDATA)>
+<!ELEMENT auto_connect (#PCDATA)>
+<!ELEMENT account (#PCDATA)>
+
diff --git a/gnome-2-22/libempathy/empathy-chatroom-manager.h b/gnome-2-22/libempathy/empathy-chatroom-manager.h
new file mode 100644
index 000000000..758aa29c3
--- /dev/null
+++ b/gnome-2-22/libempathy/empathy-chatroom-manager.h
@@ -0,0 +1,72 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2004-2007 Imendio AB
+ * Copyright (C) 2007 Collabora Ltd.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * 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: Xavier Claessens <xclaesse@gmail.com>
+ * Martyn Russell <martyn@imendio.com>
+ */
+
+#ifndef __EMPATHY_CHATROOM_MANAGER_H__
+#define __EMPATHY_CHATROOM_MANAGER_H__
+
+#include <glib-object.h>
+
+#include <libmissioncontrol/mc-account.h>
+
+#include "empathy-chatroom.h"
+
+G_BEGIN_DECLS
+
+#define EMPATHY_TYPE_CHATROOM_MANAGER (empathy_chatroom_manager_get_type ())
+#define EMPATHY_CHATROOM_MANAGER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), EMPATHY_TYPE_CHATROOM_MANAGER, EmpathyChatroomManager))
+#define EMPATHY_CHATROOM_MANAGER_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), EMPATHY_TYPE_CHATROOM_MANAGER, EmpathyChatroomManagerClass))
+#define EMPATHY_IS_CHATROOM_MANAGER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), EMPATHY_TYPE_CHATROOM_MANAGER))
+#define EMPATHY_IS_CHATROOM_MANAGER_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), EMPATHY_TYPE_CHATROOM_MANAGER))
+#define EMPATHY_CHATROOM_MANAGER_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), EMPATHY_TYPE_CHATROOM_MANAGER, EmpathyChatroomManagerClass))
+
+typedef struct _EmpathyChatroomManager EmpathyChatroomManager;
+typedef struct _EmpathyChatroomManagerClass EmpathyChatroomManagerClass;
+typedef struct _EmpathyChatroomManagerPriv EmpathyChatroomManagerPriv;
+
+struct _EmpathyChatroomManager {
+ GObject parent;
+};
+
+struct _EmpathyChatroomManagerClass {
+ GObjectClass parent_class;
+};
+
+GType empathy_chatroom_manager_get_type (void) G_GNUC_CONST;
+EmpathyChatroomManager *empathy_chatroom_manager_new (void);
+gboolean empathy_chatroom_manager_add (EmpathyChatroomManager *manager,
+ EmpathyChatroom *chatroom);
+void empathy_chatroom_manager_remove (EmpathyChatroomManager *manager,
+ EmpathyChatroom *chatroom);
+EmpathyChatroom * empathy_chatroom_manager_find (EmpathyChatroomManager *manager,
+ McAccount *account,
+ const gchar *room);
+GList * empathy_chatroom_manager_get_chatrooms (EmpathyChatroomManager *manager,
+ McAccount *account);
+guint empathy_chatroom_manager_get_count (EmpathyChatroomManager *manager,
+ McAccount *account);
+void empathy_chatroom_manager_store (EmpathyChatroomManager *manager);
+
+G_END_DECLS
+
+#endif /* __EMPATHY_CHATROOM_MANAGER_H__ */
diff --git a/gnome-2-22/libempathy/empathy-chatroom.c b/gnome-2-22/libempathy/empathy-chatroom.c
new file mode 100644
index 000000000..7b4a3d672
--- /dev/null
+++ b/gnome-2-22/libempathy/empathy-chatroom.c
@@ -0,0 +1,361 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2007-2008 Collabora Ltd.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Authors: Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#include "config.h"
+
+#include <string.h>
+
+#include <glib.h>
+
+#include "empathy-chatroom.h"
+#include "empathy-utils.h"
+
+#define GET_PRIV(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), EMPATHY_TYPE_CHATROOM, EmpathyChatroomPriv))
+
+struct _EmpathyChatroomPriv {
+ McAccount *account;
+ gchar *room;
+ gchar *name;
+ gboolean auto_connect;
+};
+
+static void empathy_chatroom_class_init (EmpathyChatroomClass *klass);
+static void empathy_chatroom_init (EmpathyChatroom *chatroom);
+static void chatroom_finalize (GObject *object);
+static void chatroom_get_property (GObject *object,
+ guint param_id,
+ GValue *value,
+ GParamSpec *pspec);
+static void chatroom_set_property (GObject *object,
+ guint param_id,
+ const GValue *value,
+ GParamSpec *pspec);
+
+enum {
+ PROP_0,
+ PROP_ACCOUNT,
+ PROP_ROOM,
+ PROP_NAME,
+ PROP_AUTO_CONNECT,
+};
+
+G_DEFINE_TYPE (EmpathyChatroom, empathy_chatroom, G_TYPE_OBJECT);
+
+static void
+empathy_chatroom_class_init (EmpathyChatroomClass *klass)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+ object_class->finalize = chatroom_finalize;
+ object_class->get_property = chatroom_get_property;
+ object_class->set_property = chatroom_set_property;
+
+ g_object_class_install_property (object_class,
+ PROP_ACCOUNT,
+ g_param_spec_object ("account",
+ "Chatroom Account",
+ "The account associated with an chatroom",
+ MC_TYPE_ACCOUNT,
+ G_PARAM_READWRITE));
+
+ g_object_class_install_property (object_class,
+ PROP_ROOM,
+ g_param_spec_string ("room",
+ "Chatroom Room",
+ "Chatroom represented as 'room@server'",
+ NULL,
+ G_PARAM_READWRITE));
+
+ g_object_class_install_property (object_class,
+ PROP_NAME,
+ g_param_spec_string ("name",
+ "Chatroom Name",
+ "Chatroom name",
+ NULL,
+ G_PARAM_READWRITE));
+
+ g_object_class_install_property (object_class,
+ PROP_AUTO_CONNECT,
+ g_param_spec_boolean ("auto_connect",
+ "Chatroom Auto Connect",
+ "Connect on startup",
+ FALSE,
+ G_PARAM_READWRITE));
+
+
+ g_type_class_add_private (object_class, sizeof (EmpathyChatroomPriv));
+}
+
+static void
+empathy_chatroom_init (EmpathyChatroom *chatroom)
+{
+}
+
+static void
+chatroom_finalize (GObject *object)
+{
+ EmpathyChatroomPriv *priv;
+
+ priv = GET_PRIV (object);
+
+ g_object_unref (priv->account);
+ g_free (priv->room);
+ g_free (priv->name);
+
+ (G_OBJECT_CLASS (empathy_chatroom_parent_class)->finalize) (object);
+}
+
+static void
+chatroom_get_property (GObject *object,
+ guint param_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ EmpathyChatroomPriv *priv;
+
+ priv = GET_PRIV (object);
+
+ switch (param_id) {
+ case PROP_ACCOUNT:
+ g_value_set_object (value, priv->account);
+ break;
+ case PROP_ROOM:
+ g_value_set_string (value, priv->room);
+ break;
+ case PROP_NAME:
+ g_value_set_string (value, priv->name);
+ break;
+ case PROP_AUTO_CONNECT:
+ g_value_set_boolean (value, priv->auto_connect);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
+ break;
+ };
+}
+
+static void
+chatroom_set_property (GObject *object,
+ guint param_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ EmpathyChatroomPriv *priv;
+
+ priv = GET_PRIV (object);
+
+ switch (param_id) {
+ case PROP_ACCOUNT:
+ empathy_chatroom_set_account (EMPATHY_CHATROOM (object),
+ g_value_get_object (value));
+ break;
+ case PROP_ROOM:
+ empathy_chatroom_set_room (EMPATHY_CHATROOM (object),
+ g_value_get_string (value));
+ break;
+ case PROP_NAME:
+ empathy_chatroom_set_name (EMPATHY_CHATROOM (object),
+ g_value_get_string (value));
+ break;
+ case PROP_AUTO_CONNECT:
+ empathy_chatroom_set_auto_connect (EMPATHY_CHATROOM (object),
+ g_value_get_boolean (value));
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
+ break;
+ };
+}
+
+EmpathyChatroom *
+empathy_chatroom_new (McAccount *account,
+ const gchar *room)
+{
+ g_return_val_if_fail (MC_IS_ACCOUNT (account), NULL);
+ g_return_val_if_fail (room != NULL, NULL);
+
+ return g_object_new (EMPATHY_TYPE_CHATROOM,
+ "account", account,
+ "room", room,
+ NULL);
+}
+
+EmpathyChatroom *
+empathy_chatroom_new_full (McAccount *account,
+ const gchar *room,
+ const gchar *name,
+ gboolean auto_connect)
+{
+ g_return_val_if_fail (MC_IS_ACCOUNT (account), NULL);
+ g_return_val_if_fail (room != NULL, NULL);
+
+ return g_object_new (EMPATHY_TYPE_CHATROOM,
+ "account", account,
+ "room", room,
+ "name", name,
+ "auto_connect", auto_connect,
+ NULL);
+}
+
+McAccount *
+empathy_chatroom_get_account (EmpathyChatroom *chatroom)
+{
+ EmpathyChatroomPriv *priv;
+
+ g_return_val_if_fail (EMPATHY_IS_CHATROOM (chatroom), NULL);
+
+ priv = GET_PRIV (chatroom);
+ return priv->account;
+}
+
+void
+empathy_chatroom_set_account (EmpathyChatroom *chatroom,
+ McAccount *account)
+{
+ EmpathyChatroomPriv *priv;
+
+ g_return_if_fail (EMPATHY_IS_CHATROOM (chatroom));
+ g_return_if_fail (MC_IS_ACCOUNT (account));
+
+ priv = GET_PRIV (chatroom);
+
+ if (account == priv->account) {
+ return;
+ }
+ if (priv->account) {
+ g_object_unref (priv->account);
+ }
+ priv->account = g_object_ref (account);
+
+ g_object_notify (G_OBJECT (chatroom), "account");
+}
+
+const gchar *
+empathy_chatroom_get_room (EmpathyChatroom *chatroom)
+{
+ EmpathyChatroomPriv *priv;
+
+ g_return_val_if_fail (EMPATHY_IS_CHATROOM (chatroom), NULL);
+
+ priv = GET_PRIV (chatroom);
+ return priv->room;
+}
+
+void
+empathy_chatroom_set_room (EmpathyChatroom *chatroom,
+ const gchar *room)
+{
+ EmpathyChatroomPriv *priv;
+
+ g_return_if_fail (EMPATHY_IS_CHATROOM (chatroom));
+ g_return_if_fail (room != NULL);
+
+ priv = GET_PRIV (chatroom);
+
+ g_free (priv->room);
+ priv->room = g_strdup (room);
+
+ g_object_notify (G_OBJECT (chatroom), "room");
+}
+
+const gchar *
+empathy_chatroom_get_name (EmpathyChatroom *chatroom)
+{
+ EmpathyChatroomPriv *priv;
+
+ g_return_val_if_fail (EMPATHY_IS_CHATROOM (chatroom), NULL);
+
+ priv = GET_PRIV (chatroom);
+
+ if (G_STR_EMPTY (priv->name)) {
+ return priv->room;
+ }
+
+ return priv->name;
+}
+
+void
+empathy_chatroom_set_name (EmpathyChatroom *chatroom,
+ const gchar *name)
+{
+ EmpathyChatroomPriv *priv;
+
+ g_return_if_fail (EMPATHY_IS_CHATROOM (chatroom));
+
+ priv = GET_PRIV (chatroom);
+
+ g_free (priv->name);
+ priv->name = NULL;
+ if (name) {
+ priv->name = g_strdup (name);
+ }
+
+ g_object_notify (G_OBJECT (chatroom), "name");
+}
+
+gboolean
+empathy_chatroom_get_auto_connect (EmpathyChatroom *chatroom)
+{
+ EmpathyChatroomPriv *priv;
+
+ g_return_val_if_fail (EMPATHY_IS_CHATROOM (chatroom), FALSE);
+
+ priv = GET_PRIV (chatroom);
+ return priv->auto_connect;
+}
+
+void
+empathy_chatroom_set_auto_connect (EmpathyChatroom *chatroom,
+ gboolean auto_connect)
+{
+ EmpathyChatroomPriv *priv;
+
+ g_return_if_fail (EMPATHY_IS_CHATROOM (chatroom));
+
+ priv = GET_PRIV (chatroom);
+
+ priv->auto_connect = auto_connect;
+
+ g_object_notify (G_OBJECT (chatroom), "auto-connect");
+}
+
+gboolean
+empathy_chatroom_equal (gconstpointer v1,
+ gconstpointer v2)
+{
+ McAccount *account_a;
+ McAccount *account_b;
+ const gchar *room_a;
+ const gchar *room_b;
+
+ g_return_val_if_fail (EMPATHY_IS_CHATROOM (v1), FALSE);
+ g_return_val_if_fail (EMPATHY_IS_CHATROOM (v2), FALSE);
+
+ account_a = empathy_chatroom_get_account (EMPATHY_CHATROOM (v1));
+ account_b = empathy_chatroom_get_account (EMPATHY_CHATROOM (v2));
+
+ room_a = empathy_chatroom_get_room (EMPATHY_CHATROOM (v1));
+ room_b = empathy_chatroom_get_room (EMPATHY_CHATROOM (v2));
+
+ return empathy_account_equal (account_a, account_b) && g_str_equal (room_a, room_b);
+}
+
+
diff --git a/gnome-2-22/libempathy/empathy-chatroom.h b/gnome-2-22/libempathy/empathy-chatroom.h
new file mode 100644
index 000000000..d6aff1296
--- /dev/null
+++ b/gnome-2-22/libempathy/empathy-chatroom.h
@@ -0,0 +1,77 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2007 Collabora Ltd.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Authors: Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#ifndef __EMPATHY_CHATROOM_H__
+#define __EMPATHY_CHATROOM_H__
+
+#include <glib-object.h>
+
+#include <libmissioncontrol/mc-account.h>
+
+G_BEGIN_DECLS
+
+#define EMPATHY_TYPE_CHATROOM (empathy_chatroom_get_type ())
+#define EMPATHY_CHATROOM(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), EMPATHY_TYPE_CHATROOM, EmpathyChatroom))
+#define EMPATHY_CHATROOM_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), EMPATHY_TYPE_CHATROOM, EmpathyChatroomClass))
+#define EMPATHY_IS_CHATROOM(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), EMPATHY_TYPE_CHATROOM))
+#define EMPATHY_IS_CHATROOM_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), EMPATHY_TYPE_CHATROOM))
+#define EMPATHY_CHATROOM_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), EMPATHY_TYPE_CHATROOM, EmpathyChatroomClass))
+
+#define EMPATHY_TYPE_CHATROOM_INVITE (empathy_chatroom_invite_get_gtype ())
+
+typedef struct _EmpathyChatroom EmpathyChatroom;
+typedef struct _EmpathyChatroomClass EmpathyChatroomClass;
+typedef struct _EmpathyChatroomPriv EmpathyChatroomPriv;
+
+struct _EmpathyChatroom {
+ GObject parent;
+};
+
+struct _EmpathyChatroomClass {
+ GObjectClass parent_class;
+};
+
+GType empathy_chatroom_get_type (void) G_GNUC_CONST;
+EmpathyChatroom *empathy_chatroom_new (McAccount *account,
+ const gchar *room);
+EmpathyChatroom *empathy_chatroom_new_full (McAccount *account,
+ const gchar *room,
+ const gchar *name,
+ gboolean auto_connect);
+McAccount * empathy_chatroom_get_account (EmpathyChatroom *chatroom);
+void empathy_chatroom_set_account (EmpathyChatroom *chatroom,
+ McAccount *account);
+const gchar * empathy_chatroom_get_room (EmpathyChatroom *chatroom);
+void empathy_chatroom_set_room (EmpathyChatroom *chatroom,
+ const gchar *room);
+const gchar * empathy_chatroom_get_name (EmpathyChatroom *chatroom);
+void empathy_chatroom_set_name (EmpathyChatroom *chatroom,
+ const gchar *name);
+gboolean empathy_chatroom_get_auto_connect (EmpathyChatroom *chatroom);
+void empathy_chatroom_set_auto_connect (EmpathyChatroom *chatroom,
+ gboolean auto_connect);
+gboolean empathy_chatroom_equal (gconstpointer v1,
+ gconstpointer v2);
+
+
+G_BEGIN_DECLS
+
+#endif /* __EMPATHY_CHATROOM_H__ */
diff --git a/gnome-2-22/libempathy/empathy-contact-factory.c b/gnome-2-22/libempathy/empathy-contact-factory.c
new file mode 100644
index 000000000..7cbb7c009
--- /dev/null
+++ b/gnome-2-22/libempathy/empathy-contact-factory.c
@@ -0,0 +1,179 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2007-2008 Collabora Ltd.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Authors: Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#include <config.h>
+
+#include "empathy-contact-factory.h"
+#include "empathy-tp-contact-factory.h"
+#include "empathy-utils.h"
+
+#define GET_PRIV(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), \
+ EMPATHY_TYPE_CONTACT_FACTORY, EmpathyContactFactoryPriv))
+
+struct _EmpathyContactFactoryPriv {
+ GHashTable *accounts;
+};
+
+static void empathy_contact_factory_class_init (EmpathyContactFactoryClass *klass);
+static void empathy_contact_factory_init (EmpathyContactFactory *factory);
+
+G_DEFINE_TYPE (EmpathyContactFactory, empathy_contact_factory, G_TYPE_OBJECT);
+
+static EmpathyTpContactFactory *
+contact_factory_get_tp_factory (EmpathyContactFactory *factory,
+ McAccount *account)
+{
+ EmpathyContactFactoryPriv *priv = GET_PRIV (factory);
+ EmpathyTpContactFactory *tp_factory;
+
+ tp_factory = g_hash_table_lookup (priv->accounts, account);
+ if (!tp_factory) {
+ tp_factory = empathy_tp_contact_factory_new (account);
+ g_hash_table_insert (priv->accounts,
+ g_object_ref (account),
+ tp_factory);
+ }
+
+ return tp_factory;
+}
+
+EmpathyContact *
+empathy_contact_factory_get_user (EmpathyContactFactory *factory,
+ McAccount *account)
+{
+ EmpathyTpContactFactory *tp_factory;
+
+ tp_factory = contact_factory_get_tp_factory (factory, account);
+
+ return empathy_tp_contact_factory_get_user (tp_factory);
+}
+
+EmpathyContact *
+empathy_contact_factory_get_from_id (EmpathyContactFactory *factory,
+ McAccount *account,
+ const gchar *id)
+{
+ EmpathyTpContactFactory *tp_factory;
+
+ tp_factory = contact_factory_get_tp_factory (factory, account);
+
+ return empathy_tp_contact_factory_get_from_id (tp_factory, id);
+}
+
+EmpathyContact *
+empathy_contact_factory_get_from_handle (EmpathyContactFactory *factory,
+ McAccount *account,
+ guint handle)
+{
+ EmpathyTpContactFactory *tp_factory;
+
+ tp_factory = contact_factory_get_tp_factory (factory, account);
+
+ return empathy_tp_contact_factory_get_from_handle (tp_factory, handle);
+}
+
+GList *
+empathy_contact_factory_get_from_handles (EmpathyContactFactory *factory,
+ McAccount *account,
+ GArray *handles)
+{
+ EmpathyTpContactFactory *tp_factory;
+
+ tp_factory = contact_factory_get_tp_factory (factory, account);
+
+ return empathy_tp_contact_factory_get_from_handles (tp_factory, handles);
+}
+
+void
+empathy_contact_factory_set_alias (EmpathyContactFactory *factory,
+ EmpathyContact *contact,
+ const gchar *alias)
+{
+ EmpathyTpContactFactory *tp_factory;
+ McAccount *account;
+
+ account = empathy_contact_get_account (contact);
+ tp_factory = contact_factory_get_tp_factory (factory, account);
+
+ return empathy_tp_contact_factory_set_alias (tp_factory, contact, alias);
+}
+
+void
+empathy_contact_factory_set_avatar (EmpathyContactFactory *factory,
+ McAccount *account,
+ const gchar *data,
+ gsize size,
+ const gchar *mime_type)
+{
+ EmpathyTpContactFactory *tp_factory;
+
+ tp_factory = contact_factory_get_tp_factory (factory, account);
+
+ return empathy_tp_contact_factory_set_avatar (tp_factory,
+ data, size, mime_type);
+}
+
+static void
+contact_factory_finalize (GObject *object)
+{
+ EmpathyContactFactoryPriv *priv = GET_PRIV (object);
+
+ g_hash_table_destroy (priv->accounts);
+
+ G_OBJECT_CLASS (empathy_contact_factory_parent_class)->finalize (object);
+}
+
+static void
+empathy_contact_factory_class_init (EmpathyContactFactoryClass *klass)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+ object_class->finalize = contact_factory_finalize;
+
+ g_type_class_add_private (object_class, sizeof (EmpathyContactFactoryPriv));
+}
+
+static void
+empathy_contact_factory_init (EmpathyContactFactory *factory)
+{
+ EmpathyContactFactoryPriv *priv = GET_PRIV (factory);
+
+ priv->accounts = g_hash_table_new_full (empathy_account_hash,
+ empathy_account_equal,
+ g_object_unref,
+ g_object_unref);
+}
+
+EmpathyContactFactory *
+empathy_contact_factory_new (void)
+{
+ static EmpathyContactFactory *factory = NULL;
+
+ if (!factory) {
+ factory = g_object_new (EMPATHY_TYPE_CONTACT_FACTORY, NULL);
+ g_object_add_weak_pointer (G_OBJECT (factory), (gpointer) &factory);
+ } else {
+ g_object_ref (factory);
+ }
+
+ return factory;
+}
+
diff --git a/gnome-2-22/libempathy/empathy-contact-factory.h b/gnome-2-22/libempathy/empathy-contact-factory.h
new file mode 100644
index 000000000..24aabc772
--- /dev/null
+++ b/gnome-2-22/libempathy/empathy-contact-factory.h
@@ -0,0 +1,76 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2007 Collabora Ltd.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Authors: Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#ifndef __EMPATHY_CONTACT_FACTORY_H__
+#define __EMPATHY_CONTACT_FACTORY_H__
+
+#include <glib.h>
+
+#include <libmissioncontrol/mc-account.h>
+
+#include "empathy-contact.h"
+
+G_BEGIN_DECLS
+
+#define EMPATHY_TYPE_CONTACT_FACTORY (empathy_contact_factory_get_type ())
+#define EMPATHY_CONTACT_FACTORY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), EMPATHY_TYPE_CONTACT_FACTORY, EmpathyContactFactory))
+#define EMPATHY_CONTACT_FACTORY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), EMPATHY_TYPE_CONTACT_FACTORY, EmpathyContactFactoryClass))
+#define EMPATHY_IS_CONTACT_FACTORY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), EMPATHY_TYPE_CONTACT_FACTORY))
+#define EMPATHY_IS_CONTACT_FACTORY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), EMPATHY_TYPE_CONTACT_FACTORY))
+#define EMPATHY_CONTACT_FACTORY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), EMPATHY_TYPE_CONTACT_FACTORY, EmpathyContactFactoryClass))
+
+typedef struct _EmpathyContactFactory EmpathyContactFactory;
+typedef struct _EmpathyContactFactoryClass EmpathyContactFactoryClass;
+typedef struct _EmpathyContactFactoryPriv EmpathyContactFactoryPriv;
+
+struct _EmpathyContactFactory {
+ GObject parent;
+};
+
+struct _EmpathyContactFactoryClass {
+ GObjectClass parent_class;
+};
+
+GType empathy_contact_factory_get_type (void) G_GNUC_CONST;
+EmpathyContactFactory *empathy_contact_factory_new (void);
+EmpathyContact * empathy_contact_factory_get_user (EmpathyContactFactory *factory,
+ McAccount *account);
+EmpathyContact * empathy_contact_factory_get_from_id (EmpathyContactFactory *factory,
+ McAccount *account,
+ const gchar *id);
+EmpathyContact * empathy_contact_factory_get_from_handle (EmpathyContactFactory *factory,
+ McAccount *account,
+ guint handle);
+GList * empathy_contact_factory_get_from_handles (EmpathyContactFactory *factory,
+ McAccount *account,
+ GArray *handles);
+void empathy_contact_factory_set_alias (EmpathyContactFactory *factory,
+ EmpathyContact *contact,
+ const gchar *alias);
+void empathy_contact_factory_set_avatar (EmpathyContactFactory *factory,
+ McAccount *account,
+ const gchar *data,
+ gsize size,
+ const gchar *mime_type);
+
+G_END_DECLS
+
+#endif /* __EMPATHY_CONTACT_FACTORY_H__ */
diff --git a/gnome-2-22/libempathy/empathy-contact-groups.c b/gnome-2-22/libempathy/empathy-contact-groups.c
new file mode 100644
index 000000000..b71cf6642
--- /dev/null
+++ b/gnome-2-22/libempathy/empathy-contact-groups.c
@@ -0,0 +1,285 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2005-2007 Imendio AB
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * 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: Martyn Russell <martyn@imendio.com>
+ */
+
+#include "config.h"
+
+#include <string.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+
+#include <glib.h>
+#include <glib/gi18n.h>
+
+#include <libxml/parser.h>
+#include <libxml/tree.h>
+
+#include "empathy-debug.h"
+#include "empathy-utils.h"
+#include "empathy-contact-groups.h"
+
+#define DEBUG_DOMAIN "ContactGroups"
+
+#define CONTACT_GROUPS_XML_FILENAME "contact-groups.xml"
+#define CONTACT_GROUPS_DTD_FILENAME "empathy-contact-groups.dtd"
+
+typedef struct {
+ gchar *name;
+ gboolean expanded;
+} ContactGroup;
+
+static void contact_groups_file_parse (const gchar *filename);
+static gboolean contact_groups_file_save (void);
+static ContactGroup *contact_group_new (const gchar *name,
+ gboolean expanded);
+static void contact_group_free (ContactGroup *group);
+
+static GList *groups = NULL;
+
+void
+empathy_contact_groups_get_all (void)
+{
+ gchar *dir;
+ gchar *file_with_path;
+
+ /* If already set up clean up first */
+ if (groups) {
+ g_list_foreach (groups, (GFunc)contact_group_free, NULL);
+ g_list_free (groups);
+ groups = NULL;
+ }
+
+ dir = g_build_filename (g_get_home_dir (), ".gnome2", PACKAGE_NAME, NULL);
+ file_with_path = g_build_filename (dir, CONTACT_GROUPS_XML_FILENAME, NULL);
+ g_free (dir);
+
+ if (g_file_test (file_with_path, G_FILE_TEST_EXISTS)) {
+ contact_groups_file_parse (file_with_path);
+ }
+
+ g_free (file_with_path);
+}
+
+static void
+contact_groups_file_parse (const gchar *filename)
+{
+ xmlParserCtxtPtr ctxt;
+ xmlDocPtr doc;
+ xmlNodePtr contacts;
+ xmlNodePtr account;
+ xmlNodePtr node;
+
+ empathy_debug (DEBUG_DOMAIN, "Attempting to parse file:'%s'...", filename);
+
+ ctxt = xmlNewParserCtxt ();
+
+ /* Parse and validate the file. */
+ doc = xmlCtxtReadFile (ctxt, filename, NULL, 0);
+ if (!doc) {
+ g_warning ("Failed to parse file:'%s'", filename);
+ xmlFreeParserCtxt (ctxt);
+ return;
+ }
+
+ if (!empathy_xml_validate (doc, CONTACT_GROUPS_DTD_FILENAME)) {
+ g_warning ("Failed to validate file:'%s'", filename);
+ xmlFreeDoc(doc);
+ xmlFreeParserCtxt (ctxt);
+ return;
+ }
+
+ /* The root node, contacts. */
+ contacts = xmlDocGetRootElement (doc);
+
+ account = NULL;
+ node = contacts->children;
+ while (node) {
+ if (strcmp ((gchar *) node->name, "account") == 0) {
+ account = node;
+ break;
+ }
+ node = node->next;
+ }
+
+ node = NULL;
+ if (account) {
+ node = account->children;
+ }
+
+ while (node) {
+ if (strcmp ((gchar *) node->name, "group") == 0) {
+ gchar *name;
+ gchar *expanded_str;
+ gboolean expanded;
+ ContactGroup *contact_group;
+
+ name = (gchar *) xmlGetProp (node, "name");
+ expanded_str = (gchar *) xmlGetProp (node, "expanded");
+
+ if (expanded_str && strcmp (expanded_str, "yes") == 0) {
+ expanded = TRUE;
+ } else {
+ expanded = FALSE;
+ }
+
+ contact_group = contact_group_new (name, expanded);
+ groups = g_list_append (groups, contact_group);
+
+ xmlFree (name);
+ xmlFree (expanded_str);
+ }
+
+ node = node->next;
+ }
+
+ empathy_debug (DEBUG_DOMAIN, "Parsed %d contact groups", g_list_length (groups));
+
+ xmlFreeDoc(doc);
+ xmlFreeParserCtxt (ctxt);
+}
+
+static ContactGroup *
+contact_group_new (const gchar *name,
+ gboolean expanded)
+{
+ ContactGroup *group;
+
+ group = g_new0 (ContactGroup, 1);
+
+ group->name = g_strdup (name);
+ group->expanded = expanded;
+
+ return group;
+}
+
+static void
+contact_group_free (ContactGroup *group)
+{
+ g_return_if_fail (group != NULL);
+
+ g_free (group->name);
+
+ g_free (group);
+}
+
+static gboolean
+contact_groups_file_save (void)
+{
+ xmlDocPtr doc;
+ xmlNodePtr root;
+ xmlNodePtr node;
+ GList *l;
+ gchar *dir;
+ gchar *file;
+
+ dir = g_build_filename (g_get_home_dir (), ".gnome2", PACKAGE_NAME, NULL);
+ g_mkdir_with_parents (dir, S_IRUSR | S_IWUSR | S_IXUSR);
+ file = g_build_filename (dir, CONTACT_GROUPS_XML_FILENAME, NULL);
+ g_free (dir);
+
+ doc = xmlNewDoc ("1.0");
+ root = xmlNewNode (NULL, "contacts");
+ xmlDocSetRootElement (doc, root);
+
+ node = xmlNewChild (root, NULL, "account", NULL);
+ xmlNewProp (node, "name", "Default");
+
+ for (l = groups; l; l = l->next) {
+ ContactGroup *cg;
+ xmlNodePtr subnode;
+
+ cg = l->data;
+
+ subnode = xmlNewChild (node, NULL, "group", NULL);
+ xmlNewProp (subnode, "expanded", cg->expanded ? "yes" : "no");
+ xmlNewProp (subnode, "name", cg->name);
+ }
+
+ /* Make sure the XML is indented properly */
+ xmlIndentTreeOutput = 1;
+
+ empathy_debug (DEBUG_DOMAIN, "Saving file:'%s'", file);
+ xmlSaveFormatFileEnc (file, doc, "utf-8", 1);
+ xmlFreeDoc (doc);
+
+ xmlCleanupParser ();
+ xmlMemoryDump ();
+
+ g_free (file);
+
+ return TRUE;
+}
+
+gboolean
+empathy_contact_group_get_expanded (const gchar *group)
+{
+ GList *l;
+ gboolean default_val = TRUE;
+
+ g_return_val_if_fail (group != NULL, default_val);
+
+ for (l = groups; l; l = l->next) {
+ ContactGroup *cg = l->data;
+
+ if (!cg || !cg->name) {
+ continue;
+ }
+
+ if (strcmp (cg->name, group) == 0) {
+ return cg->expanded;
+ }
+ }
+
+ return default_val;
+}
+
+void
+empathy_contact_group_set_expanded (const gchar *group,
+ gboolean expanded)
+{
+ GList *l;
+ ContactGroup *cg;
+ gboolean changed = FALSE;
+
+ g_return_if_fail (group != NULL);
+
+ for (l = groups; l; l = l->next) {
+ ContactGroup *cg = l->data;
+
+ if (!cg || !cg->name) {
+ continue;
+ }
+
+ if (strcmp (cg->name, group) == 0) {
+ cg->expanded = expanded;
+ changed = TRUE;
+ break;
+ }
+ }
+
+ /* if here... we don't have a ContactGroup for the group. */
+ if (!changed) {
+ cg = contact_group_new (group, expanded);
+ groups = g_list_append (groups, cg);
+ }
+
+ contact_groups_file_save ();
+}
diff --git a/gnome-2-22/libempathy/empathy-contact-groups.dtd b/gnome-2-22/libempathy/empathy-contact-groups.dtd
new file mode 100644
index 000000000..b4de2260a
--- /dev/null
+++ b/gnome-2-22/libempathy/empathy-contact-groups.dtd
@@ -0,0 +1,17 @@
+<!--
+ DTD for Empathys contact groups.
+ by Martyn Russell <mr@gnome.org>
+-->
+
+<!-- Root element. -->
+<!ELEMENT contacts (account)>
+
+<!ELEMENT account (group)+>
+<!ATTLIST account
+ name CDATA #REQUIRED>
+
+<!-- Groups in the roster. -->
+<!ELEMENT group EMPTY>
+<!ATTLIST group
+ name CDATA #REQUIRED
+ expanded CDATA #REQUIRED>
diff --git a/gnome-2-22/libempathy/empathy-contact-groups.h b/gnome-2-22/libempathy/empathy-contact-groups.h
new file mode 100644
index 000000000..e2e9810e3
--- /dev/null
+++ b/gnome-2-22/libempathy/empathy-contact-groups.h
@@ -0,0 +1,38 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2005 Imendio AB
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * 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: Martyn Russell <martyn@imendio.com>
+ */
+
+#ifndef __EMPATHY_CONTACT_GROUPS_H__
+#define __EMPATHY_CONTACT_GROUPS_H__
+
+G_BEGIN_DECLS
+
+#include <glib.h>
+
+void empathy_contact_groups_get_all (void);
+
+gboolean empathy_contact_group_get_expanded (const gchar *group);
+void empathy_contact_group_set_expanded (const gchar *group,
+ gboolean expanded);
+
+G_END_DECLS
+
+#endif /* __EMPATHY_CONTACT_GROUPS_H__ */
diff --git a/gnome-2-22/libempathy/empathy-contact-list.c b/gnome-2-22/libempathy/empathy-contact-list.c
new file mode 100644
index 000000000..f0c8826e5
--- /dev/null
+++ b/gnome-2-22/libempathy/empathy-contact-list.c
@@ -0,0 +1,219 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2007-2008 Collabora Ltd.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Authors: Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#include "config.h"
+
+#include "empathy-contact-list.h"
+#include "empathy-marshal.h"
+
+static void contact_list_base_init (gpointer klass);
+
+GType
+empathy_contact_list_get_type (void)
+{
+ static GType type = 0;
+
+ if (!type) {
+ static const GTypeInfo type_info = {
+ sizeof (EmpathyContactListIface),
+ contact_list_base_init,
+ NULL,
+ };
+
+ type = g_type_register_static (G_TYPE_INTERFACE,
+ "EmpathyContactList",
+ &type_info, 0);
+
+ g_type_interface_add_prerequisite (type, G_TYPE_OBJECT);
+ }
+
+ return type;
+}
+
+static void
+contact_list_base_init (gpointer klass)
+{
+ static gboolean initialized = FALSE;
+
+ if (!initialized) {
+ g_signal_new ("members-changed",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST,
+ 0,
+ NULL, NULL,
+ _empathy_marshal_VOID__OBJECT_OBJECT_UINT_STRING_BOOLEAN,
+ G_TYPE_NONE,
+ 5, EMPATHY_TYPE_CONTACT, EMPATHY_TYPE_CONTACT,
+ G_TYPE_UINT, G_TYPE_STRING, G_TYPE_BOOLEAN);
+
+ g_signal_new ("pendings-changed",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST,
+ 0,
+ NULL, NULL,
+ _empathy_marshal_VOID__OBJECT_OBJECT_UINT_STRING_BOOLEAN,
+ G_TYPE_NONE,
+ 5, EMPATHY_TYPE_CONTACT, EMPATHY_TYPE_CONTACT,
+ G_TYPE_UINT, G_TYPE_STRING, G_TYPE_BOOLEAN);
+
+ g_signal_new ("groups-changed",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST,
+ 0,
+ NULL, NULL,
+ _empathy_marshal_VOID__OBJECT_STRING_BOOLEAN,
+ G_TYPE_NONE,
+ 3, EMPATHY_TYPE_CONTACT, G_TYPE_STRING, G_TYPE_BOOLEAN);
+
+ initialized = TRUE;
+ }
+}
+
+void
+empathy_contact_list_add (EmpathyContactList *list,
+ EmpathyContact *contact,
+ const gchar *message)
+{
+ g_return_if_fail (EMPATHY_IS_CONTACT_LIST (list));
+ g_return_if_fail (EMPATHY_IS_CONTACT (contact));
+
+ if (EMPATHY_CONTACT_LIST_GET_IFACE (list)->add) {
+ EMPATHY_CONTACT_LIST_GET_IFACE (list)->add (list, contact, message);
+ }
+}
+
+void
+empathy_contact_list_remove (EmpathyContactList *list,
+ EmpathyContact *contact,
+ const gchar *message)
+{
+ g_return_if_fail (EMPATHY_IS_CONTACT_LIST (list));
+ g_return_if_fail (EMPATHY_IS_CONTACT (contact));
+
+ if (EMPATHY_CONTACT_LIST_GET_IFACE (list)->remove) {
+ EMPATHY_CONTACT_LIST_GET_IFACE (list)->remove (list, contact, message);
+ }
+}
+
+GList *
+empathy_contact_list_get_members (EmpathyContactList *list)
+{
+ g_return_val_if_fail (EMPATHY_IS_CONTACT_LIST (list), NULL);
+
+ if (EMPATHY_CONTACT_LIST_GET_IFACE (list)->get_members) {
+ return EMPATHY_CONTACT_LIST_GET_IFACE (list)->get_members (list);
+ }
+
+ return NULL;
+}
+
+GList *
+empathy_contact_list_get_pendings (EmpathyContactList *list)
+{
+ g_return_val_if_fail (EMPATHY_IS_CONTACT_LIST (list), NULL);
+
+ if (EMPATHY_CONTACT_LIST_GET_IFACE (list)->get_pendings) {
+ return EMPATHY_CONTACT_LIST_GET_IFACE (list)->get_pendings (list);
+ }
+
+ return NULL;
+}
+
+GList *
+empathy_contact_list_get_all_groups (EmpathyContactList *list)
+{
+ g_return_val_if_fail (EMPATHY_IS_CONTACT_LIST (list), NULL);
+
+ if (EMPATHY_CONTACT_LIST_GET_IFACE (list)->get_all_groups) {
+ return EMPATHY_CONTACT_LIST_GET_IFACE (list)->get_all_groups (list);
+ }
+
+ return NULL;
+}
+
+GList *
+empathy_contact_list_get_groups (EmpathyContactList *list,
+ EmpathyContact *contact)
+{
+ g_return_val_if_fail (EMPATHY_IS_CONTACT_LIST (list), NULL);
+ g_return_val_if_fail (EMPATHY_IS_CONTACT (contact), NULL);
+
+ if (EMPATHY_CONTACT_LIST_GET_IFACE (list)->get_groups) {
+ return EMPATHY_CONTACT_LIST_GET_IFACE (list)->get_groups (list, contact);
+ }
+
+ return NULL;
+}
+
+void
+empathy_contact_list_add_to_group (EmpathyContactList *list,
+ EmpathyContact *contact,
+ const gchar *group)
+{
+ g_return_if_fail (EMPATHY_IS_CONTACT_LIST (list));
+ g_return_if_fail (EMPATHY_IS_CONTACT (contact));
+ g_return_if_fail (group != NULL);
+
+ if (EMPATHY_CONTACT_LIST_GET_IFACE (list)->add_to_group) {
+ EMPATHY_CONTACT_LIST_GET_IFACE (list)->add_to_group (list, contact, group);
+ }
+}
+
+void
+empathy_contact_list_remove_from_group (EmpathyContactList *list,
+ EmpathyContact *contact,
+ const gchar *group)
+{
+ g_return_if_fail (EMPATHY_IS_CONTACT_LIST (list));
+ g_return_if_fail (EMPATHY_IS_CONTACT (contact));
+ g_return_if_fail (group != NULL);
+
+ if (EMPATHY_CONTACT_LIST_GET_IFACE (list)->remove_from_group) {
+ EMPATHY_CONTACT_LIST_GET_IFACE (list)->remove_from_group (list, contact, group);
+ }
+}
+
+void
+empathy_contact_list_rename_group (EmpathyContactList *list,
+ const gchar *old_group,
+ const gchar *new_group)
+{
+ g_return_if_fail (EMPATHY_IS_CONTACT_LIST (list));
+ g_return_if_fail (old_group != NULL);
+ g_return_if_fail (new_group != NULL);
+
+ if (EMPATHY_CONTACT_LIST_GET_IFACE (list)->rename_group) {
+ EMPATHY_CONTACT_LIST_GET_IFACE (list)->rename_group (list, old_group, new_group);
+ }
+}
+
+void
+empathy_contact_list_remove_group (EmpathyContactList *list,
+ const gchar *group)
+{
+ g_return_if_fail (EMPATHY_IS_CONTACT_LIST (list));
+ g_return_if_fail (group != NULL);
+
+ if (EMPATHY_CONTACT_LIST_GET_IFACE (list)->remove_group) {
+ EMPATHY_CONTACT_LIST_GET_IFACE (list)->remove_group (list, group);
+ }
+}
+
diff --git a/gnome-2-22/libempathy/empathy-contact-list.h b/gnome-2-22/libempathy/empathy-contact-list.h
new file mode 100644
index 000000000..35575e112
--- /dev/null
+++ b/gnome-2-22/libempathy/empathy-contact-list.h
@@ -0,0 +1,95 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2007 Collabora Ltd.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Authors: Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#ifndef __EMPATHY_CONTACT_LIST_H__
+#define __EMPATHY_CONTACT_LIST_H__
+
+#include <glib-object.h>
+
+#include "empathy-contact.h"
+#include "empathy-tp-group.h"
+
+G_BEGIN_DECLS
+
+#define EMPATHY_TYPE_CONTACT_LIST (empathy_contact_list_get_type ())
+#define EMPATHY_CONTACT_LIST(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), EMPATHY_TYPE_CONTACT_LIST, EmpathyContactList))
+#define EMPATHY_IS_CONTACT_LIST(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), EMPATHY_TYPE_CONTACT_LIST))
+#define EMPATHY_CONTACT_LIST_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), EMPATHY_TYPE_CONTACT_LIST, EmpathyContactListIface))
+
+typedef struct _EmpathyContactList EmpathyContactList;
+typedef struct _EmpathyContactListIface EmpathyContactListIface;
+
+struct _EmpathyContactListIface {
+ GTypeInterface base_iface;
+
+ /* VTabled */
+ void (*add) (EmpathyContactList *list,
+ EmpathyContact *contact,
+ const gchar *message);
+ void (*remove) (EmpathyContactList *list,
+ EmpathyContact *contact,
+ const gchar *message);
+ GList * (*get_members) (EmpathyContactList *list);
+ GList * (*get_pendings) (EmpathyContactList *list);
+ GList * (*get_all_groups) (EmpathyContactList *list);
+ GList * (*get_groups) (EmpathyContactList *list,
+ EmpathyContact *contact);
+ void (*add_to_group) (EmpathyContactList *list,
+ EmpathyContact *contact,
+ const gchar *group);
+ void (*remove_from_group) (EmpathyContactList *list,
+ EmpathyContact *contact,
+ const gchar *group);
+ void (*rename_group) (EmpathyContactList *list,
+ const gchar *old_group,
+ const gchar *new_group);
+ void (*remove_group) (EmpathyContactList *list,
+ const gchar *group);
+};
+
+GType empathy_contact_list_get_type (void) G_GNUC_CONST;
+void empathy_contact_list_add (EmpathyContactList *list,
+ EmpathyContact *contact,
+ const gchar *message);
+void empathy_contact_list_remove (EmpathyContactList *list,
+ EmpathyContact *contact,
+ const gchar *message);
+GList * empathy_contact_list_get_members (EmpathyContactList *list);
+GList * empathy_contact_list_get_pendings (EmpathyContactList *list);
+GList * empathy_contact_list_get_all_groups (EmpathyContactList *list);
+GList * empathy_contact_list_get_groups (EmpathyContactList *list,
+ EmpathyContact *contact);
+void empathy_contact_list_add_to_group (EmpathyContactList *list,
+ EmpathyContact *contact,
+ const gchar *group);
+void empathy_contact_list_remove_from_group (EmpathyContactList *list,
+ EmpathyContact *contact,
+ const gchar *group);
+void empathy_contact_list_rename_group (EmpathyContactList *list,
+ const gchar *old_group,
+ const gchar *new_group);
+void empathy_contact_list_remove_group (EmpathyContactList *list,
+ const gchar *group);
+
+G_END_DECLS
+
+#endif /* __EMPATHY_CONTACT_LIST_H__ */
+
diff --git a/gnome-2-22/libempathy/empathy-contact-manager.c b/gnome-2-22/libempathy/empathy-contact-manager.c
new file mode 100644
index 000000000..c40fc3c4b
--- /dev/null
+++ b/gnome-2-22/libempathy/empathy-contact-manager.c
@@ -0,0 +1,520 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2007-2008 Collabora Ltd.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Authors: Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#include <config.h>
+
+#include <string.h>
+
+#include <libtelepathy/tp-constants.h>
+
+#include "empathy-contact-manager.h"
+#include "empathy-contact-list.h"
+#include "empathy-utils.h"
+#include "empathy-debug.h"
+
+#define GET_PRIV(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), \
+ EMPATHY_TYPE_CONTACT_MANAGER, EmpathyContactManagerPriv))
+
+#define DEBUG_DOMAIN "ContactManager"
+
+struct _EmpathyContactManagerPriv {
+ GHashTable *lists;
+ MissionControl *mc;
+};
+
+static void empathy_contact_manager_class_init (EmpathyContactManagerClass *klass);
+static void empathy_contact_manager_init (EmpathyContactManager *manager);
+static void contact_manager_iface_init (EmpathyContactListIface *iface);
+
+G_DEFINE_TYPE_WITH_CODE (EmpathyContactManager, empathy_contact_manager, G_TYPE_OBJECT,
+ G_IMPLEMENT_INTERFACE (EMPATHY_TYPE_CONTACT_LIST,
+ contact_manager_iface_init));
+
+static void
+contact_manager_members_changed_cb (EmpathyTpContactList *list,
+ EmpathyContact *contact,
+ EmpathyContact *actor,
+ guint reason,
+ gchar *message,
+ gboolean is_member,
+ EmpathyContactManager *manager)
+{
+ g_signal_emit_by_name (manager, "members-changed",
+ contact, actor, reason, message, is_member);
+}
+
+static void
+contact_manager_pendings_changed_cb (EmpathyTpContactList *list,
+ EmpathyContact *contact,
+ EmpathyContact *actor,
+ guint reason,
+ gchar *message,
+ gboolean is_pending,
+ EmpathyContactManager *manager)
+{
+ g_signal_emit_by_name (manager, "pendings-changed",
+ contact, actor, reason, message, is_pending);
+}
+
+static void
+contact_manager_groups_changed_cb (EmpathyTpContactList *list,
+ EmpathyContact *contact,
+ gchar *group,
+ gboolean is_member,
+ EmpathyContactManager *manager)
+{
+ g_signal_emit_by_name (manager, "groups-changed",
+ contact, group, is_member);
+}
+
+static void contact_manager_destroy_cb (EmpathyTpContactList *list,
+ EmpathyContactManager *manager);
+
+static void
+contact_manager_disconnect_foreach (gpointer key,
+ gpointer value,
+ gpointer user_data)
+{
+ EmpathyTpContactList *list = value;
+ EmpathyContactManager *manager = user_data;
+
+ /* Disconnect signals from the list */
+ g_signal_handlers_disconnect_by_func (list,
+ contact_manager_members_changed_cb,
+ manager);
+ g_signal_handlers_disconnect_by_func (list,
+ contact_manager_pendings_changed_cb,
+ manager);
+ g_signal_handlers_disconnect_by_func (list,
+ contact_manager_groups_changed_cb,
+ manager);
+ g_signal_handlers_disconnect_by_func (list,
+ contact_manager_destroy_cb,
+ manager);
+}
+
+static void
+contact_manager_destroy_cb (EmpathyTpContactList *list,
+ EmpathyContactManager *manager)
+{
+ EmpathyContactManagerPriv *priv = GET_PRIV (manager);
+ McAccount *account;
+
+ account = empathy_tp_contact_list_get_account (list);
+
+ empathy_debug (DEBUG_DOMAIN, "Removing account: %s",
+ mc_account_get_display_name (account));
+
+ contact_manager_disconnect_foreach (account, list, manager);
+ g_hash_table_remove (priv->lists, account);
+}
+
+static void
+contact_manager_add_account (EmpathyContactManager *manager,
+ McAccount *account)
+{
+ EmpathyContactManagerPriv *priv = GET_PRIV (manager);
+ EmpathyTpContactList *list;
+
+ if (g_hash_table_lookup (priv->lists, account)) {
+ return;
+ }
+
+ empathy_debug (DEBUG_DOMAIN, "Adding new account: %s",
+ mc_account_get_display_name (account));
+
+ list = empathy_tp_contact_list_new (account);
+ if (!list) {
+ return;
+ }
+
+ g_hash_table_insert (priv->lists, g_object_ref (account), list);
+
+ /* Connect signals */
+ g_signal_connect (list, "members-changed",
+ G_CALLBACK (contact_manager_members_changed_cb),
+ manager);
+ g_signal_connect (list, "pendings-changed",
+ G_CALLBACK (contact_manager_pendings_changed_cb),
+ manager);
+ g_signal_connect (list, "groups-changed",
+ G_CALLBACK (contact_manager_groups_changed_cb),
+ manager);
+ g_signal_connect (list, "destroy",
+ G_CALLBACK (contact_manager_destroy_cb),
+ manager);
+}
+
+static void
+contact_manager_status_changed_cb (MissionControl *mc,
+ TpConnectionStatus status,
+ McPresence presence,
+ TpConnectionStatusReason reason,
+ const gchar *unique_name,
+ EmpathyContactManager *manager)
+{
+ McAccount *account;
+
+ if (status != TP_CONNECTION_STATUS_CONNECTED) {
+ /* We only care about newly connected accounts */
+ return;
+ }
+
+ account = mc_account_lookup (unique_name);
+ contact_manager_add_account (manager, account);
+ g_object_unref (account);
+}
+
+static void
+contact_manager_finalize (GObject *object)
+{
+ EmpathyContactManagerPriv *priv = GET_PRIV (object);
+
+ dbus_g_proxy_disconnect_signal (DBUS_G_PROXY (priv->mc),
+ "AccountStatusChanged",
+ G_CALLBACK (contact_manager_status_changed_cb),
+ object);
+
+ g_hash_table_foreach (priv->lists,
+ contact_manager_disconnect_foreach,
+ object);
+ g_hash_table_destroy (priv->lists);
+ g_object_unref (priv->mc);
+}
+
+static void
+empathy_contact_manager_class_init (EmpathyContactManagerClass *klass)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+ object_class->finalize = contact_manager_finalize;
+
+ g_type_class_add_private (object_class, sizeof (EmpathyContactManagerPriv));
+}
+
+static void
+empathy_contact_manager_init (EmpathyContactManager *manager)
+{
+ EmpathyContactManagerPriv *priv;
+ GSList *accounts, *l;
+
+ priv = GET_PRIV (manager);
+
+ priv->lists = g_hash_table_new_full (empathy_account_hash,
+ empathy_account_equal,
+ (GDestroyNotify) g_object_unref,
+ (GDestroyNotify) g_object_unref);
+
+ priv->mc = empathy_mission_control_new ();
+
+ dbus_g_proxy_connect_signal (DBUS_G_PROXY (priv->mc),
+ "AccountStatusChanged",
+ G_CALLBACK (contact_manager_status_changed_cb),
+ manager, NULL);
+
+ /* Get ContactList for existing connections */
+ accounts = mission_control_get_online_connections (priv->mc, NULL);
+ for (l = accounts; l; l = l->next) {
+ contact_manager_add_account (manager, l->data);
+ g_object_unref (l->data);
+ }
+ g_slist_free (accounts);
+}
+
+EmpathyContactManager *
+empathy_contact_manager_new (void)
+{
+ static EmpathyContactManager *manager = NULL;
+
+ if (!manager) {
+ manager = g_object_new (EMPATHY_TYPE_CONTACT_MANAGER, NULL);
+ g_object_add_weak_pointer (G_OBJECT (manager), (gpointer) &manager);
+ } else {
+ g_object_ref (manager);
+ }
+
+ return manager;
+}
+
+EmpathyTpContactList *
+empathy_contact_manager_get_list (EmpathyContactManager *manager,
+ McAccount *account)
+{
+ EmpathyContactManagerPriv *priv = GET_PRIV (manager);
+
+ g_return_val_if_fail (EMPATHY_IS_CONTACT_MANAGER (manager), NULL);
+ g_return_val_if_fail (MC_IS_ACCOUNT (account), NULL);
+
+ return g_hash_table_lookup (priv->lists, account);
+}
+
+static void
+contact_manager_add (EmpathyContactList *manager,
+ EmpathyContact *contact,
+ const gchar *message)
+{
+ EmpathyContactManagerPriv *priv = GET_PRIV (manager);
+ EmpathyContactList *list;
+ McAccount *account;
+
+ g_return_if_fail (EMPATHY_IS_CONTACT_MANAGER (manager));
+
+ account = empathy_contact_get_account (contact);
+ list = g_hash_table_lookup (priv->lists, account);
+
+ if (list) {
+ empathy_contact_list_add (list, contact, message);
+ }
+}
+
+static void
+contact_manager_remove (EmpathyContactList *manager,
+ EmpathyContact *contact,
+ const gchar *message)
+{
+ EmpathyContactManagerPriv *priv = GET_PRIV (manager);
+ EmpathyContactList *list;
+ McAccount *account;
+
+ g_return_if_fail (EMPATHY_IS_CONTACT_MANAGER (manager));
+
+ account = empathy_contact_get_account (contact);
+ list = g_hash_table_lookup (priv->lists, account);
+
+ if (list) {
+ empathy_contact_list_remove (list, contact, message);
+ }
+}
+
+static void
+contact_manager_get_members_foreach (McAccount *account,
+ EmpathyTpContactList *list,
+ GList **contacts)
+{
+ GList *l;
+
+ l = empathy_contact_list_get_members (EMPATHY_CONTACT_LIST (list));
+ *contacts = g_list_concat (*contacts, l);
+}
+
+static GList *
+contact_manager_get_members (EmpathyContactList *manager)
+{
+ EmpathyContactManagerPriv *priv = GET_PRIV (manager);
+ GList *contacts = NULL;
+
+ g_return_val_if_fail (EMPATHY_IS_CONTACT_MANAGER (manager), NULL);
+
+ g_hash_table_foreach (priv->lists,
+ (GHFunc) contact_manager_get_members_foreach,
+ &contacts);
+
+ return contacts;
+}
+
+static void
+contact_manager_get_pendings_foreach (McAccount *account,
+ EmpathyTpContactList *list,
+ GList **contacts)
+{
+ GList *l;
+
+ l = empathy_contact_list_get_pendings (EMPATHY_CONTACT_LIST (list));
+ *contacts = g_list_concat (*contacts, l);
+}
+
+static GList *
+contact_manager_get_pendings (EmpathyContactList *manager)
+{
+ EmpathyContactManagerPriv *priv = GET_PRIV (manager);
+ GList *contacts = NULL;
+
+ g_return_val_if_fail (EMPATHY_IS_CONTACT_MANAGER (manager), NULL);
+
+ g_hash_table_foreach (priv->lists,
+ (GHFunc) contact_manager_get_pendings_foreach,
+ &contacts);
+
+ return contacts;
+}
+
+static void
+contact_manager_get_all_groups_foreach (McAccount *account,
+ EmpathyTpContactList *list,
+ GList **all_groups)
+{
+ GList *groups, *l;
+
+ groups = empathy_contact_list_get_all_groups (EMPATHY_CONTACT_LIST (list));
+ for (l = groups; l; l = l->next) {
+ if (!g_list_find_custom (*all_groups,
+ l->data,
+ (GCompareFunc) strcmp)) {
+ *all_groups = g_list_prepend (*all_groups, l->data);
+ } else {
+ g_free (l->data);
+ }
+ }
+
+ g_list_free (groups);
+}
+
+static GList *
+contact_manager_get_all_groups (EmpathyContactList *manager)
+{
+ EmpathyContactManagerPriv *priv = GET_PRIV (manager);
+ GList *groups = NULL;
+
+ g_return_val_if_fail (EMPATHY_IS_CONTACT_MANAGER (manager), NULL);
+
+ g_hash_table_foreach (priv->lists,
+ (GHFunc) contact_manager_get_all_groups_foreach,
+ &groups);
+
+ return groups;
+}
+
+static GList *
+contact_manager_get_groups (EmpathyContactList *manager,
+ EmpathyContact *contact)
+{
+ EmpathyContactManagerPriv *priv = GET_PRIV (manager);
+ EmpathyContactList *list;
+ McAccount *account;
+
+ g_return_val_if_fail (EMPATHY_IS_CONTACT_MANAGER (manager), NULL);
+
+ account = empathy_contact_get_account (contact);
+ list = g_hash_table_lookup (priv->lists, account);
+
+ if (list) {
+ return empathy_contact_list_get_groups (list, contact);
+ }
+
+ return NULL;
+}
+
+static void
+contact_manager_add_to_group (EmpathyContactList *manager,
+ EmpathyContact *contact,
+ const gchar *group)
+{
+ EmpathyContactManagerPriv *priv = GET_PRIV (manager);
+ EmpathyContactList *list;
+ McAccount *account;
+
+ g_return_if_fail (EMPATHY_IS_CONTACT_MANAGER (manager));
+
+ account = empathy_contact_get_account (contact);
+ list = g_hash_table_lookup (priv->lists, account);
+
+ if (list) {
+ empathy_contact_list_add_to_group (list, contact, group);
+ }
+}
+
+static void
+contact_manager_remove_from_group (EmpathyContactList *manager,
+ EmpathyContact *contact,
+ const gchar *group)
+{
+ EmpathyContactManagerPriv *priv = GET_PRIV (manager);
+ EmpathyContactList *list;
+ McAccount *account;
+
+ g_return_if_fail (EMPATHY_IS_CONTACT_MANAGER (manager));
+
+ account = empathy_contact_get_account (contact);
+ list = g_hash_table_lookup (priv->lists, account);
+
+ if (list) {
+ empathy_contact_list_remove_from_group (list, contact, group);
+ }
+}
+
+typedef struct {
+ const gchar *old_group;
+ const gchar *new_group;
+} RenameGroupData;
+
+static void
+contact_manager_rename_group_foreach (McAccount *account,
+ EmpathyTpContactList *list,
+ RenameGroupData *data)
+{
+ empathy_contact_list_rename_group (EMPATHY_CONTACT_LIST (list),
+ data->old_group,
+ data->new_group);
+}
+
+static void
+contact_manager_rename_group (EmpathyContactList *manager,
+ const gchar *old_group,
+ const gchar *new_group)
+{
+ EmpathyContactManagerPriv *priv = GET_PRIV (manager);
+ RenameGroupData data;
+
+ g_return_if_fail (EMPATHY_IS_CONTACT_MANAGER (manager));
+
+ data.old_group = old_group;
+ data.new_group = new_group;
+ g_hash_table_foreach (priv->lists,
+ (GHFunc) contact_manager_rename_group_foreach,
+ &data);
+}
+
+static void contact_manager_remove_group_foreach (McAccount *account,
+ EmpathyTpContactList *list,
+ const gchar *group)
+{
+ empathy_contact_list_remove_group (EMPATHY_CONTACT_LIST (list),
+ group);
+}
+
+static void
+contact_manager_remove_group (EmpathyContactList *manager,
+ const gchar *group)
+{
+ EmpathyContactManagerPriv *priv = GET_PRIV (manager);
+
+ g_return_if_fail (EMPATHY_IS_CONTACT_MANAGER (manager));
+
+ g_hash_table_foreach (priv->lists,
+ (GHFunc) contact_manager_remove_group_foreach,
+ (gpointer) group);
+}
+
+static void
+contact_manager_iface_init (EmpathyContactListIface *iface)
+{
+ iface->add = contact_manager_add;
+ iface->remove = contact_manager_remove;
+ iface->get_members = contact_manager_get_members;
+ iface->get_pendings = contact_manager_get_pendings;
+ iface->get_all_groups = contact_manager_get_all_groups;
+ iface->get_groups = contact_manager_get_groups;
+ iface->add_to_group = contact_manager_add_to_group;
+ iface->remove_from_group = contact_manager_remove_from_group;
+ iface->rename_group = contact_manager_rename_group;
+ iface->remove_group = contact_manager_remove_group;
+}
+
diff --git a/gnome-2-22/libempathy/empathy-contact-manager.h b/gnome-2-22/libempathy/empathy-contact-manager.h
new file mode 100644
index 000000000..0647abb24
--- /dev/null
+++ b/gnome-2-22/libempathy/empathy-contact-manager.h
@@ -0,0 +1,60 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2007 Collabora Ltd.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Authors: Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#ifndef __EMPATHY_CONTACT_MANAGER_H__
+#define __EMPATHY_CONTACT_MANAGER_H__
+
+#include <glib.h>
+
+#include <libmissioncontrol/mc-account.h>
+
+#include "empathy-contact.h"
+#include "empathy-tp-contact-list.h"
+
+G_BEGIN_DECLS
+
+#define EMPATHY_TYPE_CONTACT_MANAGER (empathy_contact_manager_get_type ())
+#define EMPATHY_CONTACT_MANAGER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), EMPATHY_TYPE_CONTACT_MANAGER, EmpathyContactManager))
+#define EMPATHY_CONTACT_MANAGER_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), EMPATHY_TYPE_CONTACT_MANAGER, EmpathyContactManagerClass))
+#define EMPATHY_IS_CONTACT_MANAGER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), EMPATHY_TYPE_CONTACT_MANAGER))
+#define EMPATHY_IS_CONTACT_MANAGER_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), EMPATHY_TYPE_CONTACT_MANAGER))
+#define EMPATHY_CONTACT_MANAGER_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), EMPATHY_TYPE_CONTACT_MANAGER, EmpathyContactManagerClass))
+
+typedef struct _EmpathyContactManager EmpathyContactManager;
+typedef struct _EmpathyContactManagerClass EmpathyContactManagerClass;
+typedef struct _EmpathyContactManagerPriv EmpathyContactManagerPriv;
+
+struct _EmpathyContactManager {
+ GObject parent;
+};
+
+struct _EmpathyContactManagerClass {
+ GObjectClass parent_class;
+};
+
+GType empathy_contact_manager_get_type (void) G_GNUC_CONST;
+EmpathyContactManager *empathy_contact_manager_new (void);
+EmpathyTpContactList * empathy_contact_manager_get_list (EmpathyContactManager *manager,
+ McAccount *account);
+
+G_END_DECLS
+
+#endif /* __EMPATHY_CONTACT_MANAGER_H__ */
diff --git a/gnome-2-22/libempathy/empathy-contact.c b/gnome-2-22/libempathy/empathy-contact.c
new file mode 100644
index 000000000..2ec295065
--- /dev/null
+++ b/gnome-2-22/libempathy/empathy-contact.c
@@ -0,0 +1,700 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2004 Imendio AB
+ * Copyright (C) 2007-2008 Collabora Ltd.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * 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: Mikael Hallendal <micke@imendio.com>
+ * Martyn Russell <martyn@imendio.com>
+ * Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#include "config.h"
+
+#include <string.h>
+
+#include <glib/gi18n.h>
+
+#include <telepathy-glib/util.h>
+
+#include "empathy-contact.h"
+#include "empathy-utils.h"
+#include "empathy-debug.h"
+#include "empathy-enum-types.h"
+
+#define DEBUG_DOMAIN "Contact"
+
+#define GET_PRIV(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), EMPATHY_TYPE_CONTACT, EmpathyContactPriv))
+
+typedef struct _EmpathyContactPriv EmpathyContactPriv;
+
+struct _EmpathyContactPriv {
+ gchar *id;
+ gchar *name;
+ EmpathyAvatar *avatar;
+ McAccount *account;
+ McPresence presence;
+ gchar *presence_message;
+ guint handle;
+ EmpathyCapabilities capabilities;
+ gboolean is_user;
+};
+
+static void empathy_contact_class_init (EmpathyContactClass *class);
+static void empathy_contact_init (EmpathyContact *contact);
+static void contact_finalize (GObject *object);
+static void contact_get_property (GObject *object,
+ guint param_id,
+ GValue *value,
+ GParamSpec *pspec);
+static void contact_set_property (GObject *object,
+ guint param_id,
+ const GValue *value,
+ GParamSpec *pspec);
+
+G_DEFINE_TYPE (EmpathyContact, empathy_contact, G_TYPE_OBJECT);
+
+enum {
+ PROP_0,
+ PROP_ID,
+ PROP_NAME,
+ PROP_AVATAR,
+ PROP_ACCOUNT,
+ PROP_PRESENCE,
+ PROP_PRESENCE_MESSAGE,
+ PROP_HANDLE,
+ PROP_CAPABILITIES,
+ PROP_IS_USER
+};
+
+static void
+empathy_contact_class_init (EmpathyContactClass *class)
+{
+ GObjectClass *object_class;
+
+ object_class = G_OBJECT_CLASS (class);
+
+ object_class->finalize = contact_finalize;
+ object_class->get_property = contact_get_property;
+ object_class->set_property = contact_set_property;
+
+ g_object_class_install_property (object_class,
+ PROP_ID,
+ g_param_spec_string ("id",
+ "Contact id",
+ "String identifying contact",
+ NULL,
+ G_PARAM_READWRITE));
+
+ g_object_class_install_property (object_class,
+ PROP_NAME,
+ g_param_spec_string ("name",
+ "Contact Name",
+ "The name of the contact",
+ NULL,
+ G_PARAM_READWRITE));
+
+ g_object_class_install_property (object_class,
+ PROP_AVATAR,
+ g_param_spec_boxed ("avatar",
+ "Avatar image",
+ "The avatar image",
+ EMPATHY_TYPE_AVATAR,
+ G_PARAM_READWRITE));
+
+ g_object_class_install_property (object_class,
+ PROP_ACCOUNT,
+ g_param_spec_object ("account",
+ "Contact Account",
+ "The account associated with the contact",
+ MC_TYPE_ACCOUNT,
+ G_PARAM_READWRITE));
+
+ g_object_class_install_property (object_class,
+ PROP_PRESENCE,
+ g_param_spec_uint ("presence",
+ "Contact presence",
+ "Presence of contact",
+ MC_PRESENCE_UNSET,
+ LAST_MC_PRESENCE,
+ MC_PRESENCE_UNSET,
+ G_PARAM_READWRITE));
+
+ g_object_class_install_property (object_class,
+ PROP_PRESENCE_MESSAGE,
+ g_param_spec_string ("presence-message",
+ "Contact presence message",
+ "Presence message of contact",
+ NULL,
+ G_PARAM_READWRITE));
+ g_object_class_install_property (object_class,
+ PROP_HANDLE,
+ g_param_spec_uint ("handle",
+ "Contact Handle",
+ "The handle of the contact",
+ 0,
+ G_MAXUINT,
+ 0,
+ G_PARAM_READWRITE));
+
+ g_object_class_install_property (object_class,
+ PROP_CAPABILITIES,
+ g_param_spec_flags ("capabilities",
+ "Contact Capabilities",
+ "Capabilities of the contact",
+ EMPATHY_TYPE_CAPABILITIES,
+ EMPATHY_CAPABILITIES_UNKNOWN,
+ G_PARAM_CONSTRUCT | G_PARAM_READWRITE));
+
+ g_object_class_install_property (object_class,
+ PROP_IS_USER,
+ g_param_spec_boolean ("is-user",
+ "Contact is-user",
+ "Is contact the user",
+ FALSE,
+ G_PARAM_READWRITE));
+
+ g_type_class_add_private (object_class, sizeof (EmpathyContactPriv));
+}
+
+static void
+empathy_contact_init (EmpathyContact *contact)
+{
+}
+
+static void
+contact_finalize (GObject *object)
+{
+ EmpathyContactPriv *priv;
+
+ priv = GET_PRIV (object);
+
+ empathy_debug (DEBUG_DOMAIN, "finalize: %p", object);
+
+ g_free (priv->name);
+ g_free (priv->id);
+ g_free (priv->presence_message);
+
+ if (priv->avatar) {
+ empathy_avatar_unref (priv->avatar);
+ }
+
+ if (priv->account) {
+ g_object_unref (priv->account);
+ }
+
+ G_OBJECT_CLASS (empathy_contact_parent_class)->finalize (object);
+}
+
+static void
+contact_get_property (GObject *object,
+ guint param_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ EmpathyContactPriv *priv;
+
+ priv = GET_PRIV (object);
+
+ switch (param_id) {
+ case PROP_ID:
+ g_value_set_string (value,
+ empathy_contact_get_id (EMPATHY_CONTACT (object)));
+ break;
+ case PROP_NAME:
+ g_value_set_string (value,
+ empathy_contact_get_name (EMPATHY_CONTACT (object)));
+ break;
+ case PROP_AVATAR:
+ g_value_set_boxed (value, priv->avatar);
+ break;
+ case PROP_ACCOUNT:
+ g_value_set_object (value, priv->account);
+ break;
+ case PROP_PRESENCE:
+ g_value_set_uint (value, priv->presence);
+ break;
+ case PROP_PRESENCE_MESSAGE:
+ g_value_set_string (value, priv->presence_message);
+ break;
+ case PROP_HANDLE:
+ g_value_set_uint (value, priv->handle);
+ break;
+ case PROP_CAPABILITIES:
+ g_value_set_flags (value, priv->capabilities);
+ break;
+ case PROP_IS_USER:
+ g_value_set_boolean (value, priv->is_user);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
+ break;
+ };
+}
+
+static void
+contact_set_property (GObject *object,
+ guint param_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ EmpathyContactPriv *priv;
+
+ priv = GET_PRIV (object);
+
+ switch (param_id) {
+ case PROP_ID:
+ empathy_contact_set_id (EMPATHY_CONTACT (object),
+ g_value_get_string (value));
+ break;
+ case PROP_NAME:
+ empathy_contact_set_name (EMPATHY_CONTACT (object),
+ g_value_get_string (value));
+ break;
+ case PROP_AVATAR:
+ empathy_contact_set_avatar (EMPATHY_CONTACT (object),
+ g_value_get_boxed (value));
+ break;
+ case PROP_ACCOUNT:
+ empathy_contact_set_account (EMPATHY_CONTACT (object),
+ MC_ACCOUNT (g_value_get_object (value)));
+ break;
+ case PROP_PRESENCE:
+ empathy_contact_set_presence (EMPATHY_CONTACT (object),
+ g_value_get_uint (value));
+ break;
+ case PROP_PRESENCE_MESSAGE:
+ empathy_contact_set_presence_message (EMPATHY_CONTACT (object),
+ g_value_get_string (value));
+ break;
+ case PROP_HANDLE:
+ empathy_contact_set_handle (EMPATHY_CONTACT (object),
+ g_value_get_uint (value));
+ break;
+ case PROP_CAPABILITIES:
+ empathy_contact_set_capabilities (EMPATHY_CONTACT (object),
+ g_value_get_flags (value));
+ break;
+ case PROP_IS_USER:
+ empathy_contact_set_is_user (EMPATHY_CONTACT (object),
+ g_value_get_boolean (value));
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
+ break;
+ };
+}
+
+EmpathyContact *
+empathy_contact_new (McAccount *account)
+{
+ return g_object_new (EMPATHY_TYPE_CONTACT,
+ "account", account,
+ NULL);
+}
+
+EmpathyContact *
+empathy_contact_new_full (McAccount *account,
+ const gchar *id,
+ const gchar *name)
+{
+ return g_object_new (EMPATHY_TYPE_CONTACT,
+ "account", account,
+ "name", name,
+ "id", id,
+ NULL);
+}
+
+const gchar *
+empathy_contact_get_id (EmpathyContact *contact)
+{
+ EmpathyContactPriv *priv;
+
+ g_return_val_if_fail (EMPATHY_IS_CONTACT (contact), "");
+
+ priv = GET_PRIV (contact);
+
+ if (priv->id) {
+ return priv->id;
+ }
+
+ return "";
+}
+
+void
+empathy_contact_set_id (EmpathyContact *contact,
+ const gchar *id)
+{
+ EmpathyContactPriv *priv;
+
+ g_return_if_fail (EMPATHY_IS_CONTACT (contact));
+ g_return_if_fail (id != NULL);
+
+ priv = GET_PRIV (contact);
+
+ if (priv->id && strcmp (id, priv->id) == 0) {
+ return;
+ }
+
+ g_free (priv->id);
+ priv->id = g_strdup (id);
+
+ g_object_notify (G_OBJECT (contact), "id");
+}
+
+const gchar *
+empathy_contact_get_name (EmpathyContact *contact)
+{
+ EmpathyContactPriv *priv;
+
+ g_return_val_if_fail (EMPATHY_IS_CONTACT (contact), "");
+
+ priv = GET_PRIV (contact);
+
+ if (G_STR_EMPTY (priv->name)) {
+ return empathy_contact_get_id (contact);
+ }
+
+ return priv->name;
+}
+
+void
+empathy_contact_set_name (EmpathyContact *contact,
+ const gchar *name)
+{
+ EmpathyContactPriv *priv;
+
+ g_return_if_fail (EMPATHY_IS_CONTACT (contact));
+ g_return_if_fail (name != NULL);
+
+ priv = GET_PRIV (contact);
+
+ if (priv->name && strcmp (name, priv->name) == 0) {
+ return;
+ }
+
+ g_free (priv->name);
+ priv->name = g_strdup (name);
+
+ g_object_notify (G_OBJECT (contact), "name");
+}
+
+EmpathyAvatar *
+empathy_contact_get_avatar (EmpathyContact *contact)
+{
+ EmpathyContactPriv *priv;
+
+ g_return_val_if_fail (EMPATHY_IS_CONTACT (contact), NULL);
+
+ priv = GET_PRIV (contact);
+
+ return priv->avatar;
+}
+
+void
+empathy_contact_set_avatar (EmpathyContact *contact,
+ EmpathyAvatar *avatar)
+{
+ EmpathyContactPriv *priv;
+
+ g_return_if_fail (EMPATHY_IS_CONTACT (contact));
+
+ priv = GET_PRIV (contact);
+
+ if (priv->avatar == avatar) {
+ return;
+ }
+
+ if (priv->avatar) {
+ empathy_avatar_unref (priv->avatar);
+ priv->avatar = NULL;
+ }
+
+ if (avatar) {
+ priv->avatar = empathy_avatar_ref (avatar);
+ }
+
+ g_object_notify (G_OBJECT (contact), "avatar");
+}
+
+McAccount *
+empathy_contact_get_account (EmpathyContact *contact)
+{
+ EmpathyContactPriv *priv;
+
+ g_return_val_if_fail (EMPATHY_IS_CONTACT (contact), NULL);
+
+ priv = GET_PRIV (contact);
+
+ return priv->account;
+}
+
+void
+empathy_contact_set_account (EmpathyContact *contact,
+ McAccount *account)
+{
+ EmpathyContactPriv *priv;
+
+ g_return_if_fail (EMPATHY_IS_CONTACT (contact));
+ g_return_if_fail (MC_IS_ACCOUNT (account));
+
+ priv = GET_PRIV (contact);
+
+ if (account == priv->account) {
+ return;
+ }
+
+ if (priv->account) {
+ g_object_unref (priv->account);
+ }
+ priv->account = g_object_ref (account);
+
+ g_object_notify (G_OBJECT (contact), "account");
+}
+
+McPresence
+empathy_contact_get_presence (EmpathyContact *contact)
+{
+ EmpathyContactPriv *priv;
+
+ g_return_val_if_fail (EMPATHY_IS_CONTACT (contact), MC_PRESENCE_UNSET);
+
+ priv = GET_PRIV (contact);
+
+ return priv->presence;
+}
+
+void
+empathy_contact_set_presence (EmpathyContact *contact,
+ McPresence presence)
+{
+ EmpathyContactPriv *priv;
+
+ g_return_if_fail (EMPATHY_IS_CONTACT (contact));
+
+ priv = GET_PRIV (contact);
+
+ if (presence == priv->presence) {
+ return;
+ }
+
+ priv->presence = presence;
+
+ g_object_notify (G_OBJECT (contact), "presence");
+}
+
+const gchar *
+empathy_contact_get_presence_message (EmpathyContact *contact)
+{
+ EmpathyContactPriv *priv;
+
+ g_return_val_if_fail (EMPATHY_IS_CONTACT (contact), NULL);
+
+ priv = GET_PRIV (contact);
+
+ return priv->presence_message;
+}
+
+void
+empathy_contact_set_presence_message (EmpathyContact *contact,
+ const gchar *message)
+{
+ EmpathyContactPriv *priv = GET_PRIV (contact);
+
+ g_return_if_fail (EMPATHY_IS_CONTACT (contact));
+
+ if (!tp_strdiff (message, priv->presence_message)) {
+ return;
+ }
+
+ g_free (priv->presence_message);
+ priv->presence_message = g_strdup (message);
+
+ g_object_notify (G_OBJECT (contact), "presence-message");
+}
+
+guint
+empathy_contact_get_handle (EmpathyContact *contact)
+{
+ EmpathyContactPriv *priv;
+
+ g_return_val_if_fail (EMPATHY_IS_CONTACT (contact), 0);
+
+ priv = GET_PRIV (contact);
+
+ return priv->handle;
+}
+
+void
+empathy_contact_set_handle (EmpathyContact *contact,
+ guint handle)
+{
+ EmpathyContactPriv *priv;
+
+ g_return_if_fail (EMPATHY_IS_CONTACT (contact));
+
+ priv = GET_PRIV (contact);
+
+ if (priv->handle == handle) {
+ return;
+ }
+
+ priv->handle = handle;
+
+ g_object_notify (G_OBJECT (contact), "handle");
+}
+
+EmpathyCapabilities
+empathy_contact_get_capabilities (EmpathyContact *contact)
+{
+ EmpathyContactPriv *priv;
+
+ g_return_val_if_fail (EMPATHY_IS_CONTACT (contact), 0);
+
+ priv = GET_PRIV (contact);
+
+ return priv->capabilities;
+}
+
+void
+empathy_contact_set_capabilities (EmpathyContact *contact,
+ EmpathyCapabilities capabilities)
+{
+ EmpathyContactPriv *priv;
+
+ g_return_if_fail (EMPATHY_IS_CONTACT (contact));
+
+ priv = GET_PRIV (contact);
+
+ if (priv->capabilities == capabilities) {
+ return;
+ }
+
+ priv->capabilities = capabilities;
+
+ g_object_notify (G_OBJECT (contact), "capabilities");
+}
+
+gboolean
+empathy_contact_is_user (EmpathyContact *contact)
+{
+ EmpathyContactPriv *priv;
+
+ g_return_val_if_fail (EMPATHY_IS_CONTACT (contact), FALSE);
+
+ priv = GET_PRIV (contact);
+
+ return priv->is_user;
+}
+
+void
+empathy_contact_set_is_user (EmpathyContact *contact,
+ gboolean is_user)
+{
+ EmpathyContactPriv *priv;
+
+ g_return_if_fail (EMPATHY_IS_CONTACT (contact));
+
+ priv = GET_PRIV (contact);
+
+ if (priv->is_user == is_user) {
+ return;
+ }
+
+ priv->is_user = is_user;
+
+ g_object_notify (G_OBJECT (contact), "is-user");
+}
+
+gboolean
+empathy_contact_is_online (EmpathyContact *contact)
+{
+ EmpathyContactPriv *priv;
+
+ g_return_val_if_fail (EMPATHY_IS_CONTACT (contact), FALSE);
+
+ priv = GET_PRIV (contact);
+
+ return (priv->presence > MC_PRESENCE_OFFLINE);
+}
+
+const gchar *
+empathy_contact_get_status (EmpathyContact *contact)
+{
+ EmpathyContactPriv *priv;
+
+ g_return_val_if_fail (EMPATHY_IS_CONTACT (contact), "");
+
+ priv = GET_PRIV (contact);
+
+ if (priv->presence_message) {
+ return priv->presence_message;
+ }
+
+ return empathy_presence_get_default_message (priv->presence);
+}
+
+gboolean
+empathy_contact_can_voip (EmpathyContact *contact)
+{
+ EmpathyContactPriv *priv;
+
+ g_return_val_if_fail (EMPATHY_IS_CONTACT (contact), FALSE);
+
+ priv = GET_PRIV (contact);
+
+ return priv->capabilities & (EMPATHY_CAPABILITIES_AUDIO |
+ EMPATHY_CAPABILITIES_VIDEO);
+}
+
+gboolean
+empathy_contact_equal (gconstpointer v1,
+ gconstpointer v2)
+{
+ McAccount *account_a;
+ McAccount *account_b;
+ const gchar *id_a;
+ const gchar *id_b;
+
+ g_return_val_if_fail (EMPATHY_IS_CONTACT (v1), FALSE);
+ g_return_val_if_fail (EMPATHY_IS_CONTACT (v2), FALSE);
+
+ account_a = empathy_contact_get_account (EMPATHY_CONTACT (v1));
+ account_b = empathy_contact_get_account (EMPATHY_CONTACT (v2));
+
+ id_a = empathy_contact_get_id (EMPATHY_CONTACT (v1));
+ id_b = empathy_contact_get_id (EMPATHY_CONTACT (v2));
+
+ return empathy_account_equal (account_a, account_b) && g_str_equal (id_a, id_b);
+}
+
+guint
+empathy_contact_hash (gconstpointer key)
+{
+ EmpathyContactPriv *priv;
+ guint hash;
+
+ g_return_val_if_fail (EMPATHY_IS_CONTACT (key), +1);
+
+ priv = GET_PRIV (EMPATHY_CONTACT (key));
+
+ hash = empathy_account_hash (empathy_contact_get_account (EMPATHY_CONTACT (key)));
+ hash += g_str_hash (empathy_contact_get_id (EMPATHY_CONTACT (key)));
+
+ return hash;
+}
+
diff --git a/gnome-2-22/libempathy/empathy-contact.h b/gnome-2-22/libempathy/empathy-contact.h
new file mode 100644
index 000000000..b84f784cc
--- /dev/null
+++ b/gnome-2-22/libempathy/empathy-contact.h
@@ -0,0 +1,105 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2004 Imendio AB
+ * Copyright (C) 2007 Collabora Ltd.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * 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: Mikael Hallendal <micke@imendio.com>
+ * Martyn Russell <martyn@imendio.com>
+ * Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#ifndef __EMPATHY_CONTACT_H__
+#define __EMPATHY_CONTACT_H__
+
+#include <glib-object.h>
+
+#include <libmissioncontrol/mc-account.h>
+#include <libmissioncontrol/mission-control.h>
+
+#include "empathy-avatar.h"
+
+G_BEGIN_DECLS
+
+#define EMPATHY_TYPE_CONTACT (empathy_contact_get_type ())
+#define EMPATHY_CONTACT(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), EMPATHY_TYPE_CONTACT, EmpathyContact))
+#define EMPATHY_CONTACT_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), EMPATHY_TYPE_CONTACT, EmpathyContactClass))
+#define EMPATHY_IS_CONTACT(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), EMPATHY_TYPE_CONTACT))
+#define EMPATHY_IS_CONTACT_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), EMPATHY_TYPE_CONTACT))
+#define EMPATHY_CONTACT_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), EMPATHY_TYPE_CONTACT, EmpathyContactClass))
+
+typedef struct _EmpathyContact EmpathyContact;
+typedef struct _EmpathyContactClass EmpathyContactClass;
+
+struct _EmpathyContact {
+ GObject parent;
+};
+
+struct _EmpathyContactClass {
+ GObjectClass parent_class;
+};
+
+typedef enum {
+ EMPATHY_CAPABILITIES_NONE = 0,
+ EMPATHY_CAPABILITIES_AUDIO = 1 << 0,
+ EMPATHY_CAPABILITIES_VIDEO = 1 << 1,
+ EMPATHY_CAPABILITIES_UNKNOWN = 1 << 7
+} EmpathyCapabilities;
+
+GType empathy_contact_get_type (void) G_GNUC_CONST;
+EmpathyContact * empathy_contact_new (McAccount *account);
+EmpathyContact * empathy_contact_new_full (McAccount *account,
+ const gchar *id,
+ const gchar *name);
+const gchar * empathy_contact_get_id (EmpathyContact *contact);
+void empathy_contact_set_id (EmpathyContact *contact,
+ const gchar *id);
+const gchar * empathy_contact_get_name (EmpathyContact *contact);
+void empathy_contact_set_name (EmpathyContact *contact,
+ const gchar *name);
+EmpathyAvatar * empathy_contact_get_avatar (EmpathyContact *contact);
+void empathy_contact_set_avatar (EmpathyContact *contact,
+ EmpathyAvatar *avatar);
+McAccount * empathy_contact_get_account (EmpathyContact *contact);
+void empathy_contact_set_account (EmpathyContact *contact,
+ McAccount *account);
+McPresence empathy_contact_get_presence (EmpathyContact *contact);
+void empathy_contact_set_presence (EmpathyContact *contact,
+ McPresence presence);
+const gchar * empathy_contact_get_presence_message (EmpathyContact *contact);
+void empathy_contact_set_presence_message (EmpathyContact *contact,
+ const gchar *message);
+guint empathy_contact_get_handle (EmpathyContact *contact);
+void empathy_contact_set_handle (EmpathyContact *contact,
+ guint handle);
+EmpathyCapabilities empathy_contact_get_capabilities (EmpathyContact *contact);
+void empathy_contact_set_capabilities (EmpathyContact *contact,
+ EmpathyCapabilities capabilities);
+gboolean empathy_contact_is_user (EmpathyContact *contact);
+void empathy_contact_set_is_user (EmpathyContact *contact,
+ gboolean is_user);
+gboolean empathy_contact_is_online (EmpathyContact *contact);
+const gchar * empathy_contact_get_status (EmpathyContact *contact);
+gboolean empathy_contact_can_voip (EmpathyContact *contact);
+gboolean empathy_contact_equal (gconstpointer v1,
+ gconstpointer v2);
+guint empathy_contact_hash (gconstpointer key);
+
+G_END_DECLS
+
+#endif /* __EMPATHY_CONTACT_H__ */
+
diff --git a/gnome-2-22/libempathy/empathy-debug.c b/gnome-2-22/libempathy/empathy-debug.c
new file mode 100644
index 000000000..f39573025
--- /dev/null
+++ b/gnome-2-22/libempathy/empathy-debug.c
@@ -0,0 +1,132 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2006-2007 Imendio AB
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * 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: Richard Hult <richard@imendio.com>
+ */
+
+#include "config.h"
+
+#include <stdarg.h>
+#include <string.h>
+#include <unistd.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <errno.h>
+
+#include <glib.h>
+#include <glib/gprintf.h>
+#include <glib/gstdio.h>
+
+#include <telepathy-glib/debug.h>
+
+/* Set EMPATHY_DEBUG to a colon/comma/space separated list of domains, or "all"
+ * to get all debug output.
+ */
+
+#include "empathy-debug.h"
+
+static gchar **debug_strv;
+static gboolean all_domains = FALSE;
+
+static void
+debug_init (void)
+{
+ static gboolean inited = FALSE;
+
+ if (!inited) {
+ const gchar *env;
+ gint i;
+
+ env = g_getenv ("EMPATHY_DEBUG");
+ tp_debug_set_flags (env);
+
+ if (env) {
+ debug_strv = g_strsplit_set (env, ":, ", 0);
+ } else {
+ debug_strv = NULL;
+ }
+
+ for (i = 0; debug_strv && debug_strv[i]; i++) {
+ if (strcmp ("all", debug_strv[i]) == 0) {
+ all_domains = TRUE;
+ }
+ }
+
+ inited = TRUE;
+ }
+}
+
+void
+empathy_debug_impl (const gchar *domain, const gchar *msg, ...)
+{
+ gint i;
+
+ g_return_if_fail (domain != NULL);
+ g_return_if_fail (msg != NULL);
+
+ debug_init ();
+
+ for (i = 0; debug_strv && debug_strv[i]; i++) {
+ if (all_domains || strcmp (domain, debug_strv[i]) == 0) {
+ va_list args;
+
+ g_print ("%s: ", domain);
+
+ va_start (args, msg);
+ g_vprintf (msg, args);
+ va_end (args);
+
+ g_print ("\n");
+ break;
+ }
+ }
+}
+
+void
+empathy_debug_set_log_file_from_env (void)
+{
+ const gchar *output_file;
+ gint out;
+
+ output_file = g_getenv ("EMPATHY_LOGFILE");
+ if (output_file == NULL) {
+ return;
+ }
+
+ out = g_open (output_file, O_WRONLY | O_CREAT, 0644);
+ if (out == -1) {
+ g_warning ("Can't open logfile '%s': %s", output_file,
+ g_strerror (errno));
+ return;
+ }
+
+ if (dup2 (out, STDOUT_FILENO) == -1) {
+ g_warning ("Error when duplicating stdout file descriptor: %s",
+ g_strerror (errno));
+ return;
+ }
+
+ if (dup2 (out, STDERR_FILENO) == -1) {
+ g_warning ("Error when duplicating stderr file descriptor: %s",
+ g_strerror (errno));
+ return;
+ }
+}
+
diff --git a/gnome-2-22/libempathy/empathy-debug.h b/gnome-2-22/libempathy/empathy-debug.h
new file mode 100644
index 000000000..55827d5c0
--- /dev/null
+++ b/gnome-2-22/libempathy/empathy-debug.h
@@ -0,0 +1,58 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2006-2007 Imendio AB
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * 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: Richard Hult <richard@imendio.com>
+ */
+
+#ifndef __EMPATHY_DEBUG_H__
+#define __EMPATHY_DEBUG_H__
+
+#include <glib.h>
+
+G_BEGIN_DECLS
+
+#ifdef G_HAVE_ISO_VARARGS
+# ifdef EMPATHY_DISABLE_DEBUG
+# define empathy_debug(...)
+# else
+# define empathy_debug(...) empathy_debug_impl (__VA_ARGS__)
+# endif
+#elif defined(G_HAVE_GNUC_VARARGS)
+# if EMPATHY_DISABLE_DEBUG
+# define empathy_debug(fmt...)
+# else
+# define empathy_debug(fmt...) empathy_debug_impl(fmt)
+# endif
+#else
+# if EMPATHY_DISABLE_DEBUG
+# define empathy_debug(x)
+# else
+# define empathy_debug empathy_debug_impl
+# endif
+#endif
+
+void empathy_debug_impl (const gchar *domain,
+ const gchar *msg,
+ ...);
+void empathy_debug_set_log_file_from_env (void);
+
+G_END_DECLS
+
+#endif /* __EMPATHY_DEBUG_H__ */
+
diff --git a/gnome-2-22/libempathy/empathy-filter.c b/gnome-2-22/libempathy/empathy-filter.c
new file mode 100644
index 000000000..881ed8a73
--- /dev/null
+++ b/gnome-2-22/libempathy/empathy-filter.c
@@ -0,0 +1,245 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2007-2008 Collabora Ltd.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Authors: Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#include <config.h>
+
+#include <dbus/dbus-glib.h>
+
+#include <libtelepathy/tp-helpers.h>
+#include <libtelepathy/tp-conn.h>
+
+#include "empathy-filter.h"
+#include "empathy-debug.h"
+#include "empathy-utils.h"
+#include "empathy-marshal.h"
+
+#define GET_PRIV(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), \
+ EMPATHY_TYPE_FILTER, EmpathyFilterPriv))
+
+#define DEBUG_DOMAIN "EmpathyFilter"
+
+struct _EmpathyFilterPriv {
+ GHashTable *table;
+};
+
+static void empathy_filter_class_init (EmpathyFilterClass *klass);
+static void empathy_filter_init (EmpathyFilter *filter);
+static void filter_finalize (GObject *object);
+static gboolean empathy_filter_filter_channel (EmpathyFilter *filter,
+ const gchar *bus_name,
+ const gchar *connection,
+ const gchar *channel_type,
+ const gchar *channel,
+ guint handle_type,
+ guint handle,
+ guint id,
+ GError **error);
+
+#include "empathy-filter-glue.h"
+
+enum {
+ PROCESS,
+ NEW_CHANNEL,
+ LAST_SIGNAL
+};
+
+static guint signals[LAST_SIGNAL];
+
+G_DEFINE_TYPE (EmpathyFilter, empathy_filter, G_TYPE_OBJECT)
+
+static void
+empathy_filter_class_init (EmpathyFilterClass *klass)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+ object_class->finalize = filter_finalize;
+
+ signals[NEW_CHANNEL] =
+ g_signal_new ("new-channel",
+ G_OBJECT_CLASS_TYPE (klass),
+ G_SIGNAL_RUN_LAST,
+ 0,
+ NULL, NULL,
+ _empathy_marshal_VOID__OBJECT_OBJECT,
+ G_TYPE_NONE,
+ 2, TELEPATHY_CONN_TYPE, TELEPATHY_CHAN_TYPE);
+
+ signals[PROCESS] =
+ g_signal_new ("process",
+ G_OBJECT_CLASS_TYPE (klass),
+ G_SIGNAL_RUN_LAST,
+ 0,
+ NULL, NULL,
+ _empathy_marshal_VOID__UINT_BOOLEAN,
+ G_TYPE_NONE,
+ 2, G_TYPE_UINT, G_TYPE_BOOLEAN);
+
+ g_type_class_add_private (object_class, sizeof (EmpathyFilterPriv));
+}
+
+static void
+empathy_filter_init (EmpathyFilter *filter)
+{
+ EmpathyFilterPriv *priv;
+
+ priv = GET_PRIV (filter);
+
+ priv->table = g_hash_table_new_full (g_direct_hash, g_direct_equal,
+ (GDestroyNotify) g_object_unref,
+ NULL);
+}
+
+static void
+filter_finalize (GObject *object)
+{
+ EmpathyFilterPriv *priv;
+
+ priv = GET_PRIV (object);
+
+ g_hash_table_destroy (priv->table);
+}
+
+EmpathyFilter *
+empathy_filter_new (const gchar *bus_name,
+ const gchar *object_path,
+ const gchar *channel_type,
+ guint priority,
+ guint flags)
+{
+ static gboolean initialized = FALSE;
+ MissionControl *mc;
+ EmpathyFilter *filter;
+ DBusGProxy *proxy;
+ guint result;
+ GError *error = NULL;
+
+ if (!initialized) {
+ dbus_g_object_type_install_info (EMPATHY_TYPE_FILTER,
+ &dbus_glib_empathy_filter_object_info);
+ initialized = TRUE;
+ }
+
+ proxy = dbus_g_proxy_new_for_name (tp_get_bus (),
+ DBUS_SERVICE_DBUS,
+ DBUS_PATH_DBUS,
+ DBUS_INTERFACE_DBUS);
+
+ if (!dbus_g_proxy_call (proxy, "RequestName", &error,
+ G_TYPE_STRING, bus_name,
+ G_TYPE_UINT, DBUS_NAME_FLAG_DO_NOT_QUEUE,
+ G_TYPE_INVALID,
+ G_TYPE_UINT, &result,
+ G_TYPE_INVALID)) {
+ empathy_debug (DEBUG_DOMAIN,
+ "Failed to request name: %s",
+ error ? error->message : "No error given");
+ g_clear_error (&error);
+
+ return NULL;
+ }
+ g_object_unref (proxy);
+
+ filter = g_object_new (EMPATHY_TYPE_FILTER, NULL);
+ dbus_g_connection_register_g_object (tp_get_bus (),
+ object_path,
+ G_OBJECT (filter));
+
+ mc = empathy_mission_control_new ();
+ mission_control_register_filter (mc,
+ bus_name,
+ object_path,
+ channel_type,
+ priority,
+ flags,
+ NULL);
+ g_object_unref (mc);
+
+ return filter;
+}
+
+void
+empathy_filter_process (EmpathyFilter *filter,
+ TpChan *tp_chan,
+ gboolean process)
+{
+ EmpathyFilterPriv *priv;
+ guint id;
+
+ g_return_if_fail (EMPATHY_IS_FILTER (filter));
+ g_return_if_fail (TELEPATHY_IS_CHAN (tp_chan));
+
+ priv = GET_PRIV (filter);
+
+ id = GPOINTER_TO_UINT (g_hash_table_lookup (priv->table, tp_chan));
+ g_return_if_fail (id != 0);
+
+ empathy_debug (DEBUG_DOMAIN, "Processing channel id %d: %s",
+ id, process ? "Yes" : "No");
+ g_signal_emit (filter, signals[PROCESS], 0, id, process);
+ g_hash_table_remove (priv->table, tp_chan);
+}
+
+static gboolean
+empathy_filter_filter_channel (EmpathyFilter *filter,
+ const gchar *bus_name,
+ const gchar *connection,
+ const gchar *channel_type,
+ const gchar *channel,
+ guint handle_type,
+ guint handle,
+ guint id,
+ GError **error)
+{
+ EmpathyFilterPriv *priv;
+ TpChan *tp_chan;
+ TpConn *tp_conn;
+
+ priv = GET_PRIV (filter);
+
+ tp_conn = tp_conn_new_without_connect (tp_get_bus (),
+ bus_name,
+ connection,
+ NULL,
+ error);
+ if (!tp_conn) {
+ return FALSE;
+ }
+
+
+ tp_chan = tp_chan_new (tp_get_bus(),
+ bus_name,
+ channel,
+ channel_type,
+ handle_type,
+ handle);
+
+ g_hash_table_insert (priv->table, tp_chan, GUINT_TO_POINTER (id));
+
+ empathy_debug (DEBUG_DOMAIN, "New channel to be filtred: "
+ "type=%s handle=%d id=%d",
+ channel_type, handle, id);
+ g_signal_emit (filter, signals[NEW_CHANNEL], 0, tp_conn, tp_chan);
+
+ g_object_unref (tp_conn);
+
+ return TRUE;
+}
+
diff --git a/gnome-2-22/libempathy/empathy-filter.h b/gnome-2-22/libempathy/empathy-filter.h
new file mode 100644
index 000000000..4156c640f
--- /dev/null
+++ b/gnome-2-22/libempathy/empathy-filter.h
@@ -0,0 +1,62 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2007 Collabora Ltd.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Authors: Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#ifndef __EMPATHY_FILTER_H__
+#define __EMPATHY_FILTER_H__
+
+#include <glib.h>
+
+#include <libtelepathy/tp-chan.h>
+
+G_BEGIN_DECLS
+
+#define EMPATHY_TYPE_FILTER (empathy_filter_get_type ())
+#define EMPATHY_FILTER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), EMPATHY_TYPE_FILTER, EmpathyFilter))
+#define EMPATHY_FILTER_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), EMPATHY_TYPE_FILTER, EmpathyFilterClass))
+#define EMPATHY_IS_FILTER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), EMPATHY_TYPE_FILTER))
+#define EMPATHY_IS_FILTER_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), EMPATHY_TYPE_FILTER))
+#define EMPATHY_FILTER_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), EMPATHY_TYPE_FILTER, EmpathyFilterClass))
+
+typedef struct _EmpathyFilter EmpathyFilter;
+typedef struct _EmpathyFilterClass EmpathyFilterClass;
+typedef struct _EmpathyFilterPriv EmpathyFilterPriv;
+
+struct _EmpathyFilter {
+ GObject parent;
+};
+
+struct _EmpathyFilterClass {
+ GObjectClass parent_class;
+};
+
+GType empathy_filter_get_type (void) G_GNUC_CONST;
+EmpathyFilter *empathy_filter_new (const gchar *bus_name,
+ const gchar *object_path,
+ const gchar *channel_type,
+ guint priority,
+ guint flags);
+void empathy_filter_process (EmpathyFilter *filter,
+ TpChan *tp_chan,
+ gboolean process);
+
+G_END_DECLS
+
+#endif /* __EMPATHY_FILTER_H__ */
diff --git a/gnome-2-22/libempathy/empathy-filter.xml b/gnome-2-22/libempathy/empathy-filter.xml
new file mode 100644
index 000000000..0223fefb0
--- /dev/null
+++ b/gnome-2-22/libempathy/empathy-filter.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<node name="/">
+ <interface name="org.freedesktop.Telepathy.MissionControl.Filter">
+ <method name="FilterChannel">
+ <arg direction="in" type="s" name="bus_name" />
+ <arg direction="in" type="o" name="connection" />
+ <arg direction="in" type="s" name="channel_type" />
+ <arg direction="in" type="o" name="channel" />
+ <arg direction="in" type="u" name="handle_type" />
+ <arg direction="in" type="u" name="handle" />
+ <arg direction="in" type="u" name="id" />
+ </method>
+ <signal name="Process">
+ <arg type="u" name="id"/>
+ <arg type="b" name="process"/>
+ </signal>
+ </interface>
+</node>
diff --git a/gnome-2-22/libempathy/empathy-idle.c b/gnome-2-22/libempathy/empathy-idle.c
new file mode 100644
index 000000000..6e5752b8a
--- /dev/null
+++ b/gnome-2-22/libempathy/empathy-idle.c
@@ -0,0 +1,664 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2007-2008 Collabora Ltd.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Authors: Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#include <config.h>
+
+#include <string.h>
+
+#include <glib/gi18n.h>
+#include <dbus/dbus-glib.h>
+
+#include <libtelepathy/tp-helpers.h>
+#include <libmissioncontrol/mc-enum-types.h>
+
+#include "empathy-idle.h"
+#include "empathy-utils.h"
+#include "empathy-debug.h"
+
+#define GET_PRIV(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), \
+ EMPATHY_TYPE_IDLE, EmpathyIdlePriv))
+
+#define DEBUG_DOMAIN "Idle"
+
+/* Number of seconds before entering extended autoaway. */
+#define EXT_AWAY_TIME (30*60)
+
+typedef enum {
+ NM_STATE_UNKNOWN,
+ NM_STATE_ASLEEP,
+ NM_STATE_CONNECTING,
+ NM_STATE_CONNECTED,
+ NM_STATE_DISCONNECTED
+} NMState;
+
+struct _EmpathyIdlePriv {
+ MissionControl *mc;
+ DBusGProxy *gs_proxy;
+ DBusGProxy *nm_proxy;
+
+ McPresence state;
+ gchar *status;
+ McPresence flash_state;
+ gboolean auto_away;
+ gboolean use_nm;
+
+ gboolean away_reset_status;
+ McPresence away_saved_state;
+ gboolean nm_reset_status;
+ McPresence nm_saved_state;
+
+ gboolean is_idle;
+ gboolean nm_connected;
+ guint ext_away_timeout;
+};
+
+static void empathy_idle_class_init (EmpathyIdleClass *klass);
+static void empathy_idle_init (EmpathyIdle *idle);
+static void idle_finalize (GObject *object);
+static void idle_get_property (GObject *object,
+ guint param_id,
+ GValue *value,
+ GParamSpec *pspec);
+static void idle_set_property (GObject *object,
+ guint param_id,
+ const GValue *value,
+ GParamSpec *pspec);
+static void idle_presence_changed_cb (MissionControl *mc,
+ McPresence state,
+ gchar *status,
+ EmpathyIdle *idle);
+static void idle_session_idle_changed_cb (DBusGProxy *gs_proxy,
+ gboolean is_idle,
+ EmpathyIdle *idle);
+static void idle_nm_state_change_cb (DBusGProxy *proxy,
+ guint state,
+ EmpathyIdle *idle);
+static void idle_ext_away_start (EmpathyIdle *idle);
+static void idle_ext_away_stop (EmpathyIdle *idle);
+static gboolean idle_ext_away_cb (EmpathyIdle *idle);
+
+enum {
+ PROP_0,
+ PROP_STATE,
+ PROP_STATUS,
+ PROP_FLASH_STATE,
+ PROP_AUTO_AWAY,
+ PROP_USE_NM
+};
+
+G_DEFINE_TYPE (EmpathyIdle, empathy_idle, G_TYPE_OBJECT)
+
+static void
+empathy_idle_class_init (EmpathyIdleClass *klass)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+ object_class->finalize = idle_finalize;
+ object_class->get_property = idle_get_property;
+ object_class->set_property = idle_set_property;
+
+ g_object_class_install_property (object_class,
+ PROP_STATE,
+ g_param_spec_enum ("state",
+ "state",
+ "state",
+ MC_TYPE_PRESENCE,
+ MC_PRESENCE_AVAILABLE,
+ G_PARAM_READWRITE));
+ g_object_class_install_property (object_class,
+ PROP_STATUS,
+ g_param_spec_string ("status",
+ "status",
+ "status",
+ NULL,
+ G_PARAM_READWRITE));
+ g_object_class_install_property (object_class,
+ PROP_FLASH_STATE,
+ g_param_spec_enum ("flash-state",
+ "flash-state",
+ "flash-state",
+ MC_TYPE_PRESENCE,
+ MC_PRESENCE_UNSET,
+ G_PARAM_READWRITE));
+
+ g_object_class_install_property (object_class,
+ PROP_AUTO_AWAY,
+ g_param_spec_boolean ("auto-away",
+ "Automatic set presence to away",
+ "Should it set presence to away if inactive",
+ FALSE,
+ G_PARAM_READWRITE));
+
+ g_object_class_install_property (object_class,
+ PROP_USE_NM,
+ g_param_spec_boolean ("use-nm",
+ "Use Network Manager",
+ "Set presence according to Network Manager",
+ FALSE,
+ G_PARAM_READWRITE));
+
+ g_type_class_add_private (object_class, sizeof (EmpathyIdlePriv));
+}
+
+static void
+empathy_idle_init (EmpathyIdle *idle)
+{
+ EmpathyIdlePriv *priv;
+ DBusGConnection *system_bus;
+ GError *error = NULL;
+
+ priv = GET_PRIV (idle);
+
+ priv->is_idle = FALSE;
+ priv->mc = empathy_mission_control_new ();
+ priv->state = mission_control_get_presence_actual (priv->mc, NULL);
+ priv->status = mission_control_get_presence_message_actual (priv->mc, NULL);
+
+ dbus_g_proxy_connect_signal (DBUS_G_PROXY (priv->mc),
+ "PresenceChanged",
+ G_CALLBACK (idle_presence_changed_cb),
+ idle, NULL);
+
+ priv->gs_proxy = dbus_g_proxy_new_for_name (tp_get_bus (),
+ "org.gnome.ScreenSaver",
+ "/org/gnome/ScreenSaver",
+ "org.gnome.ScreenSaver");
+ if (priv->gs_proxy) {
+ dbus_g_proxy_add_signal (priv->gs_proxy, "SessionIdleChanged",
+ G_TYPE_BOOLEAN,
+ G_TYPE_INVALID);
+ dbus_g_proxy_connect_signal (priv->gs_proxy, "SessionIdleChanged",
+ G_CALLBACK (idle_session_idle_changed_cb),
+ idle, NULL);
+ } else {
+ empathy_debug (DEBUG_DOMAIN, "Failed to get gs proxy");
+ }
+
+
+ system_bus = dbus_g_bus_get (DBUS_BUS_SYSTEM, &error);
+ if (!system_bus) {
+ empathy_debug (DEBUG_DOMAIN, "Failed to get system bus: %s",
+ error ? error->message : "No error given");
+ } else {
+ priv->nm_proxy = dbus_g_proxy_new_for_name (system_bus,
+ "org.freedesktop.NetworkManager",
+ "/org/freedesktop/NetworkManager",
+ "org.freedesktop.NetworkManager");
+ }
+ if (priv->nm_proxy) {
+ dbus_g_proxy_add_signal (priv->nm_proxy, "StateChange",
+ G_TYPE_UINT, G_TYPE_INVALID);
+ dbus_g_proxy_connect_signal (priv->nm_proxy, "StateChange",
+ G_CALLBACK (idle_nm_state_change_cb),
+ idle, NULL);
+ } else {
+ empathy_debug (DEBUG_DOMAIN, "Failed to get nm proxy");
+ }
+
+ priv->nm_connected = TRUE;
+}
+
+static void
+idle_finalize (GObject *object)
+{
+ EmpathyIdlePriv *priv;
+
+ priv = GET_PRIV (object);
+
+ g_free (priv->status);
+ g_object_unref (priv->mc);
+
+ if (priv->gs_proxy) {
+ g_object_unref (priv->gs_proxy);
+ }
+
+ idle_ext_away_stop (EMPATHY_IDLE (object));
+}
+
+static void
+idle_get_property (GObject *object,
+ guint param_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ EmpathyIdlePriv *priv;
+ EmpathyIdle *idle;
+
+ priv = GET_PRIV (object);
+ idle = EMPATHY_IDLE (object);
+
+ switch (param_id) {
+ case PROP_STATE:
+ g_value_set_enum (value, empathy_idle_get_state (idle));
+ break;
+ case PROP_STATUS:
+ g_value_set_string (value, empathy_idle_get_status (idle));
+ break;
+ case PROP_FLASH_STATE:
+ g_value_set_enum (value, empathy_idle_get_flash_state (idle));
+ break;
+ case PROP_AUTO_AWAY:
+ g_value_set_boolean (value, empathy_idle_get_auto_away (idle));
+ break;
+ case PROP_USE_NM:
+ g_value_set_boolean (value, empathy_idle_get_use_nm (idle));
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
+ break;
+ };
+}
+
+static void
+idle_set_property (GObject *object,
+ guint param_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ EmpathyIdlePriv *priv;
+ EmpathyIdle *idle;
+
+ priv = GET_PRIV (object);
+ idle = EMPATHY_IDLE (object);
+
+ switch (param_id) {
+ case PROP_STATE:
+ empathy_idle_set_state (idle, g_value_get_enum (value));
+ break;
+ case PROP_STATUS:
+ empathy_idle_set_status (idle, g_value_get_string (value));
+ break;
+ case PROP_FLASH_STATE:
+ empathy_idle_set_flash_state (idle, g_value_get_enum (value));
+ break;
+ case PROP_AUTO_AWAY:
+ empathy_idle_set_auto_away (idle, g_value_get_boolean (value));
+ break;
+ case PROP_USE_NM:
+ empathy_idle_set_use_nm (idle, g_value_get_boolean (value));
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
+ break;
+ };
+}
+
+EmpathyIdle *
+empathy_idle_new (void)
+{
+ static EmpathyIdle *idle = NULL;
+
+ if (!idle) {
+ idle = g_object_new (EMPATHY_TYPE_IDLE, NULL);
+ g_object_add_weak_pointer (G_OBJECT (idle), (gpointer) &idle);
+ } else {
+ g_object_ref (idle);
+ }
+
+ return idle;
+}
+
+McPresence
+empathy_idle_get_state (EmpathyIdle *idle)
+{
+ EmpathyIdlePriv *priv;
+
+ priv = GET_PRIV (idle);
+
+ return priv->state;
+}
+
+void
+empathy_idle_set_state (EmpathyIdle *idle,
+ McPresence state)
+{
+ EmpathyIdlePriv *priv;
+
+ priv = GET_PRIV (idle);
+
+ empathy_idle_set_presence (idle, state, priv->status);
+}
+
+const gchar *
+empathy_idle_get_status (EmpathyIdle *idle)
+{
+ EmpathyIdlePriv *priv;
+
+ priv = GET_PRIV (idle);
+
+ if (!priv->status) {
+ return empathy_presence_get_default_message (priv->state);
+ }
+
+ return priv->status;
+}
+
+void
+empathy_idle_set_status (EmpathyIdle *idle,
+ const gchar *status)
+{
+ EmpathyIdlePriv *priv;
+
+ priv = GET_PRIV (idle);
+
+ empathy_idle_set_presence (idle, priv->state, status);
+}
+
+McPresence
+empathy_idle_get_flash_state (EmpathyIdle *idle)
+{
+ EmpathyIdlePriv *priv;
+
+ priv = GET_PRIV (idle);
+
+ return priv->flash_state;
+}
+
+void
+empathy_idle_set_flash_state (EmpathyIdle *idle,
+ McPresence state)
+{
+ EmpathyIdlePriv *priv;
+
+ priv = GET_PRIV (idle);
+
+ priv->flash_state = state;
+
+ if (state == MC_PRESENCE_UNSET) {
+ }
+
+ g_object_notify (G_OBJECT (idle), "flash-state");
+}
+
+void
+empathy_idle_set_presence (EmpathyIdle *idle,
+ McPresence state,
+ const gchar *status)
+{
+ EmpathyIdlePriv *priv;
+ const gchar *default_status;
+
+ priv = GET_PRIV (idle);
+
+ empathy_debug (DEBUG_DOMAIN, "Changing presence to %s (%d)",
+ status, state);
+
+ if (!priv->nm_connected) {
+ empathy_debug (DEBUG_DOMAIN, "NM not connected");
+ return;
+ }
+
+ /* Do not set translated default messages */
+ default_status = empathy_presence_get_default_message (state);
+ if (status && strcmp (status, default_status) == 0) {
+ status = NULL;
+ }
+
+ mission_control_set_presence (priv->mc,
+ state,
+ status,
+ NULL, NULL);
+}
+
+gboolean
+empathy_idle_get_auto_away (EmpathyIdle *idle)
+{
+ EmpathyIdlePriv *priv = GET_PRIV (idle);
+
+ return priv->auto_away;
+}
+
+void
+empathy_idle_set_auto_away (EmpathyIdle *idle,
+ gboolean auto_away)
+{
+ EmpathyIdlePriv *priv = GET_PRIV (idle);
+
+ priv->auto_away = auto_away;
+
+ g_object_notify (G_OBJECT (idle), "auto-away");
+}
+
+gboolean
+empathy_idle_get_use_nm (EmpathyIdle *idle)
+{
+ EmpathyIdlePriv *priv = GET_PRIV (idle);
+
+ return priv->use_nm;
+}
+
+void
+empathy_idle_set_use_nm (EmpathyIdle *idle,
+ gboolean use_nm)
+{
+ EmpathyIdlePriv *priv = GET_PRIV (idle);
+
+ if (!priv->nm_proxy || use_nm == priv->use_nm) {
+ return;
+ }
+
+ priv->use_nm = use_nm;
+
+ if (use_nm) {
+ guint nm_status;
+ GError *error = NULL;
+
+ dbus_g_proxy_call (priv->nm_proxy, "state",
+ &error,
+ G_TYPE_INVALID,
+ G_TYPE_UINT, &nm_status,
+ G_TYPE_INVALID);
+
+ if (error) {
+ empathy_debug (DEBUG_DOMAIN,
+ "Couldn't get NM state: %s",
+ error->message);
+ g_clear_error (&error);
+ nm_status = NM_STATE_ASLEEP;
+ }
+
+ idle_nm_state_change_cb (priv->nm_proxy, nm_status, idle);
+ } else {
+ if (!priv->nm_connected) {
+ empathy_idle_set_state (idle, priv->nm_saved_state);
+ }
+ priv->nm_connected = TRUE;
+ priv->nm_saved_state = MC_PRESENCE_UNSET;
+ }
+
+ g_object_notify (G_OBJECT (idle), "use-nm");
+}
+
+static void
+idle_presence_changed_cb (MissionControl *mc,
+ McPresence state,
+ gchar *status,
+ EmpathyIdle *idle)
+{
+ EmpathyIdlePriv *priv;
+
+ priv = GET_PRIV (idle);
+
+ empathy_debug (DEBUG_DOMAIN, "Presence changed to '%s' (%d)",
+ status, state);
+
+ g_free (priv->status);
+ priv->state = state;
+ priv->status = NULL;
+ if (!G_STR_EMPTY (status)) {
+ priv->status = g_strdup (status);
+ }
+
+ g_object_notify (G_OBJECT (idle), "state");
+ g_object_notify (G_OBJECT (idle), "status");
+}
+
+static void
+idle_session_idle_changed_cb (DBusGProxy *gs_proxy,
+ gboolean is_idle,
+ EmpathyIdle *idle)
+{
+ EmpathyIdlePriv *priv;
+
+ priv = GET_PRIV (idle);
+
+ empathy_debug (DEBUG_DOMAIN, "Session idle state changed, %s -> %s",
+ priv->is_idle ? "yes" : "no",
+ is_idle ? "yes" : "no");
+
+ if (priv->state <= MC_PRESENCE_OFFLINE ||
+ priv->state == MC_PRESENCE_HIDDEN ||
+ !priv->auto_away) {
+ /* We are not online or we don't want to go auto away,
+ * nothing to do here */
+ priv->is_idle = is_idle;
+ return;
+ }
+
+ if (is_idle && !priv->is_idle) {
+ McPresence new_state;
+ /* We are now idle */
+
+ if (priv->state == MC_PRESENCE_AWAY ||
+ priv->state == MC_PRESENCE_EXTENDED_AWAY) {
+ /* User set away manually, when coming back we restore
+ * default presence. */
+ new_state = priv->state;
+ priv->away_saved_state = MC_PRESENCE_AVAILABLE;
+ priv->away_reset_status = TRUE;
+ } else {
+ new_state = MC_PRESENCE_AWAY;
+ priv->away_saved_state = priv->state;
+ priv->away_reset_status = FALSE;
+ }
+
+ empathy_debug (DEBUG_DOMAIN, "Going to autoaway");
+ empathy_idle_set_state (idle, new_state);
+
+ idle_ext_away_start (idle);
+ } else if (!is_idle && priv->is_idle) {
+ /* We are no more idle, restore state */
+ idle_ext_away_stop (idle);
+
+ empathy_debug (DEBUG_DOMAIN, "Restoring state to %d, reset status: %s",
+ priv->away_saved_state,
+ priv->away_reset_status ? "Yes" : "No");
+
+ if (priv->nm_connected) {
+ empathy_idle_set_presence (idle,
+ priv->away_saved_state,
+ priv->away_reset_status ? NULL : priv->status);
+ } else {
+ /* We can't restore state now, will do when NM gets
+ * connected. */
+ priv->nm_saved_state = priv->away_saved_state;
+ priv->nm_reset_status = priv->away_reset_status;
+ }
+
+ priv->away_saved_state = MC_PRESENCE_UNSET;
+ priv->away_reset_status = FALSE;
+ }
+
+ priv->is_idle = is_idle;
+}
+
+static void
+idle_nm_state_change_cb (DBusGProxy *proxy,
+ guint state,
+ EmpathyIdle *idle)
+{
+ EmpathyIdlePriv *priv;
+ gboolean old_nm_connected;
+ gboolean new_nm_connected;
+
+ priv = GET_PRIV (idle);
+
+ empathy_debug (DEBUG_DOMAIN, "New network state (%d), in use = %s",
+ state, priv->use_nm ? "Yes" : "No");
+
+ if (!priv->use_nm) {
+ return;
+ }
+
+ old_nm_connected = priv->nm_connected;
+ new_nm_connected = !(state == NM_STATE_CONNECTING ||
+ state == NM_STATE_DISCONNECTED);
+ priv->nm_connected = TRUE; /* To be sure _set_state will work */
+
+ if (old_nm_connected && !new_nm_connected) {
+ /* We are no more connected */
+ idle_ext_away_stop (idle);
+
+ priv->nm_saved_state = priv->state;
+ empathy_idle_set_state (idle, MC_PRESENCE_OFFLINE);
+ }
+ else if (!old_nm_connected && new_nm_connected) {
+ /* We are now connected */
+ empathy_idle_set_presence (idle,
+ priv->nm_saved_state,
+ priv->nm_reset_status ? NULL : priv->status);
+ priv->nm_saved_state = MC_PRESENCE_UNSET;
+ priv->nm_reset_status = FALSE;
+ }
+
+ priv->nm_connected = new_nm_connected;
+}
+
+static void
+idle_ext_away_start (EmpathyIdle *idle)
+{
+ EmpathyIdlePriv *priv;
+
+ priv = GET_PRIV (idle);
+
+ idle_ext_away_stop (idle);
+ priv->ext_away_timeout = g_timeout_add_seconds (EXT_AWAY_TIME,
+ (GSourceFunc) idle_ext_away_cb,
+ idle);
+}
+
+static void
+idle_ext_away_stop (EmpathyIdle *idle)
+{
+ EmpathyIdlePriv *priv;
+
+ priv = GET_PRIV (idle);
+
+ if (priv->ext_away_timeout) {
+ g_source_remove (priv->ext_away_timeout);
+ priv->ext_away_timeout = 0;
+ }
+}
+
+static gboolean
+idle_ext_away_cb (EmpathyIdle *idle)
+{
+ EmpathyIdlePriv *priv;
+
+ priv = GET_PRIV (idle);
+
+ empathy_debug (DEBUG_DOMAIN, "Going to extended autoaway");
+ empathy_idle_set_state (idle, MC_PRESENCE_EXTENDED_AWAY);
+ priv->ext_away_timeout = 0;
+
+ return FALSE;
+}
+
diff --git a/gnome-2-22/libempathy/empathy-idle.h b/gnome-2-22/libempathy/empathy-idle.h
new file mode 100644
index 000000000..cccd8b68e
--- /dev/null
+++ b/gnome-2-22/libempathy/empathy-idle.h
@@ -0,0 +1,73 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2007 Collabora Ltd.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Authors: Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#ifndef __EMPATHY_IDLE_H__
+#define __EMPATHY_IDLE_H__
+
+#include <glib.h>
+
+#include <libmissioncontrol/mission-control.h>
+
+G_BEGIN_DECLS
+
+#define EMPATHY_TYPE_IDLE (empathy_idle_get_type ())
+#define EMPATHY_IDLE(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), EMPATHY_TYPE_IDLE, EmpathyIdle))
+#define EMPATHY_IDLE_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), EMPATHY_TYPE_IDLE, EmpathyIdleClass))
+#define EMPATHY_IS_IDLE(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), EMPATHY_TYPE_IDLE))
+#define EMPATHY_IS_IDLE_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), EMPATHY_TYPE_IDLE))
+#define EMPATHY_IDLE_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), EMPATHY_TYPE_IDLE, EmpathyIdleClass))
+
+typedef struct _EmpathyIdle EmpathyIdle;
+typedef struct _EmpathyIdleClass EmpathyIdleClass;
+typedef struct _EmpathyIdlePriv EmpathyIdlePriv;
+
+struct _EmpathyIdle {
+ GObject parent;
+};
+
+struct _EmpathyIdleClass {
+ GObjectClass parent_class;
+};
+
+GType empathy_idle_get_type (void) G_GNUC_CONST;
+EmpathyIdle *empathy_idle_new (void);
+McPresence empathy_idle_get_state (EmpathyIdle *idle);
+void empathy_idle_set_state (EmpathyIdle *idle,
+ McPresence state);
+const gchar *empathy_idle_get_status (EmpathyIdle *idle);
+void empathy_idle_set_status (EmpathyIdle *idle,
+ const gchar *status);
+McPresence empathy_idle_get_flash_state (EmpathyIdle *idle);
+void empathy_idle_set_flash_state (EmpathyIdle *idle,
+ McPresence state);
+void empathy_idle_set_presence (EmpathyIdle *idle,
+ McPresence state,
+ const gchar *status);
+gboolean empathy_idle_get_auto_away (EmpathyIdle *idle);
+void empathy_idle_set_auto_away (EmpathyIdle *idle,
+ gboolean auto_away);
+gboolean empathy_idle_get_use_nm (EmpathyIdle *idle);
+void empathy_idle_set_use_nm (EmpathyIdle *idle,
+ gboolean use_nm);
+
+G_END_DECLS
+
+#endif /* __EMPATHY_IDLE_H__ */
diff --git a/gnome-2-22/libempathy/empathy-irc-network-manager.c b/gnome-2-22/libempathy/empathy-irc-network-manager.c
new file mode 100644
index 000000000..f88b93bc7
--- /dev/null
+++ b/gnome-2-22/libempathy/empathy-irc-network-manager.c
@@ -0,0 +1,801 @@
+/*
+ * Copyright (C) 2007-2008 Guillaume Desmottes
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Authors: Guillaume Desmottes <gdesmott@gnome.org>
+ */
+
+#include <config.h>
+#include <string.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <libxml/parser.h>
+#include <libxml/tree.h>
+
+#include <libempathy/empathy-debug.h>
+
+#include "empathy-utils.h"
+#include "empathy-irc-network-manager.h"
+
+#define DEBUG_DOMAIN "IrcNetworkManager"
+#define IRC_NETWORKS_DTD_FILENAME "empathy-irc-networks.dtd"
+#define SAVE_TIMER 4
+
+G_DEFINE_TYPE (EmpathyIrcNetworkManager, empathy_irc_network_manager,
+ G_TYPE_OBJECT);
+
+/* properties */
+enum
+{
+ PROP_GLOBAL_FILE = 1,
+ PROP_USER_FILE,
+ LAST_PROPERTY
+};
+
+typedef struct _EmpathyIrcNetworkManagerPrivate
+ EmpathyIrcNetworkManagerPrivate;
+
+struct _EmpathyIrcNetworkManagerPrivate {
+ GHashTable *networks;
+
+ gchar *global_file;
+ gchar *user_file;
+ guint last_id;
+
+ /* Do we have to save modifications to the user file ? */
+ gboolean have_to_save;
+ /* Are we loading networks from XML files ? */
+ gboolean loading;
+ /* source id of the autosave timer */
+ gint save_timer_id;
+};
+
+#define EMPATHY_IRC_NETWORK_MANAGER_GET_PRIVATE(obj)\
+ ((EmpathyIrcNetworkManagerPrivate *) obj->priv)
+
+static void irc_network_manager_load_servers (
+ EmpathyIrcNetworkManager *manager);
+static gboolean irc_network_manager_file_parse (
+ EmpathyIrcNetworkManager *manager, const gchar *filename,
+ gboolean user_defined);
+static gboolean irc_network_manager_file_save (
+ EmpathyIrcNetworkManager *manager);
+
+static void
+empathy_irc_network_manager_get_property (GObject *object,
+ guint property_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ EmpathyIrcNetworkManager *self = EMPATHY_IRC_NETWORK_MANAGER (object);
+ EmpathyIrcNetworkManagerPrivate *priv =
+ EMPATHY_IRC_NETWORK_MANAGER_GET_PRIVATE (self);
+
+ switch (property_id)
+ {
+ case PROP_GLOBAL_FILE:
+ g_value_set_string (value, priv->global_file);
+ break;
+ case PROP_USER_FILE:
+ g_value_set_string (value, priv->user_file);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+ break;
+ }
+}
+
+static void
+empathy_irc_network_manager_set_property (GObject *object,
+ guint property_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ EmpathyIrcNetworkManager *self = EMPATHY_IRC_NETWORK_MANAGER (object);
+ EmpathyIrcNetworkManagerPrivate *priv =
+ EMPATHY_IRC_NETWORK_MANAGER_GET_PRIVATE (self);
+
+ switch (property_id)
+ {
+ case PROP_GLOBAL_FILE:
+ g_free (priv->global_file);
+ priv->global_file = g_value_dup_string (value);
+ break;
+ case PROP_USER_FILE:
+ g_free (priv->user_file);
+ priv->user_file = g_value_dup_string (value);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+ break;
+ }
+}
+
+static GObject *
+empathy_irc_network_manager_constructor (GType type,
+ guint n_props,
+ GObjectConstructParam *props)
+{
+ GObject *obj;
+ EmpathyIrcNetworkManager *self;
+
+ /* Parent constructor chain */
+ obj = G_OBJECT_CLASS (empathy_irc_network_manager_parent_class)->
+ constructor (type, n_props, props);
+
+ self = EMPATHY_IRC_NETWORK_MANAGER (obj);
+ irc_network_manager_load_servers (self);
+
+ return obj;
+}
+
+static void
+empathy_irc_network_manager_finalize (GObject *object)
+{
+ EmpathyIrcNetworkManager *self = EMPATHY_IRC_NETWORK_MANAGER (object);
+ EmpathyIrcNetworkManagerPrivate *priv =
+ EMPATHY_IRC_NETWORK_MANAGER_GET_PRIVATE (self);
+
+ if (priv->save_timer_id > 0)
+ {
+ g_source_remove (priv->save_timer_id);
+ }
+
+ if (priv->have_to_save)
+ {
+ irc_network_manager_file_save (self);
+ }
+
+ g_free (priv->global_file);
+ g_free (priv->user_file);
+
+ g_hash_table_destroy (priv->networks);
+
+ G_OBJECT_CLASS (empathy_irc_network_manager_parent_class)->finalize (object);
+}
+
+static void
+empathy_irc_network_manager_init (EmpathyIrcNetworkManager *self)
+{
+ EmpathyIrcNetworkManagerPrivate *priv = G_TYPE_INSTANCE_GET_PRIVATE (self,
+ EMPATHY_TYPE_IRC_NETWORK_MANAGER, EmpathyIrcNetworkManagerPrivate);
+
+ self->priv = priv;
+
+ priv->networks = g_hash_table_new_full (g_str_hash, g_str_equal,
+ (GDestroyNotify) g_free, (GDestroyNotify) g_object_unref);
+
+ priv->last_id = 0;
+
+ priv->have_to_save = FALSE;
+ priv->loading = FALSE;
+ priv->save_timer_id = 0;
+}
+
+static void
+empathy_irc_network_manager_class_init (EmpathyIrcNetworkManagerClass *klass)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+ GParamSpec *param_spec;
+
+ object_class->constructor = empathy_irc_network_manager_constructor;
+ object_class->get_property = empathy_irc_network_manager_get_property;
+ object_class->set_property = empathy_irc_network_manager_set_property;
+
+ g_type_class_add_private (object_class,
+ sizeof (EmpathyIrcNetworkManagerPrivate));
+
+ object_class->finalize = empathy_irc_network_manager_finalize;
+
+ param_spec = g_param_spec_string (
+ "global-file",
+ "path of the global networks file",
+ "The path of the system-wide filename from which we have to load"
+ " the networks list",
+ NULL,
+ G_PARAM_CONSTRUCT_ONLY |
+ G_PARAM_READWRITE |
+ G_PARAM_STATIC_NAME |
+ G_PARAM_STATIC_NICK |
+ G_PARAM_STATIC_BLURB);
+ g_object_class_install_property (object_class, PROP_GLOBAL_FILE, param_spec);
+
+ param_spec = g_param_spec_string (
+ "user-file",
+ "path of the user networks file",
+ "The path of user's filename from which we have to load"
+ " the networks list and to which we'll save his modifications",
+ NULL,
+ G_PARAM_CONSTRUCT_ONLY |
+ G_PARAM_READWRITE |
+ G_PARAM_STATIC_NAME |
+ G_PARAM_STATIC_NICK |
+ G_PARAM_STATIC_BLURB);
+ g_object_class_install_property (object_class, PROP_USER_FILE, param_spec);
+}
+
+/**
+ * empathy_irc_network_manager_new:
+ * @global_file: the path of the global networks file, or %NULL
+ * @user_file: the path of the user networks file, or %NULL
+ *
+ * Creates a new #EmpathyIrcNetworkManager
+ *
+ * Returns: a new #EmpathyIrcNetworkManager
+ */
+EmpathyIrcNetworkManager *
+empathy_irc_network_manager_new (const gchar *global_file,
+ const gchar *user_file)
+{
+ EmpathyIrcNetworkManager *manager;
+
+ manager = g_object_new (EMPATHY_TYPE_IRC_NETWORK_MANAGER,
+ "global-file", global_file,
+ "user-file", user_file,
+ NULL);
+
+ return manager;
+}
+
+static gboolean
+save_timeout (EmpathyIrcNetworkManager *self)
+{
+ EmpathyIrcNetworkManagerPrivate *priv =
+ EMPATHY_IRC_NETWORK_MANAGER_GET_PRIVATE (self);
+
+ priv->save_timer_id = 0;
+ irc_network_manager_file_save (self);
+
+ return FALSE;
+}
+
+static void
+reset_save_timeout (EmpathyIrcNetworkManager *self)
+{
+ EmpathyIrcNetworkManagerPrivate *priv =
+ EMPATHY_IRC_NETWORK_MANAGER_GET_PRIVATE (self);
+
+ if (priv->save_timer_id > 0)
+ {
+ g_source_remove (priv->save_timer_id);
+ }
+
+ priv->save_timer_id = g_timeout_add_seconds (SAVE_TIMER,
+ (GSourceFunc) save_timeout, self);
+}
+
+static void
+network_modified (EmpathyIrcNetwork *network,
+ EmpathyIrcNetworkManager *self)
+{
+ EmpathyIrcNetworkManagerPrivate *priv =
+ EMPATHY_IRC_NETWORK_MANAGER_GET_PRIVATE (self);
+
+ network->user_defined = TRUE;
+
+ if (!priv->loading)
+ {
+ priv->have_to_save = TRUE;
+ reset_save_timeout (self);
+ }
+}
+
+static void
+add_network (EmpathyIrcNetworkManager *self,
+ EmpathyIrcNetwork *network,
+ const gchar *id)
+{
+ EmpathyIrcNetworkManagerPrivate *priv =
+ EMPATHY_IRC_NETWORK_MANAGER_GET_PRIVATE (self);
+
+ g_hash_table_insert (priv->networks, g_strdup (id), g_object_ref (network));
+
+ g_signal_connect (network, "modified", G_CALLBACK (network_modified), self);
+}
+
+/**
+ * empathy_irc_network_manager_add:
+ * @manager: an #EmpathyIrcNetworkManager
+ * @network: the #EmpathyIrcNetwork to add
+ *
+ * Add an #EmpathyIrcNetwork to the given #EmpathyIrcNetworkManager.
+ *
+ */
+void
+empathy_irc_network_manager_add (EmpathyIrcNetworkManager *self,
+ EmpathyIrcNetwork *network)
+{
+ EmpathyIrcNetworkManagerPrivate *priv;
+ gchar *id = NULL;
+
+ g_return_if_fail (EMPATHY_IS_IRC_NETWORK_MANAGER (self));
+ g_return_if_fail (EMPATHY_IS_IRC_NETWORK (network));
+
+ priv = EMPATHY_IRC_NETWORK_MANAGER_GET_PRIVATE (self);
+
+ /* generate an id for this network */
+ do
+ {
+ g_free (id);
+ id = g_strdup_printf ("id%u", ++priv->last_id);
+ } while (g_hash_table_lookup (priv->networks, id) != NULL &&
+ priv->last_id < G_MAXUINT);
+
+ if (priv->last_id == G_MAXUINT)
+ {
+ empathy_debug (DEBUG_DOMAIN,
+ "Can't add network: too many networks using a similiar ID");
+ return;
+ }
+
+ empathy_debug (DEBUG_DOMAIN, "add server with \"%s\" as ID", id);
+
+ network->user_defined = TRUE;
+ add_network (self, network, id);
+
+ priv->have_to_save = TRUE;
+ reset_save_timeout (self);
+
+ g_free (id);
+}
+
+/**
+ * empathy_irc_network_manager_remove:
+ * @manager: an #EmpathyIrcNetworkManager
+ * @network: the #EmpathyIrcNetwork to remove
+ *
+ * Remove an #EmpathyIrcNetwork from the given #EmpathyIrcNetworkManager.
+ *
+ */
+void
+empathy_irc_network_manager_remove (EmpathyIrcNetworkManager *self,
+ EmpathyIrcNetwork *network)
+{
+ EmpathyIrcNetworkManagerPrivate *priv;
+
+ g_return_if_fail (EMPATHY_IS_IRC_NETWORK_MANAGER (self));
+ g_return_if_fail (EMPATHY_IS_IRC_NETWORK (network));
+
+ priv = EMPATHY_IRC_NETWORK_MANAGER_GET_PRIVATE (self);
+
+ network->user_defined = TRUE;
+ network->dropped = TRUE;
+
+ priv->have_to_save = TRUE;
+ reset_save_timeout (self);
+}
+
+static void
+append_network_to_list (const gchar *id,
+ EmpathyIrcNetwork *network,
+ GSList **list)
+{
+ if (network->dropped)
+ return;
+
+ *list = g_slist_prepend (*list, g_object_ref (network));
+}
+
+/**
+ * empathy_irc_network_manager_get_networks:
+ * @manager: an #EmpathyIrcNetworkManager
+ *
+ * Get the list of #EmpathyIrcNetwork associated with the given
+ * manager.
+ *
+ * Returns: a new #GSList of refed #EmpathyIrcNetwork
+ */
+GSList *
+empathy_irc_network_manager_get_networks (EmpathyIrcNetworkManager *self)
+{
+ EmpathyIrcNetworkManagerPrivate *priv;
+ GSList *irc_networks = NULL;
+
+ g_return_val_if_fail (EMPATHY_IS_IRC_NETWORK_MANAGER (self), NULL);
+
+ priv = EMPATHY_IRC_NETWORK_MANAGER_GET_PRIVATE (self);
+
+ g_hash_table_foreach (priv->networks, (GHFunc) append_network_to_list,
+ &irc_networks);
+
+ return irc_networks;
+}
+
+/*
+ * API to save/load and parse the irc_networks file.
+ */
+
+static void
+load_global_file (EmpathyIrcNetworkManager *self)
+{
+ EmpathyIrcNetworkManagerPrivate *priv =
+ EMPATHY_IRC_NETWORK_MANAGER_GET_PRIVATE (self);
+
+ if (priv->global_file == NULL)
+ return;
+
+ if (!g_file_test (priv->global_file, G_FILE_TEST_EXISTS))
+ {
+ empathy_debug (DEBUG_DOMAIN, "Global networks file %s doesn't exist",
+ priv->global_file);
+ return;
+ }
+
+ irc_network_manager_file_parse (self, priv->global_file, FALSE);
+}
+
+static void
+load_user_file (EmpathyIrcNetworkManager *self)
+{
+ EmpathyIrcNetworkManagerPrivate *priv =
+ EMPATHY_IRC_NETWORK_MANAGER_GET_PRIVATE (self);
+
+ if (priv->user_file == NULL)
+ return;
+
+ if (!g_file_test (priv->user_file, G_FILE_TEST_EXISTS))
+ {
+ empathy_debug (DEBUG_DOMAIN, "User networks file %s doesn't exist",
+ priv->global_file);
+ return;
+ }
+
+ irc_network_manager_file_parse (self, priv->user_file, TRUE);
+}
+
+static void
+irc_network_manager_load_servers (EmpathyIrcNetworkManager *self)
+{
+ EmpathyIrcNetworkManagerPrivate *priv =
+ EMPATHY_IRC_NETWORK_MANAGER_GET_PRIVATE (self);
+
+ priv->loading = TRUE;
+
+ load_global_file (self);
+ load_user_file (self);
+
+ priv->loading = FALSE;
+ priv->have_to_save = FALSE;
+}
+
+static void
+irc_network_manager_parse_irc_server (EmpathyIrcNetwork *network,
+ xmlNodePtr node)
+{
+ xmlNodePtr server_node;
+
+ for (server_node = node->children; server_node;
+ server_node = server_node->next)
+ {
+ gchar *address = NULL, *port = NULL, *ssl = NULL;
+
+ if (strcmp (server_node->name, "server") != 0)
+ continue;
+
+ address = xmlGetProp (server_node, "address");
+ port = xmlGetProp (server_node, "port");
+ ssl = xmlGetProp (server_node, "ssl");
+
+ if (address != NULL)
+ {
+ gint port_nb = 0;
+ gboolean have_ssl = FALSE;
+ EmpathyIrcServer *server;
+
+ if (port != NULL)
+ port_nb = strtol (port, NULL, 10);
+
+ if (port_nb <= 0 || port_nb > G_MAXUINT16)
+ port_nb = 6667;
+
+ if (ssl == NULL || strcmp (ssl, "TRUE") == 0)
+ have_ssl = TRUE;
+
+ empathy_debug (DEBUG_DOMAIN, "parsed server %s port %d ssl %d",
+ address, port_nb, have_ssl);
+
+ server = empathy_irc_server_new (address, port_nb, have_ssl);
+ empathy_irc_network_append_server (network, server);
+ }
+
+ if (address)
+ xmlFree (address);
+ if (port)
+ xmlFree (port);
+ if (ssl)
+ xmlFree (ssl);
+ }
+}
+
+static void
+irc_network_manager_parse_irc_network (EmpathyIrcNetworkManager *self,
+ xmlNodePtr node,
+ gboolean user_defined)
+{
+ EmpathyIrcNetworkManagerPrivate *priv =
+ EMPATHY_IRC_NETWORK_MANAGER_GET_PRIVATE (self);
+ EmpathyIrcNetwork *network;
+ xmlNodePtr child;
+ gchar *str;
+ gchar *id, *name;
+
+ id = xmlGetProp (node, "id");
+ if (xmlHasProp (node, "dropped"))
+ {
+ if (!user_defined)
+ {
+ empathy_debug (DEBUG_DOMAIN, "the \"dropped\" attribute shouldn't be"
+ " used in the global file");
+ }
+
+ network = g_hash_table_lookup (priv->networks, id);
+ if (network != NULL)
+ {
+ network->dropped = TRUE;
+ network->user_defined = TRUE;
+ }
+ xmlFree (id);
+ return;
+ }
+
+ if (!xmlHasProp (node, "name"))
+ return;
+
+ name = xmlGetProp (node, "name");
+ network = empathy_irc_network_new (name);
+
+ if (xmlHasProp (node, "network_charset"))
+ {
+ gchar *charset;
+ charset = xmlGetProp (node, "network_charset");
+ g_object_set (network, "charset", charset, NULL);
+ xmlFree (charset);
+ }
+
+ add_network (self, network, id);
+ empathy_debug (DEBUG_DOMAIN, "add network %s (id %s)", name, id);
+
+ for (child = node->children; child; child = child->next)
+ {
+ gchar *tag;
+
+ tag = (gchar *) child->name;
+ str = (gchar *) xmlNodeGetContent (child);
+
+ if (!str)
+ continue;
+
+ if (strcmp (tag, "servers") == 0)
+ {
+ irc_network_manager_parse_irc_server (network, child);
+ }
+
+ xmlFree (str);
+ }
+
+ network->user_defined = user_defined;
+ g_object_unref (network);
+ xmlFree (name);
+ xmlFree (id);
+}
+
+static gboolean
+irc_network_manager_file_parse (EmpathyIrcNetworkManager *self,
+ const gchar *filename,
+ gboolean user_defined)
+{
+ EmpathyIrcNetworkManagerPrivate *priv;
+ xmlParserCtxtPtr ctxt;
+ xmlDocPtr doc;
+ xmlNodePtr networks;
+ xmlNodePtr node;
+
+ priv = EMPATHY_IRC_NETWORK_MANAGER_GET_PRIVATE (self);
+
+ empathy_debug (DEBUG_DOMAIN, "Attempting to parse file:'%s'...", filename);
+
+ ctxt = xmlNewParserCtxt ();
+
+ /* Parse and validate the file. */
+ doc = xmlCtxtReadFile (ctxt, filename, NULL, 0);
+ if (!doc)
+ {
+ g_warning ("Failed to parse file:'%s'", filename);
+ xmlFreeParserCtxt (ctxt);
+ return FALSE;
+ }
+
+ if (!empathy_xml_validate (doc, IRC_NETWORKS_DTD_FILENAME)) {
+ g_warning ("Failed to validate file:'%s'", filename);
+ xmlFreeDoc (doc);
+ xmlFreeParserCtxt (ctxt);
+ return FALSE;
+ }
+
+ /* The root node, networks. */
+ networks = xmlDocGetRootElement (doc);
+
+ for (node = networks->children; node; node = node->next)
+ {
+ irc_network_manager_parse_irc_network (self, node, user_defined);
+ }
+
+ xmlFreeDoc(doc);
+ xmlFreeParserCtxt (ctxt);
+
+ return TRUE;
+}
+
+static void
+write_network_to_xml (const gchar *id,
+ EmpathyIrcNetwork *network,
+ xmlNodePtr root)
+{
+ xmlNodePtr network_node, servers_node;
+ GSList *servers, *l;
+ gchar *name, *charset;
+
+ if (!network->user_defined)
+ /* no need to write this network to the XML */
+ return;
+
+ network_node = xmlNewChild (root, NULL, "network", NULL);
+ xmlNewProp (network_node, "id", id);
+
+ if (network->dropped)
+ {
+ xmlNewProp (network_node, "dropped", "1");
+ return;
+ }
+
+ g_object_get (network,
+ "name", &name,
+ "charset", &charset,
+ NULL);
+ xmlNewProp (network_node, "name", name);
+ xmlNewProp (network_node, "network_charset", charset);
+ g_free (name);
+ g_free (charset);
+
+ servers = empathy_irc_network_get_servers (network);
+
+ servers_node = xmlNewChild (network_node, NULL, "servers", NULL);
+ for (l = servers; l != NULL; l = g_slist_next (l))
+ {
+ EmpathyIrcServer *server;
+ xmlNodePtr server_node;
+ gchar *address, *tmp;
+ guint port;
+ gboolean ssl;
+
+ server = l->data;
+
+ server_node = xmlNewChild (servers_node, NULL, "server", NULL);
+
+ g_object_get (server,
+ "address", &address,
+ "port", &port,
+ "ssl", &ssl,
+ NULL);
+
+ xmlNewProp (server_node, "address", address);
+
+ tmp = g_strdup_printf ("%u", port);
+ xmlNewProp (server_node, "port", tmp);
+ g_free (tmp);
+
+ xmlNewProp (server_node, "ssl", ssl ? "TRUE": "FALSE");
+
+ g_free (address);
+ }
+
+ /* free the list */
+ g_slist_foreach (servers, (GFunc) g_object_unref, NULL);
+ g_slist_free (servers);
+}
+
+static gboolean
+irc_network_manager_file_save (EmpathyIrcNetworkManager *self)
+{
+ EmpathyIrcNetworkManagerPrivate *priv =
+ EMPATHY_IRC_NETWORK_MANAGER_GET_PRIVATE (self);
+ xmlDocPtr doc;
+ xmlNodePtr root;
+
+ if (priv->user_file == NULL)
+ {
+ empathy_debug (DEBUG_DOMAIN, "can't save: no user file defined");
+ return FALSE;
+ }
+
+ empathy_debug (DEBUG_DOMAIN, "Saving IRC networks");
+
+ doc = xmlNewDoc ("1.0");
+ root = xmlNewNode (NULL, "networks");
+ xmlDocSetRootElement (doc, root);
+
+ g_hash_table_foreach (priv->networks, (GHFunc) write_network_to_xml, root);
+
+ /* Make sure the XML is indented properly */
+ xmlIndentTreeOutput = 1;
+
+ xmlSaveFormatFileEnc (priv->user_file, doc, "utf-8", 1);
+ xmlFreeDoc (doc);
+
+ xmlCleanupParser ();
+ xmlMemoryDump ();
+
+ priv->have_to_save = FALSE;
+
+ return TRUE;
+}
+
+static gboolean
+find_network_by_address (const gchar *id,
+ EmpathyIrcNetwork *network,
+ const gchar *address)
+{
+ GSList *servers, *l;
+ gboolean found = FALSE;
+
+ if (network->dropped)
+ return FALSE;
+
+ servers = empathy_irc_network_get_servers (network);
+
+ for (l = servers; l != NULL && !found; l = g_slist_next (l))
+ {
+ EmpathyIrcServer *server = l->data;
+ gchar *_address;
+
+ g_object_get (server, "address", &_address, NULL);
+ found = (_address != NULL && strcmp (address, _address) == 0);
+
+ g_free (_address);
+ }
+
+ g_slist_foreach (servers, (GFunc) g_object_unref, NULL);
+ g_slist_free (servers);
+
+ return found;
+}
+
+/**
+ * empathy_irc_network_manager_find_network_by_address:
+ * @manager: an #EmpathyIrcNetworkManager
+ * @address: the server address to look for
+ *
+ * Find the #EmpathyIrcNetwork which owns an #EmpathyIrcServer
+ * that has the given address.
+ *
+ * Returns: the found #EmpathyIrcNetwork, or %NULL if not found.
+ */
+EmpathyIrcNetwork *
+empathy_irc_network_manager_find_network_by_address (
+ EmpathyIrcNetworkManager *self,
+ const gchar *address)
+{
+ EmpathyIrcNetworkManagerPrivate *priv =
+ EMPATHY_IRC_NETWORK_MANAGER_GET_PRIVATE (self);
+ EmpathyIrcNetwork *network;
+
+ g_return_val_if_fail (address != NULL, NULL);
+
+ network = g_hash_table_find (priv->networks,
+ (GHRFunc) find_network_by_address, (gchar *) address);
+
+ return network;
+}
diff --git a/gnome-2-22/libempathy/empathy-irc-network-manager.h b/gnome-2-22/libempathy/empathy-irc-network-manager.h
new file mode 100644
index 000000000..a853a074b
--- /dev/null
+++ b/gnome-2-22/libempathy/empathy-irc-network-manager.h
@@ -0,0 +1,82 @@
+/*
+ * Copyright (C) 2007-2008 Guillaume Desmottes
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Authors: Guillaume Desmottes <gdesmott@gnome.org>
+ */
+
+#ifndef __EMPATHY_IRC_NETWORK_MANAGER_H__
+#define __EMPATHY_IRC_NETWORK_MANAGER_H__
+
+#include <glib-object.h>
+
+#include "empathy-irc-network.h"
+
+G_BEGIN_DECLS
+
+typedef struct _EmpathyIrcNetworkManager EmpathyIrcNetworkManager;
+typedef struct _EmpathyIrcNetworkManagerClass EmpathyIrcNetworkManagerClass;
+
+struct _EmpathyIrcNetworkManager
+{
+ GObject parent;
+
+ gpointer priv;
+};
+
+struct _EmpathyIrcNetworkManagerClass
+{
+ GObjectClass parent_class;
+};
+
+GType
+empathy_irc_network_manager_get_type (void);
+
+/* TYPE MACROS */
+#define EMPATHY_TYPE_IRC_NETWORK_MANAGER \
+ (empathy_irc_network_manager_get_type ())
+#define EMPATHY_IRC_NETWORK_MANAGER(o) \
+ (G_TYPE_CHECK_INSTANCE_CAST ((o), EMPATHY_TYPE_IRC_NETWORK_MANAGER, \
+ EmpathyIrcNetworkManager))
+#define EMPATHY_IRC_NETWORK_MANAGER_CLASS(k) \
+ (G_TYPE_CHECK_CLASS_CAST ((k), EMPATHY_TYPE_IRC_NETWORK_MANAGER, \
+ EmpathyIrcNetworkManagerClass))
+#define EMPATHY_IS_IRC_NETWORK_MANAGER(o) \
+ (G_TYPE_CHECK_INSTANCE_TYPE ((o), EMPATHY_TYPE_IRC_NETWORK_MANAGER))
+#define EMPATHY_IS_IRC_NETWORK_MANAGER_CLASS(k) \
+ (G_TYPE_CHECK_CLASS_TYPE ((k), EMPATHY_TYPE_IRC_NETWORK_MANAGER))
+#define EMPATHY_IRC_NETWORK_MANAGER_GET_CLASS(o) \
+ (G_TYPE_INSTANCE_GET_CLASS ((o), EMPATHY_TYPE_IRC_NETWORK_MANAGER, \
+ EmpathyIrcNetworkManagerClass))
+
+EmpathyIrcNetworkManager * empathy_irc_network_manager_new (
+ const gchar *global_file, const gchar *user_file);
+
+void empathy_irc_network_manager_add (EmpathyIrcNetworkManager *manager,
+ EmpathyIrcNetwork *network);
+
+void empathy_irc_network_manager_remove (EmpathyIrcNetworkManager *manager,
+ EmpathyIrcNetwork *network);
+
+GSList * empathy_irc_network_manager_get_networks (
+ EmpathyIrcNetworkManager *manager);
+
+EmpathyIrcNetwork * empathy_irc_network_manager_find_network_by_address (
+ EmpathyIrcNetworkManager *manager, const gchar *address);
+
+G_END_DECLS
+
+#endif /* __EMPATHY_IRC_NETWORK_MANAGER_H__ */
diff --git a/gnome-2-22/libempathy/empathy-irc-network.c b/gnome-2-22/libempathy/empathy-irc-network.c
new file mode 100644
index 000000000..f754adef6
--- /dev/null
+++ b/gnome-2-22/libempathy/empathy-irc-network.c
@@ -0,0 +1,365 @@
+/*
+ * Copyright (C) 2007 Guillaume Desmottes
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * 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: Guillaume Desmottes <gdesmott@gnome.org>
+ */
+
+#include <config.h>
+#include <string.h>
+#include <stdlib.h>
+#include <glib.h>
+#include <glib/gi18n.h>
+
+#include <telepathy-glib/util.h>
+
+#include "empathy-marshal.h"
+#include "empathy-irc-network.h"
+
+G_DEFINE_TYPE (EmpathyIrcNetwork, empathy_irc_network, G_TYPE_OBJECT);
+
+/* properties */
+enum
+{
+ PROP_NAME = 1,
+ PROP_CHARSET,
+ LAST_PROPERTY
+};
+
+/* signals */
+enum
+{
+ MODIFIED,
+ LAST_SIGNAL
+};
+
+static guint signals[LAST_SIGNAL] = {0};
+
+typedef struct _EmpathyIrcNetworkPrivate EmpathyIrcNetworkPrivate;
+
+struct _EmpathyIrcNetworkPrivate
+{
+ gchar *name;
+ gchar *charset;
+ GSList *servers;
+};
+
+#define EMPATHY_IRC_NETWORK_GET_PRIVATE(obj)\
+ ((EmpathyIrcNetworkPrivate *) obj->priv)
+
+static void
+server_modified_cb (EmpathyIrcServer *server,
+ EmpathyIrcNetwork *self)
+{
+ g_signal_emit (self, signals[MODIFIED], 0);
+}
+
+static void
+empathy_irc_network_get_property (GObject *object,
+ guint property_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ EmpathyIrcNetwork *self = EMPATHY_IRC_NETWORK (object);
+ EmpathyIrcNetworkPrivate *priv = EMPATHY_IRC_NETWORK_GET_PRIVATE (self);
+
+ switch (property_id)
+ {
+ case PROP_NAME:
+ g_value_set_string (value, priv->name);
+ break;
+ case PROP_CHARSET:
+ g_value_set_string (value, priv->charset);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+ break;
+ }
+}
+
+static void
+empathy_irc_network_set_property (GObject *object,
+ guint property_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ EmpathyIrcNetwork *self = EMPATHY_IRC_NETWORK (object);
+ EmpathyIrcNetworkPrivate *priv = EMPATHY_IRC_NETWORK_GET_PRIVATE (self);
+
+ switch (property_id)
+ {
+ case PROP_NAME:
+ if (tp_strdiff (priv->name, g_value_get_string (value)))
+ {
+ g_free (priv->name);
+ priv->name = g_value_dup_string (value);
+ g_signal_emit (object, signals[MODIFIED], 0);
+ }
+ break;
+ case PROP_CHARSET:
+ if (tp_strdiff (priv->charset, g_value_get_string (value)))
+ {
+ g_free (priv->charset);
+ priv->charset = g_value_dup_string (value);
+ g_signal_emit (object, signals[MODIFIED], 0);
+ }
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+ break;
+ }
+}
+
+static void
+empathy_irc_network_dispose (GObject *object)
+{
+ EmpathyIrcNetwork *self = EMPATHY_IRC_NETWORK (object);
+ EmpathyIrcNetworkPrivate *priv = EMPATHY_IRC_NETWORK_GET_PRIVATE (self);
+ GSList *l;
+
+ for (l = priv->servers; l != NULL; l = g_slist_next (l))
+ {
+ g_signal_handlers_disconnect_by_func (l->data,
+ G_CALLBACK (server_modified_cb), self);
+ g_object_unref (l->data);
+ }
+
+ G_OBJECT_CLASS (empathy_irc_network_parent_class)->dispose (object);
+}
+
+static void
+empathy_irc_network_finalize (GObject *object)
+{
+ EmpathyIrcNetwork *self = EMPATHY_IRC_NETWORK (object);
+ EmpathyIrcNetworkPrivate *priv = EMPATHY_IRC_NETWORK_GET_PRIVATE (self);
+
+ g_slist_free (priv->servers);
+ g_free (priv->name);
+ g_free (priv->charset);
+
+ G_OBJECT_CLASS (empathy_irc_network_parent_class)->finalize (object);
+}
+
+static void
+empathy_irc_network_init (EmpathyIrcNetwork *self)
+{
+ EmpathyIrcNetworkPrivate *priv = G_TYPE_INSTANCE_GET_PRIVATE (self,
+ EMPATHY_TYPE_IRC_NETWORK, EmpathyIrcNetworkPrivate);
+
+ self->priv = priv;
+
+ priv->servers = NULL;
+
+ self->user_defined = TRUE;
+ self->dropped = FALSE;
+}
+
+static void
+empathy_irc_network_class_init (EmpathyIrcNetworkClass *klass)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+ GParamSpec *param_spec;
+
+ object_class->get_property = empathy_irc_network_get_property;
+ object_class->set_property = empathy_irc_network_set_property;
+
+ g_type_class_add_private (object_class,
+ sizeof (EmpathyIrcNetworkPrivate));
+
+ object_class->dispose = empathy_irc_network_dispose;
+ object_class->finalize = empathy_irc_network_finalize;
+
+ param_spec = g_param_spec_string (
+ "name",
+ "Network name",
+ "The displayed name of this network",
+ NULL,
+ G_PARAM_READWRITE |
+ G_PARAM_STATIC_NAME |
+ G_PARAM_STATIC_NICK |
+ G_PARAM_STATIC_BLURB);
+ g_object_class_install_property (object_class, PROP_NAME, param_spec);
+
+ param_spec = g_param_spec_string (
+ "charset",
+ "Charset",
+ "The charset to use on this network",
+ "UTF-8",
+ G_PARAM_CONSTRUCT |
+ G_PARAM_READWRITE |
+ G_PARAM_STATIC_NAME |
+ G_PARAM_STATIC_NICK |
+ G_PARAM_STATIC_BLURB);
+ g_object_class_install_property (object_class, PROP_CHARSET, param_spec);
+
+ /**
+ * EmpathyIrcNetwork::modified:
+ * @network: the object that received the signal
+ *
+ * Emitted when either a property or a server of the network is modified.
+ *
+ */
+ signals[MODIFIED] = g_signal_new (
+ "modified",
+ G_OBJECT_CLASS_TYPE (object_class),
+ G_SIGNAL_RUN_LAST | G_SIGNAL_DETAILED,
+ 0,
+ NULL, NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
+}
+
+/**
+ * empathy_irc_network_new:
+ * @name: the name of the network
+ *
+ * Creates a new #EmpathyIrcNetwork.
+ *
+ * Returns: a new #EmpathyIrcNetwork
+ */
+EmpathyIrcNetwork *
+empathy_irc_network_new (const gchar *name)
+{
+ return g_object_new (EMPATHY_TYPE_IRC_NETWORK,
+ "name", name,
+ NULL);
+}
+
+/**
+ * empathy_irc_network_get_servers:
+ * @network: an #EmpathyIrcNetwork
+ *
+ * Get the list of #EmpathyIrcServer that belongs to this network.
+ * These servers are sorted according their priority.
+ * So the first one will be the first used when trying to connect to
+ * the network.
+ *
+ * Returns: a new #GSList of refed #EmpathyIrcServer.
+ */
+GSList *
+empathy_irc_network_get_servers (EmpathyIrcNetwork *self)
+{
+ EmpathyIrcNetworkPrivate *priv;
+ GSList *servers = NULL, *l;
+
+ g_return_val_if_fail (EMPATHY_IS_IRC_NETWORK (self), NULL);
+ priv = EMPATHY_IRC_NETWORK_GET_PRIVATE (self);
+
+ for (l = priv->servers; l != NULL; l = g_slist_next (l))
+ {
+ servers = g_slist_prepend (servers, g_object_ref (l->data));
+ }
+
+ return g_slist_reverse (servers);
+}
+
+/**
+ * empathy_irc_network_append_server:
+ * @network: an #EmpathyIrcNetwork
+ * @server: the #EmpathyIrcServer to add
+ *
+ * Add an #EmpathyIrcServer to the given #EmpathyIrcNetwork. The server
+ * is added at the last position in network's servers list.
+ *
+ */
+void
+empathy_irc_network_append_server (EmpathyIrcNetwork *self,
+ EmpathyIrcServer *server)
+{
+ EmpathyIrcNetworkPrivate *priv;
+
+ g_return_if_fail (EMPATHY_IS_IRC_NETWORK (self));
+ g_return_if_fail (server != NULL && EMPATHY_IS_IRC_SERVER (server));
+
+ priv = EMPATHY_IRC_NETWORK_GET_PRIVATE (self);
+
+ g_return_if_fail (g_slist_find (priv->servers, server) == NULL);
+
+ priv->servers = g_slist_append (priv->servers, g_object_ref (server));
+
+ g_signal_connect (server, "modified", G_CALLBACK (server_modified_cb), self);
+
+ g_signal_emit (self, signals[MODIFIED], 0);
+}
+
+/**
+ * empathy_irc_network_remove_server:
+ * @network: an #EmpathyIrcNetwork
+ * @server: the #EmpathyIrcServer to remove
+ *
+ * Remove an #EmpathyIrcServer from the servers list of the
+ * given #EmpathyIrcNetwork.
+ *
+ */
+void
+empathy_irc_network_remove_server (EmpathyIrcNetwork *self,
+ EmpathyIrcServer *server)
+{
+ EmpathyIrcNetworkPrivate *priv;
+ GSList *l;
+
+ g_return_if_fail (EMPATHY_IS_IRC_NETWORK (self));
+ g_return_if_fail (server != NULL && EMPATHY_IS_IRC_SERVER (server));
+
+ priv = EMPATHY_IRC_NETWORK_GET_PRIVATE (self);
+
+ l = g_slist_find (priv->servers, server);
+ if (l == NULL)
+ return;
+
+ g_object_unref (l->data);
+ priv->servers = g_slist_delete_link (priv->servers, l);
+ g_signal_handlers_disconnect_by_func (server, G_CALLBACK (server_modified_cb),
+ self);
+
+ g_signal_emit (self, signals[MODIFIED], 0);
+}
+
+/**
+ * empathy_irc_network_set_server_position:
+ * @network: an #EmpathyIrcNetwork
+ * @server: the #EmpathyIrcServer to move
+ * @pos: the position to move the server. If this is negative, or is larger than
+ * the number of servers in the list, the server is moved to the end of the
+ * list.
+ *
+ * Move an #EmpathyIrcServer in the servers list of the given
+ * #EmpathyIrcNetwork.
+ *
+ */
+void
+empathy_irc_network_set_server_position (EmpathyIrcNetwork *self,
+ EmpathyIrcServer *server,
+ gint pos)
+{
+ EmpathyIrcNetworkPrivate *priv;
+ GSList *l;
+
+ g_return_if_fail (EMPATHY_IS_IRC_NETWORK (self));
+ g_return_if_fail (server != NULL && EMPATHY_IS_IRC_SERVER (server));
+
+ priv = EMPATHY_IRC_NETWORK_GET_PRIVATE (self);
+
+ l = g_slist_find (priv->servers, server);
+ if (l == NULL)
+ return;
+
+ priv->servers = g_slist_delete_link (priv->servers, l);
+ priv->servers = g_slist_insert (priv->servers, server, pos);
+
+ g_signal_emit (self, signals[MODIFIED], 0);
+}
diff --git a/gnome-2-22/libempathy/empathy-irc-network.h b/gnome-2-22/libempathy/empathy-irc-network.h
new file mode 100644
index 000000000..ac146a183
--- /dev/null
+++ b/gnome-2-22/libempathy/empathy-irc-network.h
@@ -0,0 +1,81 @@
+/*
+ * Copyright (C) 2007-2008 Guillaume Desmottes
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Authors: Guillaume Desmottes <gdesmott@gnome.org>
+ */
+
+#ifndef __EMPATHY_IRC_NETWORK_H__
+#define __EMPATHY_IRC_NETWORK_H__
+
+#include <glib-object.h>
+
+#include "empathy-irc-server.h"
+
+G_BEGIN_DECLS
+
+typedef struct _EmpathyIrcNetwork EmpathyIrcNetwork;
+typedef struct _EmpathyIrcNetworkClass EmpathyIrcNetworkClass;
+
+struct _EmpathyIrcNetwork
+{
+ GObject parent;
+
+ gpointer priv;
+
+ gboolean user_defined;
+ gboolean dropped;
+};
+
+struct _EmpathyIrcNetworkClass
+{
+ GObjectClass parent_class;
+};
+
+GType empathy_irc_network_get_type (void);
+
+/* TYPE MACROS */
+#define EMPATHY_TYPE_IRC_NETWORK (empathy_irc_network_get_type ())
+#define EMPATHY_IRC_NETWORK(o) \
+ (G_TYPE_CHECK_INSTANCE_CAST ((o), EMPATHY_TYPE_IRC_NETWORK, \
+ EmpathyIrcNetwork))
+#define EMPATHY_IRC_NETWORK_CLASS(k) \
+ (G_TYPE_CHECK_CLASS_CAST ((k), EMPATHY_TYPE_IRC_NETWORK,\
+ EmpathyIrcNetworkClass))
+#define EMPATHY_IS_IRC_NETWORK(o) \
+ (G_TYPE_CHECK_INSTANCE_TYPE ((o), EMPATHY_TYPE_IRC_NETWORK))
+#define EMPATHY_IS_IRC_NETWORK_CLASS(k) \
+ (G_TYPE_CHECK_CLASS_TYPE ((k), EMPATHY_TYPE_IRC_NETWORK))
+#define EMPATHY_IRC_NETWORK_GET_CLASS(o) \
+ (G_TYPE_INSTANCE_GET_CLASS ((o), EMPATHY_TYPE_IRC_NETWORK, \
+ EmpathyIrcNetworkClass))
+
+EmpathyIrcNetwork * empathy_irc_network_new (const gchar *name);
+
+GSList * empathy_irc_network_get_servers (EmpathyIrcNetwork *network);
+
+void empathy_irc_network_append_server (EmpathyIrcNetwork *network,
+ EmpathyIrcServer *server);
+
+void empathy_irc_network_remove_server (EmpathyIrcNetwork *network,
+ EmpathyIrcServer *server);
+
+void empathy_irc_network_set_server_position (EmpathyIrcNetwork *network,
+ EmpathyIrcServer *server, gint pos);
+
+G_END_DECLS
+
+#endif /* __EMPATHY_IRC_NETWORK_H__ */
diff --git a/gnome-2-22/libempathy/empathy-irc-networks.dtd b/gnome-2-22/libempathy/empathy-irc-networks.dtd
new file mode 100644
index 000000000..692e613c1
--- /dev/null
+++ b/gnome-2-22/libempathy/empathy-irc-networks.dtd
@@ -0,0 +1,18 @@
+<!--
+ DTD for Empathys irc networks.
+ by Xavier Claessens <xclaesse@gmail.com>
+-->
+
+
+<!ELEMENT networks (network*)>
+<!ELEMENT network (servers*)>
+<!ATTLIST network id ID #REQUIRED>
+<!ATTLIST network name CDATA #IMPLIED>
+<!ATTLIST network network_charset CDATA #IMPLIED>
+<!ATTLIST network dropped CDATA #IMPLIED>
+
+<!ELEMENT servers (server*)>
+<!ELEMENT server EMPTY>
+<!ATTLIST server address CDATA #REQUIRED>
+<!ATTLIST server port CDATA #REQUIRED>
+<!ATTLIST server ssl CDATA #REQUIRED>
diff --git a/gnome-2-22/libempathy/empathy-irc-server.c b/gnome-2-22/libempathy/empathy-irc-server.c
new file mode 100644
index 000000000..510acc77b
--- /dev/null
+++ b/gnome-2-22/libempathy/empathy-irc-server.c
@@ -0,0 +1,233 @@
+/*
+ * Copyright (C) 2007-2008 Guillaume Desmottes
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Authors: Guillaume Desmottes <gdesmott@gnome.org>
+ */
+
+#include <config.h>
+#include <string.h>
+#include <stdlib.h>
+#include <glib.h>
+#include <glib/gi18n.h>
+
+#include <telepathy-glib/util.h>
+
+#include "empathy-marshal.h"
+#include "empathy-irc-server.h"
+
+G_DEFINE_TYPE (EmpathyIrcServer, empathy_irc_server, G_TYPE_OBJECT);
+
+/* properties */
+enum
+{
+ PROP_ADDRESS = 1,
+ PROP_PORT,
+ PROP_SSL,
+ LAST_PROPERTY
+};
+
+/* signals */
+enum
+{
+ MODIFIED,
+ LAST_SIGNAL
+};
+
+static guint signals[LAST_SIGNAL] = {0};
+
+typedef struct _EmpathyIrcServerPrivate EmpathyIrcServerPrivate;
+
+struct _EmpathyIrcServerPrivate
+{
+ gchar *address;
+ gint port;
+ gboolean ssl;
+};
+
+#define EMPATHY_IRC_SERVER_GET_PRIVATE(obj)\
+ ((EmpathyIrcServerPrivate *) obj->priv)
+
+static void
+empathy_irc_server_get_property (GObject *object,
+ guint property_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ EmpathyIrcServer *self = EMPATHY_IRC_SERVER (object);
+ EmpathyIrcServerPrivate *priv = EMPATHY_IRC_SERVER_GET_PRIVATE (self);
+
+ switch (property_id)
+ {
+ case PROP_ADDRESS:
+ g_value_set_string (value, priv->address);
+ break;
+ case PROP_PORT:
+ g_value_set_uint (value, priv->port);
+ break;
+ case PROP_SSL:
+ g_value_set_boolean (value, priv->ssl);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+ break;
+ }
+}
+
+static void
+empathy_irc_server_set_property (GObject *object,
+ guint property_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ EmpathyIrcServer *self = EMPATHY_IRC_SERVER (object);
+ EmpathyIrcServerPrivate *priv = EMPATHY_IRC_SERVER_GET_PRIVATE (self);
+
+ switch (property_id)
+ {
+ case PROP_ADDRESS:
+ if (tp_strdiff (priv->address, g_value_get_string (value)))
+ {
+ g_free (priv->address);
+ priv->address = g_value_dup_string (value);
+ g_signal_emit (object, signals[MODIFIED], 0);
+ }
+ break;
+ case PROP_PORT:
+ if (priv->port != g_value_get_uint (value))
+ {
+ priv->port = g_value_get_uint (value);
+ g_signal_emit (object, signals[MODIFIED], 0);
+ }
+ break;
+ case PROP_SSL:
+ if (priv->ssl != g_value_get_boolean (value))
+ {
+ priv->ssl = g_value_get_boolean (value);
+ g_signal_emit (object, signals[MODIFIED], 0);
+ }
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+ break;
+ }
+}
+
+static void
+empathy_irc_server_finalize (GObject *object)
+{
+ EmpathyIrcServer *self = EMPATHY_IRC_SERVER (object);
+ EmpathyIrcServerPrivate *priv = EMPATHY_IRC_SERVER_GET_PRIVATE (self);
+
+ g_free (priv->address);
+
+ G_OBJECT_CLASS (empathy_irc_server_parent_class)->finalize (object);
+}
+
+static void
+empathy_irc_server_init (EmpathyIrcServer *self)
+{
+ EmpathyIrcServerPrivate *priv = G_TYPE_INSTANCE_GET_PRIVATE (self,
+ EMPATHY_TYPE_IRC_SERVER, EmpathyIrcServerPrivate);
+
+ self->priv = priv;
+}
+
+static void
+empathy_irc_server_class_init (EmpathyIrcServerClass *klass)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+ GParamSpec *param_spec;
+
+ object_class->get_property = empathy_irc_server_get_property;
+ object_class->set_property = empathy_irc_server_set_property;
+
+ g_type_class_add_private (object_class,
+ sizeof (EmpathyIrcServerPrivate));
+
+ object_class->finalize = empathy_irc_server_finalize;
+
+ param_spec = g_param_spec_string (
+ "address",
+ "Server address",
+ "The address of this server",
+ NULL,
+ G_PARAM_READWRITE |
+ G_PARAM_STATIC_NAME |
+ G_PARAM_STATIC_NICK |
+ G_PARAM_STATIC_BLURB);
+ g_object_class_install_property (object_class, PROP_ADDRESS, param_spec);
+
+ param_spec = g_param_spec_uint (
+ "port",
+ "Server port",
+ "The port to use to connect on this server",
+ 1, G_MAXUINT16, 6667,
+ G_PARAM_READWRITE |
+ G_PARAM_STATIC_NAME |
+ G_PARAM_STATIC_NICK |
+ G_PARAM_STATIC_BLURB);
+ g_object_class_install_property (object_class, PROP_PORT, param_spec);
+
+ param_spec = g_param_spec_boolean (
+ "ssl",
+ "SSL",
+ "If this server needs SSL connection",
+ FALSE,
+ G_PARAM_READWRITE |
+ G_PARAM_STATIC_NAME |
+ G_PARAM_STATIC_NICK |
+ G_PARAM_STATIC_BLURB);
+ g_object_class_install_property (object_class, PROP_SSL, param_spec);
+
+ /**
+ * EmpathyIrcServer::modified:
+ * @server: the object that received the signal
+ *
+ * Emitted when a property of the server is modified.
+ *
+ */
+ signals[MODIFIED] = g_signal_new (
+ "modified",
+ G_OBJECT_CLASS_TYPE (object_class),
+ G_SIGNAL_RUN_LAST | G_SIGNAL_DETAILED,
+ 0,
+ NULL, NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
+}
+
+/**
+ * empathy_irc_server_new:
+ * @address: the address
+ * @port: the port
+ * @ssl: %TRUE if the server needs a SSL connection
+ *
+ * Creates a new #EmpathyIrcServer
+ *
+ * Returns: a new #EmpathyIrcServer
+ */
+EmpathyIrcServer *
+empathy_irc_server_new (const gchar *address,
+ guint port,
+ gboolean ssl)
+{
+ return g_object_new (EMPATHY_TYPE_IRC_SERVER,
+ "address", address,
+ "port", port,
+ "ssl", ssl,
+ NULL);
+}
diff --git a/gnome-2-22/libempathy/empathy-irc-server.h b/gnome-2-22/libempathy/empathy-irc-server.h
new file mode 100644
index 000000000..09f8c1ef7
--- /dev/null
+++ b/gnome-2-22/libempathy/empathy-irc-server.h
@@ -0,0 +1,65 @@
+/*
+ * Copyright (C) 2007-2008 Guillaume Desmottes
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Authors: Guillaume Desmottes <gdesmott@gnome.org>
+ */
+
+#ifndef __EMPATHY_IRC_SERVER_H__
+#define __EMPATHY_IRC_SERVER_H__
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+typedef struct _EmpathyIrcServer EmpathyIrcServer;
+typedef struct _EmpathyIrcServerClass EmpathyIrcServerClass;
+
+struct _EmpathyIrcServer
+{
+ GObject parent;
+
+ gpointer priv;
+};
+
+struct _EmpathyIrcServerClass
+{
+ GObjectClass parent_class;
+};
+
+GType empathy_irc_server_get_type (void);
+
+/* TYPE MACROS */
+#define EMPATHY_TYPE_IRC_SERVER (empathy_irc_server_get_type ())
+#define EMPATHY_IRC_SERVER(o) \
+ (G_TYPE_CHECK_INSTANCE_CAST ((o), EMPATHY_TYPE_IRC_SERVER, EmpathyIrcServer))
+#define EMPATHY_IRC_SERVER_CLASS(k) \
+ (G_TYPE_CHECK_CLASS_CAST ((k), EMPATHY_TYPE_IRC_SERVER, \
+ EmpathyIrcServerClass))
+#define EMPATHY_IS_IRC_SERVER(o) \
+ (G_TYPE_CHECK_INSTANCE_TYPE ((o), EMPATHY_TYPE_IRC_SERVER))
+#define EMPATHY_IS_IRC_SERVER_CLASS(k) \
+ (G_TYPE_CHECK_CLASS_TYPE ((k), EMPATHY_TYPE_IRC_SERVER))
+#define EMPATHY_IRC_SERVER_GET_CLASS(o) \
+ (G_TYPE_INSTANCE_GET_CLASS ((o), EMPATHY_TYPE_IRC_SERVER,\
+ EmpathyIrcServerClass))
+
+EmpathyIrcServer * empathy_irc_server_new (const gchar *address, guint port,
+ gboolean ssl);
+
+G_END_DECLS
+
+#endif /* __EMPATHY_IRC_SERVER_H__ */
diff --git a/gnome-2-22/libempathy/empathy-log-manager.c b/gnome-2-22/libempathy/empathy-log-manager.c
new file mode 100644
index 000000000..2904407b5
--- /dev/null
+++ b/gnome-2-22/libempathy/empathy-log-manager.c
@@ -0,0 +1,799 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2003-2007 Imendio AB
+ * Copyright (C) 2007-2008 Collabora Ltd.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * 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: Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#include <config.h>
+
+#include <string.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <glib/gstdio.h>
+
+#include "empathy-log-manager.h"
+#include "empathy-contact.h"
+#include "empathy-time.h"
+#include "empathy-debug.h"
+#include "empathy-utils.h"
+
+#define GET_PRIV(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), \
+ EMPATHY_TYPE_LOG_MANAGER, EmpathyLogManagerPriv))
+
+#define DEBUG_DOMAIN "LogManager"
+
+#define LOG_DIR_CREATE_MODE (S_IRUSR | S_IWUSR | S_IXUSR)
+#define LOG_FILE_CREATE_MODE (S_IRUSR | S_IWUSR)
+#define LOG_DIR_CHATROOMS "chatrooms"
+#define LOG_FILENAME_SUFFIX ".log"
+#define LOG_TIME_FORMAT_FULL "%Y%m%dT%H:%M:%S"
+#define LOG_TIME_FORMAT "%Y%m%d"
+#define LOG_HEADER \
+ "<?xml version='1.0' encoding='utf-8'?>\n" \
+ "<?xml-stylesheet type=\"text/xsl\" href=\"empathy-log.xsl\"?>\n" \
+ "<log>\n"
+
+#define LOG_FOOTER \
+ "</log>\n"
+
+struct _EmpathyLogManagerPriv {
+ gchar *basedir;
+};
+
+static void empathy_log_manager_class_init (EmpathyLogManagerClass *klass);
+static void empathy_log_manager_init (EmpathyLogManager *manager);
+static void log_manager_finalize (GObject *object);
+static const gchar * log_manager_get_basedir (EmpathyLogManager *manager);
+static GList * log_manager_get_all_files (EmpathyLogManager *manager,
+ const gchar *dir);
+static GList * log_manager_get_chats (EmpathyLogManager *manager,
+ const gchar *dir,
+ gboolean is_chatroom);
+static gchar * log_manager_get_dir (EmpathyLogManager *manager,
+ McAccount *account,
+ const gchar *chat_id,
+ gboolean chatroom);
+static gchar * log_manager_get_filename (EmpathyLogManager *manager,
+ McAccount *account,
+ const gchar *chat_id,
+ gboolean chatroom);
+static gchar * log_manager_get_filename_for_date (EmpathyLogManager *manager,
+ McAccount *account,
+ const gchar *chat_id,
+ gboolean chatroom,
+ const gchar *date);
+static gchar * log_manager_get_timestamp_filename (void);
+static gchar * log_manager_get_timestamp_from_message (EmpathyMessage *message);
+static EmpathyLogSearchHit *log_manager_search_hit_new (EmpathyLogManager *manager,
+ const gchar *filename);
+static void log_manager_search_hit_free (EmpathyLogSearchHit *hit);
+
+G_DEFINE_TYPE (EmpathyLogManager, empathy_log_manager, G_TYPE_OBJECT);
+
+static void
+empathy_log_manager_class_init (EmpathyLogManagerClass *klass)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+ object_class->finalize = log_manager_finalize;
+
+ g_type_class_add_private (object_class, sizeof (EmpathyLogManagerPriv));
+}
+
+static void
+empathy_log_manager_init (EmpathyLogManager *manager)
+{
+}
+
+static void
+log_manager_finalize (GObject *object)
+{
+ EmpathyLogManagerPriv *priv;
+
+ priv = GET_PRIV (object);
+
+ g_free (priv->basedir);
+}
+
+EmpathyLogManager *
+empathy_log_manager_new (void)
+{
+ static EmpathyLogManager *manager = NULL;
+
+ if (!manager) {
+ manager = g_object_new (EMPATHY_TYPE_LOG_MANAGER, NULL);
+ g_object_add_weak_pointer (G_OBJECT (manager), (gpointer) &manager);
+ } else {
+ g_object_ref (manager);
+ }
+
+ return manager;
+}
+
+void
+empathy_log_manager_add_message (EmpathyLogManager *manager,
+ const gchar *chat_id,
+ gboolean chatroom,
+ EmpathyMessage *message)
+{
+ FILE *file;
+ McAccount *account;
+ EmpathyContact *sender;
+ const gchar *body_str;
+ const gchar *str;
+ EmpathyAvatar *avatar;
+ gchar *avatar_token = NULL;
+ gchar *filename;
+ gchar *basedir;
+ gchar *body;
+ gchar *timestamp;
+ gchar *contact_name;
+ gchar *contact_id;
+ EmpathyMessageType msg_type;
+
+ g_return_if_fail (EMPATHY_IS_LOG_MANAGER (manager));
+ g_return_if_fail (chat_id != NULL);
+ g_return_if_fail (EMPATHY_IS_MESSAGE (message));
+
+ sender = empathy_message_get_sender (message);
+ account = empathy_contact_get_account (sender);
+ body_str = empathy_message_get_body (message);
+ msg_type = empathy_message_get_type (message);
+
+ if (G_STR_EMPTY (body_str)) {
+ return;
+ }
+
+ filename = log_manager_get_filename (manager, account, chat_id, chatroom);
+ basedir = g_path_get_dirname (filename);
+ if (!g_file_test (basedir, G_FILE_TEST_EXISTS | G_FILE_TEST_IS_DIR)) {
+ empathy_debug (DEBUG_DOMAIN, "Creating directory:'%s'", basedir);
+
+ g_mkdir_with_parents (basedir, LOG_DIR_CREATE_MODE);
+ }
+ g_free (basedir);
+
+ empathy_debug (DEBUG_DOMAIN, "Adding message: '%s' to file: '%s'",
+ body_str, filename);
+
+ if (!g_file_test (filename, G_FILE_TEST_EXISTS)) {
+ file = g_fopen (filename, "w+");
+ if (file) {
+ g_fprintf (file, LOG_HEADER);
+ }
+ g_chmod (filename, LOG_FILE_CREATE_MODE);
+ } else {
+ file = g_fopen (filename, "r+");
+ if (file) {
+ fseek (file, - strlen (LOG_FOOTER), SEEK_END);
+ }
+ }
+
+ body = g_markup_escape_text (body_str, -1);
+ timestamp = log_manager_get_timestamp_from_message (message);
+
+ str = empathy_contact_get_name (sender);
+ contact_name = g_markup_escape_text (str, -1);
+
+ str = empathy_contact_get_id (sender);
+ contact_id = g_markup_escape_text (str, -1);
+
+ avatar = empathy_contact_get_avatar (sender);
+ if (avatar) {
+ avatar_token = g_markup_escape_text (avatar->token, -1);
+ }
+
+ g_fprintf (file,
+ "<message time='%s' id='%s' name='%s' token='%s' isuser='%s' type='%s'>%s</message>\n" LOG_FOOTER,
+ timestamp,
+ contact_id,
+ contact_name,
+ avatar_token ? avatar_token : "",
+ empathy_contact_is_user (sender) ? "true" : "false",
+ empathy_message_type_to_str (msg_type),
+ body);
+
+ fclose (file);
+ g_free (filename);
+ g_free (contact_id);
+ g_free (contact_name);
+ g_free (timestamp);
+ g_free (body);
+ g_free (avatar_token);
+}
+
+gboolean
+empathy_log_manager_exists (EmpathyLogManager *manager,
+ McAccount *account,
+ const gchar *chat_id,
+ gboolean chatroom)
+{
+ gchar *dir;
+ gboolean exists;
+
+ dir = log_manager_get_dir (manager, account, chat_id, chatroom);
+ exists = g_file_test (dir, G_FILE_TEST_EXISTS | G_FILE_TEST_IS_DIR);
+ g_free (dir);
+
+ return exists;
+}
+
+GList *
+empathy_log_manager_get_dates (EmpathyLogManager *manager,
+ McAccount *account,
+ const gchar *chat_id,
+ gboolean chatroom)
+{
+ GList *dates = NULL;
+ gchar *date;
+ gchar *directory;
+ GDir *dir;
+ const gchar *filename;
+ const gchar *p;
+
+ g_return_val_if_fail (EMPATHY_IS_LOG_MANAGER (manager), NULL);
+ g_return_val_if_fail (MC_IS_ACCOUNT (account), NULL);
+ g_return_val_if_fail (chat_id != NULL, NULL);
+
+ directory = log_manager_get_dir (manager, account, chat_id, chatroom);
+ dir = g_dir_open (directory, 0, NULL);
+ if (!dir) {
+ empathy_debug (DEBUG_DOMAIN, "Could not open directory:'%s'", directory);
+ g_free (directory);
+ return NULL;
+ }
+
+ empathy_debug (DEBUG_DOMAIN, "Collating a list of dates in:'%s'", directory);
+
+ while ((filename = g_dir_read_name (dir)) != NULL) {
+ if (!g_str_has_suffix (filename, LOG_FILENAME_SUFFIX)) {
+ continue;
+ }
+
+ p = strstr (filename, LOG_FILENAME_SUFFIX);
+ date = g_strndup (filename, p - filename);
+ if (!date) {
+ continue;
+ }
+
+ if (!g_regex_match_simple ("\\d{8}", date, 0, 0)) {
+ continue;
+ }
+
+ dates = g_list_insert_sorted (dates, date, (GCompareFunc) strcmp);
+ }
+
+ g_free (directory);
+ g_dir_close (dir);
+
+ empathy_debug (DEBUG_DOMAIN, "Parsed %d dates", g_list_length (dates));
+
+ return dates;
+}
+
+GList *
+empathy_log_manager_get_messages_for_file (EmpathyLogManager *manager,
+ const gchar *filename)
+{
+ GList *messages = NULL;
+ xmlParserCtxtPtr ctxt;
+ xmlDocPtr doc;
+ xmlNodePtr log_node;
+ xmlNodePtr node;
+ EmpathyLogSearchHit *hit;
+ McAccount *account;
+
+ g_return_val_if_fail (EMPATHY_IS_LOG_MANAGER (manager), NULL);
+ g_return_val_if_fail (filename != NULL, NULL);
+
+ empathy_debug (DEBUG_DOMAIN, "Attempting to parse filename:'%s'...", filename);
+
+ if (!g_file_test (filename, G_FILE_TEST_EXISTS)) {
+ empathy_debug (DEBUG_DOMAIN, "Filename:'%s' does not exist", filename);
+ return NULL;
+ }
+
+ /* Get the account from the filename */
+ hit = log_manager_search_hit_new (manager, filename);
+ account = g_object_ref (hit->account);
+ log_manager_search_hit_free (hit);
+
+ /* Create parser. */
+ ctxt = xmlNewParserCtxt ();
+
+ /* Parse and validate the file. */
+ doc = xmlCtxtReadFile (ctxt, filename, NULL, 0);
+ if (!doc) {
+ g_warning ("Failed to parse file:'%s'", filename);
+ xmlFreeParserCtxt (ctxt);
+ return NULL;
+ }
+
+ /* The root node, presets. */
+ log_node = xmlDocGetRootElement (doc);
+ if (!log_node) {
+ xmlFreeDoc (doc);
+ xmlFreeParserCtxt (ctxt);
+ return NULL;
+ }
+
+ /* Now get the messages. */
+ for (node = log_node->children; node; node = node->next) {
+ EmpathyMessage *message;
+ EmpathyContact *sender;
+ EmpathyAvatar *avatar = NULL;
+ gchar *time;
+ time_t t;
+ gchar *sender_id;
+ gchar *sender_name;
+ gchar *sender_avatar_token;
+ gchar *body;
+ gchar *is_user_str;
+ gboolean is_user = FALSE;
+ gchar *msg_type_str;
+ EmpathyMessageType msg_type = EMPATHY_MESSAGE_TYPE_NORMAL;
+
+ if (strcmp (node->name, "message") != 0) {
+ continue;
+ }
+
+ body = xmlNodeGetContent (node);
+ time = xmlGetProp (node, "time");
+ sender_id = xmlGetProp (node, "id");
+ sender_name = xmlGetProp (node, "name");
+ sender_avatar_token = xmlGetProp (node, "token");
+ is_user_str = xmlGetProp (node, "isuser");
+ msg_type_str = xmlGetProp (node, "type");
+
+ if (!G_STR_EMPTY (sender_avatar_token)) {
+ avatar = empathy_avatar_new_from_cache (sender_avatar_token);
+ }
+ if (is_user_str) {
+ is_user = strcmp (is_user_str, "true") == 0;
+ }
+ if (msg_type_str) {
+ msg_type = empathy_message_type_from_str (msg_type_str);
+ }
+
+ t = empathy_time_parse (time);
+
+ sender = empathy_contact_new_full (account, sender_id, sender_name);
+ empathy_contact_set_is_user (sender, is_user);
+ if (avatar) {
+ empathy_contact_set_avatar (sender, avatar);
+ empathy_avatar_unref (avatar);
+ }
+
+ message = empathy_message_new (body);
+ empathy_message_set_sender (message, sender);
+ empathy_message_set_timestamp (message, t);
+ empathy_message_set_type (message, msg_type);
+
+ messages = g_list_append (messages, message);
+
+ g_object_unref (sender);
+ xmlFree (time);
+ xmlFree (sender_id);
+ xmlFree (sender_name);
+ xmlFree (body);
+ xmlFree (is_user_str);
+ xmlFree (msg_type_str);
+ }
+
+ empathy_debug (DEBUG_DOMAIN, "Parsed %d messages", g_list_length (messages));
+
+ xmlFreeDoc (doc);
+ xmlFreeParserCtxt (ctxt);
+
+ return messages;
+}
+
+GList *
+empathy_log_manager_get_messages_for_date (EmpathyLogManager *manager,
+ McAccount *account,
+ const gchar *chat_id,
+ gboolean chatroom,
+ const gchar *date)
+{
+ gchar *filename;
+ GList *messages;
+
+ g_return_val_if_fail (EMPATHY_IS_LOG_MANAGER (manager), NULL);
+ g_return_val_if_fail (MC_IS_ACCOUNT (account), NULL);
+ g_return_val_if_fail (chat_id != NULL, NULL);
+
+ filename = log_manager_get_filename_for_date (manager, account, chat_id, chatroom, date);
+ messages = empathy_log_manager_get_messages_for_file (manager, filename);
+ g_free (filename);
+
+ return messages;
+}
+
+GList *
+empathy_log_manager_get_last_messages (EmpathyLogManager *manager,
+ McAccount *account,
+ const gchar *chat_id,
+ gboolean chatroom)
+{
+ GList *messages = NULL;
+ GList *dates;
+ GList *l;
+
+ g_return_val_if_fail (EMPATHY_IS_LOG_MANAGER (manager), NULL);
+ g_return_val_if_fail (MC_IS_ACCOUNT (account), NULL);
+ g_return_val_if_fail (chat_id != NULL, NULL);
+
+ dates = empathy_log_manager_get_dates (manager, account, chat_id, chatroom);
+
+ l = g_list_last (dates);
+ if (l) {
+ messages = empathy_log_manager_get_messages_for_date (manager,
+ account,
+ chat_id,
+ chatroom,
+ l->data);
+ }
+
+ g_list_foreach (dates, (GFunc) g_free, NULL);
+ g_list_free (dates);
+
+ return messages;
+}
+
+GList *
+empathy_log_manager_get_chats (EmpathyLogManager *manager,
+ McAccount *account)
+{
+ const gchar *basedir;
+ gchar *dir;
+
+ basedir = log_manager_get_basedir (manager);
+ dir = g_build_filename (basedir,
+ mc_account_get_unique_name (account),
+ NULL);
+
+ return log_manager_get_chats (manager, dir, FALSE);
+}
+
+GList *
+empathy_log_manager_search_new (EmpathyLogManager *manager,
+ const gchar *text)
+{
+ GList *files, *l;
+ GList *hits = NULL;
+ gchar *text_casefold;
+
+ g_return_val_if_fail (EMPATHY_IS_LOG_MANAGER (manager), NULL);
+ g_return_val_if_fail (!G_STR_EMPTY (text), NULL);
+
+ text_casefold = g_utf8_casefold (text, -1);
+
+ files = log_manager_get_all_files (manager, NULL);
+ empathy_debug (DEBUG_DOMAIN, "Found %d log files in total",
+ g_list_length (files));
+
+ for (l = files; l; l = l->next) {
+ gchar *filename;
+ GMappedFile *file;
+ gsize length;
+ gchar *contents;
+ gchar *contents_casefold;
+
+ filename = l->data;
+
+ file = g_mapped_file_new (filename, FALSE, NULL);
+ if (!file) {
+ continue;
+ }
+
+ length = g_mapped_file_get_length (file);
+ contents = g_mapped_file_get_contents (file);
+ contents_casefold = g_utf8_casefold (contents, length);
+
+ g_mapped_file_free (file);
+
+ if (strstr (contents_casefold, text_casefold)) {
+ EmpathyLogSearchHit *hit;
+
+ hit = log_manager_search_hit_new (manager, filename);
+
+ if (hit) {
+ hits = g_list_prepend (hits, hit);
+ empathy_debug (DEBUG_DOMAIN,
+ "Found text:'%s' in file:'%s' on date:'%s'...",
+ text, hit->filename, hit->date);
+ }
+ }
+
+ g_free (contents_casefold);
+ g_free (filename);
+ }
+ g_list_free (files);
+
+ g_free (text_casefold);
+
+ return hits;
+}
+
+void
+empathy_log_manager_search_free (GList *hits)
+{
+ GList *l;
+
+ for (l = hits; l; l = l->next) {
+ log_manager_search_hit_free (l->data);
+ }
+
+ g_list_free (hits);
+}
+
+/* Format is just date, 20061201. */
+gchar *
+empathy_log_manager_get_date_readable (const gchar *date)
+{
+ time_t t;
+
+ t = empathy_time_parse (date);
+
+ return empathy_time_to_string_local (t, "%a %d %b %Y");
+}
+
+static const gchar *
+log_manager_get_basedir (EmpathyLogManager *manager)
+{
+ EmpathyLogManagerPriv *priv;
+
+ priv = GET_PRIV (manager);
+
+ if (priv->basedir) {
+ return priv->basedir;
+ }
+
+ priv->basedir = g_build_path (G_DIR_SEPARATOR_S,
+ g_get_home_dir (),
+ ".gnome2",
+ PACKAGE_NAME,
+ "logs",
+ NULL);
+
+ return priv->basedir;
+}
+
+static GList *
+log_manager_get_all_files (EmpathyLogManager *manager,
+ const gchar *dir)
+{
+ GDir *gdir;
+ GList *files = NULL;
+ const gchar *name;
+
+ if (!dir) {
+ dir = log_manager_get_basedir (manager);
+ }
+
+ gdir = g_dir_open (dir, 0, NULL);
+ if (!gdir) {
+ return NULL;
+ }
+
+ while ((name = g_dir_read_name (gdir)) != NULL) {
+ gchar *filename;
+
+ filename = g_build_filename (dir, name, NULL);
+ if (g_str_has_suffix (filename, LOG_FILENAME_SUFFIX)) {
+ files = g_list_prepend (files, filename);
+ continue;
+ }
+
+ if (g_file_test (filename, G_FILE_TEST_IS_DIR)) {
+ /* Recursively get all log files */
+ files = g_list_concat (files, log_manager_get_all_files (manager, filename));
+ }
+ g_free (filename);
+ }
+
+ g_dir_close (gdir);
+
+ return files;
+}
+
+static GList *
+log_manager_get_chats (EmpathyLogManager *manager,
+ const gchar *dir,
+ gboolean is_chatroom)
+{
+ GDir *gdir;
+ GList *hits = NULL;
+ const gchar *name;
+
+ gdir = g_dir_open (dir, 0, NULL);
+ if (!gdir) {
+ return NULL;
+ }
+
+ while ((name = g_dir_read_name (gdir)) != NULL) {
+ EmpathyLogSearchHit *hit;
+ gchar *filename;
+
+ filename = g_build_filename (dir, name, NULL);
+ if (strcmp (name, LOG_DIR_CHATROOMS) == 0) {
+ hits = g_list_concat (hits, log_manager_get_chats (manager, filename, TRUE));
+ g_free (filename);
+ continue;
+ }
+
+ hit = g_slice_new0 (EmpathyLogSearchHit);
+ hit->chat_id = g_strdup (name);
+ hit->is_chatroom = is_chatroom;
+
+ hits = g_list_prepend (hits, hit);
+ }
+
+ g_dir_close (gdir);
+
+ return hits;
+}
+
+static gchar *
+log_manager_get_dir (EmpathyLogManager *manager,
+ McAccount *account,
+ const gchar *chat_id,
+ gboolean chatroom)
+{
+ const gchar *account_id;
+ gchar *basedir;
+
+ account_id = mc_account_get_unique_name (account);
+
+ if (chatroom) {
+ basedir = g_build_path (G_DIR_SEPARATOR_S,
+ log_manager_get_basedir (manager),
+ account_id,
+ LOG_DIR_CHATROOMS,
+ chat_id,
+ NULL);
+ } else {
+ basedir = g_build_path (G_DIR_SEPARATOR_S,
+ log_manager_get_basedir (manager),
+ account_id,
+ chat_id,
+ NULL);
+ }
+
+ return basedir;
+}
+
+static gchar *
+log_manager_get_filename (EmpathyLogManager *manager,
+ McAccount *account,
+ const gchar *chat_id,
+ gboolean chatroom)
+{
+ gchar *basedir;
+ gchar *timestamp;
+ gchar *filename;
+
+ basedir = log_manager_get_dir (manager, account, chat_id, chatroom);
+ timestamp = log_manager_get_timestamp_filename ();
+ filename = g_build_filename (basedir, timestamp, NULL);
+
+ g_free (basedir);
+ g_free (timestamp);
+
+ return filename;
+}
+
+static gchar *
+log_manager_get_filename_for_date (EmpathyLogManager *manager,
+ McAccount *account,
+ const gchar *chat_id,
+ gboolean chatroom,
+ const gchar *date)
+{
+ gchar *basedir;
+ gchar *timestamp;
+ gchar *filename;
+
+ basedir = log_manager_get_dir (manager, account, chat_id, chatroom);
+ timestamp = g_strconcat (date, LOG_FILENAME_SUFFIX, NULL);
+ filename = g_build_filename (basedir, timestamp, NULL);
+
+ g_free (basedir);
+ g_free (timestamp);
+
+ return filename;
+}
+
+static gchar *
+log_manager_get_timestamp_filename (void)
+{
+ time_t t;
+ gchar *time_str;
+ gchar *filename;
+
+ t = empathy_time_get_current ();
+ time_str = empathy_time_to_string_local (t, LOG_TIME_FORMAT);
+ filename = g_strconcat (time_str, LOG_FILENAME_SUFFIX, NULL);
+
+ g_free (time_str);
+
+ return filename;
+}
+
+static gchar *
+log_manager_get_timestamp_from_message (EmpathyMessage *message)
+{
+ time_t t;
+
+ t = empathy_message_get_timestamp (message);
+
+ /* We keep the timestamps in the messages as UTC. */
+ return empathy_time_to_string_utc (t, LOG_TIME_FORMAT_FULL);
+}
+
+static EmpathyLogSearchHit *
+log_manager_search_hit_new (EmpathyLogManager *manager,
+ const gchar *filename)
+{
+ EmpathyLogSearchHit *hit;
+ const gchar *account_name;
+ const gchar *end;
+ gchar **strv;
+ guint len;
+
+ if (!g_str_has_suffix (filename, LOG_FILENAME_SUFFIX)) {
+ return NULL;
+ }
+
+ strv = g_strsplit (filename, G_DIR_SEPARATOR_S, -1);
+ len = g_strv_length (strv);
+
+ hit = g_slice_new0 (EmpathyLogSearchHit);
+
+ end = strstr (strv[len-1], LOG_FILENAME_SUFFIX);
+ hit->date = g_strndup (strv[len-1], end - strv[len-1]);
+ hit->chat_id = g_strdup (strv[len-2]);
+ hit->is_chatroom = (strcmp (strv[len-3], LOG_DIR_CHATROOMS) == 0);
+ if (hit->is_chatroom) {
+ account_name = strv[len-4];
+ } else {
+ account_name = strv[len-3];
+ }
+ hit->account = mc_account_lookup (account_name);
+ hit->filename = g_strdup (filename);
+
+ g_strfreev (strv);
+
+ return hit;
+}
+
+static void
+log_manager_search_hit_free (EmpathyLogSearchHit *hit)
+{
+ if (hit->account) {
+ g_object_unref (hit->account);
+ }
+
+ g_free (hit->date);
+ g_free (hit->filename);
+ g_free (hit->chat_id);
+
+ g_slice_free (EmpathyLogSearchHit, hit);
+}
diff --git a/gnome-2-22/libempathy/empathy-log-manager.h b/gnome-2-22/libempathy/empathy-log-manager.h
new file mode 100644
index 000000000..9946ee4c8
--- /dev/null
+++ b/gnome-2-22/libempathy/empathy-log-manager.h
@@ -0,0 +1,99 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2003-2007 Imendio AB
+ * Copyright (C) 2007 Collabora Ltd.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * 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: Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#ifndef __EMPATHY_LOG_MANAGER_H__
+#define __EMPATHY_LOG_MANAGER_H__
+
+#include <glib-object.h>
+
+#include <libmissioncontrol/mc-account.h>
+
+#include "empathy-message.h"
+
+G_BEGIN_DECLS
+
+#define EMPATHY_TYPE_LOG_MANAGER (empathy_log_manager_get_type ())
+#define EMPATHY_LOG_MANAGER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), EMPATHY_TYPE_LOG_MANAGER, EmpathyLogManager))
+#define EMPATHY_LOG_MANAGER_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), EMPATHY_TYPE_LOG_MANAGER, EmpathyLogManagerClass))
+#define EMPATHY_IS_LOG_MANAGER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), EMPATHY_TYPE_LOG_MANAGER))
+#define EMPATHY_IS_LOG_MANAGER_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), EMPATHY_TYPE_LOG_MANAGER))
+#define EMPATHY_LOG_MANAGER_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), EMPATHY_TYPE_LOG_MANAGER, EmpathyLogManagerClass))
+
+typedef struct _EmpathyLogManager EmpathyLogManager;
+typedef struct _EmpathyLogManagerClass EmpathyLogManagerClass;
+typedef struct _EmpathyLogManagerPriv EmpathyLogManagerPriv;
+typedef struct _EmpathyLogSearchHit EmpathyLogSearchHit;
+
+struct _EmpathyLogManager {
+ GObject parent;
+};
+
+struct _EmpathyLogManagerClass {
+ GObjectClass parent_class;
+};
+
+struct _EmpathyLogSearchHit {
+ McAccount *account;
+ gchar *chat_id;
+ gboolean is_chatroom;
+ gchar *filename;
+ gchar *date;
+};
+
+GType empathy_log_manager_get_type (void) G_GNUC_CONST;
+EmpathyLogManager *empathy_log_manager_new (void);
+void empathy_log_manager_add_message (EmpathyLogManager *manager,
+ const gchar *chat_id,
+ gboolean chatroom,
+ EmpathyMessage *message);
+gboolean empathy_log_manager_exists (EmpathyLogManager *manager,
+ McAccount *account,
+ const gchar *chat_id,
+ gboolean chatroom);
+GList * empathy_log_manager_get_dates (EmpathyLogManager *manager,
+ McAccount *account,
+ const gchar *chat_id,
+ gboolean chatroom);
+GList * empathy_log_manager_get_messages_for_file (EmpathyLogManager *manager,
+ const gchar *filename);
+GList * empathy_log_manager_get_messages_for_date (EmpathyLogManager *manager,
+ McAccount *account,
+ const gchar *chat_id,
+ gboolean chatroom,
+ const gchar *date);
+GList * empathy_log_manager_get_last_messages (EmpathyLogManager *manager,
+ McAccount *account,
+ const gchar *chat_id,
+ gboolean chatroom);
+GList * empathy_log_manager_get_messages_for_file (EmpathyLogManager *manager,
+ const gchar *filename);
+GList * empathy_log_manager_get_chats (EmpathyLogManager *manager,
+ McAccount *account);
+GList * empathy_log_manager_search_new (EmpathyLogManager *manager,
+ const gchar *text);
+void empathy_log_manager_search_free (GList *hits);
+gchar * empathy_log_manager_get_date_readable (const gchar *date);
+
+G_END_DECLS
+
+#endif /* __EMPATHY_LOG_MANAGER_H__ */
diff --git a/gnome-2-22/libempathy/empathy-log-manager.xsl b/gnome-2-22/libempathy/empathy-log-manager.xsl
new file mode 100644
index 000000000..a934f3ab3
--- /dev/null
+++ b/gnome-2-22/libempathy/empathy-log-manager.xsl
@@ -0,0 +1,148 @@
+<xsl:stylesheet version = '1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
+
+ <xsl:output method="html" encoding="utf-8" indent="yes"/>
+
+ <xsl:template match="/">
+ <html>
+ <head>
+ <style type="text/css">
+ <xsl:text>
+ body {
+ background: #fff;
+ font-family: Verdana, "Bitstream Vera Sans", Sans-Serif;
+ font-size: 10pt;
+ }
+ .stamp {
+ color: #999;
+ }
+ .top-day-stamp {
+ color: #999;
+ text-align: center;
+ margin-bottom: 1em;
+ }
+ .new-day-stamp {
+ color: #999;
+ text-align: center;
+ margin-bottom: 1em;
+ margin-top: 1em;
+ }
+ .nick {
+ color: rgb(54,100, 139);
+ }
+ .nick-self {
+ color: rgb(46,139,87);
+ }
+ .nick-highlight {
+ color: rgb(205,92,92);
+ }
+ </xsl:text>
+ </style>
+ <title><xsl:value-of select="$title"/></title>
+ </head>
+ <body>
+ <xsl:apply-templates/>
+ </body>
+ </html>
+ </xsl:template>
+
+ <xsl:template name="get-day">
+ <xsl:param name="stamp"/>
+ <xsl:value-of select="substring ($stamp, 1, 8)"/>
+ </xsl:template>
+
+ <xsl:template name="format-stamp">
+ <xsl:param name="stamp"/>
+ <xsl:variable name="hour" select="substring ($stamp, 10, 2)"/>
+ <xsl:variable name="min" select="substring ($stamp, 13, 2)"/>
+
+ <xsl:value-of select="$hour"/>:<xsl:value-of select="$min"/>
+ </xsl:template>
+
+ <xsl:template name="format-day-stamp">
+ <xsl:param name="stamp"/>
+ <xsl:variable name="year" select="substring ($stamp, 1, 4)"/>
+ <xsl:variable name="month" select="substring ($stamp, 5, 2)"/>
+ <xsl:variable name="day" select="substring ($stamp, 7, 2)"/>
+
+ <xsl:value-of select="$year"/>-<xsl:value-of select="$month"/>-<xsl:value-of select="$day"/>
+ </xsl:template>
+
+ <xsl:template name="header">
+ <xsl:param name="stamp"/>
+ <div class="top-day-stamp">
+ <xsl:call-template name="format-day-stamp">
+ <xsl:with-param name="stamp" select="@time"/>
+ </xsl:call-template>
+ </div>
+ </xsl:template>
+
+ <xsl:template match="a">
+ <xsl:text disable-output-escaping="yes">&lt;a href="</xsl:text>
+
+ <xsl:value-of disable-output-escaping="yes" select="@href"/>
+
+ <xsl:text disable-output-escaping="yes">"&gt;</xsl:text>
+
+ <xsl:value-of select="@href"/>
+ <xsl:text disable-output-escaping="yes">&lt;/a&gt;</xsl:text>
+ </xsl:template>
+
+ <xsl:template match="log">
+
+ <div class="top-day-stamp">
+ <xsl:call-template name="format-day-stamp">
+ <xsl:with-param name="stamp" select="//message[1]/@time"/>
+ </xsl:call-template>
+ </div>
+
+ <xsl:for-each select="*">
+
+ <xsl:variable name="prev-time">
+ <xsl:call-template name="get-day">
+ <xsl:with-param name="stamp" select="preceding-sibling::*[1]/@time"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="this-time">
+ <xsl:call-template name="get-day">
+ <xsl:with-param name="stamp" select="@time"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="$prev-time &lt; $this-time">
+ <div class="new-day-stamp">
+ <xsl:call-template name="format-day-stamp">
+ <xsl:with-param name="stamp" select="@time"/>
+ </xsl:call-template>
+ </div>
+ </xsl:if>
+
+ <xsl:variable name="stamp">
+ <xsl:call-template name="format-stamp">
+ <xsl:with-param name="stamp" select="@time"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <span class="stamp">
+ <xsl:value-of select="$stamp"/>
+ </span>
+
+ <xsl:variable name="nick-class">
+ <xsl:choose>
+ <xsl:when test="not(string(@id))">nick-self</xsl:when>
+ <xsl:otherwise>nick</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <span class="{$nick-class}">
+ &lt;<xsl:value-of select="@name"/>&gt;
+ </span>
+
+ <xsl:apply-templates/>
+ <br/>
+
+ </xsl:for-each>
+
+ </xsl:template>
+
+</xsl:stylesheet>
diff --git a/gnome-2-22/libempathy/empathy-message.c b/gnome-2-22/libempathy/empathy-message.c
new file mode 100644
index 000000000..76b49bd1a
--- /dev/null
+++ b/gnome-2-22/libempathy/empathy-message.c
@@ -0,0 +1,473 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2004-2007 Imendio AB
+ * Copyright (C) 2007-2008 Collabora Ltd.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * 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: Mikael Hallendal <micke@imendio.com>
+ * Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#include "config.h"
+
+#include <string.h>
+
+#include "empathy-message.h"
+#include "empathy-enum-types.h"
+
+#define GET_PRIV(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), EMPATHY_TYPE_MESSAGE, EmpathyMessagePriv))
+
+typedef struct _EmpathyMessagePriv EmpathyMessagePriv;
+
+struct _EmpathyMessagePriv {
+ EmpathyMessageType type;
+ EmpathyContact *sender;
+ EmpathyContact *receiver;
+ gchar *body;
+ time_t timestamp;
+};
+
+static void empathy_message_class_init (EmpathyMessageClass *class);
+static void empathy_message_init (EmpathyMessage *message);
+static void empathy_message_finalize (GObject *object);
+static void message_get_property (GObject *object,
+ guint param_id,
+ GValue *value,
+ GParamSpec *pspec);
+static void message_set_property (GObject *object,
+ guint param_id,
+ const GValue *value,
+ GParamSpec *pspec);
+
+enum {
+ PROP_0,
+ PROP_TYPE,
+ PROP_SENDER,
+ PROP_RECEIVER,
+ PROP_BODY,
+ PROP_TIMESTAMP,
+};
+
+static gpointer parent_class = NULL;
+
+GType
+empathy_message_get_gtype (void)
+{
+ static GType type = 0;
+
+ if (!type) {
+ static const GTypeInfo info = {
+ sizeof (EmpathyMessageClass),
+ NULL, /* base_init */
+ NULL, /* base_finalize */
+ (GClassInitFunc) empathy_message_class_init,
+ NULL, /* class_finalize */
+ NULL, /* class_data */
+ sizeof (EmpathyMessage),
+ 0, /* n_preallocs */
+ (GInstanceInitFunc) empathy_message_init
+ };
+
+ type = g_type_register_static (G_TYPE_OBJECT,
+ "EmpathyMessage",
+ &info, 0);
+ }
+
+ return type;
+}
+
+static void
+empathy_message_class_init (EmpathyMessageClass *class)
+{
+ GObjectClass *object_class;
+
+ object_class = G_OBJECT_CLASS (class);
+ parent_class = g_type_class_peek_parent (class);
+
+ object_class->finalize = empathy_message_finalize;
+ object_class->get_property = message_get_property;
+ object_class->set_property = message_set_property;
+
+ g_object_class_install_property (object_class,
+ PROP_TYPE,
+ g_param_spec_enum ("type",
+ "Message Type",
+ "The type of message",
+ EMPATHY_TYPE_MESSAGE_TYPE,
+ EMPATHY_MESSAGE_TYPE_NORMAL,
+ G_PARAM_READWRITE));
+ g_object_class_install_property (object_class,
+ PROP_SENDER,
+ g_param_spec_object ("sender",
+ "Message Sender",
+ "The sender of the message",
+ EMPATHY_TYPE_CONTACT,
+ G_PARAM_READWRITE));
+ g_object_class_install_property (object_class,
+ PROP_RECEIVER,
+ g_param_spec_object ("receiver",
+ "Message Receiver",
+ "The receiver of the message",
+ EMPATHY_TYPE_CONTACT,
+ G_PARAM_READWRITE));
+ g_object_class_install_property (object_class,
+ PROP_BODY,
+ g_param_spec_string ("body",
+ "Message Body",
+ "The content of the message",
+ NULL,
+ G_PARAM_READWRITE));
+ g_object_class_install_property (object_class,
+ PROP_TIMESTAMP,
+ g_param_spec_long ("timestamp",
+ "timestamp",
+ "timestamp",
+ -1,
+ G_MAXLONG,
+ -1,
+ G_PARAM_READWRITE));
+
+
+ g_type_class_add_private (object_class, sizeof (EmpathyMessagePriv));
+
+}
+
+static void
+empathy_message_init (EmpathyMessage *message)
+{
+ EmpathyMessagePriv *priv;
+
+ priv = GET_PRIV (message);
+
+ priv->timestamp = empathy_time_get_current ();
+}
+
+static void
+empathy_message_finalize (GObject *object)
+{
+ EmpathyMessagePriv *priv;
+
+ priv = GET_PRIV (object);
+
+ if (priv->sender) {
+ g_object_unref (priv->sender);
+ }
+ if (priv->receiver) {
+ g_object_unref (priv->receiver);
+ }
+
+ g_free (priv->body);
+
+ (G_OBJECT_CLASS (parent_class)->finalize) (object);
+}
+
+static void
+message_get_property (GObject *object,
+ guint param_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ EmpathyMessagePriv *priv;
+
+ priv = GET_PRIV (object);
+
+ switch (param_id) {
+ case PROP_TYPE:
+ g_value_set_enum (value, priv->type);
+ break;
+ case PROP_SENDER:
+ g_value_set_object (value, priv->sender);
+ break;
+ case PROP_RECEIVER:
+ g_value_set_object (value, priv->receiver);
+ break;
+ case PROP_BODY:
+ g_value_set_string (value, priv->body);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
+ break;
+ };
+}
+
+static void
+message_set_property (GObject *object,
+ guint param_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ EmpathyMessagePriv *priv;
+
+ priv = GET_PRIV (object);
+
+ switch (param_id) {
+ case PROP_TYPE:
+ empathy_message_set_type (EMPATHY_MESSAGE (object),
+ g_value_get_enum (value));
+ break;
+ case PROP_SENDER:
+ empathy_message_set_sender (EMPATHY_MESSAGE (object),
+ EMPATHY_CONTACT (g_value_get_object (value)));
+ break;
+ case PROP_RECEIVER:
+ empathy_message_set_receiver (EMPATHY_MESSAGE (object),
+ EMPATHY_CONTACT (g_value_get_object (value)));
+ break;
+ case PROP_BODY:
+ empathy_message_set_body (EMPATHY_MESSAGE (object),
+ g_value_get_string (value));
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
+ break;
+ };
+}
+
+EmpathyMessage *
+empathy_message_new (const gchar *body)
+{
+ return g_object_new (EMPATHY_TYPE_MESSAGE,
+ "body", body,
+ NULL);
+}
+
+EmpathyMessageType
+empathy_message_get_type (EmpathyMessage *message)
+{
+ EmpathyMessagePriv *priv;
+
+ g_return_val_if_fail (EMPATHY_IS_MESSAGE (message),
+ EMPATHY_MESSAGE_TYPE_NORMAL);
+
+ priv = GET_PRIV (message);
+
+ return priv->type;
+}
+
+void
+empathy_message_set_type (EmpathyMessage *message,
+ EmpathyMessageType type)
+{
+ EmpathyMessagePriv *priv;
+
+ g_return_if_fail (EMPATHY_IS_MESSAGE (message));
+
+ priv = GET_PRIV (message);
+
+ priv->type = type;
+
+ g_object_notify (G_OBJECT (message), "type");
+}
+
+EmpathyContact *
+empathy_message_get_sender (EmpathyMessage *message)
+{
+ EmpathyMessagePriv *priv;
+
+ g_return_val_if_fail (EMPATHY_IS_MESSAGE (message), NULL);
+
+ priv = GET_PRIV (message);
+
+ return priv->sender;
+}
+
+void
+empathy_message_set_sender (EmpathyMessage *message, EmpathyContact *contact)
+{
+ EmpathyMessagePriv *priv;
+ EmpathyContact *old_sender;
+
+ g_return_if_fail (EMPATHY_IS_MESSAGE (message));
+ g_return_if_fail (EMPATHY_IS_CONTACT (contact));
+
+ priv = GET_PRIV (message);
+
+ old_sender = priv->sender;
+ priv->sender = g_object_ref (contact);
+
+ if (old_sender) {
+ g_object_unref (old_sender);
+ }
+
+ g_object_notify (G_OBJECT (message), "sender");
+}
+
+EmpathyContact *
+empathy_message_get_receiver (EmpathyMessage *message)
+{
+ EmpathyMessagePriv *priv;
+
+ g_return_val_if_fail (EMPATHY_IS_MESSAGE (message), NULL);
+
+ priv = GET_PRIV (message);
+
+ return priv->receiver;
+}
+
+void
+empathy_message_set_receiver (EmpathyMessage *message, EmpathyContact *contact)
+{
+ EmpathyMessagePriv *priv;
+ EmpathyContact *old_receiver;
+
+ g_return_if_fail (EMPATHY_IS_MESSAGE (message));
+ g_return_if_fail (EMPATHY_IS_CONTACT (contact));
+
+ priv = GET_PRIV (message);
+
+ old_receiver = priv->receiver;
+ priv->receiver = g_object_ref (contact);
+
+ if (old_receiver) {
+ g_object_unref (old_receiver);
+ }
+
+ g_object_notify (G_OBJECT (message), "receiver");
+}
+
+const gchar *
+empathy_message_get_body (EmpathyMessage *message)
+{
+ EmpathyMessagePriv *priv;
+
+ g_return_val_if_fail (EMPATHY_IS_MESSAGE (message), NULL);
+
+ priv = GET_PRIV (message);
+
+ return priv->body;
+}
+
+void
+empathy_message_set_body (EmpathyMessage *message,
+ const gchar *body)
+{
+ EmpathyMessagePriv *priv;
+ EmpathyMessageType type;
+
+ g_return_if_fail (EMPATHY_IS_MESSAGE (message));
+
+ priv = GET_PRIV (message);
+
+ g_free (priv->body);
+ priv->body = NULL;
+
+ type = EMPATHY_MESSAGE_TYPE_NORMAL;
+ if (g_str_has_prefix (body, "/me")) {
+ type = EMPATHY_MESSAGE_TYPE_ACTION;
+ body += 4;
+ }
+ else if (g_str_has_prefix (body, "/say")) {
+ body += 5;
+ }
+
+ if (body) {
+ priv->body = g_strdup (body);
+ }
+
+ if (type != priv->type) {
+ empathy_message_set_type (message, type);
+ }
+
+ g_object_notify (G_OBJECT (message), "body");
+}
+
+time_t
+empathy_message_get_timestamp (EmpathyMessage *message)
+{
+ EmpathyMessagePriv *priv;
+
+ g_return_val_if_fail (EMPATHY_IS_MESSAGE (message), -1);
+
+ priv = GET_PRIV (message);
+
+ return priv->timestamp;
+}
+
+void
+empathy_message_set_timestamp (EmpathyMessage *message,
+ time_t timestamp)
+{
+ EmpathyMessagePriv *priv;
+
+ g_return_if_fail (EMPATHY_IS_MESSAGE (message));
+ g_return_if_fail (timestamp >= -1);
+
+ priv = GET_PRIV (message);
+
+ if (timestamp <= 0) {
+ priv->timestamp = empathy_time_get_current ();
+ } else {
+ priv->timestamp = timestamp;
+ }
+
+ g_object_notify (G_OBJECT (message), "timestamp");
+}
+
+GDate *
+empathy_message_get_date_and_time (EmpathyMessage *message, time_t *timestamp)
+{
+ GDate *date;
+
+ *timestamp = 0;
+ if (message) {
+ *timestamp = empathy_message_get_timestamp (message);
+ }
+
+ if (timestamp <= 0) {
+ *timestamp = empathy_time_get_current ();
+ }
+
+ date = g_date_new ();
+ g_date_set_time (date, *timestamp);
+
+ return date;
+}
+
+EmpathyMessageType
+empathy_message_type_from_str (const gchar *type_str)
+{
+ if (strcmp (type_str, "normal") == 0) {
+ return EMPATHY_MESSAGE_TYPE_NORMAL;
+ }
+ if (strcmp (type_str, "action") == 0) {
+ return EMPATHY_MESSAGE_TYPE_ACTION;
+ }
+ else if (strcmp (type_str, "notice") == 0) {
+ return EMPATHY_MESSAGE_TYPE_NOTICE;
+ }
+ else if (strcmp (type_str, "auto-reply") == 0) {
+ return EMPATHY_MESSAGE_TYPE_AUTO_REPLY;
+ }
+
+ return EMPATHY_MESSAGE_TYPE_NORMAL;
+}
+
+const gchar *
+empathy_message_type_to_str (EmpathyMessageType type)
+{
+ switch (type) {
+ case EMPATHY_MESSAGE_TYPE_ACTION:
+ return "action";
+ case EMPATHY_MESSAGE_TYPE_NOTICE:
+ return "notice";
+ case EMPATHY_MESSAGE_TYPE_AUTO_REPLY:
+ return "auto-reply";
+ default:
+ return "normal";
+ }
+}
+
diff --git a/gnome-2-22/libempathy/empathy-message.h b/gnome-2-22/libempathy/empathy-message.h
new file mode 100644
index 000000000..d1c995fe4
--- /dev/null
+++ b/gnome-2-22/libempathy/empathy-message.h
@@ -0,0 +1,85 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2004-2007 Imendio AB
+ * Copyright (C) 2007 Collabora Ltd.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * 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: Mikael Hallendal <micke@imendio.com>
+ * Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#ifndef __EMPATHY_MESSAGE_H__
+#define __EMPATHY_MESSAGE_H__
+
+#include <glib-object.h>
+
+#include "empathy-contact.h"
+#include "empathy-time.h"
+
+G_BEGIN_DECLS
+
+#define EMPATHY_TYPE_MESSAGE (empathy_message_get_gtype ())
+#define EMPATHY_MESSAGE(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), EMPATHY_TYPE_MESSAGE, EmpathyMessage))
+#define EMPATHY_MESSAGE_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), EMPATHY_TYPE_MESSAGE, EmpathyMessageClass))
+#define EMPATHY_IS_MESSAGE(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), EMPATHY_TYPE_MESSAGE))
+#define EMPATHY_IS_MESSAGE_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), EMPATHY_TYPE_MESSAGE))
+#define EMPATHY_MESSAGE_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), EMPATHY_TYPE_MESSAGE, EmpathyMessageClass))
+
+typedef struct _EmpathyMessage EmpathyMessage;
+typedef struct _EmpathyMessageClass EmpathyMessageClass;
+
+struct _EmpathyMessage {
+ GObject parent;
+};
+
+struct _EmpathyMessageClass {
+ GObjectClass parent_class;
+};
+
+typedef enum {
+ EMPATHY_MESSAGE_TYPE_NORMAL,
+ EMPATHY_MESSAGE_TYPE_ACTION,
+ EMPATHY_MESSAGE_TYPE_NOTICE,
+ EMPATHY_MESSAGE_TYPE_AUTO_REPLY,
+ EMPATHY_MESSAGE_TYPE_LAST
+} EmpathyMessageType;
+
+GType empathy_message_get_gtype (void) G_GNUC_CONST;
+EmpathyMessage * empathy_message_new (const gchar *body);
+EmpathyMessageType empathy_message_get_type (EmpathyMessage *message);
+void empathy_message_set_type (EmpathyMessage *message,
+ EmpathyMessageType type);
+EmpathyContact * empathy_message_get_sender (EmpathyMessage *message);
+void empathy_message_set_sender (EmpathyMessage *message,
+ EmpathyContact *contact);
+EmpathyContact * empathy_message_get_receiver (EmpathyMessage *message);
+void empathy_message_set_receiver (EmpathyMessage *message,
+ EmpathyContact *contact);
+const gchar * empathy_message_get_body (EmpathyMessage *message);
+void empathy_message_set_body (EmpathyMessage *message,
+ const gchar *body);
+time_t empathy_message_get_timestamp (EmpathyMessage *message);
+void empathy_message_set_timestamp (EmpathyMessage *message,
+ time_t timestamp);
+GDate * empathy_message_get_date_and_time (EmpathyMessage *message,
+ time_t *timestamp);
+EmpathyMessageType empathy_message_type_from_str (const gchar *type_str);
+const gchar * empathy_message_type_to_str (EmpathyMessageType type);
+
+G_END_DECLS
+
+#endif /* __EMPATHY_MESSAGE_H__ */
diff --git a/gnome-2-22/libempathy/empathy-status-presets.c b/gnome-2-22/libempathy/empathy-status-presets.c
new file mode 100644
index 000000000..89b1874f3
--- /dev/null
+++ b/gnome-2-22/libempathy/empathy-status-presets.c
@@ -0,0 +1,407 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2005-2007 Imendio AB
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * 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: Martyn Russell <martyn@imendio.com>
+ */
+
+#include "config.h"
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <string.h>
+
+#include <glib.h>
+#include <glib/gi18n.h>
+
+#include <libxml/parser.h>
+#include <libxml/tree.h>
+
+#include <telepathy-glib/util.h>
+
+#include "empathy-debug.h"
+#include "empathy-utils.h"
+#include "empathy-status-presets.h"
+
+#define DEBUG_DOMAIN "StatusPresets"
+
+#define STATUS_PRESETS_XML_FILENAME "status-presets.xml"
+#define STATUS_PRESETS_DTD_FILENAME "empathy-status-presets.dtd"
+#define STATUS_PRESETS_MAX_EACH 15
+
+typedef struct {
+ gchar *status;
+ McPresence state;
+} StatusPreset;
+
+static StatusPreset *status_preset_new (McPresence state,
+ const gchar *status);
+static void status_preset_free (StatusPreset *status);
+static void status_presets_file_parse (const gchar *filename);
+const gchar * status_presets_get_state_as_str (McPresence state);
+static gboolean status_presets_file_save (void);
+static void status_presets_set_default (McPresence state,
+ const gchar *status);
+
+static GList *presets = NULL;
+static StatusPreset *default_preset = NULL;
+
+static StatusPreset *
+status_preset_new (McPresence state,
+ const gchar *status)
+{
+ StatusPreset *preset;
+
+ preset = g_new0 (StatusPreset, 1);
+
+ preset->status = g_strdup (status);
+ preset->state = state;
+
+ return preset;
+}
+
+static void
+status_preset_free (StatusPreset *preset)
+{
+ g_free (preset->status);
+ g_free (preset);
+}
+
+static void
+status_presets_file_parse (const gchar *filename)
+{
+ xmlParserCtxtPtr ctxt;
+ xmlDocPtr doc;
+ xmlNodePtr presets_node;
+ xmlNodePtr node;
+
+ empathy_debug (DEBUG_DOMAIN, "Attempting to parse file:'%s'...", filename);
+
+ ctxt = xmlNewParserCtxt ();
+
+ /* Parse and validate the file. */
+ doc = xmlCtxtReadFile (ctxt, filename, NULL, 0);
+ if (!doc) {
+ g_warning ("Failed to parse file:'%s'", filename);
+ xmlFreeParserCtxt (ctxt);
+ return;
+ }
+
+ if (!empathy_xml_validate (doc, STATUS_PRESETS_DTD_FILENAME)) {
+ g_warning ("Failed to validate file:'%s'", filename);
+ xmlFreeDoc(doc);
+ xmlFreeParserCtxt (ctxt);
+ return;
+ }
+
+ /* The root node, presets. */
+ presets_node = xmlDocGetRootElement (doc);
+
+ node = presets_node->children;
+ while (node) {
+ if (strcmp ((gchar *) node->name, "status") == 0 ||
+ strcmp ((gchar *) node->name, "default") == 0) {
+ McPresence state;
+ gchar *status;
+ gchar *state_str;
+ StatusPreset *preset;
+ gboolean is_default = FALSE;
+
+ if (strcmp ((gchar *) node->name, "default") == 0) {
+ is_default = TRUE;
+ }
+
+ status = (gchar *) xmlNodeGetContent (node);
+ state_str = (gchar *) xmlGetProp (node, "presence");
+
+ if (state_str) {
+ state = empathy_presence_from_str (state_str);
+
+ if (is_default) {
+ empathy_debug (DEBUG_DOMAIN,
+ "Default status preset state is:'%s', status:'%s'",
+ state_str, status);
+
+ status_presets_set_default (state, status);
+ } else {
+ preset = status_preset_new (state, status);
+ presets = g_list_append (presets, preset);
+ }
+ }
+
+ xmlFree (status);
+ xmlFree (state_str);
+ }
+
+ node = node->next;
+ }
+
+ /* Use the default if not set */
+ if (!default_preset) {
+ status_presets_set_default (MC_PRESENCE_OFFLINE, NULL);
+ }
+
+ empathy_debug (DEBUG_DOMAIN, "Parsed %d status presets", g_list_length (presets));
+
+ xmlFreeDoc (doc);
+ xmlFreeParserCtxt (ctxt);
+}
+
+void
+empathy_status_presets_get_all (void)
+{
+ gchar *dir;
+ gchar *file_with_path;
+
+ /* If already set up clean up first. */
+ if (presets) {
+ g_list_foreach (presets, (GFunc) status_preset_free, NULL);
+ g_list_free (presets);
+ presets = NULL;
+ }
+
+ dir = g_build_filename (g_get_home_dir (), ".gnome2", PACKAGE_NAME, NULL);
+ g_mkdir_with_parents (dir, S_IRUSR | S_IWUSR | S_IXUSR);
+ file_with_path = g_build_filename (dir, STATUS_PRESETS_XML_FILENAME, NULL);
+ g_free (dir);
+
+ if (g_file_test (file_with_path, G_FILE_TEST_EXISTS)) {
+ status_presets_file_parse (file_with_path);
+ }
+
+ g_free (file_with_path);
+}
+
+static gboolean
+status_presets_file_save (void)
+{
+ xmlDocPtr doc;
+ xmlNodePtr root;
+ GList *l;
+ gchar *dir;
+ gchar *file;
+ gint count[LAST_MC_PRESENCE];
+ gint i;
+
+ for (i = 0; i < LAST_MC_PRESENCE; i++) {
+ count[i] = 0;
+ }
+
+ dir = g_build_filename (g_get_home_dir (), ".gnome2", PACKAGE_NAME, NULL);
+ g_mkdir_with_parents (dir, S_IRUSR | S_IWUSR | S_IXUSR);
+ file = g_build_filename (dir, STATUS_PRESETS_XML_FILENAME, NULL);
+ g_free (dir);
+
+ doc = xmlNewDoc ("1.0");
+ root = xmlNewNode (NULL, "presets");
+ xmlDocSetRootElement (doc, root);
+
+ if (default_preset) {
+ xmlNodePtr subnode;
+ xmlChar *state;
+
+ state = (gchar*) empathy_presence_to_str (default_preset->state);
+
+ subnode = xmlNewTextChild (root, NULL, "default",
+ default_preset->status);
+ xmlNewProp (subnode, "presence", state);
+ }
+
+ for (l = presets; l; l = l->next) {
+ StatusPreset *sp;
+ xmlNodePtr subnode;
+ xmlChar *state;
+
+ sp = l->data;
+ state = (gchar*) empathy_presence_to_str (sp->state);
+
+ count[sp->state]++;
+ if (count[sp->state] > STATUS_PRESETS_MAX_EACH) {
+ continue;
+ }
+
+ subnode = xmlNewTextChild (root, NULL,
+ "status", sp->status);
+ xmlNewProp (subnode, "presence", state);
+ }
+
+ /* Make sure the XML is indented properly */
+ xmlIndentTreeOutput = 1;
+
+ empathy_debug (DEBUG_DOMAIN, "Saving file:'%s'", file);
+ xmlSaveFormatFileEnc (file, doc, "utf-8", 1);
+ xmlFreeDoc (doc);
+
+ g_free (file);
+
+ return TRUE;
+}
+
+GList *
+empathy_status_presets_get (McPresence state,
+ gint max_number)
+{
+ GList *list = NULL;
+ GList *l;
+ gint i;
+
+ i = 0;
+ for (l = presets; l; l = l->next) {
+ StatusPreset *sp;
+
+ sp = l->data;
+
+ if (sp->state != state) {
+ continue;
+ }
+
+ list = g_list_append (list, sp->status);
+ i++;
+
+ if (max_number != -1 && i >= max_number) {
+ break;
+ }
+ }
+
+ return list;
+}
+
+void
+empathy_status_presets_set_last (McPresence state,
+ const gchar *status)
+{
+ GList *l;
+ StatusPreset *preset;
+ gint num;
+
+ /* Check if duplicate */
+ for (l = presets; l; l = l->next) {
+ preset = l->data;
+
+ if (state == preset->state &&
+ !tp_strdiff (status, preset->status)) {
+ return;
+ }
+ }
+
+ preset = status_preset_new (state, status);
+ presets = g_list_prepend (presets, preset);
+
+ num = 0;
+ for (l = presets; l; l = l->next) {
+ preset = l->data;
+
+ if (state != preset->state) {
+ continue;
+ }
+
+ num++;
+
+ if (num > STATUS_PRESETS_MAX_EACH) {
+ status_preset_free (preset);
+ presets = g_list_delete_link (presets, l);
+ break;
+ }
+ }
+
+ status_presets_file_save ();
+}
+
+void
+empathy_status_presets_remove (McPresence state,
+ const gchar *status)
+{
+ StatusPreset *preset;
+ GList *l;
+
+ for (l = presets; l; l = l->next) {
+ preset = l->data;
+
+ if (state == preset->state &&
+ !tp_strdiff (status, preset->status)) {
+ status_preset_free (preset);
+ presets = g_list_delete_link (presets, l);
+ status_presets_file_save ();
+ break;
+ }
+ }
+}
+
+void
+empathy_status_presets_reset (void)
+{
+ g_list_foreach (presets, (GFunc) status_preset_free, NULL);
+ g_list_free (presets);
+
+ presets = NULL;
+
+ status_presets_set_default (MC_PRESENCE_AVAILABLE, NULL);
+
+ status_presets_file_save ();
+}
+
+McPresence
+empathy_status_presets_get_default_state (void)
+{
+ if (!default_preset) {
+ return MC_PRESENCE_OFFLINE;
+ }
+
+ return default_preset->state;
+}
+
+const gchar *
+empathy_status_presets_get_default_status (void)
+{
+ if (!default_preset ||
+ !default_preset->status) {
+ return NULL;
+ }
+
+ return default_preset->status;
+}
+
+static void
+status_presets_set_default (McPresence state,
+ const gchar *status)
+{
+ if (default_preset) {
+ status_preset_free (default_preset);
+ }
+
+ default_preset = status_preset_new (state, status);
+}
+
+void
+empathy_status_presets_set_default (McPresence state,
+ const gchar *status)
+{
+ status_presets_set_default (state, status);
+ status_presets_file_save ();
+}
+
+void
+empathy_status_presets_clear_default (void)
+{
+ if (default_preset) {
+ status_preset_free (default_preset);
+ default_preset = NULL;
+ }
+
+ status_presets_file_save ();
+}
diff --git a/gnome-2-22/libempathy/empathy-status-presets.dtd b/gnome-2-22/libempathy/empathy-status-presets.dtd
new file mode 100644
index 000000000..872be6b4e
--- /dev/null
+++ b/gnome-2-22/libempathy/empathy-status-presets.dtd
@@ -0,0 +1,14 @@
+<!--
+ DTD for Empathys status presets.
+ by Martyn Russell <martyn@imendio.com>
+-->
+
+<!-- Root element. -->
+<!ELEMENT presets ((default?),status*)>
+
+<!ELEMENT default (#PCDATA)>
+<!ATTLIST default presence CDATA #REQUIRED>
+
+<!ELEMENT status (#PCDATA)>
+<!ATTLIST status presence CDATA #REQUIRED>
+
diff --git a/gnome-2-22/libempathy/empathy-status-presets.h b/gnome-2-22/libempathy/empathy-status-presets.h
new file mode 100644
index 000000000..06b6c7912
--- /dev/null
+++ b/gnome-2-22/libempathy/empathy-status-presets.h
@@ -0,0 +1,46 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2005-2007 Imendio AB
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * 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: Martyn Russell <martyn@imendio.com>
+ */
+
+#ifndef __EMPATHY_STATUS_PRESETS_H__
+#define __EMPATHY_STATUS_PRESETS_H__
+
+#include <libmissioncontrol/mission-control.h>
+
+G_BEGIN_DECLS
+
+void empathy_status_presets_get_all (void);
+GList * empathy_status_presets_get (McPresence state,
+ gint max_number);
+void empathy_status_presets_set_last (McPresence state,
+ const gchar *status);
+void empathy_status_presets_remove (McPresence state,
+ const gchar *status);
+void empathy_status_presets_reset (void);
+McPresence empathy_status_presets_get_default_state (void);
+const gchar * empathy_status_presets_get_default_status (void);
+void empathy_status_presets_set_default (McPresence state,
+ const gchar *status);
+void empathy_status_presets_clear_default (void);
+
+G_END_DECLS
+
+#endif /* __EMPATHY_STATUS_PRESETS_H__ */
diff --git a/gnome-2-22/libempathy/empathy-time.c b/gnome-2-22/libempathy/empathy-time.c
new file mode 100644
index 000000000..9eec8adc0
--- /dev/null
+++ b/gnome-2-22/libempathy/empathy-time.c
@@ -0,0 +1,124 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2003-2007 Imendio AB
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * 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: Richard Hult <richard@imendio.com>
+ */
+
+#include "config.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "empathy-time.h"
+
+/* Note: EmpathyTime is always in UTC. */
+
+time_t
+empathy_time_get_current (void)
+{
+ return time (NULL);
+}
+
+time_t
+empathy_time_get_local_time (struct tm *tm)
+{
+ const gchar *timezone;
+ time_t t;
+
+ timezone = g_getenv ("TZ");
+ g_setenv ("TZ", "", TRUE);
+
+ tzset ();
+
+ t = mktime (tm);
+
+ if (timezone) {
+ g_setenv ("TZ", timezone, TRUE);
+ } else {
+ g_unsetenv ("TZ");
+ }
+
+ tzset ();
+
+ return t;
+}
+
+/* The format is: "20021209T23:51:30" and is in UTC. 0 is returned on
+ * failure. The alternative format "20021209" is also accepted.
+ */
+time_t
+empathy_time_parse (const gchar *str)
+{
+ struct tm tm;
+ gint year, month;
+ gint n_parsed;
+
+ memset (&tm, 0, sizeof (struct tm));
+
+ n_parsed = sscanf (str, "%4d%2d%2dT%2d:%2d:%2d",
+ &year, &month, &tm.tm_mday, &tm.tm_hour,
+ &tm.tm_min, &tm.tm_sec);
+ if (n_parsed != 3 && n_parsed != 6) {
+ return 0;
+ }
+
+ tm.tm_year = year - 1900;
+ tm.tm_mon = month - 1;
+ tm.tm_isdst = -1;
+
+ return empathy_time_get_local_time (&tm);
+}
+
+/* Converts the UTC timestamp to a string, also in UTC. Returns NULL on failure. */
+gchar *
+empathy_time_to_string_utc (time_t t,
+ const gchar *format)
+{
+ gchar stamp[128];
+ struct tm *tm;
+
+ g_return_val_if_fail (format != NULL, NULL);
+
+ tm = gmtime (&t);
+ if (strftime (stamp, sizeof (stamp), format, tm) == 0) {
+ return NULL;
+ }
+
+ return g_strdup (stamp);
+}
+
+/* Converts the UTC timestamp to a string, in local time. Returns NULL on failure. */
+gchar *
+empathy_time_to_string_local (time_t t,
+ const gchar *format)
+{
+ gchar stamp[128];
+ struct tm *tm;
+
+ g_return_val_if_fail (format != NULL, NULL);
+
+ tm = localtime (&t);
+ if (strftime (stamp, sizeof (stamp), format, tm) == 0) {
+ return NULL;
+ }
+
+ return g_strdup (stamp);
+}
+
diff --git a/gnome-2-22/libempathy/empathy-time.h b/gnome-2-22/libempathy/empathy-time.h
new file mode 100644
index 000000000..ce520cdf9
--- /dev/null
+++ b/gnome-2-22/libempathy/empathy-time.h
@@ -0,0 +1,47 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2004 Imendio AB
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * 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 __EMPATHY_TIME_H__
+#define __EMPATHY_TIME_H__
+
+#ifndef __USE_XOPEN
+#define __USE_XOPEN
+#endif
+#include <time.h>
+
+#include <glib.h>
+
+G_BEGIN_DECLS
+
+#define EMPATHY_TIME_FORMAT_DISPLAY_SHORT "%H:%M"
+#define EMPATHY_TIME_FORMAT_DISPLAY_LONG "%a %d %b %Y"
+
+time_t empathy_time_get_current (void);
+time_t empathy_time_get_local_time (struct tm *tm);
+time_t empathy_time_parse (const gchar *str);
+gchar *empathy_time_to_string_utc (time_t t,
+ const gchar *format);
+gchar *empathy_time_to_string_local (time_t t,
+ const gchar *format);
+
+G_END_DECLS
+
+#endif /* __EMPATHY_TIME_H__ */
+
diff --git a/gnome-2-22/libempathy/empathy-tp-call.c b/gnome-2-22/libempathy/empathy-tp-call.c
new file mode 100644
index 000000000..95e57460e
--- /dev/null
+++ b/gnome-2-22/libempathy/empathy-tp-call.c
@@ -0,0 +1,1018 @@
+/*
+ * Copyright (C) 2007 Elliot Fairweather
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Authors: Elliot Fairweather <elliot.fairweather@collabora.co.uk>
+ */
+
+#include <string.h>
+#include <dbus/dbus-glib.h>
+
+#include <libtelepathy/tp-chan-type-streamed-media-gen.h>
+#include <libtelepathy/tp-connmgr.h>
+#include <libtelepathy/tp-helpers.h>
+#include <telepathy-glib/proxy-subclass.h>
+#include <telepathy-glib/dbus.h>
+
+#include <libmissioncontrol/mc-account.h>
+
+#include <extensions/extensions.h>
+#include <libempathy/empathy-contact-factory.h>
+#include <libempathy/empathy-debug.h>
+#include <libempathy/empathy-tp-group.h>
+#include <libempathy/empathy-utils.h>
+
+#include "empathy-tp-call.h"
+
+#define DEBUG_DOMAIN "TpCall"
+
+#define GET_PRIV(object) (G_TYPE_INSTANCE_GET_PRIVATE \
+ ((object), EMPATHY_TYPE_TP_CALL, EmpathyTpCallPriv))
+
+#define STREAM_ENGINE_BUS_NAME "org.freedesktop.Telepathy.StreamEngine"
+#define STREAM_ENGINE_OBJECT_PATH "/org/freedesktop/Telepathy/StreamEngine"
+
+typedef struct _EmpathyTpCallPriv EmpathyTpCallPriv;
+
+struct _EmpathyTpCallPriv
+{
+ TpConn *connection;
+ TpChan *channel;
+ TpProxy *stream_engine;
+ TpDBusDaemon *dbus_daemon;
+ EmpathyTpGroup *group;
+ EmpathyContact *contact;
+ gboolean is_incoming;
+ guint status;
+ gboolean stream_engine_started;
+
+ EmpathyTpCallStream *audio;
+ EmpathyTpCallStream *video;
+};
+
+enum
+{
+ STATUS_CHANGED_SIGNAL,
+ RECEIVING_VIDEO_SIGNAL,
+ SENDING_VIDEO_SIGNAL,
+ LAST_SIGNAL
+};
+
+enum
+{
+ PROP_0,
+ PROP_CONNECTION,
+ PROP_CHANNEL,
+ PROP_CONTACT,
+ PROP_IS_INCOMING,
+ PROP_STATUS,
+ PROP_AUDIO_STREAM,
+ PROP_VIDEO_STREAM
+};
+
+static guint signals[LAST_SIGNAL];
+
+G_DEFINE_TYPE (EmpathyTpCall, empathy_tp_call, G_TYPE_OBJECT)
+
+static void
+tp_call_stream_state_changed_cb (DBusGProxy *channel,
+ guint stream_id,
+ guint stream_state,
+ EmpathyTpCall *call)
+{
+ EmpathyTpCallPriv *priv = GET_PRIV (call);
+
+ empathy_debug (DEBUG_DOMAIN,
+ "Stream state changed - stream id: %d, state state: %d",
+ stream_id, stream_state);
+
+ if (stream_id == priv->audio->id)
+ {
+ priv->audio->state = stream_state;
+ }
+ else if (stream_id == priv->video->id)
+ {
+ priv->video->state = stream_state;
+ if (stream_state == TP_MEDIA_STREAM_STATE_CONNECTED)
+ {
+ if (priv->video->direction & TP_MEDIA_STREAM_DIRECTION_RECEIVE)
+ {
+ empathy_debug (DEBUG_DOMAIN, "RECEIVING");
+ g_signal_emit (call, signals[RECEIVING_VIDEO_SIGNAL], 0, TRUE);
+ }
+ if (priv->video->direction & TP_MEDIA_STREAM_DIRECTION_SEND)
+ {
+ empathy_debug (DEBUG_DOMAIN, "SENDING");
+ g_signal_emit (call, signals[SENDING_VIDEO_SIGNAL], 0, TRUE);
+ }
+ }
+ }
+
+ g_signal_emit (call, signals[STATUS_CHANGED_SIGNAL], 0);
+}
+
+static void
+tp_call_identify_streams (EmpathyTpCall *call)
+{
+ EmpathyTpCallPriv *priv = GET_PRIV (call);
+ GPtrArray *stream_infos;
+ DBusGProxy *streamed_iface;
+ GError *error = NULL;
+ guint i;
+
+ empathy_debug (DEBUG_DOMAIN, "Identifying audio/video streams");
+
+ streamed_iface = tp_chan_get_interface (priv->channel,
+ TELEPATHY_CHAN_IFACE_STREAMED_QUARK);
+
+ if (!tp_chan_type_streamed_media_list_streams (streamed_iface, &stream_infos,
+ &error))
+ {
+ empathy_debug (DEBUG_DOMAIN, "Couldn't list audio/video streams: %s",
+ error->message);
+ g_clear_error (&error);
+ return;
+ }
+
+ for (i = 0; i < stream_infos->len; i++)
+ {
+ GValueArray *values;
+ guint stream_id;
+ guint stream_handle;
+ guint stream_type;
+ guint stream_state;
+ guint stream_direction;
+
+ values = g_ptr_array_index (stream_infos, i);
+ stream_id = g_value_get_uint (g_value_array_get_nth (values, 0));
+ stream_handle = g_value_get_uint (g_value_array_get_nth (values, 1));
+ stream_type = g_value_get_uint (g_value_array_get_nth (values, 2));
+ stream_state = g_value_get_uint (g_value_array_get_nth (values, 3));
+ stream_direction = g_value_get_uint (g_value_array_get_nth (values, 4));
+
+ switch (stream_type)
+ {
+ case TP_MEDIA_STREAM_TYPE_AUDIO:
+ empathy_debug (DEBUG_DOMAIN,
+ "Audio stream - id: %d, state: %d, direction: %d",
+ stream_id, stream_state, stream_direction);
+ priv->audio->exists = TRUE;
+ priv->audio->id = stream_id;
+ priv->audio->state = stream_state;
+ priv->audio->direction = stream_direction;
+ break;
+ case TP_MEDIA_STREAM_TYPE_VIDEO:
+ empathy_debug (DEBUG_DOMAIN,
+ "Video stream - id: %d, state: %d, direction: %d",
+ stream_id, stream_state, stream_direction);
+ priv->video->exists = TRUE;
+ priv->video->id = stream_id;
+ priv->video->state = stream_state;
+ priv->video->direction = stream_direction;
+ break;
+ default:
+ empathy_debug (DEBUG_DOMAIN, "Unknown stream type: %d",
+ stream_type);
+ }
+
+ g_value_array_free (values);
+ }
+}
+
+static void
+tp_call_stream_added_cb (DBusGProxy *channel,
+ guint stream_id,
+ guint contact_handle,
+ guint stream_type,
+ EmpathyTpCall *call)
+{
+ empathy_debug (DEBUG_DOMAIN,
+ "Stream added - stream id: %d, contact handle: %d, stream type: %d",
+ stream_id, contact_handle, stream_type);
+
+ tp_call_identify_streams (call);
+}
+
+
+static void
+tp_call_stream_removed_cb (DBusGProxy *channel,
+ guint stream_id,
+ EmpathyTpCall *call)
+{
+ EmpathyTpCallPriv *priv = GET_PRIV (call);
+
+ empathy_debug (DEBUG_DOMAIN, "Stream removed - stream id: %d", stream_id);
+
+ if (stream_id == priv->audio->id)
+ {
+ priv->audio->exists = FALSE;
+ }
+ else if (stream_id == priv->video->id)
+ {
+ priv->video->exists = FALSE;
+ }
+}
+
+static void
+tp_call_invalidated_cb (TpProxy *stream_engine,
+ GQuark domain,
+ gint code,
+ gchar *message,
+ EmpathyTpCall *call)
+{
+ empathy_debug (DEBUG_DOMAIN, "Stream engine proxy invalidated: %s",
+ message);
+ empathy_tp_call_close_channel (call);
+}
+
+static void
+tp_call_channel_closed_cb (TpChan *channel,
+ EmpathyTpCall *call)
+{
+ EmpathyTpCallPriv *priv = GET_PRIV (call);
+ DBusGProxy *streamed_iface;
+ DBusGProxy *group_iface;
+
+ empathy_debug (DEBUG_DOMAIN, "Channel closed");
+
+ priv->status = EMPATHY_TP_CALL_STATUS_CLOSED;
+ g_signal_emit (call, signals[STATUS_CHANGED_SIGNAL], 0);
+
+ streamed_iface = tp_chan_get_interface (priv->channel,
+ TELEPATHY_CHAN_IFACE_STREAMED_QUARK);
+ group_iface = tp_chan_get_interface (priv->channel,
+ TELEPATHY_CHAN_IFACE_GROUP_QUARK);
+
+ dbus_g_proxy_disconnect_signal (DBUS_G_PROXY (priv->channel), "Closed",
+ G_CALLBACK (tp_call_channel_closed_cb), call);
+ dbus_g_proxy_disconnect_signal (streamed_iface, "StreamStateChanged",
+ G_CALLBACK (tp_call_stream_state_changed_cb), call);
+ dbus_g_proxy_disconnect_signal (streamed_iface, "StreamAdded",
+ G_CALLBACK (tp_call_stream_added_cb), call);
+ dbus_g_proxy_disconnect_signal (streamed_iface, "StreamRemoved",
+ G_CALLBACK (tp_call_stream_removed_cb), call);
+
+ if (priv->stream_engine)
+ {
+ g_signal_handlers_disconnect_by_func (priv->stream_engine,
+ tp_call_invalidated_cb, call);
+ g_object_unref (priv->stream_engine);
+ priv->stream_engine = NULL;
+ }
+}
+
+static void
+tp_call_stream_direction_changed_cb (DBusGProxy *channel,
+ guint stream_id,
+ guint stream_direction,
+ guint flags,
+ EmpathyTpCall *call)
+{
+ EmpathyTpCallPriv *priv = GET_PRIV (call);
+
+ empathy_debug (DEBUG_DOMAIN,
+ "Stream direction changed - stream: %d, direction: %d",
+ stream_id, stream_direction);
+
+ if (stream_id == priv->audio->id)
+ {
+ priv->audio->direction = stream_direction;
+ }
+ else if (stream_id == priv->video->id)
+ {
+ priv->video->direction = stream_direction;
+
+ if (stream_direction & TP_MEDIA_STREAM_DIRECTION_RECEIVE)
+ {
+ empathy_debug (DEBUG_DOMAIN, "RECEIVING");
+ g_signal_emit (call, signals[RECEIVING_VIDEO_SIGNAL], 0, TRUE);
+ }
+ else
+ {
+ empathy_debug (DEBUG_DOMAIN, "NOT RECEIVING");
+ g_signal_emit (call, signals[RECEIVING_VIDEO_SIGNAL], 0, FALSE);
+ }
+
+ if (stream_direction & TP_MEDIA_STREAM_DIRECTION_SEND)
+ {
+ empathy_debug (DEBUG_DOMAIN, "SENDING");
+ g_signal_emit (call, signals[SENDING_VIDEO_SIGNAL], 0, TRUE);
+ }
+ else
+ {
+ empathy_debug (DEBUG_DOMAIN, "NOT SENDING");
+ g_signal_emit (call, signals[SENDING_VIDEO_SIGNAL], 0, FALSE);
+ }
+ }
+}
+
+static void
+tp_call_request_streams_for_capabilities (EmpathyTpCall *call,
+ EmpathyCapabilities capabilities)
+{
+ EmpathyTpCallPriv *priv = GET_PRIV (call);
+ DBusGProxy *streamed_iface;
+ GArray *stream_types;
+ guint handle;
+ guint stream_type;
+ GError *error = NULL;
+
+ empathy_debug (DEBUG_DOMAIN, "Requesting new stream for capabilities %d",
+ capabilities);
+
+ streamed_iface = tp_chan_get_interface (priv->channel,
+ TELEPATHY_CHAN_IFACE_STREAMED_QUARK);
+ stream_types = g_array_new (FALSE, FALSE, sizeof (guint));
+ handle = empathy_contact_get_handle (priv->contact);
+
+ if (capabilities & EMPATHY_CAPABILITIES_AUDIO)
+ {
+ stream_type = TP_MEDIA_STREAM_TYPE_AUDIO;
+ g_array_append_val (stream_types, stream_type);
+ }
+ if (capabilities & EMPATHY_CAPABILITIES_VIDEO)
+ {
+ stream_type = TP_MEDIA_STREAM_TYPE_VIDEO;
+ g_array_append_val (stream_types, stream_type);
+ }
+
+ if (!tp_chan_type_streamed_media_request_streams (streamed_iface, handle,
+ stream_types, NULL, &error))
+ {
+ empathy_debug (DEBUG_DOMAIN, "Couldn't request new stream: %s",
+ error->message);
+ g_clear_error (&error);
+ }
+
+ g_array_free (stream_types, TRUE);
+}
+
+static void
+tp_call_request_streams_capabilities_cb (EmpathyContact *contact,
+ GParamSpec *property,
+ gpointer user_data)
+{
+ EmpathyTpCall *call = EMPATHY_TP_CALL (user_data);
+
+ g_signal_handlers_disconnect_by_func (contact,
+ tp_call_request_streams_capabilities_cb,
+ user_data);
+
+ tp_call_request_streams_for_capabilities (call,
+ empathy_contact_get_capabilities (contact));
+}
+
+static void
+tp_call_request_streams (EmpathyTpCall *call)
+{
+ EmpathyTpCallPriv *priv = GET_PRIV (call);
+ EmpathyCapabilities capabilities;
+ DBusGProxy *capabilities_iface;
+
+ empathy_debug (DEBUG_DOMAIN,
+ "Requesting appropriate audio/video streams from contact");
+
+
+ /* FIXME: SIP don't have capabilities interface but we know it supports
+ * only audio and not video. */
+ capabilities_iface = tp_conn_get_interface (priv->connection,
+ TP_IFACE_QUARK_CONNECTION_INTERFACE_CAPABILITIES);
+ if (!capabilities_iface)
+ {
+ capabilities = EMPATHY_CAPABILITIES_AUDIO;
+ }
+ else
+ {
+ capabilities = empathy_contact_get_capabilities (priv->contact);
+ if (capabilities == EMPATHY_CAPABILITIES_UNKNOWN)
+ {
+ g_signal_connect (priv->contact, "notify::capabilities",
+ G_CALLBACK (tp_call_request_streams_capabilities_cb), call);
+ return;
+ }
+ }
+
+ tp_call_request_streams_for_capabilities (call, capabilities);
+}
+
+static void
+tp_call_is_ready (EmpathyTpCall *call)
+{
+ EmpathyTpCallPriv *priv = GET_PRIV (call);
+ EmpathyContact *self_contact;
+ GList *members;
+ GList *local_pendings;
+ GList *remote_pendings;
+
+ if (priv->status > EMPATHY_TP_CALL_STATUS_READYING)
+ return;
+
+ members = empathy_tp_group_get_members (priv->group);
+ if (!members)
+ return;
+
+ self_contact = empathy_tp_group_get_self_contact (priv->group);
+ local_pendings = empathy_tp_group_get_local_pendings (priv->group);
+ remote_pendings = empathy_tp_group_get_remote_pendings (priv->group);
+
+ if (local_pendings &&
+ empathy_contact_equal (EMPATHY_CONTACT (((EmpathyPendingInfo *)
+ local_pendings->data)->member), self_contact))
+ {
+ empathy_debug (DEBUG_DOMAIN,
+ "Incoming call is ready - %p",
+ ((EmpathyPendingInfo *) local_pendings->data)->member);
+ priv->is_incoming = TRUE;
+ priv->contact = g_object_ref (members->data);
+ }
+ else if (remote_pendings &&
+ empathy_contact_equal (EMPATHY_CONTACT (members->data), self_contact))
+ {
+ empathy_debug (DEBUG_DOMAIN,
+ "Outgoing call is ready - %p", remote_pendings->data);
+ priv->is_incoming = FALSE;
+ priv->contact = g_object_ref (remote_pendings->data);
+ tp_call_request_streams (call);
+ }
+
+ g_object_unref (self_contact);
+ g_list_foreach (members, (GFunc) g_object_unref, NULL);
+ g_list_free (members);
+ g_list_foreach (local_pendings, (GFunc) empathy_pending_info_free, NULL);
+ g_list_free (local_pendings);
+ g_list_foreach (remote_pendings, (GFunc) g_object_unref, NULL);
+ g_list_free (remote_pendings);
+
+ if (priv->contact)
+ {
+ priv->status = EMPATHY_TP_CALL_STATUS_PENDING;
+ g_signal_emit (call, signals[STATUS_CHANGED_SIGNAL], 0);
+ }
+}
+
+static void
+tp_call_member_added_cb (EmpathyTpGroup *group,
+ EmpathyContact *contact,
+ EmpathyContact *actor,
+ guint reason,
+ const gchar *message,
+ EmpathyTpCall *call)
+{
+ EmpathyTpCallPriv *priv = GET_PRIV (call);
+
+ empathy_debug (DEBUG_DOMAIN, "New member added callback %p", contact);
+ tp_call_is_ready (call);
+
+ if (priv->status == EMPATHY_TP_CALL_STATUS_PENDING)
+ {
+ if ((priv->is_incoming &&
+ !empathy_contact_equal (contact, priv->contact))
+ || (!priv->is_incoming &&
+ empathy_contact_equal (contact, priv->contact)))
+ {
+ priv->status = EMPATHY_TP_CALL_STATUS_ACCEPTED;
+ g_signal_emit (call, signals[STATUS_CHANGED_SIGNAL], 0);
+ }
+ }
+}
+
+static void
+tp_call_local_pending_cb (EmpathyTpGroup *group,
+ EmpathyContact *contact,
+ EmpathyContact *actor,
+ guint reason,
+ const gchar *message,
+ EmpathyTpCall *call)
+{
+ empathy_debug (DEBUG_DOMAIN, "New local pending added callback %p", contact);
+ tp_call_is_ready (call);
+}
+
+static void
+tp_call_remote_pending_cb (EmpathyTpGroup *group,
+ EmpathyContact *contact,
+ EmpathyContact *actor,
+ guint reason,
+ const gchar *message,
+ EmpathyTpCall *call)
+{
+ empathy_debug (DEBUG_DOMAIN, "New remote pending added callback %p", contact);
+ tp_call_is_ready (call);
+}
+
+static void
+tp_call_async_cb (TpProxy *proxy,
+ const GError *error,
+ gpointer user_data,
+ GObject *call)
+{
+ if (error)
+ {
+ empathy_debug (DEBUG_DOMAIN, "Error %s: %s",
+ user_data, error->message);
+ }
+}
+
+static void
+tp_call_watch_name_owner_cb (TpDBusDaemon *daemon,
+ const gchar *name,
+ const gchar *new_owner,
+ gpointer call)
+{
+ EmpathyTpCallPriv *priv = GET_PRIV (call);
+
+ /* G_STR_EMPTY(new_owner) means either stream-engine has not started yet or
+ * has crashed. We want to close the channel if stream-engine has crashed.
+ * */
+ empathy_debug (DEBUG_DOMAIN,
+ "Watch SE: name='%s' SE started='%s' new_owner='%s'",
+ name, priv->stream_engine_started ? "yes" : "no",
+ new_owner ? new_owner : "none");
+ if (priv->stream_engine_started && G_STR_EMPTY (new_owner))
+ {
+ empathy_debug (DEBUG_DOMAIN, "Stream engine falled off the bus");
+ empathy_tp_call_close_channel (call);
+ }
+ priv->stream_engine_started = !G_STR_EMPTY (new_owner);
+}
+
+static void
+tp_call_start_stream_engine (EmpathyTpCall *call)
+{
+ EmpathyTpCallPriv *priv = GET_PRIV (call);
+
+ empathy_debug (DEBUG_DOMAIN, "Revving up the stream engine");
+
+ priv->stream_engine = g_object_new (TP_TYPE_PROXY,
+ "bus-name", STREAM_ENGINE_BUS_NAME,
+ "dbus-connection", tp_get_bus (),
+ "object-path", STREAM_ENGINE_OBJECT_PATH,
+ NULL);
+ tp_proxy_add_interface_by_id (priv->stream_engine,
+ EMP_IFACE_QUARK_STREAM_ENGINE);
+ tp_proxy_add_interface_by_id (priv->stream_engine,
+ EMP_IFACE_QUARK_CHANNEL_HANDLER);
+
+ g_signal_connect (priv->stream_engine, "invalidated",
+ G_CALLBACK (tp_call_invalidated_cb),
+ call);
+
+ /* FIXME: dbus daemon should be unique */
+ priv->dbus_daemon = tp_dbus_daemon_new (tp_get_bus ());
+ tp_dbus_daemon_watch_name_owner (priv->dbus_daemon, STREAM_ENGINE_BUS_NAME,
+ tp_call_watch_name_owner_cb,
+ call, NULL);
+
+ emp_cli_channel_handler_call_handle_channel (priv->stream_engine, -1,
+ dbus_g_proxy_get_bus_name (DBUS_G_PROXY (priv->connection)),
+ dbus_g_proxy_get_path (DBUS_G_PROXY (priv->connection)),
+ priv->channel->type,
+ dbus_g_proxy_get_path (DBUS_G_PROXY (priv->channel)),
+ priv->channel->handle_type, priv->channel->handle,
+ tp_call_async_cb,
+ "calling handle channel", NULL,
+ G_OBJECT (call));
+}
+
+static GObject *
+tp_call_constructor (GType type,
+ guint n_construct_params,
+ GObjectConstructParam *construct_params)
+{
+ GObject *object;
+ EmpathyTpCall *call;
+ EmpathyTpCallPriv *priv;
+ DBusGProxy *streamed_iface;
+ MissionControl *mc;
+ McAccount *account;
+
+ object = G_OBJECT_CLASS (empathy_tp_call_parent_class)->constructor (type,
+ n_construct_params, construct_params);
+
+ call = EMPATHY_TP_CALL (object);
+ priv = GET_PRIV (call);
+
+ dbus_g_proxy_connect_signal (DBUS_G_PROXY (priv->channel), "Closed",
+ G_CALLBACK (tp_call_channel_closed_cb), call, NULL);
+
+ streamed_iface = tp_chan_get_interface (priv->channel,
+ TELEPATHY_CHAN_IFACE_STREAMED_QUARK);
+ dbus_g_proxy_connect_signal (streamed_iface, "StreamStateChanged",
+ G_CALLBACK (tp_call_stream_state_changed_cb),
+ call, NULL);
+ dbus_g_proxy_connect_signal (streamed_iface, "StreamDirectionChanged",
+ G_CALLBACK (tp_call_stream_direction_changed_cb),
+ call, NULL);
+ dbus_g_proxy_connect_signal (streamed_iface, "StreamAdded",
+ G_CALLBACK (tp_call_stream_added_cb), call, NULL);
+ dbus_g_proxy_connect_signal (streamed_iface, "StreamRemoved",
+ G_CALLBACK (tp_call_stream_removed_cb), call, NULL);
+
+ mc = empathy_mission_control_new ();
+ account = mission_control_get_account_for_connection (mc, priv->connection,
+ NULL);
+ priv->group = empathy_tp_group_new (account, priv->channel);
+ g_object_unref (mc);
+
+ g_signal_connect (G_OBJECT (priv->group), "member-added",
+ G_CALLBACK (tp_call_member_added_cb), call);
+ g_signal_connect (G_OBJECT (priv->group), "local-pending",
+ G_CALLBACK (tp_call_local_pending_cb), call);
+ g_signal_connect (G_OBJECT (priv->group), "remote-pending",
+ G_CALLBACK (tp_call_remote_pending_cb), call);
+
+ tp_call_start_stream_engine (call);
+ /* FIXME: unnecessary for outgoing? */
+ tp_call_identify_streams (call);
+
+ return object;
+}
+
+static void
+tp_call_finalize (GObject *object)
+{
+ EmpathyTpCallPriv *priv = GET_PRIV (object);
+
+ empathy_debug (DEBUG_DOMAIN, "Finalizing: %p", object);
+
+ g_slice_free (EmpathyTpCallStream, priv->audio);
+ g_slice_free (EmpathyTpCallStream, priv->video);
+ g_object_unref (priv->group);
+
+ if (priv->connection != NULL)
+ g_object_unref (priv->connection);
+
+ if (priv->channel != NULL)
+ g_object_unref (priv->channel);
+
+ if (priv->stream_engine != NULL)
+ g_object_unref (priv->stream_engine);
+
+ if (priv->contact != NULL)
+ g_object_unref (priv->contact);
+
+ if (priv->dbus_daemon != NULL)
+ {
+ tp_dbus_daemon_cancel_name_owner_watch (priv->dbus_daemon,
+ STREAM_ENGINE_BUS_NAME,
+ tp_call_watch_name_owner_cb,
+ object);
+ g_object_unref (priv->dbus_daemon);
+ }
+
+ (G_OBJECT_CLASS (empathy_tp_call_parent_class)->finalize) (object);
+}
+
+static void
+tp_call_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ EmpathyTpCallPriv *priv = GET_PRIV (object);
+
+ switch (prop_id)
+ {
+ case PROP_CONNECTION:
+ priv->connection = g_value_dup_object (value);
+ break;
+ case PROP_CHANNEL:
+ priv->channel = g_value_dup_object (value);
+ break;
+ case PROP_CONTACT:
+ /* FIXME should this one be writable in the first place ? */
+ g_assert (priv->contact == NULL);
+ priv->contact = g_value_dup_object (value);
+ break;
+ case PROP_IS_INCOMING:
+ priv->is_incoming = g_value_get_boolean (value);
+ break;
+ case PROP_STATUS:
+ priv->status = g_value_get_uint (value);
+ break;
+ case PROP_AUDIO_STREAM:
+ priv->audio = g_value_get_pointer (value);
+ break;
+ case PROP_VIDEO_STREAM:
+ priv->video = g_value_get_pointer (value);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+
+static void
+tp_call_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ EmpathyTpCallPriv *priv = GET_PRIV (object);
+
+ switch (prop_id)
+ {
+ case PROP_CONNECTION:
+ g_value_set_object (value, priv->connection);
+ break;
+ case PROP_CHANNEL:
+ g_value_set_object (value, priv->channel);
+ break;
+ case PROP_CONTACT:
+ g_value_set_object (value, priv->contact);
+ break;
+ case PROP_IS_INCOMING:
+ g_value_set_boolean (value, priv->is_incoming);
+ break;
+ case PROP_STATUS:
+ g_value_set_uint (value, priv->status);
+ break;
+ case PROP_AUDIO_STREAM:
+ g_value_set_pointer (value, priv->audio);
+ break;
+ case PROP_VIDEO_STREAM:
+ g_value_set_pointer (value, priv->video);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+static void
+empathy_tp_call_class_init (EmpathyTpCallClass *klass)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+ emp_cli_init ();
+
+ object_class->constructor = tp_call_constructor;
+ object_class->finalize = tp_call_finalize;
+ object_class->set_property = tp_call_set_property;
+ object_class->get_property = tp_call_get_property;
+
+ g_type_class_add_private (klass, sizeof (EmpathyTpCallPriv));
+
+ signals[STATUS_CHANGED_SIGNAL] =
+ g_signal_new ("status-changed", G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
+ signals[RECEIVING_VIDEO_SIGNAL] =
+ g_signal_new ("receiving-video", G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__BOOLEAN,
+ G_TYPE_NONE, 1, G_TYPE_BOOLEAN);
+ signals[SENDING_VIDEO_SIGNAL] =
+ g_signal_new ("sending-video", G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__BOOLEAN,
+ G_TYPE_NONE, 1, G_TYPE_BOOLEAN);
+
+ g_object_class_install_property (object_class, PROP_CONNECTION,
+ g_param_spec_object ("connection", "connection", "connection",
+ TELEPATHY_CONN_TYPE,
+ G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE |
+ G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB));
+ g_object_class_install_property (object_class, PROP_CHANNEL,
+ g_param_spec_object ("channel", "channel", "channel",
+ TELEPATHY_CHAN_TYPE,
+ G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE |
+ G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB));
+ g_object_class_install_property (object_class, PROP_CONTACT,
+ g_param_spec_object ("contact", "Call contact", "Call contact",
+ EMPATHY_TYPE_CONTACT,
+ G_PARAM_READABLE | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB));
+ g_object_class_install_property (object_class, PROP_IS_INCOMING,
+ g_param_spec_boolean ("is-incoming", "Is media stream incoming",
+ "Is media stream incoming", FALSE, G_PARAM_READABLE |
+ G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB));
+ g_object_class_install_property (object_class, PROP_STATUS,
+ g_param_spec_uint ("status", "Call status",
+ "Call status", 0, 255, 0, G_PARAM_READABLE | G_PARAM_STATIC_NICK |
+ G_PARAM_STATIC_BLURB));
+ g_object_class_install_property (object_class, PROP_AUDIO_STREAM,
+ g_param_spec_pointer ("audio-stream", "Audio stream data",
+ "Audio stream data",
+ G_PARAM_READABLE | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB));
+ g_object_class_install_property (object_class, PROP_VIDEO_STREAM,
+ g_param_spec_pointer ("video-stream", "Video stream data",
+ "Video stream data",
+ G_PARAM_READABLE | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB));
+}
+
+static void
+empathy_tp_call_init (EmpathyTpCall *call)
+{
+ EmpathyTpCallPriv *priv = GET_PRIV (call);
+
+ priv->status = EMPATHY_TP_CALL_STATUS_READYING;
+ priv->contact = NULL;
+ priv->stream_engine_started = FALSE;
+ priv->audio = g_slice_new0 (EmpathyTpCallStream);
+ priv->video = g_slice_new0 (EmpathyTpCallStream);
+ priv->audio->exists = FALSE;
+ priv->video->exists = FALSE;
+}
+
+EmpathyTpCall *
+empathy_tp_call_new (TpConn *connection, TpChan *channel)
+{
+ return g_object_new (EMPATHY_TYPE_TP_CALL,
+ "connection", connection,
+ "channel", channel,
+ NULL);
+}
+
+void
+empathy_tp_call_accept_incoming_call (EmpathyTpCall *call)
+{
+ EmpathyTpCallPriv *priv = GET_PRIV (call);
+ GList *local_pendings;
+
+ empathy_debug (DEBUG_DOMAIN, "Accepting incoming call");
+
+ local_pendings = empathy_tp_group_get_local_pendings (priv->group);
+
+ empathy_tp_group_add_member (priv->group, EMPATHY_CONTACT
+ (((EmpathyPendingInfo *) local_pendings->data)->member), NULL);
+
+ g_list_foreach (local_pendings, (GFunc) empathy_pending_info_free, NULL);
+ g_list_free (local_pendings);
+}
+
+void
+empathy_tp_call_request_video_stream_direction (EmpathyTpCall *call,
+ gboolean is_sending)
+{
+ EmpathyTpCallPriv *priv = GET_PRIV (call);
+ DBusGProxy *streamed_iface;
+ guint new_direction;
+ GError *error = NULL;
+
+ empathy_debug (DEBUG_DOMAIN,
+ "Requesting video stream direction - is_sending: %d", is_sending);
+
+ if (!priv->video->exists)
+ {
+ tp_call_request_streams_for_capabilities (call, EMPATHY_CAPABILITIES_VIDEO);
+ return;
+ }
+
+ streamed_iface = tp_chan_get_interface (priv->channel,
+ TELEPATHY_CHAN_IFACE_STREAMED_QUARK);
+
+ if (is_sending)
+ {
+ new_direction = priv->video->direction | TP_MEDIA_STREAM_DIRECTION_SEND;
+ }
+ else
+ {
+ new_direction = priv->video->direction & ~TP_MEDIA_STREAM_DIRECTION_SEND;
+ }
+
+ if (!tp_chan_type_streamed_media_request_stream_direction (streamed_iface,
+ priv->video->id, new_direction, &error))
+ {
+ empathy_debug (DEBUG_DOMAIN,
+ "Couldn't request video stream direction: %s", error->message);
+ g_clear_error (&error);
+ }
+}
+
+void
+empathy_tp_call_close_channel (EmpathyTpCall *call)
+{
+ EmpathyTpCallPriv *priv = GET_PRIV (call);
+ GError *error = NULL;
+
+ if (priv->status == EMPATHY_TP_CALL_STATUS_CLOSED)
+ return;
+
+ empathy_debug (DEBUG_DOMAIN, "Closing channel");
+
+ if (!tp_chan_close (DBUS_G_PROXY (priv->channel), &error))
+ {
+ empathy_debug (DEBUG_DOMAIN, "Error closing channel: %s",
+ error ? error->message : "No error given");
+ g_clear_error (&error);
+ }
+ else
+ priv->status = EMPATHY_TP_CALL_STATUS_CLOSED;
+}
+
+void
+empathy_tp_call_add_preview_video (EmpathyTpCall *call,
+ guint preview_video_socket_id)
+{
+ EmpathyTpCallPriv *priv = GET_PRIV (call);
+
+ empathy_debug (DEBUG_DOMAIN, "Adding preview video");
+
+ emp_cli_stream_engine_call_add_preview_window (priv->stream_engine, -1,
+ preview_video_socket_id,
+ tp_call_async_cb,
+ "adding preview window", NULL,
+ G_OBJECT (call));
+}
+
+void
+empathy_tp_call_remove_preview_video (EmpathyTpCall *call,
+ guint preview_video_socket_id)
+{
+ EmpathyTpCallPriv *priv = GET_PRIV (call);
+
+ empathy_debug (DEBUG_DOMAIN, "Removing preview video");
+
+ emp_cli_stream_engine_call_remove_preview_window (priv->stream_engine, -1,
+ preview_video_socket_id,
+ tp_call_async_cb,
+ "removing preview window", NULL,
+ G_OBJECT (call));
+}
+
+void
+empathy_tp_call_add_output_video (EmpathyTpCall *call,
+ guint output_video_socket_id)
+{
+ EmpathyTpCallPriv *priv = GET_PRIV (call);
+
+ empathy_debug (DEBUG_DOMAIN, "Adding output video - socket: %d",
+ output_video_socket_id);
+
+ emp_cli_stream_engine_call_set_output_window (priv->stream_engine, -1,
+ dbus_g_proxy_get_path (DBUS_G_PROXY (priv->channel)),
+ priv->video->id, output_video_socket_id,
+ tp_call_async_cb,
+ "setting output window", NULL,
+ G_OBJECT (call));
+}
+
+void
+empathy_tp_call_set_output_volume (EmpathyTpCall *call,
+ guint volume)
+{
+ EmpathyTpCallPriv *priv = GET_PRIV (call);
+
+ if (priv->status == EMPATHY_TP_CALL_STATUS_CLOSED)
+ return;
+
+ empathy_debug (DEBUG_DOMAIN, "Setting output volume: %d", volume);
+
+ emp_cli_stream_engine_call_set_output_volume (priv->stream_engine, -1,
+ dbus_g_proxy_get_path (DBUS_G_PROXY (priv->channel)),
+ priv->audio->id, volume,
+ tp_call_async_cb,
+ "setting output volume", NULL,
+ G_OBJECT (call));
+}
+
+void
+empathy_tp_call_mute_output (EmpathyTpCall *call,
+ gboolean is_muted)
+{
+ EmpathyTpCallPriv *priv = GET_PRIV (call);
+
+ if (priv->status == EMPATHY_TP_CALL_STATUS_CLOSED)
+ return;
+
+ empathy_debug (DEBUG_DOMAIN, "Setting output mute: %d", is_muted);
+
+ emp_cli_stream_engine_call_mute_output (priv->stream_engine, -1,
+ dbus_g_proxy_get_path (DBUS_G_PROXY (priv->channel)),
+ priv->audio->id, is_muted,
+ tp_call_async_cb,
+ "muting output", NULL,
+ G_OBJECT (call));
+}
+
+void
+empathy_tp_call_mute_input (EmpathyTpCall *call,
+ gboolean is_muted)
+{
+ EmpathyTpCallPriv *priv = GET_PRIV (call);
+
+ if (priv->status == EMPATHY_TP_CALL_STATUS_CLOSED)
+ return;
+
+ empathy_debug (DEBUG_DOMAIN, "Setting input mute: %d", is_muted);
+
+ emp_cli_stream_engine_call_mute_input (priv->stream_engine, -1,
+ dbus_g_proxy_get_path (DBUS_G_PROXY (priv->channel)),
+ priv->audio->id, is_muted,
+ tp_call_async_cb,
+ "muting input", NULL,
+ G_OBJECT (call));
+}
+
diff --git a/gnome-2-22/libempathy/empathy-tp-call.h b/gnome-2-22/libempathy/empathy-tp-call.h
new file mode 100644
index 000000000..b0c320826
--- /dev/null
+++ b/gnome-2-22/libempathy/empathy-tp-call.h
@@ -0,0 +1,93 @@
+/*
+ * Copyright (C) 2007 Elliot Fairweather
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Authors: Elliot Fairweather <elliot.fairweather@collabora.co.uk>
+ */
+
+#ifndef __EMPATHY_TP_CALL_H__
+#define __EMPATHY_TP_CALL_H__
+
+#include <libtelepathy/tp-chan.h>
+#include <libtelepathy/tp-conn.h>
+
+#include <libmissioncontrol/mission-control.h>
+
+#include <libempathy/empathy-chandler.h>
+#include <libempathy/empathy-contact.h>
+#include <libempathy/empathy-tp-group.h>
+
+G_BEGIN_DECLS
+
+#define EMPATHY_TYPE_TP_CALL (empathy_tp_call_get_type ())
+#define EMPATHY_TP_CALL(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), \
+ EMPATHY_TYPE_TP_CALL, EmpathyTpCall))
+#define EMPATHY_TP_CALL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), \
+ EMPATHY_TYPE_TP_CALL, EmpathyTpCallClass))
+#define EMPATHY_IS_TP_CALL(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), \
+ EMPATHY_TYPE_TP_CALL))
+#define EMPATHY_IS_TP_CALL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), \
+ EMPATHY_TYPE_TP_CALL))
+#define EMPATHY_TP_CALL_GET_CLASS(object) (G_TYPE_INSTANCE_GET_CLASS ((object), \
+ EMPATHY_TYPE_TP_CALL, EmpathyTpCallClass))
+
+typedef struct _EmpathyTpCall EmpathyTpCall;
+typedef struct _EmpathyTpCallClass EmpathyTpCallClass;
+
+struct _EmpathyTpCall {
+ GObject parent;
+};
+
+struct _EmpathyTpCallClass {
+ GObjectClass parent_class;
+};
+
+typedef enum
+{
+ EMPATHY_TP_CALL_STATUS_READYING,
+ EMPATHY_TP_CALL_STATUS_PENDING,
+ EMPATHY_TP_CALL_STATUS_ACCEPTED,
+ EMPATHY_TP_CALL_STATUS_CLOSED
+} EmpathyTpCallStatus;
+
+typedef struct
+{
+ gboolean exists;
+ guint id;
+ guint state;
+ guint direction;
+} EmpathyTpCallStream;
+
+GType empathy_tp_call_get_type (void) G_GNUC_CONST;
+EmpathyTpCall *empathy_tp_call_new (TpConn *connection, TpChan *channel);
+
+void empathy_tp_call_accept_incoming_call (EmpathyTpCall *call);
+void empathy_tp_call_close_channel (EmpathyTpCall *call);
+void empathy_tp_call_request_video_stream_direction (EmpathyTpCall *call,
+ gboolean is_sending);
+void empathy_tp_call_add_preview_video (EmpathyTpCall *call,
+ guint preview_video_socket_id);
+void empathy_tp_call_remove_preview_video (EmpathyTpCall *call,
+ guint preview_video_socket_id);
+void empathy_tp_call_add_output_video (EmpathyTpCall *call,
+ guint output_video_socket_id);
+void empathy_tp_call_set_output_volume (EmpathyTpCall *call, guint volume);
+void empathy_tp_call_mute_output (EmpathyTpCall *call, gboolean is_muted);
+void empathy_tp_call_mute_input (EmpathyTpCall *call, gboolean is_muted);
+
+G_END_DECLS
+
+#endif /* __EMPATHY_TP_CALL_H__ */
diff --git a/gnome-2-22/libempathy/empathy-tp-chat.c b/gnome-2-22/libempathy/empathy-tp-chat.c
new file mode 100644
index 000000000..64dec3057
--- /dev/null
+++ b/gnome-2-22/libempathy/empathy-tp-chat.c
@@ -0,0 +1,983 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2007-2008 Collabora Ltd.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Authors: Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#include <config.h>
+
+#include <string.h>
+
+#include <libtelepathy/tp-chan-type-text-gen.h>
+#include <libtelepathy/tp-chan-iface-chat-state-gen.h>
+#include <libtelepathy/tp-conn.h>
+#include <libtelepathy/tp-helpers.h>
+#include <libtelepathy/tp-props-iface.h>
+#include <telepathy-glib/util.h>
+
+#include "empathy-tp-chat.h"
+#include "empathy-contact-factory.h"
+#include "empathy-marshal.h"
+#include "empathy-debug.h"
+#include "empathy-time.h"
+#include "empathy-utils.h"
+
+#define GET_PRIV(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), \
+ EMPATHY_TYPE_TP_CHAT, EmpathyTpChatPriv))
+
+#define DEBUG_DOMAIN "TpChat"
+
+struct _EmpathyTpChatPriv {
+ EmpathyContactFactory *factory;
+ EmpathyContact *user;
+ McAccount *account;
+ gchar *id;
+ MissionControl *mc;
+ gboolean acknowledge;
+ gboolean had_pending_messages;
+ TpChan *tp_chan;
+ DBusGProxy *props_iface;
+ DBusGProxy *text_iface;
+ DBusGProxy *chat_state_iface;
+};
+
+static void empathy_tp_chat_class_init (EmpathyTpChatClass *klass);
+static void empathy_tp_chat_init (EmpathyTpChat *chat);
+
+enum {
+ PROP_0,
+ PROP_ACCOUNT,
+ PROP_TP_CHAN,
+ PROP_ACKNOWLEDGE,
+
+ PROP_ANONYMOUS,
+ PROP_INVITE_ONLY,
+ PROP_LIMIT,
+ PROP_LIMITED,
+ PROP_MODERATED,
+ PROP_NAME,
+ PROP_DESCRIPTION,
+ PROP_PASSWORD,
+ PROP_PASSWORD_REQUIRED,
+ PROP_PERSISTENT,
+ PROP_PRIVATE,
+ PROP_SUBJECT,
+ PROP_SUBJECT_CONTACT,
+ PROP_SUBJECT_TIMESTAMP
+};
+
+enum {
+ MESSAGE_RECEIVED,
+ SEND_ERROR,
+ CHAT_STATE_CHANGED,
+ DESTROY,
+ LAST_SIGNAL
+};
+
+static guint signals[LAST_SIGNAL];
+
+G_DEFINE_TYPE (EmpathyTpChat, empathy_tp_chat, G_TYPE_OBJECT);
+
+static void
+tp_chat_destroy_cb (TpChan *text_chan,
+ EmpathyTpChat *chat)
+{
+ EmpathyTpChatPriv *priv;
+
+ priv = GET_PRIV (chat);
+
+ empathy_debug (DEBUG_DOMAIN, "Channel Closed or CM crashed");
+
+ g_object_unref (priv->tp_chan);
+ priv->tp_chan = NULL;
+ priv->text_iface = NULL;
+ priv->chat_state_iface = NULL;
+ priv->props_iface = NULL;
+
+ g_signal_emit (chat, signals[DESTROY], 0);
+}
+
+static void
+tp_chat_closed_cb (TpChan *text_chan,
+ EmpathyTpChat *chat)
+{
+ EmpathyTpChatPriv *priv;
+
+ priv = GET_PRIV (chat);
+
+ /* The channel is closed, do just like if the proxy was destroyed */
+ g_signal_handlers_disconnect_by_func (priv->tp_chan,
+ tp_chat_destroy_cb,
+ chat);
+ tp_chat_destroy_cb (text_chan, chat);
+}
+
+static EmpathyMessage *
+tp_chat_build_message (EmpathyTpChat *chat,
+ guint type,
+ guint timestamp,
+ guint from_handle,
+ const gchar *message_body)
+{
+ EmpathyTpChatPriv *priv;
+ EmpathyMessage *message;
+ EmpathyContact *sender;
+
+ priv = GET_PRIV (chat);
+
+ if (from_handle == 0) {
+ sender = g_object_ref (priv->user);
+ } else {
+ sender = empathy_contact_factory_get_from_handle (priv->factory,
+ priv->account,
+ from_handle);
+ }
+
+ message = empathy_message_new (message_body);
+ empathy_message_set_type (message, type);
+ empathy_message_set_sender (message, sender);
+ empathy_message_set_receiver (message, priv->user);
+ empathy_message_set_timestamp (message, timestamp);
+
+ g_object_unref (sender);
+
+ return message;
+}
+
+static void
+tp_chat_received_cb (DBusGProxy *text_iface,
+ guint message_id,
+ guint timestamp,
+ guint from_handle,
+ guint message_type,
+ guint message_flags,
+ gchar *message_body,
+ EmpathyTpChat *chat)
+{
+ EmpathyTpChatPriv *priv;
+ EmpathyMessage *message;
+
+ priv = GET_PRIV (chat);
+
+ if (!priv->had_pending_messages) {
+ return;
+ }
+
+ empathy_debug (DEBUG_DOMAIN, "Message received: %s", message_body);
+
+ message = tp_chat_build_message (chat,
+ message_type,
+ timestamp,
+ from_handle,
+ message_body);
+
+ g_signal_emit (chat, signals[MESSAGE_RECEIVED], 0, message);
+ g_object_unref (message);
+
+ if (priv->acknowledge) {
+ GArray *message_ids;
+
+ message_ids = g_array_new (FALSE, FALSE, sizeof (guint));
+ g_array_append_val (message_ids, message_id);
+ tp_chan_type_text_acknowledge_pending_messages (priv->text_iface,
+ message_ids, NULL);
+ g_array_free (message_ids, TRUE);
+ }
+}
+
+static void
+tp_chat_sent_cb (DBusGProxy *text_iface,
+ guint timestamp,
+ guint message_type,
+ gchar *message_body,
+ EmpathyTpChat *chat)
+{
+ EmpathyMessage *message;
+
+ empathy_debug (DEBUG_DOMAIN, "Message sent: %s", message_body);
+
+ message = tp_chat_build_message (chat,
+ message_type,
+ timestamp,
+ 0,
+ message_body);
+
+ g_signal_emit (chat, signals[MESSAGE_RECEIVED], 0, message);
+ g_object_unref (message);
+}
+
+static void
+tp_chat_send_error_cb (DBusGProxy *text_iface,
+ guint error_code,
+ guint timestamp,
+ guint message_type,
+ gchar *message_body,
+ EmpathyTpChat *chat)
+{
+ EmpathyMessage *message;
+
+ empathy_debug (DEBUG_DOMAIN, "Message sent error: %s (%d)",
+ message_body, error_code);
+
+ message = tp_chat_build_message (chat,
+ message_type,
+ timestamp,
+ 0,
+ message_body);
+
+ g_signal_emit (chat, signals[SEND_ERROR], 0, message, error_code);
+ g_object_unref (message);
+}
+
+static void
+tp_chat_state_changed_cb (DBusGProxy *chat_state_iface,
+ guint handle,
+ TpChannelChatState state,
+ EmpathyTpChat *chat)
+{
+ EmpathyTpChatPriv *priv;
+ EmpathyContact *contact;
+
+ priv = GET_PRIV (chat);
+
+ contact = empathy_contact_factory_get_from_handle (priv->factory,
+ priv->account,
+ handle);
+
+ empathy_debug (DEBUG_DOMAIN, "Chat state changed for %s (%d): %d",
+ empathy_contact_get_name (contact),
+ handle,
+ state);
+
+ g_signal_emit (chat, signals[CHAT_STATE_CHANGED], 0, contact, state);
+ g_object_unref (contact);
+}
+
+static void
+tp_chat_list_pending_messages_cb (DBusGProxy *proxy,
+ GPtrArray *messages_list,
+ GError *error,
+ gpointer chat)
+{
+ EmpathyTpChatPriv *priv = GET_PRIV (chat);
+ guint i;
+
+ priv->had_pending_messages = TRUE;
+
+ for (i = 0; i < messages_list->len; i++) {
+ EmpathyMessage *message;
+ GValueArray *message_struct;
+ const gchar *message_body;
+ guint message_id;
+ guint timestamp;
+ guint from_handle;
+ guint message_type;
+ guint message_flags;
+
+ message_struct = g_ptr_array_index (messages_list, i);
+
+ message_id = g_value_get_uint (g_value_array_get_nth (message_struct, 0));
+ timestamp = g_value_get_uint (g_value_array_get_nth (message_struct, 1));
+ from_handle = g_value_get_uint (g_value_array_get_nth (message_struct, 2));
+ message_type = g_value_get_uint (g_value_array_get_nth (message_struct, 3));
+ message_flags = g_value_get_uint (g_value_array_get_nth (message_struct, 4));
+ message_body = g_value_get_string (g_value_array_get_nth (message_struct, 5));
+
+ empathy_debug (DEBUG_DOMAIN, "Message pending: %s", message_body);
+
+ message = tp_chat_build_message (chat,
+ message_type,
+ timestamp,
+ from_handle,
+ message_body);
+
+ g_signal_emit (chat, signals[MESSAGE_RECEIVED], 0, message);
+ g_object_unref (message);
+
+ g_value_array_free (message_struct);
+ }
+
+ g_ptr_array_free (messages_list, TRUE);
+}
+
+static void
+tp_chat_properties_ready_cb (TpPropsIface *props_iface,
+ EmpathyTpChat *chat)
+{
+ g_object_notify (G_OBJECT (chat), "anonymous");
+ g_object_notify (G_OBJECT (chat), "invite-only");
+ g_object_notify (G_OBJECT (chat), "limit");
+ g_object_notify (G_OBJECT (chat), "limited");
+ g_object_notify (G_OBJECT (chat), "moderated");
+ g_object_notify (G_OBJECT (chat), "name");
+ g_object_notify (G_OBJECT (chat), "description");
+ g_object_notify (G_OBJECT (chat), "password");
+ g_object_notify (G_OBJECT (chat), "password-required");
+ g_object_notify (G_OBJECT (chat), "persistent");
+ g_object_notify (G_OBJECT (chat), "private");
+ g_object_notify (G_OBJECT (chat), "subject");
+ g_object_notify (G_OBJECT (chat), "subject-contact");
+ g_object_notify (G_OBJECT (chat), "subject-timestamp");
+}
+
+static void
+tp_chat_properties_changed_cb (TpPropsIface *props_iface,
+ guint prop_id,
+ TpPropsChanged flag,
+ EmpathyTpChat *chat)
+{
+ switch (prop_id) {
+ case PROP_ANONYMOUS:
+ g_object_notify (G_OBJECT (chat), "anonymous");
+ break;
+ case PROP_INVITE_ONLY:
+ g_object_notify (G_OBJECT (chat), "invite-only");
+ break;
+ case PROP_LIMIT:
+ g_object_notify (G_OBJECT (chat), "limit");
+ break;
+ case PROP_LIMITED:
+ g_object_notify (G_OBJECT (chat), "limited");
+ break;
+ case PROP_MODERATED:
+ g_object_notify (G_OBJECT (chat), "moderated");
+ break;
+ case PROP_NAME:
+ g_object_notify (G_OBJECT (chat), "name");
+ break;
+ case PROP_DESCRIPTION:
+ g_object_notify (G_OBJECT (chat), "description");
+ break;
+ case PROP_PASSWORD:
+ g_object_notify (G_OBJECT (chat), "password");
+ break;
+ case PROP_PASSWORD_REQUIRED:
+ g_object_notify (G_OBJECT (chat), "password-required");
+ break;
+ case PROP_PERSISTENT:
+ g_object_notify (G_OBJECT (chat), "persistent");
+ break;
+ case PROP_PRIVATE:
+ g_object_notify (G_OBJECT (chat), "private");
+ break;
+ case PROP_SUBJECT:
+ g_object_notify (G_OBJECT (chat), "subject");
+ break;
+ case PROP_SUBJECT_CONTACT:
+ g_object_notify (G_OBJECT (chat), "subject-contact");
+ break;
+ case PROP_SUBJECT_TIMESTAMP:
+ g_object_notify (G_OBJECT (chat), "subject-timestamp");
+ break;
+ }
+}
+
+static void
+tp_chat_finalize (GObject *object)
+{
+ EmpathyTpChatPriv *priv;
+ EmpathyTpChat *chat;
+ GError *error = NULL;
+
+ chat = EMPATHY_TP_CHAT (object);
+ priv = GET_PRIV (chat);
+
+ if (priv->text_iface) {
+ dbus_g_proxy_disconnect_signal (priv->text_iface, "Received",
+ G_CALLBACK (tp_chat_received_cb),
+ chat);
+ dbus_g_proxy_disconnect_signal (priv->text_iface, "Sent",
+ G_CALLBACK (tp_chat_sent_cb),
+ chat);
+ dbus_g_proxy_disconnect_signal (priv->text_iface, "SendError",
+ G_CALLBACK (tp_chat_send_error_cb),
+ chat);
+ }
+
+ if (priv->chat_state_iface) {
+ dbus_g_proxy_disconnect_signal (priv->chat_state_iface, "ChatStateChanged",
+ G_CALLBACK (tp_chat_state_changed_cb),
+ chat);
+ }
+
+ if (priv->tp_chan) {
+ g_signal_handlers_disconnect_by_func (priv->tp_chan,
+ tp_chat_destroy_cb,
+ object);
+ dbus_g_proxy_disconnect_signal (DBUS_G_PROXY (priv->tp_chan), "Closed",
+ G_CALLBACK (tp_chat_closed_cb),
+ chat);
+ if (priv->acknowledge) {
+ empathy_debug (DEBUG_DOMAIN, "Closing channel...");
+ if (!tp_chan_close (DBUS_G_PROXY (priv->tp_chan), &error)) {
+ empathy_debug (DEBUG_DOMAIN,
+ "Error closing text channel: %s",
+ error ? error->message : "No error given");
+ g_clear_error (&error);
+ }
+ }
+ g_object_unref (priv->tp_chan);
+ }
+
+ g_object_unref (priv->factory);
+ g_object_unref (priv->user);
+ g_object_unref (priv->account);
+ g_object_unref (priv->mc);
+ g_free (priv->id);
+
+ G_OBJECT_CLASS (empathy_tp_chat_parent_class)->finalize (object);
+}
+
+static GObject *
+tp_chat_constructor (GType type,
+ guint n_props,
+ GObjectConstructParam *props)
+{
+ GObject *chat;
+ EmpathyTpChatPriv *priv;
+
+ chat = G_OBJECT_CLASS (empathy_tp_chat_parent_class)->constructor (type, n_props, props);
+
+ priv = GET_PRIV (chat);
+
+ priv->factory = empathy_contact_factory_new ();
+ priv->user = empathy_contact_factory_get_user (priv->factory, priv->account);
+ priv->mc = empathy_mission_control_new ();
+
+ priv->text_iface = tp_chan_get_interface (priv->tp_chan,
+ TP_IFACE_QUARK_CHANNEL_TYPE_TEXT);
+ priv->chat_state_iface = tp_chan_get_interface (priv->tp_chan,
+ TP_IFACE_QUARK_CHANNEL_INTERFACE_CHAT_STATE);
+ priv->props_iface = tp_chan_get_interface (priv->tp_chan,
+ TP_IFACE_QUARK_PROPERTIES_INTERFACE);
+
+ g_signal_connect (priv->tp_chan, "destroy",
+ G_CALLBACK (tp_chat_destroy_cb),
+ chat);
+ dbus_g_proxy_connect_signal (DBUS_G_PROXY (priv->tp_chan), "Closed",
+ G_CALLBACK (tp_chat_closed_cb),
+ chat, NULL);
+ dbus_g_proxy_connect_signal (priv->text_iface, "Received",
+ G_CALLBACK (tp_chat_received_cb),
+ chat, NULL);
+ dbus_g_proxy_connect_signal (priv->text_iface, "Sent",
+ G_CALLBACK (tp_chat_sent_cb),
+ chat, NULL);
+ dbus_g_proxy_connect_signal (priv->text_iface, "SendError",
+ G_CALLBACK (tp_chat_send_error_cb),
+ chat, NULL);
+
+ if (priv->chat_state_iface != NULL) {
+ dbus_g_proxy_connect_signal (priv->chat_state_iface,
+ "ChatStateChanged",
+ G_CALLBACK (tp_chat_state_changed_cb),
+ chat, NULL);
+ }
+ if (priv->props_iface != NULL) {
+ tp_props_iface_set_mapping (TELEPATHY_PROPS_IFACE (priv->props_iface),
+ "anonymous", PROP_ANONYMOUS,
+ "invite-only", PROP_INVITE_ONLY,
+ "limit", PROP_LIMIT,
+ "limited", PROP_LIMITED,
+ "moderated", PROP_MODERATED,
+ "name", PROP_NAME,
+ "description", PROP_DESCRIPTION,
+ "password", PROP_PASSWORD,
+ "password-required", PROP_PASSWORD_REQUIRED,
+ "persistent", PROP_PERSISTENT,
+ "private", PROP_PRIVATE,
+ "subject", PROP_SUBJECT,
+ "subject-contact", PROP_SUBJECT_CONTACT,
+ "subject-timestamp", PROP_SUBJECT_TIMESTAMP,
+ NULL);
+ g_signal_connect (priv->props_iface, "properties-ready",
+ G_CALLBACK (tp_chat_properties_ready_cb),
+ chat);
+ g_signal_connect (priv->props_iface, "properties-changed",
+ G_CALLBACK (tp_chat_properties_changed_cb),
+ chat);
+ }
+
+ /* FIXME: We do that in a cb to let time to set the acknowledge
+ * property, this property should be required for construct. */
+ g_idle_add ((GSourceFunc) empathy_tp_chat_get_pendings, chat);
+
+ return chat;
+}
+
+static void
+tp_chat_get_property (GObject *object,
+ guint param_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ EmpathyTpChatPriv *priv;
+ EmpathyTpChat *chat;
+
+ priv = GET_PRIV (object);
+ chat = EMPATHY_TP_CHAT (object);
+
+ if (param_id >= PROP_ANONYMOUS &&
+ param_id <= PROP_SUBJECT_TIMESTAMP) {
+ if (priv->props_iface) {
+ tp_props_iface_get_value (TELEPATHY_PROPS_IFACE (priv->props_iface),
+ param_id,
+ value);
+ }
+
+ return;
+ }
+
+ switch (param_id) {
+ case PROP_ACCOUNT:
+ g_value_set_object (value, priv->account);
+ break;
+ case PROP_TP_CHAN:
+ g_value_set_object (value, priv->tp_chan);
+ break;
+ case PROP_ACKNOWLEDGE:
+ g_value_set_boolean (value, priv->acknowledge);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
+ break;
+ };
+}
+
+static void
+tp_chat_set_property (GObject *object,
+ guint param_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ EmpathyTpChatPriv *priv;
+ EmpathyTpChat *chat;
+
+ priv = GET_PRIV (object);
+ chat = EMPATHY_TP_CHAT (object);
+
+ if (param_id >= PROP_ANONYMOUS &&
+ param_id <= PROP_SUBJECT_TIMESTAMP) {
+ if (priv->props_iface) {
+ tp_props_iface_set_value (TELEPATHY_PROPS_IFACE (priv->props_iface),
+ param_id,
+ value);
+ }
+
+ return;
+ }
+
+ switch (param_id) {
+ case PROP_ACCOUNT:
+ priv->account = g_object_ref (g_value_get_object (value));
+ break;
+ case PROP_TP_CHAN:
+ priv->tp_chan = g_object_ref (g_value_get_object (value));
+ break;
+ case PROP_ACKNOWLEDGE:
+ empathy_tp_chat_set_acknowledge (EMPATHY_TP_CHAT (object),
+ g_value_get_boolean (value));
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
+ break;
+ };
+}
+
+static void
+empathy_tp_chat_class_init (EmpathyTpChatClass *klass)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+ object_class->finalize = tp_chat_finalize;
+ object_class->constructor = tp_chat_constructor;
+ object_class->get_property = tp_chat_get_property;
+ object_class->set_property = tp_chat_set_property;
+
+ /* Construct-only properties */
+ g_object_class_install_property (object_class,
+ PROP_ACCOUNT,
+ g_param_spec_object ("account",
+ "channel Account",
+ "The account associated with the channel",
+ MC_TYPE_ACCOUNT,
+ G_PARAM_READWRITE |
+ G_PARAM_CONSTRUCT_ONLY));
+ g_object_class_install_property (object_class,
+ PROP_TP_CHAN,
+ g_param_spec_object ("tp-chan",
+ "telepathy channel",
+ "The text channel for the chat",
+ TELEPATHY_CHAN_TYPE,
+ G_PARAM_READWRITE |
+ G_PARAM_CONSTRUCT_ONLY));
+
+ /* Normal properties */
+ g_object_class_install_property (object_class,
+ PROP_ACKNOWLEDGE,
+ g_param_spec_boolean ("acknowledge",
+ "acknowledge",
+ "acknowledge",
+ FALSE,
+ G_PARAM_READWRITE));
+
+ /* Properties of Text Channel */
+ g_object_class_install_property (object_class,
+ PROP_ANONYMOUS,
+ g_param_spec_boolean ("anonymous",
+ "anonymous",
+ "anonymous",
+ FALSE,
+ G_PARAM_READWRITE));
+ g_object_class_install_property (object_class,
+ PROP_INVITE_ONLY,
+ g_param_spec_boolean ("invite-only",
+ "invite-only",
+ "invite-only",
+ FALSE,
+ G_PARAM_READWRITE));
+ g_object_class_install_property (object_class,
+ PROP_LIMIT,
+ g_param_spec_uint ("limit",
+ "limit",
+ "limit",
+ 0,
+ G_MAXUINT,
+ 0,
+ G_PARAM_READWRITE));
+ g_object_class_install_property (object_class,
+ PROP_LIMITED,
+ g_param_spec_boolean ("limited",
+ "limited",
+ "limited",
+ FALSE,
+ G_PARAM_READWRITE));
+ g_object_class_install_property (object_class,
+ PROP_MODERATED,
+ g_param_spec_boolean ("moderated",
+ "moderated",
+ "moderated",
+ FALSE,
+ G_PARAM_READWRITE));
+ g_object_class_install_property (object_class,
+ PROP_NAME,
+ g_param_spec_string ("name",
+ "name",
+ "name",
+ NULL,
+ G_PARAM_READWRITE));
+ g_object_class_install_property (object_class,
+ PROP_DESCRIPTION,
+ g_param_spec_string ("description",
+ "description",
+ "description",
+ NULL,
+ G_PARAM_READWRITE));
+ g_object_class_install_property (object_class,
+ PROP_PASSWORD,
+ g_param_spec_string ("password",
+ "password",
+ "password",
+ NULL,
+ G_PARAM_READWRITE));
+ g_object_class_install_property (object_class,
+ PROP_PASSWORD_REQUIRED,
+ g_param_spec_boolean ("password-required",
+ "password-required",
+ "password-required",
+ FALSE,
+ G_PARAM_READWRITE));
+ g_object_class_install_property (object_class,
+ PROP_PERSISTENT,
+ g_param_spec_boolean ("persistent",
+ "persistent",
+ "persistent",
+ FALSE,
+ G_PARAM_READWRITE));
+ g_object_class_install_property (object_class,
+ PROP_PRIVATE,
+ g_param_spec_boolean ("private",
+ "private",
+ "private"
+ "private",
+ FALSE,
+ G_PARAM_READWRITE));
+ g_object_class_install_property (object_class,
+ PROP_SUBJECT,
+ g_param_spec_string ("subject",
+ "subject",
+ "subject",
+ NULL,
+ G_PARAM_READWRITE));
+ g_object_class_install_property (object_class,
+ PROP_SUBJECT_CONTACT,
+ g_param_spec_uint ("subject-contact",
+ "subject-contact",
+ "subject-contact",
+ 0,
+ G_MAXUINT,
+ 0,
+ G_PARAM_READWRITE));
+ g_object_class_install_property (object_class,
+ PROP_SUBJECT_TIMESTAMP,
+ g_param_spec_uint ("subject-timestamp",
+ "subject-timestamp",
+ "subject-timestamp",
+ 0,
+ G_MAXUINT,
+ 0,
+ G_PARAM_READWRITE));
+
+ /* Signals */
+ signals[MESSAGE_RECEIVED] =
+ g_signal_new ("message-received",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST,
+ 0,
+ NULL, NULL,
+ g_cclosure_marshal_VOID__OBJECT,
+ G_TYPE_NONE,
+ 1, EMPATHY_TYPE_MESSAGE);
+
+ signals[SEND_ERROR] =
+ g_signal_new ("send-error",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST,
+ 0,
+ NULL, NULL,
+ _empathy_marshal_VOID__OBJECT_UINT,
+ G_TYPE_NONE,
+ 2, EMPATHY_TYPE_MESSAGE, G_TYPE_UINT);
+
+ signals[CHAT_STATE_CHANGED] =
+ g_signal_new ("chat-state-changed",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST,
+ 0,
+ NULL, NULL,
+ _empathy_marshal_VOID__OBJECT_UINT,
+ G_TYPE_NONE,
+ 2, EMPATHY_TYPE_CONTACT, G_TYPE_UINT);
+
+ signals[DESTROY] =
+ g_signal_new ("destroy",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST,
+ 0,
+ NULL, NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE,
+ 0);
+
+ g_type_class_add_private (object_class, sizeof (EmpathyTpChatPriv));
+}
+
+static void
+empathy_tp_chat_init (EmpathyTpChat *chat)
+{
+}
+
+EmpathyTpChat *
+empathy_tp_chat_new (McAccount *account,
+ TpChan *tp_chan)
+{
+ return g_object_new (EMPATHY_TYPE_TP_CHAT,
+ "account", account,
+ "tp-chan", tp_chan,
+ NULL);
+}
+
+EmpathyTpChat *
+empathy_tp_chat_new_with_contact (EmpathyContact *contact)
+{
+ EmpathyTpChat *chat;
+ MissionControl *mc;
+ McAccount *account;
+ TpConn *tp_conn;
+ TpChan *text_chan;
+ const gchar *bus_name;
+ guint handle;
+
+ g_return_val_if_fail (EMPATHY_IS_CONTACT (contact), NULL);
+
+ mc = empathy_mission_control_new ();
+ account = empathy_contact_get_account (contact);
+
+ if (mission_control_get_connection_status (mc, account, NULL) != 0) {
+ /* The account is not connected. */
+ return NULL;
+ }
+
+ tp_conn = mission_control_get_connection (mc, account, NULL);
+ g_return_val_if_fail (tp_conn != NULL, NULL);
+ bus_name = dbus_g_proxy_get_bus_name (DBUS_G_PROXY (tp_conn));
+ handle = empathy_contact_get_handle (contact);
+
+ text_chan = tp_conn_new_channel (tp_get_bus (),
+ tp_conn,
+ bus_name,
+ TP_IFACE_CHANNEL_TYPE_TEXT,
+ TP_HANDLE_TYPE_CONTACT,
+ handle,
+ TRUE);
+
+ chat = empathy_tp_chat_new (account, text_chan);
+
+ g_object_unref (tp_conn);
+ g_object_unref (text_chan);
+ g_object_unref (mc);
+
+ return chat;
+}
+
+gboolean
+empathy_tp_chat_get_acknowledge (EmpathyTpChat *chat)
+{
+ EmpathyTpChatPriv *priv;
+
+ g_return_val_if_fail (EMPATHY_IS_TP_CHAT (chat), FALSE);
+
+ priv = GET_PRIV (chat);
+
+ return priv->acknowledge;
+}
+
+void
+empathy_tp_chat_set_acknowledge (EmpathyTpChat *chat,
+ gboolean acknowledge)
+{
+ EmpathyTpChatPriv *priv;
+
+ g_return_if_fail (EMPATHY_IS_TP_CHAT (chat));
+
+ priv = GET_PRIV (chat);
+
+ priv->acknowledge = acknowledge;
+ g_object_notify (G_OBJECT (chat), "acknowledge");
+}
+
+TpChan *
+empathy_tp_chat_get_channel (EmpathyTpChat *chat)
+{
+ EmpathyTpChatPriv *priv;
+
+ g_return_val_if_fail (EMPATHY_IS_TP_CHAT (chat), NULL);
+
+ priv = GET_PRIV (chat);
+
+ return priv->tp_chan;
+}
+
+McAccount *
+empathy_tp_chat_get_account (EmpathyTpChat *chat)
+{
+ EmpathyTpChatPriv *priv;
+
+ g_return_val_if_fail (EMPATHY_IS_TP_CHAT (chat), NULL);
+
+ priv = GET_PRIV (chat);
+
+ return priv->account;
+}
+
+GList *
+empathy_tp_chat_get_pendings (EmpathyTpChat *chat)
+{
+ EmpathyTpChatPriv *priv;
+
+ g_return_val_if_fail (EMPATHY_IS_TP_CHAT (chat), NULL);
+
+ priv = GET_PRIV (chat);
+
+ tp_chan_type_text_list_pending_messages_async (priv->text_iface,
+ priv->acknowledge,
+ tp_chat_list_pending_messages_cb,
+ chat);
+
+ return NULL;
+}
+
+void
+empathy_tp_chat_send (EmpathyTpChat *chat,
+ EmpathyMessage *message)
+{
+ EmpathyTpChatPriv *priv;
+ const gchar *message_body;
+ EmpathyMessageType message_type;
+ GError *error = NULL;
+
+ g_return_if_fail (EMPATHY_IS_TP_CHAT (chat));
+ g_return_if_fail (EMPATHY_IS_MESSAGE (message));
+
+ priv = GET_PRIV (chat);
+
+ message_body = empathy_message_get_body (message);
+ message_type = empathy_message_get_type (message);
+
+ empathy_debug (DEBUG_DOMAIN, "Sending message: %s", message_body);
+ if (!tp_chan_type_text_send (priv->text_iface,
+ message_type,
+ message_body,
+ &error)) {
+ empathy_debug (DEBUG_DOMAIN,
+ "Send Error: %s",
+ error ? error->message : "No error given");
+ g_clear_error (&error);
+ }
+}
+
+void
+empathy_tp_chat_set_state (EmpathyTpChat *chat,
+ TpChannelChatState state)
+{
+ EmpathyTpChatPriv *priv;
+ GError *error = NULL;
+
+ g_return_if_fail (EMPATHY_IS_TP_CHAT (chat));
+
+ priv = GET_PRIV (chat);
+
+ if (priv->chat_state_iface) {
+ empathy_debug (DEBUG_DOMAIN, "Set state: %d", state);
+ if (!tp_chan_iface_chat_state_set_chat_state (priv->chat_state_iface,
+ state,
+ &error)) {
+ empathy_debug (DEBUG_DOMAIN,
+ "Set Chat State Error: %s",
+ error ? error->message : "No error given");
+ g_clear_error (&error);
+ }
+ }
+}
+
+const gchar *
+empathy_tp_chat_get_id (EmpathyTpChat *chat)
+{
+ EmpathyTpChatPriv *priv;
+
+ g_return_val_if_fail (EMPATHY_IS_TP_CHAT (chat), NULL);
+
+ priv = GET_PRIV (chat);
+
+ if (!priv->id) {
+ priv->id = empathy_inspect_channel (priv->account, priv->tp_chan);
+ }
+
+ return priv->id;
+}
+
diff --git a/gnome-2-22/libempathy/empathy-tp-chat.h b/gnome-2-22/libempathy/empathy-tp-chat.h
new file mode 100644
index 000000000..6de2cad4e
--- /dev/null
+++ b/gnome-2-22/libempathy/empathy-tp-chat.h
@@ -0,0 +1,75 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2007 Collabora Ltd.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Authors: Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#ifndef __EMPATHY_TP_CHAT_H__
+#define __EMPATHY_TP_CHAT_H__
+
+#include <glib.h>
+
+#include <libtelepathy/tp-chan.h>
+#include <libtelepathy/tp-constants.h>
+
+#include <libmissioncontrol/mc-account.h>
+
+#include "empathy-message.h"
+#include "empathy-contact.h"
+
+
+G_BEGIN_DECLS
+
+#define EMPATHY_TYPE_TP_CHAT (empathy_tp_chat_get_type ())
+#define EMPATHY_TP_CHAT(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), EMPATHY_TYPE_TP_CHAT, EmpathyTpChat))
+#define EMPATHY_TP_CHAT_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), EMPATHY_TYPE_TP_CHAT, EmpathyTpChatClass))
+#define EMPATHY_IS_TP_CHAT(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), EMPATHY_TYPE_TP_CHAT))
+#define EMPATHY_IS_TP_CHAT_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), EMPATHY_TYPE_TP_CHAT))
+#define EMPATHY_TP_CHAT_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), EMPATHY_TYPE_TP_CHAT, EmpathyTpChatClass))
+
+typedef struct _EmpathyTpChat EmpathyTpChat;
+typedef struct _EmpathyTpChatClass EmpathyTpChatClass;
+typedef struct _EmpathyTpChatPriv EmpathyTpChatPriv;
+
+struct _EmpathyTpChat {
+ GObject parent;
+};
+
+struct _EmpathyTpChatClass {
+ GObjectClass parent_class;
+};
+
+GType empathy_tp_chat_get_type (void) G_GNUC_CONST;
+EmpathyTpChat *empathy_tp_chat_new (McAccount *account,
+ TpChan *tp_chan);
+EmpathyTpChat *empathy_tp_chat_new_with_contact (EmpathyContact *contact);
+gboolean empathy_tp_chat_get_acknowledge (EmpathyTpChat *chat);
+void empathy_tp_chat_set_acknowledge (EmpathyTpChat *chat,
+ gboolean acknowledge);
+McAccount * empathy_tp_chat_get_account (EmpathyTpChat *chat);
+TpChan * empathy_tp_chat_get_channel (EmpathyTpChat *chat);
+GList * empathy_tp_chat_get_pendings (EmpathyTpChat *chat);
+void empathy_tp_chat_send (EmpathyTpChat *chat,
+ EmpathyMessage *message);
+void empathy_tp_chat_set_state (EmpathyTpChat *chat,
+ TpChannelChatState state);
+const gchar * empathy_tp_chat_get_id (EmpathyTpChat *chat);
+
+G_END_DECLS
+
+#endif /* __EMPATHY_TP_CHAT_H__ */
diff --git a/gnome-2-22/libempathy/empathy-tp-chatroom.c b/gnome-2-22/libempathy/empathy-tp-chatroom.c
new file mode 100644
index 000000000..a00aa581b
--- /dev/null
+++ b/gnome-2-22/libempathy/empathy-tp-chatroom.c
@@ -0,0 +1,299 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2007-2008 Collabora Ltd.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Authors: Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#include <config.h>
+
+#include "empathy-tp-chatroom.h"
+#include "empathy-contact-list.h"
+#include "empathy-contact-factory.h"
+#include "empathy-tp-group.h"
+#include "empathy-utils.h"
+#include "empathy-debug.h"
+
+#define GET_PRIV(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), \
+ EMPATHY_TYPE_TP_CHATROOM, EmpathyTpChatroomPriv))
+
+#define DEBUG_DOMAIN "TpChatroom"
+
+struct _EmpathyTpChatroomPriv {
+ EmpathyContactFactory *factory;
+ EmpathyTpGroup *group;
+
+ gboolean is_invited;
+ EmpathyContact *invitor;
+ gchar *invit_message;
+};
+
+static void empathy_tp_chatroom_class_init (EmpathyTpChatroomClass *klass);
+static void tp_chatroom_iface_init (EmpathyContactListIface *iface);
+static void empathy_tp_chatroom_init (EmpathyTpChatroom *chatroom);
+static void tp_chatroom_finalize (GObject *object);
+static void tp_chatroom_member_added_cb (EmpathyTpGroup *group,
+ EmpathyContact *contact,
+ EmpathyContact *actor,
+ guint reason,
+ const gchar *message,
+ EmpathyTpChatroom *chatroom);
+static void tp_chatroom_member_removed_cb (EmpathyTpGroup *group,
+ EmpathyContact *contact,
+ EmpathyContact *actor,
+ guint reason,
+ const gchar *message,
+ EmpathyTpChatroom *chatroom);
+static void tp_chatroom_add (EmpathyContactList *list,
+ EmpathyContact *contact,
+ const gchar *message);
+static void tp_chatroom_remove (EmpathyContactList *list,
+ EmpathyContact *contact,
+ const gchar *message);
+static GList * tp_chatroom_get_members (EmpathyContactList *list);
+
+G_DEFINE_TYPE_WITH_CODE (EmpathyTpChatroom, empathy_tp_chatroom, EMPATHY_TYPE_TP_CHAT,
+ G_IMPLEMENT_INTERFACE (EMPATHY_TYPE_CONTACT_LIST,
+ tp_chatroom_iface_init));
+
+static void
+empathy_tp_chatroom_class_init (EmpathyTpChatroomClass *klass)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+ object_class->finalize = tp_chatroom_finalize;
+
+ g_type_class_add_private (object_class, sizeof (EmpathyTpChatroomPriv));
+}
+
+static void
+tp_chatroom_iface_init (EmpathyContactListIface *iface)
+{
+ iface->add = tp_chatroom_add;
+ iface->remove = tp_chatroom_remove;
+ iface->get_members = tp_chatroom_get_members;
+}
+
+static void
+empathy_tp_chatroom_init (EmpathyTpChatroom *chatroom)
+{
+}
+
+static void
+tp_chatroom_finalize (GObject *object)
+{
+ EmpathyTpChatroomPriv *priv;
+ EmpathyTpChatroom *chatroom;
+
+ chatroom = EMPATHY_TP_CHATROOM (object);
+ priv = GET_PRIV (chatroom);
+
+ g_object_unref (priv->group);
+ g_object_unref (priv->factory);
+
+ if (priv->invitor) {
+ g_object_unref (priv->invitor);
+ }
+
+ g_free (priv->invit_message);
+
+ G_OBJECT_CLASS (empathy_tp_chatroom_parent_class)->finalize (object);
+}
+
+EmpathyTpChatroom *
+empathy_tp_chatroom_new (McAccount *account,
+ TpChan *tp_chan)
+{
+ EmpathyTpChatroomPriv *priv;
+ EmpathyTpChatroom *chatroom;
+ GList *members, *l;
+ EmpathyContact *user;
+
+ g_return_val_if_fail (MC_IS_ACCOUNT (account), NULL);
+ g_return_val_if_fail (TELEPATHY_IS_CHAN (tp_chan), NULL);
+
+ chatroom = g_object_new (EMPATHY_TYPE_TP_CHATROOM,
+ "account", account,
+ "tp-chan", tp_chan,
+ NULL);
+
+ priv = GET_PRIV (chatroom);
+
+ priv->factory = empathy_contact_factory_new ();
+ priv->group = empathy_tp_group_new (account, tp_chan);
+
+ g_signal_connect (priv->group, "member-added",
+ G_CALLBACK (tp_chatroom_member_added_cb),
+ chatroom);
+ g_signal_connect (priv->group, "member-removed",
+ G_CALLBACK (tp_chatroom_member_removed_cb),
+ chatroom);
+
+ /* Check if we are invited to join the chat */
+ user = empathy_tp_group_get_self_contact (priv->group);
+ members = empathy_tp_group_get_local_pendings (priv->group);
+ for (l = members; l; l = l->next) {
+ EmpathyPendingInfo *info;
+
+ info = l->data;
+
+ if (!empathy_contact_equal (user, info->member)) {
+ continue;
+ }
+
+ priv->invitor = g_object_ref (info->actor);
+ priv->invit_message = g_strdup (info->message);
+ priv->is_invited = TRUE;
+
+ empathy_debug (DEBUG_DOMAIN, "We are invited to join by %s (%d): %s",
+ empathy_contact_get_id (priv->invitor),
+ empathy_contact_get_handle (priv->invitor),
+ priv->invit_message);
+ }
+
+ g_list_foreach (members, (GFunc) empathy_pending_info_free, NULL);
+ g_list_free (members);
+ g_object_unref (user);
+
+ return chatroom;
+}
+
+gboolean
+empathy_tp_chatroom_get_invitation (EmpathyTpChatroom *chatroom,
+ EmpathyContact **contact,
+ const gchar **message)
+{
+ EmpathyTpChatroomPriv *priv;
+
+ g_return_val_if_fail (EMPATHY_IS_TP_CHATROOM (chatroom), FALSE);
+
+ priv = GET_PRIV (chatroom);
+
+ if (contact) {
+ *contact = priv->invitor;
+ }
+ if (message) {
+ *message = priv->invit_message;
+ }
+
+ return priv->is_invited;
+}
+
+void
+empathy_tp_chatroom_accept_invitation (EmpathyTpChatroom *chatroom)
+{
+ EmpathyTpChatroomPriv *priv;
+ EmpathyContact *user;
+
+ g_return_if_fail (EMPATHY_IS_TP_CHATROOM (chatroom));
+
+ priv = GET_PRIV (chatroom);
+
+ if (!priv->is_invited) {
+ return;
+ }
+
+ /* Clear invitation data */
+ priv->is_invited = FALSE;
+ if (priv->invitor) {
+ g_object_unref (priv->invitor);
+ priv->invitor = NULL;
+ }
+ g_free (priv->invit_message);
+ priv->invit_message = NULL;
+
+ /* Add ourself in the members of the room */
+ user = empathy_tp_group_get_self_contact (priv->group);
+ empathy_tp_group_add_member (priv->group, user, "");
+ g_object_unref (user);
+}
+
+void
+empathy_tp_chatroom_set_topic (EmpathyTpChatroom *chatroom,
+ const gchar *topic)
+{
+ /* FIXME: not implemented */
+}
+
+static void
+tp_chatroom_member_added_cb (EmpathyTpGroup *group,
+ EmpathyContact *contact,
+ EmpathyContact *actor,
+ guint reason,
+ const gchar *message,
+ EmpathyTpChatroom *chatroom)
+{
+ g_signal_emit_by_name (chatroom, "members-changed",
+ contact, actor, reason, message,
+ TRUE);
+}
+
+static void
+tp_chatroom_member_removed_cb (EmpathyTpGroup *group,
+ EmpathyContact *contact,
+ EmpathyContact *actor,
+ guint reason,
+ const gchar *message,
+ EmpathyTpChatroom *chatroom)
+{
+ g_signal_emit_by_name (chatroom, "members-changed",
+ contact, actor, reason, message,
+ FALSE);
+}
+
+static void
+tp_chatroom_add (EmpathyContactList *list,
+ EmpathyContact *contact,
+ const gchar *message)
+{
+ EmpathyTpChatroomPriv *priv;
+
+ g_return_if_fail (EMPATHY_IS_TP_CHATROOM (list));
+ g_return_if_fail (EMPATHY_IS_CONTACT (contact));
+
+ priv = GET_PRIV (list);
+
+ empathy_tp_group_add_member (priv->group, contact, message);
+}
+
+static void
+tp_chatroom_remove (EmpathyContactList *list,
+ EmpathyContact *contact,
+ const gchar *message)
+{
+ EmpathyTpChatroomPriv *priv;
+
+ g_return_if_fail (EMPATHY_IS_TP_CHATROOM (list));
+ g_return_if_fail (EMPATHY_IS_CONTACT (contact));
+
+ priv = GET_PRIV (list);
+
+ empathy_tp_group_remove_member (priv->group, contact, message);
+}
+
+static GList *
+tp_chatroom_get_members (EmpathyContactList *list)
+{
+ EmpathyTpChatroomPriv *priv;
+
+ g_return_val_if_fail (EMPATHY_IS_TP_CHATROOM (list), NULL);
+
+ priv = GET_PRIV (list);
+
+ return empathy_tp_group_get_members (priv->group);
+}
+
diff --git a/gnome-2-22/libempathy/empathy-tp-chatroom.h b/gnome-2-22/libempathy/empathy-tp-chatroom.h
new file mode 100644
index 000000000..8f0a18100
--- /dev/null
+++ b/gnome-2-22/libempathy/empathy-tp-chatroom.h
@@ -0,0 +1,65 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2007 Collabora Ltd.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Authors: Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#ifndef __EMPATHY_TP_CHATROOM_H__
+#define __EMPATHY_TP_CHATROOM_H__
+
+#include <glib.h>
+
+#include <libtelepathy/tp-chan.h>
+
+#include <libmissioncontrol/mc-account.h>
+
+#include "empathy-tp-chat.h"
+
+G_BEGIN_DECLS
+
+#define EMPATHY_TYPE_TP_CHATROOM (empathy_tp_chatroom_get_type ())
+#define EMPATHY_TP_CHATROOM(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), EMPATHY_TYPE_TP_CHATROOM, EmpathyTpChatroom))
+#define EMPATHY_TP_CHATROOM_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), EMPATHY_TYPE_TP_CHATROOM, EmpathyTpChatroomClass))
+#define EMPATHY_IS_TP_CHATROOM(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), EMPATHY_TYPE_TP_CHATROOM))
+#define EMPATHY_IS_TP_CHATROOM_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), EMPATHY_TYPE_TP_CHATROOM))
+#define EMPATHY_TP_CHATROOM_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), EMPATHY_TYPE_TP_CHATROOM, EmpathyTpChatroomClass))
+
+typedef struct _EmpathyTpChatroom EmpathyTpChatroom;
+typedef struct _EmpathyTpChatroomClass EmpathyTpChatroomClass;
+typedef struct _EmpathyTpChatroomPriv EmpathyTpChatroomPriv;
+
+struct _EmpathyTpChatroom {
+ EmpathyTpChat parent;
+};
+
+struct _EmpathyTpChatroomClass {
+ EmpathyTpChatClass parent_class;
+};
+
+GType empathy_tp_chatroom_get_type (void) G_GNUC_CONST;
+EmpathyTpChatroom *empathy_tp_chatroom_new (McAccount *account,
+ TpChan *tp_chan);
+gboolean empathy_tp_chatroom_get_invitation (EmpathyTpChatroom *chatroom,
+ EmpathyContact **contact,
+ const gchar **message);
+void empathy_tp_chatroom_accept_invitation (EmpathyTpChatroom *chatroom);
+void empathy_tp_chatroom_set_topic (EmpathyTpChatroom *chatroom,
+ const gchar *topic);
+G_END_DECLS
+
+#endif /* __EMPATHY_TP_CHATROOM_H__ */
diff --git a/gnome-2-22/libempathy/empathy-tp-contact-factory.c b/gnome-2-22/libempathy/empathy-tp-contact-factory.c
new file mode 100644
index 000000000..4e50f6fa8
--- /dev/null
+++ b/gnome-2-22/libempathy/empathy-tp-contact-factory.c
@@ -0,0 +1,1287 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2007-2008 Collabora Ltd.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Authors: Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#include <config.h>
+
+#include <string.h>
+
+#include <telepathy-glib/util.h>
+#include <libtelepathy/tp-conn.h>
+#include <libtelepathy/tp-conn-iface-aliasing-gen.h>
+#include <libtelepathy/tp-conn-iface-presence-gen.h>
+#include <libtelepathy/tp-conn-iface-avatars-gen.h>
+#include <libtelepathy/tp-conn-iface-capabilities-gen.h>
+#include <libmissioncontrol/mission-control.h>
+
+#include "empathy-tp-contact-factory.h"
+#include "empathy-utils.h"
+#include "empathy-debug.h"
+
+#define GET_PRIV(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), \
+ EMPATHY_TYPE_TP_CONTACT_FACTORY, EmpathyTpContactFactoryPriv))
+
+#define DEBUG_DOMAIN "TpContactFactory"
+
+struct _EmpathyTpContactFactoryPriv {
+ MissionControl *mc;
+ McAccount *account;
+
+ TpConn *tp_conn;
+ DBusGProxy *aliasing_iface;
+ DBusGProxy *avatars_iface;
+ DBusGProxy *presence_iface;
+ DBusGProxy *capabilities_iface;
+
+ GList *contacts;
+ guint self_handle;
+};
+
+static void empathy_tp_contact_factory_class_init (EmpathyTpContactFactoryClass *klass);
+static void empathy_tp_contact_factory_init (EmpathyTpContactFactory *factory);
+
+G_DEFINE_TYPE (EmpathyTpContactFactory, empathy_tp_contact_factory, G_TYPE_OBJECT);
+
+enum {
+ PROP_0,
+ PROP_ACCOUNT,
+};
+
+static EmpathyContact *
+tp_contact_factory_find_by_handle (EmpathyTpContactFactory *tp_factory,
+ guint handle)
+{
+ EmpathyTpContactFactoryPriv *priv = GET_PRIV (tp_factory);
+ GList *l;
+
+ for (l = priv->contacts; l; l = l->next) {
+ if (empathy_contact_get_handle (l->data) == handle) {
+ return l->data;
+ }
+ }
+
+ return NULL;
+}
+
+static EmpathyContact *
+tp_contact_factory_find_by_id (EmpathyTpContactFactory *tp_factory,
+ const gchar *id)
+{
+ EmpathyTpContactFactoryPriv *priv = GET_PRIV (tp_factory);
+ GList *l;
+
+ for (l = priv->contacts; l; l = l->next) {
+ if (!tp_strdiff (empathy_contact_get_id (l->data), id)) {
+ return l->data;
+ }
+ }
+
+ return NULL;
+}
+
+static void
+tp_contact_factory_weak_notify (gpointer data,
+ GObject *where_the_object_was)
+{
+ EmpathyTpContactFactoryPriv *priv = GET_PRIV (data);
+
+ empathy_debug (DEBUG_DOMAIN, "Remove finalized contact %p",
+ where_the_object_was);
+
+ priv->contacts = g_list_remove (priv->contacts, where_the_object_was);
+}
+
+static void
+tp_contact_factory_presences_table_foreach (const gchar *state_str,
+ GHashTable *presences_table,
+ EmpathyContact *contact)
+{
+ const GValue *message;
+
+ empathy_contact_set_presence (contact,
+ empathy_presence_from_str (state_str));
+
+ message = g_hash_table_lookup (presences_table, "message");
+ if (message != NULL) {
+ empathy_contact_set_presence_message (contact,
+ g_value_get_string (message));
+ } else {
+ empathy_contact_set_presence_message (contact, NULL);
+ }
+}
+
+static void
+tp_contact_factory_parse_presence_foreach (guint handle,
+ GValueArray *presence_struct,
+ EmpathyTpContactFactory *tp_factory)
+{
+ GHashTable *presences_table;
+ EmpathyContact *contact;
+
+ contact = tp_contact_factory_find_by_handle (tp_factory, handle);
+ if (!contact) {
+ return;
+ }
+
+ presences_table = g_value_get_boxed (g_value_array_get_nth (presence_struct, 1));
+
+ g_hash_table_foreach (presences_table,
+ (GHFunc) tp_contact_factory_presences_table_foreach,
+ contact);
+
+ empathy_debug (DEBUG_DOMAIN, "Changing presence for contact %s (%d) to %s (%d)",
+ empathy_contact_get_id (contact),
+ handle,
+ empathy_contact_get_presence_message (contact),
+ empathy_contact_get_presence (contact));
+}
+
+static void
+tp_contact_factory_get_presence_cb (DBusGProxy *proxy,
+ GHashTable *handle_table,
+ GError *error,
+ gpointer user_data)
+{
+ EmpathyTpContactFactory *tp_factory = user_data;
+
+ if (error) {
+ empathy_debug (DEBUG_DOMAIN, "Error getting presence: %s",
+ error->message);
+ goto OUT;
+ }
+
+ g_hash_table_foreach (handle_table,
+ (GHFunc) tp_contact_factory_parse_presence_foreach,
+ tp_factory);
+
+ g_hash_table_destroy (handle_table);
+OUT:
+ g_object_unref (tp_factory);
+}
+
+static void
+tp_contact_factory_presence_update_cb (DBusGProxy *proxy,
+ GHashTable *handle_table,
+ EmpathyTpContactFactory *tp_factory)
+{
+ g_hash_table_foreach (handle_table,
+ (GHFunc) tp_contact_factory_parse_presence_foreach,
+ tp_factory);
+}
+
+static void
+tp_contact_factory_set_aliases_cb (DBusGProxy *proxy,
+ GError *error,
+ gpointer user_data)
+{
+ EmpathyTpContactFactory *tp_factory = user_data;
+
+ if (error) {
+ empathy_debug (DEBUG_DOMAIN, "Error setting alias: %s",
+ error->message);
+ }
+
+ g_object_unref (tp_factory);
+}
+
+typedef struct {
+ EmpathyTpContactFactory *tp_factory;
+ guint *handles;
+} RequestAliasesData;
+
+static void
+tp_contact_factory_request_aliases_cb (DBusGProxy *proxy,
+ gchar **contact_names,
+ GError *error,
+ gpointer user_data)
+{
+ RequestAliasesData *data = user_data;
+ guint i = 0;
+ gchar **name;
+
+ if (error) {
+ empathy_debug (DEBUG_DOMAIN, "Error requesting aliases: %s",
+ error->message);
+ goto OUT;
+ }
+
+ for (name = contact_names; *name; name++) {
+ EmpathyContact *contact;
+
+ contact = tp_contact_factory_find_by_handle (data->tp_factory,
+ data->handles[i]);
+ if (!contact) {
+ continue;
+ }
+
+ empathy_debug (DEBUG_DOMAIN, "Renaming contact %s (%d) to %s (request cb)",
+ empathy_contact_get_id (contact),
+ data->handles[i], *name);
+
+ empathy_contact_set_name (contact, *name);
+
+ i++;
+ }
+
+ g_strfreev (contact_names);
+OUT:
+ g_object_unref (data->tp_factory);
+ g_free (data->handles);
+ g_slice_free (RequestAliasesData, data);
+}
+
+static void
+tp_contact_factory_aliases_changed_cb (DBusGProxy *proxy,
+ GPtrArray *renamed_handlers,
+ gpointer user_data)
+{
+ EmpathyTpContactFactory *tp_factory = user_data;
+ guint i;
+
+ for (i = 0; renamed_handlers->len > i; i++) {
+ guint handle;
+ const gchar *alias;
+ GValueArray *renamed_struct;
+ EmpathyContact *contact;
+
+ renamed_struct = g_ptr_array_index (renamed_handlers, i);
+ handle = g_value_get_uint(g_value_array_get_nth (renamed_struct, 0));
+ alias = g_value_get_string(g_value_array_get_nth (renamed_struct, 1));
+ contact = tp_contact_factory_find_by_handle (tp_factory, handle);
+
+ if (!contact) {
+ /* We don't know this contact, skip */
+ continue;
+ }
+
+ empathy_debug (DEBUG_DOMAIN, "Renaming contact %s (%d) to %s (changed cb)",
+ empathy_contact_get_id (contact),
+ handle, alias);
+
+ empathy_contact_set_name (contact, alias);
+ }
+}
+
+static void
+tp_contact_factory_set_avatar_cb (DBusGProxy *proxy,
+ gchar *token,
+ GError *error,
+ gpointer user_data)
+{
+ EmpathyTpContactFactory *tp_factory = user_data;
+
+ if (error) {
+ empathy_debug (DEBUG_DOMAIN, "Error setting avatar: %s",
+ error->message);
+ }
+
+ g_object_unref (tp_factory);
+ g_free (token);
+}
+
+static void
+tp_contact_factory_clear_avatar_cb (DBusGProxy *proxy,
+ GError *error,
+ gpointer user_data)
+{
+ EmpathyTpContactFactory *tp_factory = user_data;
+
+ if (error) {
+ empathy_debug (DEBUG_DOMAIN, "Error clearing avatar: %s",
+ error->message);
+ }
+
+ g_object_unref (tp_factory);
+}
+
+static void
+tp_contact_factory_avatar_retrieved_cb (DBusGProxy *proxy,
+ guint handle,
+ gchar *token,
+ GArray *avatar_data,
+ gchar *mime_type,
+ gpointer user_data)
+{
+ EmpathyTpContactFactory *tp_factory = user_data;
+ EmpathyContact *contact;
+ EmpathyAvatar *avatar;
+
+ contact = tp_contact_factory_find_by_handle (tp_factory, handle);
+ if (!contact) {
+ return;
+ }
+
+ empathy_debug (DEBUG_DOMAIN, "Avatar retrieved for contact %s (%d)",
+ empathy_contact_get_id (contact),
+ handle);
+
+ avatar = empathy_avatar_new (avatar_data->data,
+ avatar_data->len,
+ mime_type,
+ token);
+
+ empathy_contact_set_avatar (contact, avatar);
+ empathy_avatar_unref (avatar);
+}
+
+static void
+tp_contact_factory_request_avatars_cb (DBusGProxy *proxy,
+ GError *error,
+ gpointer user_data)
+{
+ EmpathyTpContactFactory *tp_factory = user_data;
+
+ if (error) {
+ empathy_debug (DEBUG_DOMAIN, "Error requesting avatars: %s",
+ error->message);
+ }
+
+ g_object_unref (tp_factory);
+}
+
+static gboolean
+tp_contact_factory_avatar_maybe_update (EmpathyTpContactFactory *tp_factory,
+ guint handle,
+ const gchar *token)
+{
+ EmpathyContact *contact;
+ EmpathyAvatar *avatar;
+
+ contact = tp_contact_factory_find_by_handle (tp_factory, handle);
+ if (!contact) {
+ return TRUE;
+ }
+
+ /* Check if we have an avatar */
+ if (G_STR_EMPTY (token)) {
+ empathy_contact_set_avatar (contact, NULL);
+ return TRUE;
+ }
+
+ /* Check if the avatar changed */
+ avatar = empathy_contact_get_avatar (contact);
+ if (avatar && !tp_strdiff (avatar->token, token)) {
+ return TRUE;
+ }
+
+ /* The avatar changed, search the new one in the cache */
+ avatar = empathy_avatar_new_from_cache (token);
+ if (avatar) {
+ /* Got from cache, use it */
+ empathy_contact_set_avatar (contact, avatar);
+ empathy_avatar_unref (avatar);
+ return TRUE;
+ }
+
+ /* Avatar is not up-to-date, we have to request it. */
+ return FALSE;
+}
+
+typedef struct {
+ EmpathyTpContactFactory *tp_factory;
+ GArray *handles;
+} TokensData;
+
+static void
+tp_contact_factory_avatar_tokens_foreach (gpointer key,
+ gpointer value,
+ gpointer user_data)
+{
+ TokensData *data = user_data;
+ const gchar *token = value;
+ guint handle = GPOINTER_TO_UINT (key);
+
+ if (!tp_contact_factory_avatar_maybe_update (data->tp_factory,
+ handle, token)) {
+ g_array_append_val (data->handles, handle);
+ }
+}
+
+static void
+tp_contact_factory_get_known_avatar_tokens_cb (DBusGProxy *proxy,
+ GHashTable *tokens,
+ GError *error,
+ gpointer user_data)
+{
+ EmpathyTpContactFactory *tp_factory = user_data;
+ EmpathyTpContactFactoryPriv *priv = GET_PRIV (tp_factory);
+ TokensData data;
+
+ if (error) {
+ empathy_debug (DEBUG_DOMAIN,
+ "Error getting known avatars tokens: %s",
+ error->message);
+ goto OUT;
+ }
+
+ data.tp_factory = tp_factory;
+ data.handles = g_array_new (FALSE, FALSE, sizeof (guint));
+ g_hash_table_foreach (tokens,
+ tp_contact_factory_avatar_tokens_foreach,
+ &data);
+
+ empathy_debug (DEBUG_DOMAIN, "Got %d tokens, need to request %d avatars",
+ g_hash_table_size (tokens),
+ data.handles->len);
+
+ /* Request needed avatars */
+ if (data.handles->len > 0) {
+ tp_conn_iface_avatars_request_avatars_async (priv->avatars_iface,
+ data.handles,
+ tp_contact_factory_request_avatars_cb,
+ g_object_ref (tp_factory));
+ }
+
+ g_hash_table_destroy (tokens);
+ g_array_free (data.handles, TRUE);
+OUT:
+ g_object_unref (tp_factory);
+}
+
+static void
+tp_contact_factory_avatar_updated_cb (DBusGProxy *proxy,
+ guint handle,
+ gchar *new_token,
+ gpointer user_data)
+{
+ EmpathyTpContactFactory *tp_factory = user_data;
+ EmpathyTpContactFactoryPriv *priv = GET_PRIV (tp_factory);
+ GArray *handles;
+
+ if (tp_contact_factory_avatar_maybe_update (tp_factory, handle, new_token)) {
+ /* Avatar was cached, nothing to do */
+ return;
+ }
+
+ empathy_debug (DEBUG_DOMAIN, "Need to request avatar for token %s",
+ new_token);
+
+ handles = g_array_new (FALSE, FALSE, sizeof (guint));
+ g_array_append_val (handles, handle);
+
+ tp_conn_iface_avatars_request_avatars_async (priv->avatars_iface,
+ handles,
+ tp_contact_factory_request_avatars_cb,
+ g_object_ref (tp_factory));
+ g_array_free (handles, TRUE);
+}
+
+static void
+tp_contact_factory_update_capabilities (EmpathyTpContactFactory *tp_factory,
+ guint handle,
+ const gchar *channel_type,
+ guint generic,
+ guint specific)
+{
+ EmpathyContact *contact;
+ EmpathyCapabilities capabilities;
+
+ contact = tp_contact_factory_find_by_handle (tp_factory, handle);
+ if (!contact) {
+ return;
+ }
+
+ capabilities = empathy_contact_get_capabilities (contact);
+ capabilities &= ~EMPATHY_CAPABILITIES_UNKNOWN;
+
+ if (strcmp (channel_type, TP_IFACE_CHANNEL_TYPE_STREAMED_MEDIA) == 0) {
+ capabilities &= ~EMPATHY_CAPABILITIES_AUDIO;
+ capabilities &= ~EMPATHY_CAPABILITIES_VIDEO;
+ if (specific & TP_CHANNEL_MEDIA_CAPABILITY_AUDIO) {
+ capabilities |= EMPATHY_CAPABILITIES_AUDIO;
+ }
+ if (specific & TP_CHANNEL_MEDIA_CAPABILITY_VIDEO) {
+ capabilities |= EMPATHY_CAPABILITIES_VIDEO;
+ }
+ }
+
+ empathy_debug (DEBUG_DOMAIN, "Changing capabilities for contact %s (%d) to %d",
+ empathy_contact_get_id (contact),
+ empathy_contact_get_handle (contact),
+ capabilities);
+
+ empathy_contact_set_capabilities (contact, capabilities);
+}
+
+static void
+tp_contact_factory_get_capabilities_cb (DBusGProxy *proxy,
+ GPtrArray *capabilities,
+ GError *error,
+ gpointer user_data)
+{
+ EmpathyTpContactFactory *tp_factory = user_data;
+ guint i;
+
+ if (error) {
+ empathy_debug (DEBUG_DOMAIN, "Error getting capabilities: %s",
+ error->message);
+ /* FIXME Should set the capabilities of the contacts for which this request
+ * originated to NONE */
+ goto OUT;
+ }
+
+ for (i = 0; i < capabilities->len; i++) {
+ GValueArray *values;
+ guint handle;
+ const gchar *channel_type;
+ guint generic;
+ guint specific;
+
+ values = g_ptr_array_index (capabilities, i);
+ handle = g_value_get_uint (g_value_array_get_nth (values, 0));
+ channel_type = g_value_get_string (g_value_array_get_nth (values, 1));
+ generic = g_value_get_uint (g_value_array_get_nth (values, 2));
+ specific = g_value_get_uint (g_value_array_get_nth (values, 3));
+
+ tp_contact_factory_update_capabilities (tp_factory,
+ handle,
+ channel_type,
+ generic,
+ specific);
+
+ g_value_array_free (values);
+ }
+
+ g_ptr_array_free (capabilities, TRUE);
+OUT:
+ g_object_unref (tp_factory);
+}
+
+static void
+tp_contact_factory_capabilities_changed_cb (DBusGProxy *proxy,
+ GPtrArray *capabilities,
+ gpointer user_data)
+{
+ EmpathyTpContactFactory *tp_factory = user_data;
+ guint i;
+
+ for (i = 0; i < capabilities->len; i++) {
+ GValueArray *values;
+ guint handle;
+ const gchar *channel_type;
+ guint generic;
+ guint specific;
+
+ values = g_ptr_array_index (capabilities, i);
+ handle = g_value_get_uint (g_value_array_get_nth (values, 0));
+ channel_type = g_value_get_string (g_value_array_get_nth (values, 1));
+ generic = g_value_get_uint (g_value_array_get_nth (values, 3));
+ specific = g_value_get_uint (g_value_array_get_nth (values, 5));
+
+ tp_contact_factory_update_capabilities (tp_factory,
+ handle,
+ channel_type,
+ generic,
+ specific);
+ }
+}
+
+static void
+tp_contact_factory_request_everything (EmpathyTpContactFactory *tp_factory,
+ GArray *handles)
+{
+ EmpathyTpContactFactoryPriv *priv = GET_PRIV (tp_factory);
+
+ if (priv->presence_iface) {
+ tp_conn_iface_presence_get_presence_async (priv->presence_iface,
+ handles,
+ tp_contact_factory_get_presence_cb,
+ g_object_ref (tp_factory));
+ }
+
+ if (priv->aliasing_iface) {
+ RequestAliasesData *data;
+
+ data = g_slice_new (RequestAliasesData);
+ data->tp_factory = g_object_ref (tp_factory);
+ data->handles = g_memdup (handles->data, handles->len * sizeof (guint));
+
+ tp_conn_iface_aliasing_request_aliases_async (priv->aliasing_iface,
+ handles,
+ tp_contact_factory_request_aliases_cb,
+ data);
+ }
+
+ if (priv->avatars_iface) {
+ tp_conn_iface_avatars_get_known_avatar_tokens_async (priv->avatars_iface,
+ handles,
+ tp_contact_factory_get_known_avatar_tokens_cb,
+ g_object_ref (tp_factory));
+ }
+
+ if (priv->capabilities_iface) {
+ tp_conn_iface_capabilities_get_capabilities_async (priv->capabilities_iface,
+ handles,
+ tp_contact_factory_get_capabilities_cb,
+ g_object_ref (tp_factory));
+ }
+}
+
+typedef struct {
+ EmpathyTpContactFactory *tp_factory;
+ GList *contacts;
+} RequestHandlesData;
+
+static void
+tp_contact_factory_request_handles_cb (DBusGProxy *proxy,
+ GArray *handles,
+ GError *error,
+ gpointer user_data)
+{
+ RequestHandlesData *data = user_data;
+ EmpathyTpContactFactory *tp_factory = data->tp_factory;
+ EmpathyTpContactFactoryPriv *priv = GET_PRIV (tp_factory);
+ GList *l;
+ guint i = 0;
+
+ if (error) {
+ empathy_debug (DEBUG_DOMAIN, "Failed to request handles: %s",
+ error->message);
+ goto OUT;
+ }
+
+ for (l = data->contacts; l; l = l->next) {
+ guint handle;
+
+ handle = g_array_index (handles, guint, i);
+ empathy_contact_set_handle (l->data, handle);
+ if (handle == priv->self_handle) {
+ empathy_contact_set_is_user (l->data, TRUE);
+ }
+
+ i++;
+ }
+
+ tp_contact_factory_request_everything (tp_factory, handles);
+ g_array_free (handles, TRUE);
+
+OUT:
+ g_list_foreach (data->contacts, (GFunc) g_object_unref, NULL);
+ g_list_free (data->contacts);
+ g_object_unref (tp_factory);
+ g_slice_free (RequestHandlesData, data);
+}
+
+static void
+tp_contact_factory_disconnect_contact_foreach (gpointer data,
+ gpointer user_data)
+{
+ EmpathyContact *contact = data;
+
+ empathy_contact_set_presence (contact, MC_PRESENCE_UNSET);
+ empathy_contact_set_handle (contact, 0);
+}
+
+static void
+tp_contact_factory_destroy_cb (TpConn *tp_conn,
+ EmpathyTpContactFactory *tp_factory)
+{
+ EmpathyTpContactFactoryPriv *priv = GET_PRIV (tp_factory);
+
+ empathy_debug (DEBUG_DOMAIN, "Account disconnected or CM crashed");
+
+ g_object_unref (priv->tp_conn);
+ priv->tp_conn = NULL;
+ priv->aliasing_iface = NULL;
+ priv->avatars_iface = NULL;
+ priv->presence_iface = NULL;
+ priv->capabilities_iface = NULL;
+
+ g_list_foreach (priv->contacts,
+ tp_contact_factory_disconnect_contact_foreach,
+ tp_factory);
+}
+
+static void
+tp_contact_factory_disconnect (EmpathyTpContactFactory *tp_factory)
+{
+ EmpathyTpContactFactoryPriv *priv = GET_PRIV (tp_factory);
+
+ if (priv->aliasing_iface) {
+ dbus_g_proxy_disconnect_signal (priv->aliasing_iface,
+ "AliasesChanged",
+ G_CALLBACK (tp_contact_factory_aliases_changed_cb),
+ tp_factory);
+ }
+ if (priv->avatars_iface) {
+ dbus_g_proxy_disconnect_signal (priv->avatars_iface,
+ "AvatarUpdated",
+ G_CALLBACK (tp_contact_factory_avatar_updated_cb),
+ tp_factory);
+ dbus_g_proxy_disconnect_signal (priv->avatars_iface,
+ "AvatarRetrieved",
+ G_CALLBACK (tp_contact_factory_avatar_retrieved_cb),
+ tp_factory);
+ }
+ if (priv->presence_iface) {
+ dbus_g_proxy_disconnect_signal (priv->presence_iface,
+ "PresenceUpdate",
+ G_CALLBACK (tp_contact_factory_presence_update_cb),
+ tp_factory);
+ }
+ if (priv->capabilities_iface) {
+ dbus_g_proxy_disconnect_signal (priv->capabilities_iface,
+ "CapabilitiesChanged",
+ G_CALLBACK (tp_contact_factory_capabilities_changed_cb),
+ tp_factory);
+ }
+ if (priv->tp_conn) {
+ g_signal_handlers_disconnect_by_func (priv->tp_conn,
+ tp_contact_factory_destroy_cb,
+ tp_factory);
+ }
+}
+
+static void
+tp_contact_factory_update (EmpathyTpContactFactory *tp_factory)
+{
+ EmpathyTpContactFactoryPriv *priv = GET_PRIV (tp_factory);
+ TpConn *tp_conn = NULL;
+ RequestHandlesData *data;
+ const gchar **contact_ids;
+ guint i;
+ GList *l;
+ GError *error = NULL;
+
+ if (priv->account) {
+ guint status;
+
+ /* status == 0 means the status is CONNECTED */
+ status = mission_control_get_connection_status (priv->mc,
+ priv->account,
+ NULL);
+ if (status == 0) {
+ tp_conn = mission_control_get_connection (priv->mc,
+ priv->account,
+ NULL);
+ }
+ }
+
+ if (!tp_conn) {
+ /* We are not connected anymore, remove the old connection */
+ tp_contact_factory_disconnect (tp_factory);
+ if (priv->tp_conn) {
+ tp_contact_factory_destroy_cb (priv->tp_conn, tp_factory);
+ }
+ return;
+ }
+ else if (priv->tp_conn) {
+ /* We were connected and we still are connected, nothing
+ * changed so nothing to do. */
+ g_object_unref (tp_conn);
+ return;
+ }
+
+ /* We got a new connection */
+ priv->tp_conn = tp_conn;
+ priv->aliasing_iface = tp_conn_get_interface (priv->tp_conn,
+ TP_IFACE_QUARK_CONNECTION_INTERFACE_ALIASING);
+ priv->avatars_iface = tp_conn_get_interface (priv->tp_conn,
+ TP_IFACE_QUARK_CONNECTION_INTERFACE_AVATARS);
+ priv->presence_iface = tp_conn_get_interface (priv->tp_conn,
+ TP_IFACE_QUARK_CONNECTION_INTERFACE_PRESENCE);
+ priv->capabilities_iface = tp_conn_get_interface (priv->tp_conn,
+ TP_IFACE_QUARK_CONNECTION_INTERFACE_CAPABILITIES);
+
+ /* Connect signals */
+ if (priv->aliasing_iface) {
+ dbus_g_proxy_connect_signal (priv->aliasing_iface,
+ "AliasesChanged",
+ G_CALLBACK (tp_contact_factory_aliases_changed_cb),
+ tp_factory, NULL);
+ }
+ if (priv->avatars_iface) {
+ dbus_g_proxy_connect_signal (priv->avatars_iface,
+ "AvatarUpdated",
+ G_CALLBACK (tp_contact_factory_avatar_updated_cb),
+ tp_factory, NULL);
+ dbus_g_proxy_connect_signal (priv->avatars_iface,
+ "AvatarRetrieved",
+ G_CALLBACK (tp_contact_factory_avatar_retrieved_cb),
+ tp_factory, NULL);
+ }
+ if (priv->presence_iface) {
+ dbus_g_proxy_connect_signal (priv->presence_iface,
+ "PresenceUpdate",
+ G_CALLBACK (tp_contact_factory_presence_update_cb),
+ tp_factory, NULL);
+ }
+ if (priv->capabilities_iface) {
+ dbus_g_proxy_connect_signal (priv->capabilities_iface,
+ "CapabilitiesChanged",
+ G_CALLBACK (tp_contact_factory_capabilities_changed_cb),
+ tp_factory, NULL);
+ }
+ g_signal_connect (priv->tp_conn, "destroy",
+ G_CALLBACK (tp_contact_factory_destroy_cb),
+ tp_factory);
+
+ /* Get our own handle */
+ if (!tp_conn_get_self_handle (DBUS_G_PROXY (priv->tp_conn),
+ &priv->self_handle,
+ &error)) {
+ empathy_debug (DEBUG_DOMAIN, "GetSelfHandle Error: %s",
+ error ? error->message : "No error given");
+ g_clear_error (&error);
+ }
+
+ /* Request new handles for all contacts */
+ if (priv->contacts) {
+ data = g_slice_new (RequestHandlesData);
+ data->tp_factory = g_object_ref (tp_factory);
+ data->contacts = g_list_copy (priv->contacts);
+ g_list_foreach (data->contacts, (GFunc) g_object_ref, NULL);
+
+ i = g_list_length (data->contacts);
+ contact_ids = g_new0 (const gchar*, i + 1);
+ i = 0;
+ for (l = data->contacts; l; l = l->next) {
+ contact_ids[i] = empathy_contact_get_id (l->data);
+ i++;
+ }
+
+ tp_conn_request_handles_async (DBUS_G_PROXY (priv->tp_conn),
+ TP_HANDLE_TYPE_CONTACT,
+ contact_ids,
+ tp_contact_factory_request_handles_cb,
+ data);
+ g_free (contact_ids);
+ }
+}
+
+static void
+tp_contact_factory_status_changed_cb (MissionControl *mc,
+ TpConnectionStatus status,
+ McPresence presence,
+ TpConnectionStatusReason reason,
+ const gchar *unique_name,
+ EmpathyTpContactFactory *tp_factory)
+{
+ EmpathyTpContactFactoryPriv *priv = GET_PRIV (tp_factory);
+ McAccount *account;
+
+ account = mc_account_lookup (unique_name);
+ if (account && empathy_account_equal (account, priv->account)) {
+ tp_contact_factory_update (tp_factory);
+ }
+ g_object_unref (account);
+}
+
+static void
+tp_contact_factory_add_contact (EmpathyTpContactFactory *tp_factory,
+ EmpathyContact *contact)
+{
+ EmpathyTpContactFactoryPriv *priv = GET_PRIV (tp_factory);
+
+ g_object_weak_ref (G_OBJECT (contact),
+ tp_contact_factory_weak_notify,
+ tp_factory);
+ priv->contacts = g_list_prepend (priv->contacts, contact);
+
+ if (!priv->presence_iface) {
+ /* We have no presence iface, set default presence
+ * to available */
+ empathy_contact_set_presence (contact, MC_PRESENCE_AVAILABLE);
+ }
+
+ empathy_debug (DEBUG_DOMAIN, "Contact added: %s (%d)",
+ empathy_contact_get_id (contact),
+ empathy_contact_get_handle (contact));
+}
+
+static void
+tp_contact_factory_hold_handles_cb (DBusGProxy *proxy,
+ GError *error,
+ gpointer userdata)
+{
+ if (error) {
+ empathy_debug (DEBUG_DOMAIN, "Failed to hold handles: %s",
+ error->message);
+ }
+}
+
+EmpathyContact *
+empathy_tp_contact_factory_get_user (EmpathyTpContactFactory *tp_factory)
+{
+ EmpathyTpContactFactoryPriv *priv = GET_PRIV (tp_factory);
+
+ g_return_val_if_fail (EMPATHY_IS_TP_CONTACT_FACTORY (tp_factory), NULL);
+
+ return empathy_tp_contact_factory_get_from_handle (tp_factory,
+ priv->self_handle);
+}
+
+EmpathyContact *
+empathy_tp_contact_factory_get_from_id (EmpathyTpContactFactory *tp_factory,
+ const gchar *id)
+{
+ EmpathyTpContactFactoryPriv *priv = GET_PRIV (tp_factory);
+ EmpathyContact *contact;
+
+ g_return_val_if_fail (EMPATHY_IS_TP_CONTACT_FACTORY (tp_factory), NULL);
+ g_return_val_if_fail (id != NULL, NULL);
+
+ /* Check if the contact already exists */
+ contact = tp_contact_factory_find_by_id (tp_factory, id);
+ if (contact) {
+ return g_object_ref (contact);
+ }
+
+ /* Create new contact */
+ contact = g_object_new (EMPATHY_TYPE_CONTACT,
+ "account", priv->account,
+ "id", id,
+ NULL);
+ tp_contact_factory_add_contact (tp_factory, contact);
+
+ /* If the account is connected, request contact's handle */
+ if (priv->tp_conn) {
+ RequestHandlesData *data;
+ const gchar *contact_ids[] = {id, NULL};
+
+ data = g_slice_new (RequestHandlesData);
+ data->tp_factory = g_object_ref (tp_factory);
+ data->contacts = g_list_prepend (NULL, g_object_ref (contact));
+ tp_conn_request_handles_async (DBUS_G_PROXY (priv->tp_conn),
+ TP_HANDLE_TYPE_CONTACT,
+ contact_ids,
+ tp_contact_factory_request_handles_cb,
+ data);
+ }
+
+ return contact;
+}
+
+EmpathyContact *
+empathy_tp_contact_factory_get_from_handle (EmpathyTpContactFactory *tp_factory,
+ guint handle)
+{
+ EmpathyContact *contact;
+ GArray *handles;
+ GList *contacts;
+
+ g_return_val_if_fail (EMPATHY_IS_TP_CONTACT_FACTORY (tp_factory), NULL);
+
+ handles = g_array_new (FALSE, FALSE, sizeof (guint));
+ g_array_append_val (handles, handle);
+
+ contacts = empathy_tp_contact_factory_get_from_handles (tp_factory, handles);
+ g_array_free (handles, TRUE);
+
+ contact = contacts ? contacts->data : NULL;
+ g_list_free (contacts);
+
+ return contact;
+}
+
+GList *
+empathy_tp_contact_factory_get_from_handles (EmpathyTpContactFactory *tp_factory,
+ GArray *handles)
+{
+ EmpathyTpContactFactoryPriv *priv = GET_PRIV (tp_factory);
+ GList *contacts = NULL;
+ GArray *new_handles;
+ gchar **handles_names;
+ guint i;
+ GError *error = NULL;
+
+ g_return_val_if_fail (EMPATHY_IS_TP_CONTACT_FACTORY (tp_factory), NULL);
+ g_return_val_if_fail (handles != NULL, NULL);
+
+ /* Search all contacts we already have */
+ new_handles = g_array_new (FALSE, FALSE, sizeof (guint));
+ for (i = 0; i < handles->len; i++) {
+ EmpathyContact *contact;
+ guint handle;
+
+ handle = g_array_index (handles, guint, i);
+ if (handle == 0) {
+ continue;
+ }
+
+ contact = tp_contact_factory_find_by_handle (tp_factory, handle);
+ if (contact) {
+ contacts = g_list_prepend (contacts, g_object_ref (contact));
+ } else {
+ g_array_append_val (new_handles, handle);
+ }
+ }
+
+ if (new_handles->len == 0) {
+ g_array_free (new_handles, TRUE);
+ return contacts;
+ }
+
+ /* Get the IDs of all new handles */
+ if (!tp_conn_inspect_handles (DBUS_G_PROXY (priv->tp_conn),
+ TP_HANDLE_TYPE_CONTACT,
+ new_handles,
+ &handles_names,
+ &error)) {
+ empathy_debug (DEBUG_DOMAIN,
+ "Couldn't inspect contact: %s",
+ error ? error->message : "No error given");
+ g_clear_error (&error);
+ g_array_free (new_handles, TRUE);
+ return contacts;
+ }
+
+ /* Create new contacts */
+ for (i = 0; i < new_handles->len; i++) {
+ EmpathyContact *contact;
+ gchar *id;
+ guint handle;
+ gboolean is_user;
+
+ id = handles_names[i];
+ handle = g_array_index (new_handles, guint, i);
+
+ is_user = (handle == priv->self_handle);
+ contact = g_object_new (EMPATHY_TYPE_CONTACT,
+ "account", priv->account,
+ "handle", handle,
+ "id", id,
+ "is-user", is_user,
+ NULL);
+ tp_contact_factory_add_contact (tp_factory, contact);
+ contacts = g_list_prepend (contacts, contact);
+ g_free (id);
+ }
+ g_free (handles_names);
+
+ /* Hold all new handles. */
+ tp_conn_hold_handles_async (DBUS_G_PROXY (priv->tp_conn),
+ TP_HANDLE_TYPE_CONTACT,
+ new_handles,
+ tp_contact_factory_hold_handles_cb,
+ NULL);
+
+ tp_contact_factory_request_everything (tp_factory, new_handles);
+
+ g_array_free (new_handles, TRUE);
+
+ return contacts;
+}
+
+void
+empathy_tp_contact_factory_set_alias (EmpathyTpContactFactory *tp_factory,
+ EmpathyContact *contact,
+ const gchar *alias)
+{
+ EmpathyTpContactFactoryPriv *priv = GET_PRIV (tp_factory);
+ GHashTable *new_alias;
+ guint handle;
+
+ g_return_if_fail (EMPATHY_IS_TP_CONTACT_FACTORY (tp_factory));
+ g_return_if_fail (EMPATHY_IS_CONTACT (contact));
+ g_return_if_fail (empathy_account_equal (empathy_contact_get_account (contact),
+ priv->account));
+
+ if (!priv->aliasing_iface) {
+ return;
+ }
+
+ handle = empathy_contact_get_handle (contact);
+
+ empathy_debug (DEBUG_DOMAIN, "Setting alias for contact %s (%d) to %s",
+ empathy_contact_get_id (contact),
+ handle, alias);
+
+ new_alias = g_hash_table_new_full (g_direct_hash,
+ g_direct_equal,
+ NULL,
+ g_free);
+
+ g_hash_table_insert (new_alias,
+ GUINT_TO_POINTER (handle),
+ g_strdup (alias));
+
+ tp_conn_iface_aliasing_set_aliases_async (priv->aliasing_iface,
+ new_alias,
+ tp_contact_factory_set_aliases_cb,
+ g_object_ref (tp_factory));
+
+ g_hash_table_destroy (new_alias);
+}
+
+void
+empathy_tp_contact_factory_set_avatar (EmpathyTpContactFactory *tp_factory,
+ const gchar *data,
+ gsize size,
+ const gchar *mime_type)
+{
+ EmpathyTpContactFactoryPriv *priv = GET_PRIV (tp_factory);
+
+ g_return_if_fail (EMPATHY_IS_TP_CONTACT_FACTORY (tp_factory));
+
+ if (!priv->avatars_iface) {
+ return;
+ }
+
+ if (data && size > 0 && size < G_MAXUINT) {
+ GArray avatar;
+
+ avatar.data = (gchar*) data;
+ avatar.len = size;
+
+ empathy_debug (DEBUG_DOMAIN, "Setting avatar on account %s",
+ mc_account_get_unique_name (priv->account));
+
+ tp_conn_iface_avatars_set_avatar_async (priv->avatars_iface,
+ &avatar,
+ mime_type,
+ tp_contact_factory_set_avatar_cb,
+ g_object_ref (tp_factory));
+ } else {
+ empathy_debug (DEBUG_DOMAIN, "Clearing avatar on account %s",
+ mc_account_get_unique_name (priv->account));
+ tp_conn_iface_avatars_clear_avatar_async (priv->avatars_iface,
+ tp_contact_factory_clear_avatar_cb,
+ g_object_ref (tp_factory));
+ }
+}
+
+static void
+tp_contact_factory_get_property (GObject *object,
+ guint param_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ EmpathyTpContactFactoryPriv *priv = GET_PRIV (object);
+
+ switch (param_id) {
+ case PROP_ACCOUNT:
+ g_value_set_object (value, priv->account);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
+ break;
+ };
+}
+
+static void
+tp_contact_factory_set_property (GObject *object,
+ guint param_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ EmpathyTpContactFactoryPriv *priv = GET_PRIV (object);
+
+ switch (param_id) {
+ case PROP_ACCOUNT:
+ priv->account = g_object_ref (g_value_get_object (value));
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
+ break;
+ };
+}
+
+static void
+tp_contact_factory_finalize (GObject *object)
+{
+ EmpathyTpContactFactoryPriv *priv = GET_PRIV (object);
+ GList *l;
+
+ empathy_debug (DEBUG_DOMAIN, "Finalized: %p (%s)",
+ object,
+ mc_account_get_normalized_name (priv->account));
+
+ tp_contact_factory_disconnect (EMPATHY_TP_CONTACT_FACTORY (object));
+ dbus_g_proxy_disconnect_signal (DBUS_G_PROXY (priv->mc),
+ "AccountStatusChanged",
+ G_CALLBACK (tp_contact_factory_status_changed_cb),
+ object);
+
+ for (l = priv->contacts; l; l = l->next) {
+ g_object_weak_unref (G_OBJECT (l->data),
+ tp_contact_factory_weak_notify,
+ object);
+ }
+
+ g_list_free (priv->contacts);
+ g_object_unref (priv->mc);
+ g_object_unref (priv->account);
+
+ if (priv->tp_conn) {
+ g_object_unref (priv->tp_conn);
+ }
+
+ G_OBJECT_CLASS (empathy_tp_contact_factory_parent_class)->finalize (object);
+}
+
+static GObject *
+tp_contact_factory_constructor (GType type,
+ guint n_props,
+ GObjectConstructParam *props)
+{
+ GObject *tp_factory;
+
+ tp_factory = G_OBJECT_CLASS (empathy_tp_contact_factory_parent_class)->constructor (type, n_props, props);
+
+ tp_contact_factory_update (EMPATHY_TP_CONTACT_FACTORY (tp_factory));
+
+ return tp_factory;
+}
+
+
+static void
+empathy_tp_contact_factory_class_init (EmpathyTpContactFactoryClass *klass)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+ object_class->finalize = tp_contact_factory_finalize;
+ object_class->constructor = tp_contact_factory_constructor;
+ object_class->get_property = tp_contact_factory_get_property;
+ object_class->set_property = tp_contact_factory_set_property;
+
+ /* Construct-only properties */
+ g_object_class_install_property (object_class,
+ PROP_ACCOUNT,
+ g_param_spec_object ("account",
+ "Factory's Account",
+ "The account associated with the factory",
+ MC_TYPE_ACCOUNT,
+ G_PARAM_READWRITE |
+ G_PARAM_CONSTRUCT_ONLY));
+
+ g_type_class_add_private (object_class, sizeof (EmpathyTpContactFactoryPriv));
+}
+
+static void
+empathy_tp_contact_factory_init (EmpathyTpContactFactory *tp_factory)
+{
+ EmpathyTpContactFactoryPriv *priv = GET_PRIV (tp_factory);
+
+ priv->mc = empathy_mission_control_new ();
+ dbus_g_proxy_connect_signal (DBUS_G_PROXY (priv->mc),
+ "AccountStatusChanged",
+ G_CALLBACK (tp_contact_factory_status_changed_cb),
+ tp_factory, NULL);
+}
+
+EmpathyTpContactFactory *
+empathy_tp_contact_factory_new (McAccount *account)
+{
+ return g_object_new (EMPATHY_TYPE_TP_CONTACT_FACTORY,
+ "account", account,
+ NULL);
+}
+
diff --git a/gnome-2-22/libempathy/empathy-tp-contact-factory.h b/gnome-2-22/libempathy/empathy-tp-contact-factory.h
new file mode 100644
index 000000000..43d30bdbf
--- /dev/null
+++ b/gnome-2-22/libempathy/empathy-tp-contact-factory.h
@@ -0,0 +1,71 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2007 Collabora Ltd.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Authors: Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#ifndef __EMPATHY_TP_CONTACT_FACTORY_H__
+#define __EMPATHY_TP_CONTACT_FACTORY_H__
+
+#include <glib.h>
+
+#include <libmissioncontrol/mc-account.h>
+
+#include "empathy-contact.h"
+
+G_BEGIN_DECLS
+
+#define EMPATHY_TYPE_TP_CONTACT_FACTORY (empathy_tp_contact_factory_get_type ())
+#define EMPATHY_TP_CONTACT_FACTORY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), EMPATHY_TYPE_TP_CONTACT_FACTORY, EmpathyTpContactFactory))
+#define EMPATHY_TP_CONTACT_FACTORY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), EMPATHY_TYPE_TP_CONTACT_FACTORY, EmpathyTpContactFactoryClass))
+#define EMPATHY_IS_TP_CONTACT_FACTORY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), EMPATHY_TYPE_TP_CONTACT_FACTORY))
+#define EMPATHY_IS_TP_CONTACT_FACTORY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), EMPATHY_TYPE_TP_CONTACT_FACTORY))
+#define EMPATHY_TP_CONTACT_FACTORY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), EMPATHY_TYPE_TP_CONTACT_FACTORY, EmpathyTpContactFactoryClass))
+
+typedef struct _EmpathyTpContactFactory EmpathyTpContactFactory;
+typedef struct _EmpathyTpContactFactoryClass EmpathyTpContactFactoryClass;
+typedef struct _EmpathyTpContactFactoryPriv EmpathyTpContactFactoryPriv;
+
+struct _EmpathyTpContactFactory {
+ GObject parent;
+};
+
+struct _EmpathyTpContactFactoryClass {
+ GObjectClass parent_class;
+};
+
+GType empathy_tp_contact_factory_get_type (void) G_GNUC_CONST;
+EmpathyTpContactFactory *empathy_tp_contact_factory_new (McAccount *account);
+EmpathyContact * empathy_tp_contact_factory_get_user (EmpathyTpContactFactory *tp_factory);
+EmpathyContact * empathy_tp_contact_factory_get_from_id (EmpathyTpContactFactory *tp_factory,
+ const gchar *id);
+EmpathyContact * empathy_tp_contact_factory_get_from_handle (EmpathyTpContactFactory *tp_factory,
+ guint handle);
+GList * empathy_tp_contact_factory_get_from_handles (EmpathyTpContactFactory *tp_factory,
+ GArray *handles);
+void empathy_tp_contact_factory_set_alias (EmpathyTpContactFactory *tp_factory,
+ EmpathyContact *contact,
+ const gchar *alias);
+void empathy_tp_contact_factory_set_avatar (EmpathyTpContactFactory *tp_factory,
+ const gchar *data,
+ gsize size,
+ const gchar *mime_type);
+
+G_END_DECLS
+
+#endif /* __EMPATHY_TP_CONTACT_FACTORY_H__ */
diff --git a/gnome-2-22/libempathy/empathy-tp-contact-list.c b/gnome-2-22/libempathy/empathy-tp-contact-list.c
new file mode 100644
index 000000000..b89384487
--- /dev/null
+++ b/gnome-2-22/libempathy/empathy-tp-contact-list.c
@@ -0,0 +1,1019 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2007 Xavier Claessens <xclaesse@gmail.com>
+ * Copyright (C) 2007-2008 Collabora Ltd.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Authors: Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#include <config.h>
+
+#include <string.h>
+#include <glib/gi18n.h>
+
+#include <libtelepathy/tp-helpers.h>
+#include <libtelepathy/tp-conn.h>
+#include <libtelepathy/tp-chan.h>
+#include <libtelepathy/tp-chan-type-contact-list-gen.h>
+#include <telepathy-glib/util.h>
+
+#include "empathy-tp-contact-list.h"
+#include "empathy-contact-list.h"
+#include "empathy-tp-group.h"
+#include "empathy-debug.h"
+#include "empathy-utils.h"
+
+#define GET_PRIV(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), \
+ EMPATHY_TYPE_TP_CONTACT_LIST, EmpathyTpContactListPriv))
+
+#define DEBUG_DOMAIN "TpContactList"
+
+struct _EmpathyTpContactListPriv {
+ TpConn *tp_conn;
+ McAccount *account;
+ MissionControl *mc;
+ const gchar *protocol_group;
+
+ EmpathyTpGroup *publish;
+ EmpathyTpGroup *subscribe;
+ GList *members;
+ GList *pendings;
+
+ GList *groups;
+ GHashTable *contacts_groups;
+};
+
+typedef enum {
+ TP_CONTACT_LIST_TYPE_PUBLISH,
+ TP_CONTACT_LIST_TYPE_SUBSCRIBE,
+ TP_CONTACT_LIST_TYPE_UNKNOWN
+} TpContactListType;
+
+static void empathy_tp_contact_list_class_init (EmpathyTpContactListClass *klass);
+static void empathy_tp_contact_list_init (EmpathyTpContactList *list);
+static void tp_contact_list_iface_init (EmpathyContactListIface *iface);
+
+enum {
+ DESTROY,
+ LAST_SIGNAL
+};
+
+static guint signals[LAST_SIGNAL];
+
+G_DEFINE_TYPE_WITH_CODE (EmpathyTpContactList, empathy_tp_contact_list, G_TYPE_OBJECT,
+ G_IMPLEMENT_INTERFACE (EMPATHY_TYPE_CONTACT_LIST,
+ tp_contact_list_iface_init));
+
+static void
+tp_contact_list_group_destroy_cb (EmpathyTpGroup *group,
+ EmpathyTpContactList *list)
+{
+ EmpathyTpContactListPriv *priv = GET_PRIV (list);
+
+ empathy_debug (DEBUG_DOMAIN, "Group destroyed: %s",
+ empathy_tp_group_get_name (group));
+
+ priv->groups = g_list_remove (priv->groups, group);
+ g_object_unref (group);
+}
+
+static void
+tp_contact_list_group_member_added_cb (EmpathyTpGroup *group,
+ EmpathyContact *contact,
+ EmpathyContact *actor,
+ guint reason,
+ const gchar *message,
+ EmpathyTpContactList *list)
+{
+ EmpathyTpContactListPriv *priv = GET_PRIV (list);
+ const gchar *group_name;
+ GList **groups;
+
+ if (!g_list_find (priv->members, contact)) {
+ return;
+ }
+
+ groups = g_hash_table_lookup (priv->contacts_groups, contact);
+ if (!groups) {
+ groups = g_slice_new0 (GList*);
+ g_hash_table_insert (priv->contacts_groups,
+ g_object_ref (contact),
+ groups);
+ }
+
+ group_name = empathy_tp_group_get_name (group);
+ if (!g_list_find_custom (*groups, group_name, (GCompareFunc) strcmp)) {
+ empathy_debug (DEBUG_DOMAIN, "Contact %s (%d) added to group %s",
+ empathy_contact_get_id (contact),
+ empathy_contact_get_handle (contact),
+ group_name);
+ *groups = g_list_prepend (*groups, g_strdup (group_name));
+ g_signal_emit_by_name (list, "groups-changed", contact,
+ group_name,
+ TRUE);
+ }
+}
+
+static void
+tp_contact_list_group_member_removed_cb (EmpathyTpGroup *group,
+ EmpathyContact *contact,
+ EmpathyContact *actor,
+ guint reason,
+ const gchar *message,
+ EmpathyTpContactList *list)
+{
+ EmpathyTpContactListPriv *priv = GET_PRIV (list);
+ const gchar *group_name;
+ GList **groups, *l;
+
+ if (!g_list_find (priv->members, contact)) {
+ return;
+ }
+
+ groups = g_hash_table_lookup (priv->contacts_groups, contact);
+ if (!groups) {
+ return;
+ }
+
+ group_name = empathy_tp_group_get_name (group);
+ if ((l = g_list_find_custom (*groups, group_name, (GCompareFunc) strcmp))) {
+ empathy_debug (DEBUG_DOMAIN, "Contact %s (%d) removed from group %s",
+ empathy_contact_get_id (contact),
+ empathy_contact_get_handle (contact),
+ group_name);
+ *groups = g_list_delete_link (*groups, l);
+ g_signal_emit_by_name (list, "groups-changed", contact,
+ group_name,
+ FALSE);
+ }
+}
+
+static EmpathyTpGroup *
+tp_contact_list_find_group (EmpathyTpContactList *list,
+ const gchar *group)
+{
+ EmpathyTpContactListPriv *priv = GET_PRIV (list);
+ GList *l;
+
+ for (l = priv->groups; l; l = l->next) {
+ if (!tp_strdiff (group, empathy_tp_group_get_name (l->data))) {
+ return l->data;
+ }
+ }
+ return NULL;
+}
+
+static TpContactListType
+tp_contact_list_get_type (EmpathyTpContactList *list,
+ EmpathyTpGroup *group)
+{
+ const gchar *name;
+
+ name = empathy_tp_group_get_name (group);
+ if (!tp_strdiff (name, "subscribe")) {
+ return TP_CONTACT_LIST_TYPE_SUBSCRIBE;
+ } else if (!tp_strdiff (name, "publish")) {
+ return TP_CONTACT_LIST_TYPE_PUBLISH;
+ }
+
+ return TP_CONTACT_LIST_TYPE_UNKNOWN;
+}
+
+static void
+tp_contact_list_add_member (EmpathyTpContactList *list,
+ EmpathyContact *contact,
+ EmpathyContact *actor,
+ guint reason,
+ const gchar *message)
+{
+ EmpathyTpContactListPriv *priv = GET_PRIV (list);
+ GList *l;
+
+ /* Add to the list and emit signal */
+ priv->members = g_list_prepend (priv->members, g_object_ref (contact));
+ g_signal_emit_by_name (list, "members-changed",
+ contact, actor, reason, message,
+ TRUE);
+
+ /* This contact is now member, implicitly accept pending. */
+ if (g_list_find (priv->pendings, contact)) {
+ empathy_tp_group_add_member (priv->publish, contact, "");
+ }
+
+ /* Update groups of the contact */
+ for (l = priv->groups; l; l = l->next) {
+ if (empathy_tp_group_is_member (l->data, contact)) {
+ tp_contact_list_group_member_added_cb (l->data, contact,
+ NULL, 0, NULL,
+ list);
+ }
+ }
+}
+
+static void
+tp_contact_list_added_cb (EmpathyTpGroup *group,
+ EmpathyContact *contact,
+ EmpathyContact *actor,
+ guint reason,
+ const gchar *message,
+ EmpathyTpContactList *list)
+{
+ EmpathyTpContactListPriv *priv = GET_PRIV (list);
+ TpContactListType list_type;
+
+ list_type = tp_contact_list_get_type (list, group);
+ empathy_debug (DEBUG_DOMAIN, "Contact %s (%d) added to list type %d",
+ empathy_contact_get_id (contact),
+ empathy_contact_get_handle (contact),
+ list_type);
+
+ /* We now get the presence of that contact, add it to members */
+ if (list_type == TP_CONTACT_LIST_TYPE_SUBSCRIBE &&
+ !g_list_find (priv->members, contact)) {
+ tp_contact_list_add_member (list, contact, actor, reason, message);
+ }
+
+ /* We now send our presence to that contact, remove it from pendings */
+ if (list_type == TP_CONTACT_LIST_TYPE_PUBLISH &&
+ g_list_find (priv->pendings, contact)) {
+ g_signal_emit_by_name (list, "pendings-changed",
+ contact, actor, reason, message,
+ FALSE);
+ priv->pendings = g_list_remove (priv->pendings, contact);
+ g_object_unref (contact);
+ }
+}
+
+static void
+tp_contact_list_removed_cb (EmpathyTpGroup *group,
+ EmpathyContact *contact,
+ EmpathyContact *actor,
+ guint reason,
+ const gchar *message,
+ EmpathyTpContactList *list)
+{
+ EmpathyTpContactListPriv *priv = GET_PRIV (list);
+ TpContactListType list_type;
+
+ list_type = tp_contact_list_get_type (list, group);
+ empathy_debug (DEBUG_DOMAIN, "Contact %s (%d) removed from list type %d",
+ empathy_contact_get_id (contact),
+ empathy_contact_get_handle (contact),
+ list_type);
+
+ /* This contact refuses to send us his presence, remove from members. */
+ if (list_type == TP_CONTACT_LIST_TYPE_SUBSCRIBE &&
+ g_list_find (priv->members, contact)) {
+ g_signal_emit_by_name (list, "members-changed",
+ contact, actor, reason, message,
+ FALSE);
+ priv->members = g_list_remove (priv->members, contact);
+ g_object_unref (contact);
+ }
+
+ /* We refuse to send our presence to that contact, remove from pendings */
+ if (list_type == TP_CONTACT_LIST_TYPE_PUBLISH &&
+ g_list_find (priv->pendings, contact)) {
+ g_signal_emit_by_name (list, "pendings-changed",
+ contact, actor, reason, message,
+ FALSE);
+ priv->pendings = g_list_remove (priv->pendings, contact);
+ g_object_unref (contact);
+ }
+}
+
+static void
+tp_contact_list_pending_cb (EmpathyTpGroup *group,
+ EmpathyContact *contact,
+ EmpathyContact *actor,
+ guint reason,
+ const gchar *message,
+ EmpathyTpContactList *list)
+{
+ EmpathyTpContactListPriv *priv = GET_PRIV (list);
+ TpContactListType list_type;
+
+ list_type = tp_contact_list_get_type (list, group);
+ empathy_debug (DEBUG_DOMAIN, "Contact %s (%d) pending in list type %d",
+ empathy_contact_get_id (contact),
+ empathy_contact_get_handle (contact),
+ list_type);
+
+ /* We want this contact in our contact list but we don't get its
+ * presence yet. Add to members anyway. */
+ if (list_type == TP_CONTACT_LIST_TYPE_SUBSCRIBE &&
+ !g_list_find (priv->members, contact)) {
+ tp_contact_list_add_member (list, contact, actor, reason, message);
+ }
+
+ /* This contact wants our presence, auto accept if he is member,
+ * otherwise he is pending. */
+ if (list_type == TP_CONTACT_LIST_TYPE_PUBLISH &&
+ !g_list_find (priv->pendings, contact)) {
+ if (g_list_find (priv->members, contact)) {
+ empathy_tp_group_add_member (priv->publish, contact, "");
+ } else {
+ priv->pendings = g_list_prepend (priv->pendings,
+ g_object_ref (contact));
+ g_signal_emit_by_name (list, "pendings-changed",
+ contact, actor, reason, message,
+ TRUE);
+ }
+ }
+}
+
+static void
+tp_contact_list_newchannel_cb (DBusGProxy *proxy,
+ const gchar *object_path,
+ const gchar *channel_type,
+ TpHandleType handle_type,
+ guint channel_handle,
+ gboolean suppress_handler,
+ EmpathyTpContactList *list)
+{
+ EmpathyTpContactListPriv *priv = GET_PRIV (list);
+ EmpathyTpGroup *group;
+ TpChan *new_chan;
+ const gchar *bus_name;
+
+ if (strcmp (channel_type, TP_IFACE_CHANNEL_TYPE_CONTACT_LIST) != 0 ||
+ suppress_handler) {
+ return;
+ }
+
+ bus_name = dbus_g_proxy_get_bus_name (DBUS_G_PROXY (priv->tp_conn));
+ new_chan = tp_chan_new (tp_get_bus (),
+ bus_name,
+ object_path,
+ channel_type,
+ handle_type,
+ channel_handle);
+ g_return_if_fail (TELEPATHY_IS_CHAN (new_chan));
+
+ group = empathy_tp_group_new (priv->account, new_chan);
+ g_object_unref (new_chan);
+
+ if (handle_type == TP_HANDLE_TYPE_LIST) {
+ TpContactListType list_type;
+ GList *contacts, *l;
+
+ list_type = tp_contact_list_get_type (list, group);
+ if (list_type == TP_CONTACT_LIST_TYPE_PUBLISH && !priv->publish) {
+ priv->publish = group;
+
+ /* Publish is the list of contacts to who we send our
+ * presence. Makes no sense to be in remote-pending */
+ g_signal_connect (group, "local-pending",
+ G_CALLBACK (tp_contact_list_pending_cb),
+ list);
+
+ contacts = empathy_tp_group_get_local_pendings (group);
+ for (l = contacts; l; l = l->next) {
+ EmpathyPendingInfo *info = l->data;
+
+ tp_contact_list_pending_cb (group,
+ info->member,
+ info->actor,
+ 0,
+ info->message,
+ list);
+ empathy_pending_info_free (info);
+ }
+ g_list_free (contacts);
+ }
+ else if (list_type == TP_CONTACT_LIST_TYPE_SUBSCRIBE && !priv->subscribe) {
+ priv->subscribe = group;
+
+ /* Subscribe is the list of contacts from who we
+ * receive presence. Makes no sense to be in
+ * local-pending */
+ g_signal_connect (group, "remote-pending",
+ G_CALLBACK (tp_contact_list_pending_cb),
+ list);
+
+ contacts = empathy_tp_group_get_remote_pendings (group);
+ for (l = contacts; l; l = l->next) {
+ tp_contact_list_pending_cb (group,
+ l->data,
+ NULL, 0,
+ NULL, list);
+ g_object_unref (l->data);
+ }
+ g_list_free (contacts);
+ } else {
+ empathy_debug (DEBUG_DOMAIN,
+ "Type of contact list channel unknown "
+ "or aleady have that list: %s",
+ empathy_tp_group_get_name (group));
+ g_object_unref (group);
+ return;
+ }
+ empathy_debug (DEBUG_DOMAIN,
+ "New contact list channel of type: %d",
+ list_type);
+
+ g_signal_connect (group, "member-added",
+ G_CALLBACK (tp_contact_list_added_cb),
+ list);
+ g_signal_connect (group, "member-removed",
+ G_CALLBACK (tp_contact_list_removed_cb),
+ list);
+
+ contacts = empathy_tp_group_get_members (group);
+ for (l = contacts; l; l = l->next) {
+ tp_contact_list_added_cb (group,
+ l->data,
+ NULL, 0, NULL,
+ list);
+ g_object_unref (l->data);
+ }
+ g_list_free (contacts);
+ }
+ else if (handle_type == TP_HANDLE_TYPE_GROUP) {
+ const gchar *group_name;
+ GList *contacts, *l;
+
+ /* Check if already exists */
+ group_name = empathy_tp_group_get_name (group);
+ if (tp_contact_list_find_group (list, group_name)) {
+ g_object_unref (group);
+ return;
+ }
+
+ empathy_debug (DEBUG_DOMAIN, "New server-side group channel: %s",
+ group_name);
+
+ priv->groups = g_list_prepend (priv->groups, group);
+
+ g_signal_connect (group, "member-added",
+ G_CALLBACK (tp_contact_list_group_member_added_cb),
+ list);
+ g_signal_connect (group, "member-removed",
+ G_CALLBACK (tp_contact_list_group_member_removed_cb),
+ list);
+ g_signal_connect (group, "destroy",
+ G_CALLBACK (tp_contact_list_group_destroy_cb),
+ list);
+
+ contacts = empathy_tp_group_get_members (group);
+ for (l = contacts; l; l = l->next) {
+ tp_contact_list_group_member_added_cb (group, l->data,
+ NULL, 0, NULL,
+ list);
+ g_object_unref (l->data);
+ }
+ g_list_free (contacts);
+ } else {
+ empathy_debug (DEBUG_DOMAIN,
+ "Unknown handle type (%d) for contact list channel",
+ handle_type);
+ g_object_unref (group);
+ }
+}
+
+static void
+tp_contact_list_destroy_cb (TpConn *tp_conn,
+ EmpathyTpContactList *list)
+{
+ EmpathyTpContactListPriv *priv = GET_PRIV (list);
+ GList *l;
+
+ empathy_debug (DEBUG_DOMAIN, "Account disconnected or CM crashed");
+
+ /* DBus proxie should NOT be used anymore */
+ g_object_unref (priv->tp_conn);
+ priv->tp_conn = NULL;
+
+ /* Remove all contacts */
+ for (l = priv->members; l; l = l->next) {
+ g_signal_emit_by_name (list, "members-changed", l->data,
+ NULL, 0, NULL,
+ FALSE);
+ g_object_unref (l->data);
+ }
+ for (l = priv->pendings; l; l = l->next) {
+ g_signal_emit_by_name (list, "pendings-changed", l->data,
+ NULL, 0, NULL,
+ FALSE);
+ g_object_unref (l->data);
+ }
+ g_list_free (priv->members);
+ g_list_free (priv->pendings);
+ priv->members = NULL;
+ priv->pendings = NULL;
+
+ /* Tell the world to not use us anymore */
+ g_signal_emit (list, signals[DESTROY], 0);
+}
+
+static void
+tp_contact_list_disconnect (EmpathyTpContactList *list)
+{
+ EmpathyTpContactListPriv *priv = GET_PRIV (list);
+
+ if (priv->tp_conn) {
+ g_signal_handlers_disconnect_by_func (priv->tp_conn,
+ tp_contact_list_destroy_cb,
+ list);
+ dbus_g_proxy_disconnect_signal (DBUS_G_PROXY (priv->tp_conn), "NewChannel",
+ G_CALLBACK (tp_contact_list_newchannel_cb),
+ list);
+ }
+}
+
+static void
+tp_contact_list_status_changed_cb (MissionControl *mc,
+ TpConnectionStatus status,
+ McPresence presence,
+ TpConnectionStatusReason reason,
+ const gchar *unique_name,
+ EmpathyTpContactList *list)
+{
+ EmpathyTpContactListPriv *priv = GET_PRIV (list);
+ McAccount *account;
+
+ account = mc_account_lookup (unique_name);
+ if (status != TP_CONNECTION_STATUS_CONNECTED &&
+ empathy_account_equal (account, priv->account)) {
+ /* We are disconnected */
+ tp_contact_list_disconnect (list);
+ tp_contact_list_destroy_cb (priv->tp_conn, list);
+ }
+
+ g_object_unref (account);
+}
+
+static void
+tp_contact_list_group_list_free (GList **groups)
+{
+ g_list_foreach (*groups, (GFunc) g_free, NULL);
+ g_list_free (*groups);
+ g_slice_free (GList*, groups);
+}
+
+static void
+tp_contact_list_finalize (GObject *object)
+{
+ EmpathyTpContactListPriv *priv;
+ EmpathyTpContactList *list;
+
+ list = EMPATHY_TP_CONTACT_LIST (object);
+ priv = GET_PRIV (list);
+
+ empathy_debug (DEBUG_DOMAIN, "finalize: %p", object);
+
+ tp_contact_list_disconnect (list);
+
+ if (priv->mc) {
+ dbus_g_proxy_disconnect_signal (DBUS_G_PROXY (priv->mc),
+ "AccountStatusChanged",
+ G_CALLBACK (tp_contact_list_status_changed_cb),
+ list);
+ g_object_unref (priv->mc);
+ }
+
+ if (priv->subscribe) {
+ g_object_unref (priv->subscribe);
+ }
+ if (priv->publish) {
+ g_object_unref (priv->publish);
+ }
+ if (priv->account) {
+ g_object_unref (priv->account);
+ }
+ if (priv->tp_conn) {
+ g_object_unref (priv->tp_conn);
+ }
+
+ g_hash_table_destroy (priv->contacts_groups);
+ g_list_foreach (priv->groups, (GFunc) g_object_unref, NULL);
+ g_list_free (priv->groups);
+ g_list_foreach (priv->members, (GFunc) g_object_unref, NULL);
+ g_list_free (priv->members);
+ g_list_foreach (priv->pendings, (GFunc) g_object_unref, NULL);
+ g_list_free (priv->pendings);
+
+ G_OBJECT_CLASS (empathy_tp_contact_list_parent_class)->finalize (object);
+}
+
+static void
+empathy_tp_contact_list_class_init (EmpathyTpContactListClass *klass)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+ object_class->finalize = tp_contact_list_finalize;
+
+ signals[DESTROY] =
+ g_signal_new ("destroy",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST,
+ 0,
+ NULL, NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE,
+ 0);
+
+ g_type_class_add_private (object_class, sizeof (EmpathyTpContactListPriv));
+}
+
+static void
+empathy_tp_contact_list_init (EmpathyTpContactList *list)
+{
+}
+
+static void
+tp_contact_list_setup (EmpathyTpContactList *list)
+{
+ EmpathyTpContactListPriv *priv = GET_PRIV (list);
+ GPtrArray *channels;
+ guint i;
+ GError *error = NULL;
+
+ g_return_if_fail (EMPATHY_IS_TP_CONTACT_LIST (list));
+
+ /* Get existing channels */
+ if (!tp_conn_list_channels (DBUS_G_PROXY (priv->tp_conn),
+ &channels,
+ &error)) {
+ empathy_debug (DEBUG_DOMAIN,
+ "Failed to get list of open channels: %s",
+ error ? error->message : "No error given");
+ g_clear_error (&error);
+ return;
+ }
+
+ for (i = 0; i < channels->len; i++) {
+ GValueArray *chan_struct;
+ const gchar *object_path;
+ const gchar *chan_iface;
+ TpHandleType handle_type;
+ guint handle;
+
+ chan_struct = g_ptr_array_index (channels, i);
+ object_path = g_value_get_boxed (g_value_array_get_nth (chan_struct, 0));
+ chan_iface = g_value_get_string (g_value_array_get_nth (chan_struct, 1));
+ handle_type = g_value_get_uint (g_value_array_get_nth (chan_struct, 2));
+ handle = g_value_get_uint (g_value_array_get_nth (chan_struct, 3));
+
+ tp_contact_list_newchannel_cb (DBUS_G_PROXY (priv->tp_conn),
+ object_path, chan_iface,
+ handle_type, handle,
+ FALSE,
+ list);
+
+ g_value_array_free (chan_struct);
+ }
+ g_ptr_array_free (channels, TRUE);
+}
+
+EmpathyTpContactList *
+empathy_tp_contact_list_new (McAccount *account)
+{
+ EmpathyTpContactListPriv *priv;
+ EmpathyTpContactList *list;
+ MissionControl *mc;
+ TpConn *tp_conn = NULL;
+ McProfile *profile;
+ const gchar *protocol_name;
+
+ g_return_val_if_fail (MC_IS_ACCOUNT (account), NULL);
+
+ mc = empathy_mission_control_new ();
+
+ /* status==0 means CONNECTED */
+ if (mission_control_get_connection_status (mc, account, NULL) == 0) {
+ tp_conn = mission_control_get_connection (mc, account, NULL);
+ }
+ if (!tp_conn) {
+ /* The account is not connected, nothing to do. */
+ g_object_unref (mc);
+ return NULL;
+ }
+
+ list = g_object_new (EMPATHY_TYPE_TP_CONTACT_LIST, NULL);
+ priv = GET_PRIV (list);
+
+ priv->tp_conn = tp_conn;
+ priv->account = g_object_ref (account);
+ priv->mc = mc;
+ priv->contacts_groups = g_hash_table_new_full (empathy_contact_hash,
+ empathy_contact_equal,
+ (GDestroyNotify) g_object_unref,
+ (GDestroyNotify) tp_contact_list_group_list_free);
+
+ /* Check for protocols that does not support contact groups. We can
+ * put all contacts into a special group in that case.
+ * FIXME: Default group should be an information in the profile */
+ profile = mc_account_get_profile (account);
+ protocol_name = mc_profile_get_protocol_name (profile);
+ if (strcmp (protocol_name, "local-xmpp") == 0) {
+ priv->protocol_group = _("People nearby");
+ }
+ g_object_unref (profile);
+
+ /* Connect signals */
+ dbus_g_proxy_connect_signal (DBUS_G_PROXY (priv->mc),
+ "AccountStatusChanged",
+ G_CALLBACK (tp_contact_list_status_changed_cb),
+ list, NULL);
+ dbus_g_proxy_connect_signal (DBUS_G_PROXY (priv->tp_conn), "NewChannel",
+ G_CALLBACK (tp_contact_list_newchannel_cb),
+ list, NULL);
+ g_signal_connect (priv->tp_conn, "destroy",
+ G_CALLBACK (tp_contact_list_destroy_cb),
+ list);
+
+ tp_contact_list_setup (list);
+
+ return list;
+}
+
+McAccount *
+empathy_tp_contact_list_get_account (EmpathyTpContactList *list)
+{
+ EmpathyTpContactListPriv *priv;
+
+ g_return_val_if_fail (EMPATHY_IS_TP_CONTACT_LIST (list), NULL);
+
+ priv = GET_PRIV (list);
+
+ return priv->account;
+}
+
+static void
+tp_contact_list_add (EmpathyContactList *list,
+ EmpathyContact *contact,
+ const gchar *message)
+{
+ EmpathyTpContactListPriv *priv = GET_PRIV (list);
+
+ g_return_if_fail (EMPATHY_IS_TP_CONTACT_LIST (list));
+
+ empathy_tp_group_add_member (priv->subscribe, contact, message);
+ if (g_list_find (priv->pendings, contact)) {
+ empathy_tp_group_add_member (priv->publish, contact, message);
+ }
+}
+
+static void
+tp_contact_list_remove (EmpathyContactList *list,
+ EmpathyContact *contact,
+ const gchar *message)
+{
+ EmpathyTpContactListPriv *priv = GET_PRIV (list);
+
+ g_return_if_fail (EMPATHY_IS_TP_CONTACT_LIST (list));
+
+ empathy_tp_group_remove_member (priv->subscribe, contact, message);
+ empathy_tp_group_remove_member (priv->publish, contact, message);
+}
+
+static GList *
+tp_contact_list_get_members (EmpathyContactList *list)
+{
+ EmpathyTpContactListPriv *priv = GET_PRIV (list);
+
+ g_return_val_if_fail (EMPATHY_IS_TP_CONTACT_LIST (list), NULL);
+
+ g_list_foreach (priv->members, (GFunc) g_object_ref, NULL);
+ return g_list_copy (priv->members);
+}
+
+static GList *
+tp_contact_list_get_pendings (EmpathyContactList *list)
+{
+ EmpathyTpContactListPriv *priv = GET_PRIV (list);
+
+ g_return_val_if_fail (EMPATHY_IS_TP_CONTACT_LIST (list), NULL);
+
+ g_list_foreach (priv->pendings, (GFunc) g_object_ref, NULL);
+ return g_list_copy (priv->pendings);
+}
+
+static GList *
+tp_contact_list_get_all_groups (EmpathyContactList *list)
+{
+ EmpathyTpContactListPriv *priv = GET_PRIV (list);
+ GList *groups = NULL, *l;
+
+ g_return_val_if_fail (EMPATHY_IS_TP_CONTACT_LIST (list), NULL);
+
+ if (priv->protocol_group) {
+ groups = g_list_prepend (groups, g_strdup (priv->protocol_group));
+ }
+
+ for (l = priv->groups; l; l = l->next) {
+ const gchar *name;
+
+ name = empathy_tp_group_get_name (l->data);
+ groups = g_list_prepend (groups, g_strdup (name));
+ }
+
+ return groups;
+}
+
+static GList *
+tp_contact_list_get_groups (EmpathyContactList *list,
+ EmpathyContact *contact)
+{
+ EmpathyTpContactListPriv *priv = GET_PRIV (list);
+ GList **groups;
+ GList *ret = NULL, *l;
+
+ g_return_val_if_fail (EMPATHY_IS_TP_CONTACT_LIST (list), NULL);
+
+ if (priv->protocol_group) {
+ ret = g_list_prepend (ret, g_strdup (priv->protocol_group));
+ }
+
+ groups = g_hash_table_lookup (priv->contacts_groups, contact);
+ if (!groups) {
+ return ret;
+ }
+
+ for (l = *groups; l; l = l->next) {
+ ret = g_list_prepend (ret, g_strdup (l->data));
+ }
+
+
+ return ret;
+}
+
+static EmpathyTpGroup *
+tp_contact_list_get_group (EmpathyTpContactList *list,
+ const gchar *group)
+{
+ EmpathyTpContactListPriv *priv = GET_PRIV (list);
+ EmpathyTpGroup *tp_group;
+ gchar *object_path;
+ guint handle;
+ GArray *handles;
+ const char *names[2] = {group, NULL};
+ GError *error = NULL;
+
+ tp_group = tp_contact_list_find_group (list, group);
+ if (tp_group) {
+ return tp_group;
+ }
+
+ empathy_debug (DEBUG_DOMAIN, "creating new group: %s", group);
+
+ if (!tp_conn_request_handles (DBUS_G_PROXY (priv->tp_conn),
+ TP_HANDLE_TYPE_GROUP,
+ names,
+ &handles,
+ &error)) {
+ empathy_debug (DEBUG_DOMAIN,
+ "Failed to RequestHandles: %s",
+ error ? error->message : "No error given");
+ g_clear_error (&error);
+ return NULL;
+ }
+ handle = g_array_index (handles, guint, 0);
+ g_array_free (handles, TRUE);
+
+ if (!tp_conn_request_channel (DBUS_G_PROXY (priv->tp_conn),
+ TP_IFACE_CHANNEL_TYPE_CONTACT_LIST,
+ TP_HANDLE_TYPE_GROUP,
+ handle,
+ TRUE,
+ &object_path,
+ &error)) {
+ empathy_debug (DEBUG_DOMAIN,
+ "Failed to RequestChannel: %s",
+ error ? error->message : "No error given");
+ g_clear_error (&error);
+ return NULL;
+ }
+
+ tp_contact_list_newchannel_cb (DBUS_G_PROXY (priv->tp_conn),
+ object_path,
+ TP_IFACE_CHANNEL_TYPE_CONTACT_LIST,
+ TP_HANDLE_TYPE_GROUP,
+ handle, FALSE,
+ list);
+ g_free (object_path);
+
+ return tp_contact_list_find_group (list, group);
+}
+
+static void
+tp_contact_list_add_to_group (EmpathyContactList *list,
+ EmpathyContact *contact,
+ const gchar *group)
+{
+ EmpathyTpGroup *tp_group;
+
+ g_return_if_fail (EMPATHY_IS_TP_CONTACT_LIST (list));
+
+ tp_group = tp_contact_list_get_group (EMPATHY_TP_CONTACT_LIST (list),
+ group);
+
+ empathy_tp_group_add_member (tp_group, contact, "");
+}
+
+static void
+tp_contact_list_remove_from_group (EmpathyContactList *list,
+ EmpathyContact *contact,
+ const gchar *group)
+{
+ EmpathyTpGroup *tp_group;
+
+ g_return_if_fail (EMPATHY_IS_TP_CONTACT_LIST (list));
+
+ tp_group = tp_contact_list_find_group (EMPATHY_TP_CONTACT_LIST (list),
+ group);
+
+ if (tp_group) {
+ empathy_tp_group_remove_member (tp_group, contact, "");
+ }
+}
+
+static void
+tp_contact_list_rename_group (EmpathyContactList *list,
+ const gchar *old_group,
+ const gchar *new_group)
+{
+ EmpathyTpGroup *tp_group;
+ GList *members;
+
+ g_return_if_fail (EMPATHY_IS_TP_CONTACT_LIST (list));
+
+ tp_group = tp_contact_list_find_group (EMPATHY_TP_CONTACT_LIST (list),
+ old_group);
+ if (!tp_group) {
+ return;
+ }
+
+ empathy_debug (DEBUG_DOMAIN, "rename group %s to %s", old_group, new_group);
+
+ /* Remove all members from the old group */
+ members = empathy_tp_group_get_members (tp_group);
+ empathy_tp_group_remove_members (tp_group, members, "");
+ empathy_tp_group_close (tp_group);
+
+ /* Add all members to the new group */
+ tp_group = tp_contact_list_get_group (EMPATHY_TP_CONTACT_LIST (list),
+ new_group);
+ empathy_tp_group_add_members (tp_group, members, "");
+
+ g_list_foreach (members, (GFunc) g_object_unref, NULL);
+ g_list_free (members);
+}
+
+static void
+tp_contact_list_remove_group (EmpathyContactList *list,
+ const gchar *group)
+{
+ EmpathyTpGroup *tp_group;
+ GList *members;
+
+ g_return_if_fail (EMPATHY_IS_TP_CONTACT_LIST (list));
+
+ tp_group = tp_contact_list_find_group (EMPATHY_TP_CONTACT_LIST (list),
+ group);
+
+ if (!tp_group) {
+ return;
+ }
+
+ empathy_debug (DEBUG_DOMAIN, "remove group %s", group);
+
+ /* Remove all members of the group */
+ members = empathy_tp_group_get_members (tp_group);
+ empathy_tp_group_remove_members (tp_group, members, "");
+ empathy_tp_group_close (tp_group);
+
+ g_list_foreach (members, (GFunc) g_object_unref, NULL);
+ g_list_free (members);
+}
+
+static void
+tp_contact_list_iface_init (EmpathyContactListIface *iface)
+{
+ iface->add = tp_contact_list_add;
+ iface->remove = tp_contact_list_remove;
+ iface->get_members = tp_contact_list_get_members;
+ iface->get_pendings = tp_contact_list_get_pendings;
+ iface->get_all_groups = tp_contact_list_get_all_groups;
+ iface->get_groups = tp_contact_list_get_groups;
+ iface->add_to_group = tp_contact_list_add_to_group;
+ iface->remove_from_group = tp_contact_list_remove_from_group;
+ iface->rename_group = tp_contact_list_rename_group;
+ iface->remove_group = tp_contact_list_remove_group;
+}
+
diff --git a/gnome-2-22/libempathy/empathy-tp-contact-list.h b/gnome-2-22/libempathy/empathy-tp-contact-list.h
new file mode 100644
index 000000000..382446ebc
--- /dev/null
+++ b/gnome-2-22/libempathy/empathy-tp-contact-list.h
@@ -0,0 +1,58 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2007 Xavier Claessens <xclaesse@gmail.com>
+ * Copyright (C) 2007 Collabora Ltd.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Authors: Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#ifndef __EMPATHY_TP_CONTACT_LIST_H__
+#define __EMPATHY_TP_CONTACT_LIST_H__
+
+#include <glib.h>
+#include <libmissioncontrol/mc-account.h>
+
+#include "empathy-contact.h"
+
+G_BEGIN_DECLS
+
+#define EMPATHY_TYPE_TP_CONTACT_LIST (empathy_tp_contact_list_get_type ())
+#define EMPATHY_TP_CONTACT_LIST(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), EMPATHY_TYPE_CONTACT_LIST, EmpathyTpContactList))
+#define EMPATHY_TP_CONTACT_LIST_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), EMPATHY_TYPE_CONTACT_LIST, EmpathyTpContactListClass))
+#define EMPATHY_IS_TP_CONTACT_LIST(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), EMPATHY_TYPE_CONTACT_LIST))
+#define EMPATHY_IS_TP_CONTACT_LIST_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), EMPATHY_TYPE_CONTACT_LIST))
+#define EMPATHY_TP_CONTACT_LIST_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), EMPATHY_TYPE_CONTACT_LIST, EmpathyTpContactListClass))
+
+typedef struct _EmpathyTpContactList EmpathyTpContactList;
+typedef struct _EmpathyTpContactListClass EmpathyTpContactListClass;
+typedef struct _EmpathyTpContactListPriv EmpathyTpContactListPriv;
+
+struct _EmpathyTpContactList {
+ GObject parent;
+};
+
+struct _EmpathyTpContactListClass {
+ GObjectClass parent_class;
+};
+
+GType empathy_tp_contact_list_get_type (void) G_GNUC_CONST;
+EmpathyTpContactList * empathy_tp_contact_list_new (McAccount *account);
+McAccount * empathy_tp_contact_list_get_account (EmpathyTpContactList *list);
+
+G_END_DECLS
+
+#endif /* __EMPATHY_TP_CONTACT_LIST_H__ */
diff --git a/gnome-2-22/libempathy/empathy-tp-group.c b/gnome-2-22/libempathy/empathy-tp-group.c
new file mode 100644
index 000000000..323bdff7f
--- /dev/null
+++ b/gnome-2-22/libempathy/empathy-tp-group.c
@@ -0,0 +1,854 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2006 Xavier Claessens <xclaesse@gmail.com>
+ * Copyright (C) 2007-2008 Collabora Ltd.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Authors: Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#include <config.h>
+
+#include <dbus/dbus-glib.h>
+#include <libtelepathy/tp-chan.h>
+#include <libtelepathy/tp-chan-gen.h>
+#include <libtelepathy/tp-chan-iface-group-gen.h>
+#include <libtelepathy/tp-constants.h>
+#include <libtelepathy/tp-conn.h>
+
+#include "empathy-tp-group.h"
+#include "empathy-contact-factory.h"
+#include "empathy-debug.h"
+#include "empathy-utils.h"
+#include "empathy-marshal.h"
+
+#define GET_PRIV(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), \
+ EMPATHY_TYPE_TP_GROUP, EmpathyTpGroupPriv))
+
+#define DEBUG_DOMAIN "TpGroup"
+
+struct _EmpathyTpGroupPriv {
+ EmpathyContactFactory *factory;
+ McAccount *account;
+ DBusGProxy *group_iface;
+ TpChan *tp_chan;
+ gchar *group_name;
+ guint self_handle;
+
+ GList *members;
+ GList *local_pendings;
+ GList *remote_pendings;
+};
+
+static void empathy_tp_group_class_init (EmpathyTpGroupClass *klass);
+static void empathy_tp_group_init (EmpathyTpGroup *group);
+
+enum {
+ MEMBER_ADDED,
+ MEMBER_REMOVED,
+ LOCAL_PENDING,
+ REMOTE_PENDING,
+ DESTROY,
+ LAST_SIGNAL
+};
+
+static guint signals[LAST_SIGNAL];
+
+G_DEFINE_TYPE (EmpathyTpGroup, empathy_tp_group, G_TYPE_OBJECT);
+
+static EmpathyContact *
+tp_group_get_contact (EmpathyTpGroup *group,
+ guint handle)
+{
+ EmpathyTpGroupPriv *priv = GET_PRIV (group);
+ EmpathyContact *contact = NULL;
+
+ if (handle != 0) {
+ contact = empathy_contact_factory_get_from_handle (priv->factory,
+ priv->account,
+ handle);
+ }
+
+ if (contact && empathy_contact_get_handle (contact) == priv->self_handle) {
+ empathy_contact_set_is_user (contact, TRUE);
+ }
+
+ return contact;
+}
+
+static GList *
+tp_group_get_contacts (EmpathyTpGroup *group,
+ GArray *handles)
+{
+ EmpathyTpGroupPriv *priv = GET_PRIV (group);
+ GList *contacts, *l;
+
+ if (!handles) {
+ return NULL;
+ }
+
+ contacts = empathy_contact_factory_get_from_handles (priv->factory,
+ priv->account,
+ handles);
+
+ /* FIXME: Only useful if the group has a different self handle than
+ * the connection, otherwise the contact factory already set that
+ * property. That can be known using group flags. */
+ for (l = contacts; l; l = l->next) {
+ if (empathy_contact_get_handle (l->data) == priv->self_handle) {
+ empathy_contact_set_is_user (l->data, TRUE);
+ }
+ }
+
+ return contacts;
+}
+
+EmpathyPendingInfo *
+empathy_pending_info_new (EmpathyContact *member,
+ EmpathyContact *actor,
+ const gchar *message)
+{
+ EmpathyPendingInfo *info;
+
+ info = g_slice_new0 (EmpathyPendingInfo);
+
+ if (member) {
+ info->member = g_object_ref (member);
+ }
+ if (actor) {
+ info->actor = g_object_ref (actor);
+ }
+ if (message) {
+ info->message = g_strdup (message);
+ }
+
+ return info;
+}
+
+void
+empathy_pending_info_free (EmpathyPendingInfo *info)
+{
+ if (!info) {
+ return;
+ }
+
+ if (info->member) {
+ g_object_unref (info->member);
+ }
+ if (info->actor) {
+ g_object_unref (info->actor);
+ }
+ g_free (info->message);
+
+ g_slice_free (EmpathyPendingInfo, info);
+}
+
+static gint
+tp_group_local_pending_find (gconstpointer a,
+ gconstpointer b)
+{
+ const EmpathyPendingInfo *info = a;
+
+ return (info->member != b);
+}
+
+static void
+tp_group_remove_from_pendings (EmpathyTpGroup *group,
+ EmpathyContact *contact)
+{
+ EmpathyTpGroupPriv *priv = GET_PRIV (group);
+ GList *l;
+
+ /* local pending */
+ l = g_list_find_custom (priv->local_pendings,
+ contact,
+ tp_group_local_pending_find);
+ if (l) {
+ empathy_pending_info_free (l->data);
+ priv->local_pendings = g_list_delete_link (priv->local_pendings, l);
+ }
+
+ /* remote pending */
+ l = g_list_find (priv->remote_pendings, contact);
+ if (l) {
+ g_object_unref (l->data);
+ priv->remote_pendings = g_list_delete_link (priv->remote_pendings, l);
+ }
+}
+
+static void
+tp_group_members_changed_cb (DBusGProxy *group_iface,
+ const gchar *message,
+ GArray *added,
+ GArray *removed,
+ GArray *local_pending,
+ GArray *remote_pending,
+ guint actor,
+ guint reason,
+ EmpathyTpGroup *group)
+{
+ EmpathyTpGroupPriv *priv = GET_PRIV (group);
+ EmpathyContact *actor_contact = NULL;
+ GList *contacts, *l, *ll;
+
+ actor_contact = tp_group_get_contact (group, actor);
+
+ empathy_debug (DEBUG_DOMAIN, "Members changed for list %s:\n"
+ " added-len=%d, current-len=%d\n"
+ " removed-len=%d\n"
+ " local-pending-len=%d, current-len=%d\n"
+ " remote-pending-len=%d, current-len=%d",
+ empathy_tp_group_get_name (group),
+ added ? added->len : 0, g_list_length (priv->members),
+ removed ? removed->len : 0,
+ local_pending ? local_pending->len : 0,
+ g_list_length (priv->local_pendings),
+ remote_pending ? remote_pending->len : 0,
+ g_list_length (priv->remote_pendings));
+
+ /* Contacts added */
+ contacts = tp_group_get_contacts (group, added);
+ for (l = contacts; l; l = l->next) {
+ tp_group_remove_from_pendings (group, l->data);
+
+ /* If the contact is not yet member, add it and emit signal */
+ if (!g_list_find (priv->members, l->data)) {
+ priv->members = g_list_prepend (priv->members,
+ g_object_ref (l->data));
+ g_signal_emit (group, signals[MEMBER_ADDED], 0,
+ l->data, actor_contact, reason, message);
+ }
+ g_object_unref (l->data);
+ }
+ g_list_free (contacts);
+
+ /* Contacts removed */
+ contacts = tp_group_get_contacts (group, removed);
+ for (l = contacts; l; l = l->next) {
+ tp_group_remove_from_pendings (group, l->data);
+
+ /* If the contact is member, remove it and emit signal */
+ if ((ll = g_list_find (priv->members, l->data))) {
+ g_object_unref (ll->data);
+ priv->members = g_list_delete_link (priv->members, ll);
+ g_signal_emit (group, signals[MEMBER_REMOVED], 0,
+ l->data, actor_contact, reason, message);
+ }
+ g_object_unref (l->data);
+ }
+ g_list_free (contacts);
+
+ /* Contacts local pending */
+ contacts = tp_group_get_contacts (group, local_pending);
+ for (l = contacts; l; l = l->next) {
+ /* If the contact is not yet local-pending, add it and emit signal */
+ if (!g_list_find_custom (priv->local_pendings, l->data,
+ tp_group_local_pending_find)) {
+ EmpathyPendingInfo *info;
+
+ info = empathy_pending_info_new (l->data,
+ actor_contact,
+ message);
+
+ priv->local_pendings = g_list_prepend (priv->local_pendings, info);
+ g_signal_emit (group, signals[LOCAL_PENDING], 0,
+ l->data, actor_contact, reason, message);
+ }
+ g_object_unref (l->data);
+ }
+ g_list_free (contacts);
+
+ /* Contacts remote pending */
+ contacts = tp_group_get_contacts (group, remote_pending);
+ for (l = contacts; l; l = l->next) {
+ /* If the contact is not yet remote-pending, add it and emit signal */
+ if (!g_list_find (priv->remote_pendings, l->data)) {
+ priv->remote_pendings = g_list_prepend (priv->remote_pendings,
+ g_object_ref (l->data));
+ g_signal_emit (group, signals[REMOTE_PENDING], 0,
+ l->data, actor_contact, reason, message);
+ }
+ g_object_unref (l->data);
+ }
+ g_list_free (contacts);
+
+ if (actor_contact) {
+ g_object_unref (actor_contact);
+ }
+
+ empathy_debug (DEBUG_DOMAIN, "Members changed done for list %s:\n"
+ " members-len=%d\n"
+ " local-pendings-len=%d\n"
+ " remote-pendings-len=%d",
+ empathy_tp_group_get_name (group),
+ g_list_length (priv->members),
+ g_list_length (priv->local_pendings),
+ g_list_length (priv->remote_pendings));
+}
+
+static void
+tp_group_destroy_cb (TpChan *tp_chan,
+ EmpathyTpGroup *group)
+{
+ EmpathyTpGroupPriv *priv = GET_PRIV (group);
+
+ empathy_debug (DEBUG_DOMAIN, "Account disconnected or CM crashed");
+
+ g_object_unref (priv->tp_chan);
+ priv->group_iface = NULL;
+ priv->tp_chan = NULL;
+
+ g_signal_emit (group, signals[DESTROY], 0);
+}
+
+static void tp_group_closed_cb (DBusGProxy *proxy,
+ EmpathyTpGroup *group);
+
+static void
+tp_group_disconnect (EmpathyTpGroup *group)
+{
+ EmpathyTpGroupPriv *priv = GET_PRIV (group);
+
+ if (priv->group_iface) {
+ dbus_g_proxy_disconnect_signal (priv->group_iface, "MembersChanged",
+ G_CALLBACK (tp_group_members_changed_cb),
+ group);
+ }
+ if (priv->tp_chan) {
+ g_signal_handlers_disconnect_by_func (priv->tp_chan,
+ tp_group_destroy_cb,
+ group);
+ dbus_g_proxy_disconnect_signal (DBUS_G_PROXY (priv->tp_chan), "Closed",
+ G_CALLBACK (tp_group_closed_cb),
+ group);
+ }
+}
+
+static void
+tp_group_closed_cb (DBusGProxy *proxy,
+ EmpathyTpGroup *group)
+{
+ tp_group_disconnect (group);
+ tp_group_destroy_cb (TELEPATHY_CHAN (proxy), group);
+}
+
+static void
+tp_group_get_members_cb (DBusGProxy *proxy,
+ GArray *handles,
+ GError *error,
+ gpointer user_data)
+{
+ EmpathyTpGroup *group = user_data;
+ EmpathyTpGroupPriv *priv = GET_PRIV (group);
+
+ if (error) {
+ empathy_debug (DEBUG_DOMAIN, "Failed to get members: %s",
+ error->message);
+ g_object_unref (group);
+ return;
+ }
+
+ tp_group_members_changed_cb (priv->group_iface,
+ NULL, /* message */
+ handles, /* added */
+ NULL, /* removed */
+ NULL, /* local_pending */
+ NULL, /* remote_pending */
+ 0, /* actor */
+ 0, /* reason */
+ group);
+
+ g_array_free (handles, TRUE);
+ g_object_unref (group);
+}
+
+static void
+tp_group_get_local_pending_cb (DBusGProxy *proxy,
+ GPtrArray *array,
+ GError *error,
+ gpointer user_data)
+{
+ EmpathyTpGroup *group = user_data;
+ EmpathyTpGroupPriv *priv = GET_PRIV (group);
+ GArray *handles;
+ guint i = 0;
+
+ if (error) {
+ empathy_debug (DEBUG_DOMAIN, "Failed to get local pendings: %s",
+ error->message);
+ g_object_unref (group);
+ return;
+ }
+
+ handles = g_array_sized_new (FALSE, FALSE, sizeof (guint), 1);
+ g_array_append_val (handles, i);
+ for (i = 0; array->len > i; i++) {
+ GValueArray *pending_struct;
+ const gchar *message;
+ guint member_handle;
+ guint actor_handle;
+ guint reason;
+
+ pending_struct = g_ptr_array_index (array, i);
+ member_handle = g_value_get_uint (g_value_array_get_nth (pending_struct, 0));
+ actor_handle = g_value_get_uint (g_value_array_get_nth (pending_struct, 1));
+ reason = g_value_get_uint (g_value_array_get_nth (pending_struct, 2));
+ message = g_value_get_string (g_value_array_get_nth (pending_struct, 3));
+
+ g_array_index (handles, guint, 0) = member_handle;
+ tp_group_members_changed_cb (priv->group_iface,
+ message, /* message */
+ NULL, /* added */
+ NULL, /* removed */
+ handles, /* local_pending */
+ NULL, /* remote_pending */
+ actor_handle, /* actor */
+ reason, /* reason */
+ group);
+
+ g_value_array_free (pending_struct);
+ }
+ g_ptr_array_free (array, TRUE);
+ g_array_free (handles, TRUE);
+ g_object_unref (group);
+}
+
+static void
+tp_group_get_remote_pending_cb (DBusGProxy *proxy,
+ GArray *handles,
+ GError *error,
+ gpointer user_data)
+{
+ EmpathyTpGroup *group = user_data;
+ EmpathyTpGroupPriv *priv = GET_PRIV (group);
+
+ if (error) {
+ empathy_debug (DEBUG_DOMAIN, "Failed to get remote pendings: %s",
+ error->message);
+ g_object_unref (group);
+ return;
+ }
+
+ tp_group_members_changed_cb (priv->group_iface,
+ NULL, /* message */
+ NULL, /* added */
+ NULL, /* removed */
+ NULL, /* local_pending */
+ handles, /* remote_pending */
+ 0, /* actor */
+ 0, /* reason */
+ group);
+
+ g_array_free (handles, TRUE);
+ g_object_unref (group);
+}
+
+static void
+tp_group_finalize (GObject *object)
+{
+ EmpathyTpGroupPriv *priv = GET_PRIV (object);
+
+ empathy_debug (DEBUG_DOMAIN, "finalize: %p");
+
+ tp_group_disconnect (EMPATHY_TP_GROUP (object));
+
+ if (priv->tp_chan) {
+ g_object_unref (priv->tp_chan);
+ }
+ if (priv->account) {
+ g_object_unref (priv->account);
+ }
+ if (priv->factory) {
+ g_object_unref (priv->factory);
+ }
+ g_free (priv->group_name);
+
+ g_list_foreach (priv->members, (GFunc) g_object_unref, NULL);
+ g_list_free (priv->members);
+
+ g_list_foreach (priv->local_pendings, (GFunc) empathy_pending_info_free, NULL);
+ g_list_free (priv->local_pendings);
+
+ g_list_foreach (priv->remote_pendings, (GFunc) g_object_unref, NULL);
+ g_list_free (priv->remote_pendings);
+
+ G_OBJECT_CLASS (empathy_tp_group_parent_class)->finalize (object);
+}
+
+static void
+empathy_tp_group_class_init (EmpathyTpGroupClass *klass)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+ object_class->finalize = tp_group_finalize;
+
+ signals[MEMBER_ADDED] =
+ g_signal_new ("member-added",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST,
+ 0,
+ NULL, NULL,
+ _empathy_marshal_VOID__OBJECT_OBJECT_UINT_STRING,
+ G_TYPE_NONE,
+ 4, EMPATHY_TYPE_CONTACT, EMPATHY_TYPE_CONTACT, G_TYPE_UINT, G_TYPE_STRING);
+
+ signals[MEMBER_REMOVED] =
+ g_signal_new ("member-removed",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST,
+ 0,
+ NULL, NULL,
+ _empathy_marshal_VOID__OBJECT_OBJECT_UINT_STRING,
+ G_TYPE_NONE,
+ 4, EMPATHY_TYPE_CONTACT, EMPATHY_TYPE_CONTACT, G_TYPE_UINT, G_TYPE_STRING);
+
+ signals[LOCAL_PENDING] =
+ g_signal_new ("local-pending",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST,
+ 0,
+ NULL, NULL,
+ _empathy_marshal_VOID__OBJECT_OBJECT_UINT_STRING,
+ G_TYPE_NONE,
+ 4, EMPATHY_TYPE_CONTACT, EMPATHY_TYPE_CONTACT, G_TYPE_UINT, G_TYPE_STRING);
+
+ signals[REMOTE_PENDING] =
+ g_signal_new ("remote-pending",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST,
+ 0,
+ NULL, NULL,
+ _empathy_marshal_VOID__OBJECT_OBJECT_UINT_STRING,
+ G_TYPE_NONE,
+ 4, EMPATHY_TYPE_CONTACT, EMPATHY_TYPE_CONTACT, G_TYPE_UINT, G_TYPE_STRING);
+
+ signals[DESTROY] =
+ g_signal_new ("destroy",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST,
+ 0,
+ NULL, NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE,
+ 0);
+
+ g_type_class_add_private (object_class, sizeof (EmpathyTpGroupPriv));
+}
+
+static void
+empathy_tp_group_init (EmpathyTpGroup *group)
+{
+}
+
+EmpathyTpGroup *
+empathy_tp_group_new (McAccount *account,
+ TpChan *tp_chan)
+{
+ EmpathyTpGroup *group;
+ EmpathyTpGroupPriv *priv;
+ DBusGProxy *group_iface;
+ GError *error = NULL;
+
+ g_return_val_if_fail (MC_IS_ACCOUNT (account), NULL);
+ g_return_val_if_fail (TELEPATHY_IS_CHAN (tp_chan), NULL);
+
+ group_iface = tp_chan_get_interface (tp_chan,
+ TP_IFACE_QUARK_CHANNEL_INTERFACE_GROUP);
+ g_return_val_if_fail (group_iface != NULL, NULL);
+
+ group = g_object_new (EMPATHY_TYPE_TP_GROUP, NULL);
+ priv = GET_PRIV (group);
+
+ priv->account = g_object_ref (account);
+ priv->tp_chan = g_object_ref (tp_chan);
+ priv->group_iface = group_iface;
+ priv->factory = empathy_contact_factory_new ();
+
+ if (!tp_chan_iface_group_get_self_handle (priv->group_iface,
+ &priv->self_handle,
+ &error)) {
+ empathy_debug (DEBUG_DOMAIN,
+ "Failed to get self handle: %s",
+ error ? error->message : "No error given");
+ g_clear_error (&error);
+ }
+
+ dbus_g_proxy_connect_signal (priv->group_iface, "MembersChanged",
+ G_CALLBACK (tp_group_members_changed_cb),
+ group, NULL);
+ dbus_g_proxy_connect_signal (DBUS_G_PROXY (priv->tp_chan), "Closed",
+ G_CALLBACK (tp_group_closed_cb),
+ group, NULL);
+ g_signal_connect (priv->tp_chan, "destroy",
+ G_CALLBACK (tp_group_destroy_cb),
+ group);
+
+ tp_chan_iface_group_get_members_async (priv->group_iface,
+ tp_group_get_members_cb,
+ g_object_ref (group));
+ tp_chan_iface_group_get_local_pending_members_with_info_async (priv->group_iface,
+ tp_group_get_local_pending_cb,
+ g_object_ref (group));
+ tp_chan_iface_group_get_remote_pending_members_async (priv->group_iface,
+ tp_group_get_remote_pending_cb,
+ g_object_ref (group));
+
+ return group;
+}
+
+static void
+tp_group_async_cb (DBusGProxy *proxy, GError *error, gpointer user_data)
+{
+ const gchar *msg = user_data;
+
+ if (error) {
+ empathy_debug (DEBUG_DOMAIN, "%s: %s", msg, error->message);
+ }
+}
+
+void
+empathy_tp_group_close (EmpathyTpGroup *group)
+{
+ EmpathyTpGroupPriv *priv = GET_PRIV (group);
+
+ g_return_if_fail (EMPATHY_IS_TP_GROUP (group));
+
+ tp_chan_close_async (DBUS_G_PROXY (priv->tp_chan),
+ tp_group_async_cb,
+ "Failed to close");
+}
+
+static GArray *
+tp_group_get_handles (GList *contacts)
+{
+ GArray *handles;
+ guint length;
+ GList *l;
+
+ length = g_list_length (contacts);
+ handles = g_array_sized_new (FALSE, FALSE, sizeof (guint), length);
+
+ for (l = contacts; l; l = l->next) {
+ guint handle;
+
+ handle = empathy_contact_get_handle (l->data);
+ g_array_append_val (handles, handle);
+ }
+
+ return handles;
+}
+
+void
+empathy_tp_group_add_members (EmpathyTpGroup *group,
+ GList *contacts,
+ const gchar *message)
+{
+ EmpathyTpGroupPriv *priv = GET_PRIV (group);
+ GArray *handles;
+
+ g_return_if_fail (EMPATHY_IS_TP_GROUP (group));
+ g_return_if_fail (contacts != NULL);
+
+ handles = tp_group_get_handles (contacts);
+ tp_chan_iface_group_add_members_async (priv->group_iface,
+ handles,
+ message,
+ tp_group_async_cb,
+ "Failed to add members");
+
+ g_array_free (handles, TRUE);
+}
+
+void
+empathy_tp_group_add_member (EmpathyTpGroup *group,
+ EmpathyContact *contact,
+ const gchar *message)
+{
+ EmpathyTpGroupPriv *priv = GET_PRIV (group);
+ GArray *handles;
+ guint handle;
+
+ g_return_if_fail (EMPATHY_IS_TP_GROUP (group));
+ g_return_if_fail (EMPATHY_IS_CONTACT (contact));
+
+ handle = empathy_contact_get_handle (contact);
+ handles = g_array_new (FALSE, FALSE, sizeof (guint));
+ g_array_append_val (handles, handle);
+
+ tp_chan_iface_group_add_members_async (priv->group_iface,
+ handles,
+ message,
+ tp_group_async_cb,
+ "Failed to add member");
+
+ g_array_free (handles, TRUE);
+}
+
+void
+empathy_tp_group_remove_members (EmpathyTpGroup *group,
+ GList *contacts,
+ const gchar *message)
+{
+ EmpathyTpGroupPriv *priv = GET_PRIV (group);
+ GArray *handles;
+
+ g_return_if_fail (EMPATHY_IS_TP_GROUP (group));
+ g_return_if_fail (contacts != NULL);
+
+ handles = tp_group_get_handles (contacts);
+ tp_chan_iface_group_remove_members_async (priv->group_iface,
+ handles,
+ message,
+ tp_group_async_cb,
+ "Failed to remove members");
+
+ g_array_free (handles, TRUE);
+}
+
+void
+empathy_tp_group_remove_member (EmpathyTpGroup *group,
+ EmpathyContact *contact,
+ const gchar *message)
+{
+ EmpathyTpGroupPriv *priv = GET_PRIV (group);
+ GArray *handles;
+ guint handle;
+
+ g_return_if_fail (EMPATHY_IS_TP_GROUP (group));
+ g_return_if_fail (EMPATHY_IS_CONTACT (contact));
+
+ handle = empathy_contact_get_handle (contact);
+ handles = g_array_new (FALSE, FALSE, sizeof (guint));
+ g_array_append_val (handles, handle);
+
+ tp_chan_iface_group_remove_members_async (priv->group_iface,
+ handles,
+ message,
+ tp_group_async_cb,
+ "Failed to remove member");
+
+ g_array_free (handles, TRUE);
+}
+
+GList *
+empathy_tp_group_get_members (EmpathyTpGroup *group)
+{
+ EmpathyTpGroupPriv *priv = GET_PRIV (group);
+
+ g_return_val_if_fail (EMPATHY_IS_TP_GROUP (group), NULL);
+
+ g_list_foreach (priv->members, (GFunc) g_object_ref, NULL);
+
+ return g_list_copy (priv->members);
+}
+
+GList *
+empathy_tp_group_get_local_pendings (EmpathyTpGroup *group)
+{
+ EmpathyTpGroupPriv *priv = GET_PRIV (group);
+ GList *pendings = NULL, *l;
+
+ g_return_val_if_fail (EMPATHY_IS_TP_GROUP (group), NULL);
+
+ for (l = priv->local_pendings; l; l = l->next) {
+ EmpathyPendingInfo *info;
+ EmpathyPendingInfo *new_info;
+
+ info = l->data;
+ new_info = empathy_pending_info_new (info->member,
+ info->actor,
+ info->message);
+ pendings = g_list_prepend (pendings, new_info);
+ }
+
+ return pendings;
+}
+
+GList *
+empathy_tp_group_get_remote_pendings (EmpathyTpGroup *group)
+{
+ EmpathyTpGroupPriv *priv = GET_PRIV (group);
+
+ g_return_val_if_fail (EMPATHY_IS_TP_GROUP (group), NULL);
+
+ g_list_foreach (priv->remote_pendings, (GFunc) g_object_ref, NULL);
+
+ return g_list_copy (priv->remote_pendings);
+}
+
+const gchar *
+empathy_tp_group_get_name (EmpathyTpGroup *group)
+{
+ EmpathyTpGroupPriv *priv;
+
+ g_return_val_if_fail (EMPATHY_IS_TP_GROUP (group), NULL);
+
+ priv = GET_PRIV (group);
+
+ /* Lazy initialisation */
+ if (!priv->group_name && priv->tp_chan->handle != 0) {
+ priv->group_name = empathy_inspect_channel (priv->account, priv->tp_chan);
+ }
+
+ return priv->group_name;
+}
+
+EmpathyContact *
+empathy_tp_group_get_self_contact (EmpathyTpGroup *group)
+{
+ EmpathyTpGroupPriv *priv = GET_PRIV (group);
+
+ g_return_val_if_fail (EMPATHY_IS_TP_GROUP (group), NULL);
+
+ return tp_group_get_contact (group, priv->self_handle);
+}
+
+const gchar *
+empathy_tp_group_get_object_path (EmpathyTpGroup *group)
+{
+ EmpathyTpGroupPriv *priv;
+
+ g_return_val_if_fail (EMPATHY_IS_TP_GROUP (group), NULL);
+
+ priv = GET_PRIV (group);
+
+ return dbus_g_proxy_get_path (DBUS_G_PROXY (priv->tp_chan));
+}
+
+TpChan *
+empathy_tp_group_get_channel (EmpathyTpGroup *group)
+{
+ EmpathyTpGroupPriv *priv;
+
+ g_return_val_if_fail (EMPATHY_IS_TP_GROUP (group), NULL);
+
+ priv = GET_PRIV (group);
+
+ return priv->tp_chan;
+}
+
+gboolean
+empathy_tp_group_is_member (EmpathyTpGroup *group,
+ EmpathyContact *contact)
+{
+ EmpathyTpGroupPriv *priv = GET_PRIV (group);
+
+ g_return_val_if_fail (EMPATHY_IS_TP_GROUP (group), FALSE);
+ g_return_val_if_fail (EMPATHY_IS_CONTACT (contact), FALSE);
+
+ return g_list_find (priv->members, contact) != NULL;
+}
+
diff --git a/gnome-2-22/libempathy/empathy-tp-group.h b/gnome-2-22/libempathy/empathy-tp-group.h
new file mode 100644
index 000000000..80e562594
--- /dev/null
+++ b/gnome-2-22/libempathy/empathy-tp-group.h
@@ -0,0 +1,94 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2006 Xavier Claessens <xclaesse@gmail.com>
+ * Copyright (C) 2007 Collabora Ltd.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Authors: Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#ifndef __EMPATHY_TP_GROUP_H__
+#define __EMPATHY_TP_GROUP_H__
+
+#include <glib.h>
+
+#include <libtelepathy/tp-chan.h>
+#include <libtelepathy/tp-constants.h>
+#include <libmissioncontrol/mc-account.h>
+
+#include "empathy-contact.h"
+
+G_BEGIN_DECLS
+
+#define EMPATHY_TYPE_TP_GROUP (empathy_tp_group_get_type ())
+#define EMPATHY_TP_GROUP(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), EMPATHY_TYPE_TP_GROUP, EmpathyTpGroup))
+#define EMPATHY_TP_GROUP_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), EMPATHY_TYPE_TP_GROUP, EmpathyTpGroupClass))
+#define EMPATHY_IS_TP_GROUP(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), EMPATHY_TYPE_TP_GROUP))
+#define EMPATHY_IS_TP_GROUP_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), EMPATHY_TYPE_TP_GROUP))
+#define EMPATHY_TP_GROUP_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), EMPATHY_TYPE_TP_GROUP, EmpathyTpGroupClass))
+
+typedef struct _EmpathyTpGroup EmpathyTpGroup;
+typedef struct _EmpathyTpGroupClass EmpathyTpGroupClass;
+typedef struct _EmpathyTpGroupPriv EmpathyTpGroupPriv;
+
+struct _EmpathyTpGroup {
+ GObject parent;
+};
+
+struct _EmpathyTpGroupClass {
+ GObjectClass parent_class;
+};
+
+typedef struct {
+ EmpathyContact *member;
+ EmpathyContact *actor;
+ gchar *message;
+ guint reason;
+} EmpathyPendingInfo;
+
+GType empathy_tp_group_get_type (void) G_GNUC_CONST;
+EmpathyTpGroup * empathy_tp_group_new (McAccount *account,
+ TpChan *tp_chan);
+void empathy_tp_group_close (EmpathyTpGroup *group);
+void empathy_tp_group_add_members (EmpathyTpGroup *group,
+ GList *contacts,
+ const gchar *message);
+void empathy_tp_group_add_member (EmpathyTpGroup *group,
+ EmpathyContact *contact,
+ const gchar *message);
+void empathy_tp_group_remove_members (EmpathyTpGroup *group,
+ GList *contacts,
+ const gchar *message);
+void empathy_tp_group_remove_member (EmpathyTpGroup *group,
+ EmpathyContact *contact,
+ const gchar *message);
+GList * empathy_tp_group_get_members (EmpathyTpGroup *group);
+GList * empathy_tp_group_get_local_pendings (EmpathyTpGroup *group);
+GList * empathy_tp_group_get_remote_pendings (EmpathyTpGroup *group);
+const gchar * empathy_tp_group_get_name (EmpathyTpGroup *group);
+EmpathyContact * empathy_tp_group_get_self_contact (EmpathyTpGroup *group);
+const gchar * empathy_tp_group_get_object_path (EmpathyTpGroup *group);
+TpChan * empathy_tp_group_get_channel (EmpathyTpGroup *group);
+gboolean empathy_tp_group_is_member (EmpathyTpGroup *group,
+ EmpathyContact *contact);
+EmpathyPendingInfo *empathy_pending_info_new (EmpathyContact *member,
+ EmpathyContact *actor,
+ const gchar *message);
+void empathy_pending_info_free (EmpathyPendingInfo *info);
+
+G_END_DECLS
+
+#endif /* __EMPATHY_TP_GROUP_H__ */
diff --git a/gnome-2-22/libempathy/empathy-tp-roomlist.c b/gnome-2-22/libempathy/empathy-tp-roomlist.c
new file mode 100644
index 000000000..c9fe6b5fd
--- /dev/null
+++ b/gnome-2-22/libempathy/empathy-tp-roomlist.c
@@ -0,0 +1,349 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2007-2008 Collabora Ltd.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Authors: Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#include <config.h>
+
+#include <string.h>
+
+#include <libtelepathy/tp-chan-type-room-list-gen.h>
+#include <libtelepathy/tp-helpers.h>
+#include <libtelepathy/tp-conn.h>
+#include <libtelepathy/tp-chan.h>
+
+#include <libmissioncontrol/mission-control.h>
+
+#include "empathy-tp-roomlist.h"
+#include "empathy-chatroom.h"
+#include "empathy-utils.h"
+#include "empathy-debug.h"
+
+#define GET_PRIV(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), \
+ EMPATHY_TYPE_TP_ROOMLIST, EmpathyTpRoomlistPriv))
+
+#define DEBUG_DOMAIN "TpRoomlist"
+
+struct _EmpathyTpRoomlistPriv {
+ McAccount *account;
+ TpChan *tp_chan;
+ DBusGProxy *roomlist_iface;
+};
+
+static void empathy_tp_roomlist_class_init (EmpathyTpRoomlistClass *klass);
+static void empathy_tp_roomlist_init (EmpathyTpRoomlist *chat);
+static void tp_roomlist_finalize (GObject *object);
+static void tp_roomlist_destroy_cb (TpChan *tp_chan,
+ EmpathyTpRoomlist *list);
+static void tp_roomlist_closed_cb (TpChan *tp_chan,
+ EmpathyTpRoomlist *list);
+static void tp_roomlist_listing_cb (DBusGProxy *roomlist_iface,
+ gboolean listing,
+ EmpathyTpRoomlist *list);
+static void tp_roomlist_got_rooms_cb (DBusGProxy *roomlist_iface,
+ GPtrArray *room_list,
+ EmpathyTpRoomlist *list);
+
+enum {
+ NEW_ROOM,
+ LISTING,
+ DESTROY,
+ LAST_SIGNAL
+};
+
+static guint signals[LAST_SIGNAL];
+
+G_DEFINE_TYPE (EmpathyTpRoomlist, empathy_tp_roomlist, G_TYPE_OBJECT);
+
+static void
+empathy_tp_roomlist_class_init (EmpathyTpRoomlistClass *klass)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+ object_class->finalize = tp_roomlist_finalize;
+
+ signals[NEW_ROOM] =
+ g_signal_new ("new-room",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST,
+ 0,
+ NULL, NULL,
+ g_cclosure_marshal_VOID__OBJECT,
+ G_TYPE_NONE,
+ 1, EMPATHY_TYPE_CHATROOM);
+
+ signals[LISTING] =
+ g_signal_new ("listing",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST,
+ 0,
+ NULL, NULL,
+ g_cclosure_marshal_VOID__BOOLEAN,
+ G_TYPE_NONE,
+ 1, G_TYPE_BOOLEAN);
+
+ signals[DESTROY] =
+ g_signal_new ("destroy",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST,
+ 0,
+ NULL, NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE,
+ 0);
+
+ g_type_class_add_private (object_class, sizeof (EmpathyTpRoomlistPriv));
+}
+
+static void
+empathy_tp_roomlist_init (EmpathyTpRoomlist *list)
+{
+}
+
+static void
+tp_roomlist_finalize (GObject *object)
+{
+ EmpathyTpRoomlistPriv *priv;
+ GError *error = NULL;
+
+ priv = GET_PRIV (object);
+
+ if (priv->tp_chan) {
+ g_signal_handlers_disconnect_by_func (priv->tp_chan,
+ tp_roomlist_destroy_cb,
+ object);
+
+ empathy_debug (DEBUG_DOMAIN, "Closing channel...");
+ if (!tp_chan_close (DBUS_G_PROXY (priv->tp_chan), &error)) {
+ empathy_debug (DEBUG_DOMAIN,
+ "Error closing roomlist channel: %s",
+ error ? error->message : "No error given");
+ g_clear_error (&error);
+ }
+ g_object_unref (priv->tp_chan);
+ }
+
+ if (priv->account) {
+ g_object_unref (priv->account);
+ }
+
+ G_OBJECT_CLASS (empathy_tp_roomlist_parent_class)->finalize (object);
+}
+
+EmpathyTpRoomlist *
+empathy_tp_roomlist_new (McAccount *account)
+{
+ EmpathyTpRoomlist *list;
+ EmpathyTpRoomlistPriv *priv;
+ TpConn *tp_conn;
+ MissionControl *mc;
+ const gchar *bus_name;
+
+ g_return_val_if_fail (MC_IS_ACCOUNT (account), NULL);
+
+ list = g_object_new (EMPATHY_TYPE_TP_ROOMLIST, NULL);
+ priv = GET_PRIV (list);
+
+ mc = empathy_mission_control_new ();
+ tp_conn = mission_control_get_connection (mc, account, NULL);
+ g_object_unref (mc);
+
+ bus_name = dbus_g_proxy_get_bus_name (DBUS_G_PROXY (tp_conn));
+ priv->tp_chan = tp_conn_new_channel (tp_get_bus (),
+ tp_conn,
+ bus_name,
+ TP_IFACE_CHANNEL_TYPE_ROOM_LIST,
+ TP_HANDLE_TYPE_NONE,
+ 0,
+ TRUE);
+ g_object_unref (tp_conn);
+
+ if (!priv->tp_chan) {
+ empathy_debug (DEBUG_DOMAIN, "Failed to get roomlist channel");
+ g_object_unref (list);
+ return NULL;
+ }
+
+ priv->account = g_object_ref (account);
+ priv->roomlist_iface = tp_chan_get_interface (priv->tp_chan,
+ TP_IFACE_QUARK_CHANNEL_TYPE_ROOM_LIST);
+
+ g_signal_connect (priv->tp_chan, "destroy",
+ G_CALLBACK (tp_roomlist_destroy_cb),
+ list);
+ dbus_g_proxy_connect_signal (DBUS_G_PROXY (priv->tp_chan), "Closed",
+ G_CALLBACK (tp_roomlist_closed_cb),
+ list, NULL);
+ dbus_g_proxy_connect_signal (DBUS_G_PROXY (priv->roomlist_iface), "ListingRooms",
+ G_CALLBACK (tp_roomlist_listing_cb),
+ list, NULL);
+ dbus_g_proxy_connect_signal (DBUS_G_PROXY (priv->roomlist_iface), "GotRooms",
+ G_CALLBACK (tp_roomlist_got_rooms_cb),
+ list, NULL);
+
+ return list;
+}
+
+gboolean
+empathy_tp_roomlist_is_listing (EmpathyTpRoomlist *list)
+{
+ EmpathyTpRoomlistPriv *priv;
+ GError *error = NULL;
+ gboolean listing = FALSE;
+
+ g_return_val_if_fail (EMPATHY_IS_TP_ROOMLIST (list), FALSE);
+
+ priv = GET_PRIV (list);
+
+ if (!tp_chan_type_room_list_get_listing_rooms (priv->roomlist_iface,
+ &listing,
+ &error)) {
+ empathy_debug (DEBUG_DOMAIN,
+ "Error GetListingRooms: %s",
+ error ? error->message : "No error given");
+ g_clear_error (&error);
+ return FALSE;
+ }
+
+ return listing;
+}
+
+void
+empathy_tp_roomlist_start (EmpathyTpRoomlist *list)
+{
+ EmpathyTpRoomlistPriv *priv;
+ GError *error = NULL;
+
+ g_return_if_fail (EMPATHY_IS_TP_ROOMLIST (list));
+
+ priv = GET_PRIV (list);
+
+ if (!tp_chan_type_room_list_list_rooms (priv->roomlist_iface, &error)) {
+ empathy_debug (DEBUG_DOMAIN,
+ "Error ListRooms: %s",
+ error ? error->message : "No error given");
+ g_clear_error (&error);
+ }
+}
+
+void
+empathy_tp_roomlist_stop (EmpathyTpRoomlist *list)
+{
+ EmpathyTpRoomlistPriv *priv;
+ GError *error = NULL;
+
+ g_return_if_fail (EMPATHY_IS_TP_ROOMLIST (list));
+
+ priv = GET_PRIV (list);
+
+ if (!tp_chan_type_room_list_stop_listing (priv->roomlist_iface, &error)) {
+ empathy_debug (DEBUG_DOMAIN,
+ "Error StopListing: %s",
+ error ? error->message : "No error given");
+ g_clear_error (&error);
+ }
+}
+
+static void
+tp_roomlist_destroy_cb (TpChan *tp_chan,
+ EmpathyTpRoomlist *list)
+{
+ EmpathyTpRoomlistPriv *priv;
+
+ priv = GET_PRIV (list);
+
+ empathy_debug (DEBUG_DOMAIN, "Channel Closed or CM crashed");
+
+ tp_roomlist_listing_cb (priv->roomlist_iface, FALSE, list);
+
+ g_object_unref (priv->tp_chan);
+ priv->tp_chan = NULL;
+ priv->roomlist_iface = NULL;
+
+ g_signal_emit (list, signals[DESTROY], 0);
+}
+
+static void
+tp_roomlist_closed_cb (TpChan *tp_chan,
+ EmpathyTpRoomlist *list)
+{
+ EmpathyTpRoomlistPriv *priv;
+
+ priv = GET_PRIV (list);
+
+ /* The channel is closed, do just like if the proxy was destroyed */
+ g_signal_handlers_disconnect_by_func (priv->tp_chan,
+ tp_roomlist_destroy_cb,
+ list);
+ tp_roomlist_destroy_cb (priv->tp_chan, list);
+}
+
+static void
+tp_roomlist_listing_cb (DBusGProxy *roomlist_iface,
+ gboolean listing,
+ EmpathyTpRoomlist *list)
+{
+ empathy_debug (DEBUG_DOMAIN, "Listing: %s", listing ? "Yes" : "No");
+ g_signal_emit (list, signals[LISTING], 0, listing);
+}
+
+static void
+tp_roomlist_got_rooms_cb (DBusGProxy *roomlist_iface,
+ GPtrArray *room_list,
+ EmpathyTpRoomlist *list)
+{
+ EmpathyTpRoomlistPriv *priv;
+ guint i;
+
+ priv = GET_PRIV (list);
+
+ for (i = 0; i < room_list->len; i++) {
+ EmpathyChatroom *chatroom;
+ gchar *room_id;
+ const gchar *room_name;
+ const GValue *room_name_value;
+ GValueArray *room_struct;
+ guint handle;
+ const gchar *channel_type;
+ GHashTable *info;
+
+ /* Get information */
+ room_struct = g_ptr_array_index (room_list, i);
+ handle = g_value_get_uint (g_value_array_get_nth (room_struct, 0));
+ channel_type = g_value_get_string (g_value_array_get_nth (room_struct, 1));
+ info = g_value_get_boxed (g_value_array_get_nth (room_struct, 2));
+
+ /* Create the chatroom */
+ room_name_value = g_hash_table_lookup (info, "name");
+ room_name = g_value_get_string (room_name_value);
+ room_id = empathy_inspect_handle (priv->account,
+ handle,
+ TP_HANDLE_TYPE_ROOM);
+ chatroom = empathy_chatroom_new_full (priv->account,
+ room_id,
+ room_name,
+ FALSE);
+
+ /* Tells the world */
+ g_signal_emit (list, signals[NEW_ROOM], 0, chatroom);
+
+ g_object_unref (chatroom);
+ }
+}
+
diff --git a/gnome-2-22/libempathy/empathy-tp-roomlist.h b/gnome-2-22/libempathy/empathy-tp-roomlist.h
new file mode 100644
index 000000000..1e291a2aa
--- /dev/null
+++ b/gnome-2-22/libempathy/empathy-tp-roomlist.h
@@ -0,0 +1,58 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2007 Collabora Ltd.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Authors: Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#ifndef __EMPATHY_TP_ROOMLIST_H__
+#define __EMPATHY_TP_ROOMLIST_H__
+
+#include <glib.h>
+
+#include <libmissioncontrol/mc-account.h>
+
+G_BEGIN_DECLS
+
+#define EMPATHY_TYPE_TP_ROOMLIST (empathy_tp_roomlist_get_type ())
+#define EMPATHY_TP_ROOMLIST(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), EMPATHY_TYPE_TP_ROOMLIST, EmpathyTpRoomlist))
+#define EMPATHY_TP_ROOMLIST_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), EMPATHY_TYPE_TP_ROOMLIST, EmpathyTpRoomlistClass))
+#define EMPATHY_IS_TP_ROOMLIST(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), EMPATHY_TYPE_TP_ROOMLIST))
+#define EMPATHY_IS_TP_ROOMLIST_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), EMPATHY_TYPE_TP_ROOMLIST))
+#define EMPATHY_TP_ROOMLIST_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), EMPATHY_TYPE_TP_ROOMLIST, EmpathyTpRoomlistClass))
+
+typedef struct _EmpathyTpRoomlist EmpathyTpRoomlist;
+typedef struct _EmpathyTpRoomlistClass EmpathyTpRoomlistClass;
+typedef struct _EmpathyTpRoomlistPriv EmpathyTpRoomlistPriv;
+
+struct _EmpathyTpRoomlist {
+ GObject parent;
+};
+
+struct _EmpathyTpRoomlistClass {
+ GObjectClass parent_class;
+};
+
+GType empathy_tp_roomlist_get_type (void) G_GNUC_CONST;
+EmpathyTpRoomlist *empathy_tp_roomlist_new (McAccount *account);
+gboolean empathy_tp_roomlist_is_listing (EmpathyTpRoomlist *list);
+void empathy_tp_roomlist_start (EmpathyTpRoomlist *list);
+void empathy_tp_roomlist_stop (EmpathyTpRoomlist *list);
+
+G_END_DECLS
+
+#endif /* __EMPATHY_TP_ROOMLIST_H__ */
diff --git a/gnome-2-22/libempathy/empathy-utils.c b/gnome-2-22/libempathy/empathy-utils.c
new file mode 100644
index 000000000..2bc107455
--- /dev/null
+++ b/gnome-2-22/libempathy/empathy-utils.c
@@ -0,0 +1,605 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2003-2007 Imendio AB
+ * Copyright (C) 2007-2008 Collabora Ltd.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * 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: Richard Hult <richard@imendio.com>
+ * Martyn Russell <martyn@imendio.com>
+ * Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#include "config.h"
+
+#include <string.h>
+#include <time.h>
+#include <sys/types.h>
+#include <regex.h>
+
+#include <glib/gi18n.h>
+
+#include <libxml/uri.h>
+#include <libtelepathy/tp-helpers.h>
+#include <libtelepathy/tp-conn.h>
+
+#include "empathy-debug.h"
+#include "empathy-utils.h"
+#include "empathy-contact-factory.h"
+#include "empathy-contact-manager.h"
+#include "empathy-tp-group.h"
+
+#define DEBUG_DOMAIN "Utils"
+
+static void regex_init (void);
+
+gchar *
+empathy_substring (const gchar *str,
+ gint start,
+ gint end)
+{
+ return g_strndup (str + start, end - start);
+}
+
+/*
+ * Regular Expression code to match urls.
+ */
+#define USERCHARS "-A-Za-z0-9"
+#define PASSCHARS "-A-Za-z0-9,?;.:/!%$^*&~\"#'"
+#define HOSTCHARS "-A-Za-z0-9_"
+#define PATHCHARS "-A-Za-z0-9_$.+!*(),;:@&=?/~#%"
+#define SCHEME "(news:|telnet:|nntp:|file:/|https?:|ftps?:|webcal:)"
+#define USER "[" USERCHARS "]+(:["PASSCHARS "]+)?"
+#define URLPATH "/[" PATHCHARS "]*[^]'.}>) \t\r\n,\\\"]"
+
+static regex_t dingus[EMPATHY_REGEX_ALL];
+
+static void
+regex_init (void)
+{
+ static gboolean inited = FALSE;
+ const gchar *expression;
+ gint i;
+
+ if (inited) {
+ return;
+ }
+
+ for (i = 0; i < EMPATHY_REGEX_ALL; i++) {
+ switch (i) {
+ case EMPATHY_REGEX_AS_IS:
+ expression =
+ SCHEME "//(" USER "@)?[" HOSTCHARS ".]+"
+ "(:[0-9]+)?(" URLPATH ")?";
+ break;
+ case EMPATHY_REGEX_BROWSER:
+ expression =
+ "(www|ftp)[" HOSTCHARS "]*\\.[" HOSTCHARS ".]+"
+ "(:[0-9]+)?(" URLPATH ")?";
+ break;
+ case EMPATHY_REGEX_EMAIL:
+ expression =
+ "(mailto:)?[a-z0-9][a-z0-9.-]*@[a-z0-9]"
+ "[a-z0-9-]*(\\.[a-z0-9][a-z0-9-]*)+";
+ break;
+ case EMPATHY_REGEX_OTHER:
+ expression =
+ "news:[-A-Z\\^_a-z{|}~!\"#$%&'()*+,./0-9;:=?`]+"
+ "@[" HOSTCHARS ".]+(:[0-9]+)?";
+ break;
+ default:
+ /* Silence the compiler. */
+ expression = NULL;
+ continue;
+ }
+
+ memset (&dingus[i], 0, sizeof (regex_t));
+ regcomp (&dingus[i], expression, REG_EXTENDED | REG_ICASE);
+ }
+
+ inited = TRUE;
+}
+
+gint
+empathy_regex_match (EmpathyRegExType type,
+ const gchar *msg,
+ GArray *start,
+ GArray *end)
+{
+ regmatch_t matches[1];
+ gint ret = 0;
+ gint num_matches = 0;
+ gint offset = 0;
+ gint i;
+
+ g_return_val_if_fail (type >= 0 || type <= EMPATHY_REGEX_ALL, 0);
+
+ regex_init ();
+
+ while (!ret && type != EMPATHY_REGEX_ALL) {
+ ret = regexec (&dingus[type], msg + offset, 1, matches, 0);
+ if (ret == 0) {
+ gint s;
+
+ num_matches++;
+
+ s = matches[0].rm_so + offset;
+ offset = matches[0].rm_eo + offset;
+
+ g_array_append_val (start, s);
+ g_array_append_val (end, offset);
+ }
+ }
+
+ if (type != EMPATHY_REGEX_ALL) {
+ empathy_debug (DEBUG_DOMAIN,
+ "Found %d matches for regex type:%d",
+ num_matches, type);
+ return num_matches;
+ }
+
+ /* If EMPATHY_REGEX_ALL then we run ALL regex's on the string. */
+ for (i = 0; i < EMPATHY_REGEX_ALL; i++, ret = 0) {
+ while (!ret) {
+ ret = regexec (&dingus[i], msg + offset, 1, matches, 0);
+ if (ret == 0) {
+ gint s;
+
+ num_matches++;
+
+ s = matches[0].rm_so + offset;
+ offset = matches[0].rm_eo + offset;
+
+ g_array_append_val (start, s);
+ g_array_append_val (end, offset);
+ }
+ }
+ }
+
+ empathy_debug (DEBUG_DOMAIN,
+ "Found %d matches for ALL regex types",
+ num_matches);
+
+ return num_matches;
+}
+
+gint
+empathy_strcasecmp (const gchar *s1,
+ const gchar *s2)
+{
+ return empathy_strncasecmp (s1, s2, -1);
+}
+
+gint
+empathy_strncasecmp (const gchar *s1,
+ const gchar *s2,
+ gsize n)
+{
+ gchar *u1, *u2;
+ gint ret_val;
+
+ u1 = g_utf8_casefold (s1, n);
+ u2 = g_utf8_casefold (s2, n);
+
+ ret_val = g_utf8_collate (u1, u2);
+ g_free (u1);
+ g_free (u2);
+
+ return ret_val;
+}
+
+gboolean
+empathy_xml_validate (xmlDoc *doc,
+ const gchar *dtd_filename)
+{
+ gchar *path, *escaped;
+ xmlValidCtxt cvp;
+ xmlDtd *dtd;
+ gboolean ret;
+
+ path = g_build_filename (g_getenv ("EMPATHY_SRCDIR"), "libempathy",
+ dtd_filename, NULL);
+ if (!g_file_test (path, G_FILE_TEST_EXISTS)) {
+ g_free (path);
+ path = g_build_filename (DATADIR, "empathy", dtd_filename, NULL);
+ }
+ empathy_debug (DEBUG_DOMAIN, "Loading dtd file %s", path);
+
+ /* The list of valid chars is taken from libxml. */
+ escaped = xmlURIEscapeStr (path, ":@&=+$,/?;");
+ g_free (path);
+
+ memset (&cvp, 0, sizeof (cvp));
+ dtd = xmlParseDTD (NULL, escaped);
+ ret = xmlValidateDtd (&cvp, doc, dtd);
+
+ xmlFree (escaped);
+ xmlFreeDtd (dtd);
+
+ return ret;
+}
+
+xmlNodePtr
+empathy_xml_node_get_child (xmlNodePtr node,
+ const gchar *child_name)
+{
+ xmlNodePtr l;
+
+ g_return_val_if_fail (node != NULL, NULL);
+ g_return_val_if_fail (child_name != NULL, NULL);
+
+ for (l = node->children; l; l = l->next) {
+ if (l->name && strcmp (l->name, child_name) == 0) {
+ return l;
+ }
+ }
+
+ return NULL;
+}
+
+xmlChar *
+empathy_xml_node_get_child_content (xmlNodePtr node,
+ const gchar *child_name)
+{
+ xmlNodePtr l;
+
+ g_return_val_if_fail (node != NULL, NULL);
+ g_return_val_if_fail (child_name != NULL, NULL);
+
+ l = empathy_xml_node_get_child (node, child_name);
+ if (l) {
+ return xmlNodeGetContent (l);
+ }
+
+ return NULL;
+}
+
+xmlNodePtr
+empathy_xml_node_find_child_prop_value (xmlNodePtr node,
+ const gchar *prop_name,
+ const gchar *prop_value)
+{
+ xmlNodePtr l;
+ xmlNodePtr found = NULL;
+
+ g_return_val_if_fail (node != NULL, NULL);
+ g_return_val_if_fail (prop_name != NULL, NULL);
+ g_return_val_if_fail (prop_value != NULL, NULL);
+
+ for (l = node->children; l && !found; l = l->next) {
+ xmlChar *prop;
+
+ if (!xmlHasProp (l, prop_name)) {
+ continue;
+ }
+
+ prop = xmlGetProp (l, prop_name);
+ if (prop && strcmp (prop, prop_value) == 0) {
+ found = l;
+ }
+
+ xmlFree (prop);
+ }
+
+ return found;
+}
+
+guint
+empathy_account_hash (gconstpointer key)
+{
+ g_return_val_if_fail (MC_IS_ACCOUNT (key), 0);
+
+ return g_str_hash (mc_account_get_unique_name (MC_ACCOUNT (key)));
+}
+
+gboolean
+empathy_account_equal (gconstpointer a,
+ gconstpointer b)
+{
+ const gchar *name_a;
+ const gchar *name_b;
+
+ g_return_val_if_fail (MC_IS_ACCOUNT (a), FALSE);
+ g_return_val_if_fail (MC_IS_ACCOUNT (b), FALSE);
+
+ name_a = mc_account_get_unique_name (MC_ACCOUNT (a));
+ name_b = mc_account_get_unique_name (MC_ACCOUNT (b));
+
+ return g_str_equal (name_a, name_b);
+}
+
+MissionControl *
+empathy_mission_control_new (void)
+{
+ static MissionControl *mc = NULL;
+
+ if (!mc) {
+ mc = mission_control_new (tp_get_bus ());
+ g_object_add_weak_pointer (G_OBJECT (mc), (gpointer) &mc);
+ } else {
+ g_object_ref (mc);
+ }
+
+ return mc;
+}
+
+gchar *
+empathy_inspect_channel (McAccount *account,
+ TpChan *tp_chan)
+{
+ g_return_val_if_fail (MC_IS_ACCOUNT (account), NULL);
+ g_return_val_if_fail (TELEPATHY_IS_CHAN (tp_chan), NULL);
+
+ return empathy_inspect_handle (account,
+ tp_chan->handle,
+ tp_chan->handle_type);
+}
+
+gchar *
+empathy_inspect_handle (McAccount *account,
+ guint handle,
+ guint handle_type)
+{
+ MissionControl *mc;
+ TpConn *tp_conn;
+ GArray *handles;
+ gchar **names;
+ gchar *name;
+ GError *error = NULL;
+
+ g_return_val_if_fail (MC_IS_ACCOUNT (account), NULL);
+ g_return_val_if_fail (handle != 0, NULL);
+ g_return_val_if_fail (handle_type != 0, NULL);
+
+ mc = empathy_mission_control_new ();
+ tp_conn = mission_control_get_connection (mc, account, NULL);
+ g_object_unref (mc);
+
+ if (!tp_conn) {
+ return NULL;
+ }
+
+ /* Get the handle's name */
+ handles = g_array_new (FALSE, FALSE, sizeof (guint));
+ g_array_append_val (handles, handle);
+ if (!tp_conn_inspect_handles (DBUS_G_PROXY (tp_conn),
+ handle_type,
+ handles,
+ &names,
+ &error)) {
+ empathy_debug (DEBUG_DOMAIN,
+ "Couldn't get id: %s",
+ error ? error->message : "No error given");
+
+ g_clear_error (&error);
+ g_array_free (handles, TRUE);
+ g_object_unref (tp_conn);
+
+ return NULL;
+ }
+
+ g_array_free (handles, TRUE);
+ name = *names;
+ g_free (names);
+ g_object_unref (tp_conn);
+
+ return name;
+}
+
+void
+empathy_call_with_contact (EmpathyContact *contact)
+{
+#ifdef HAVE_VOIP
+ MissionControl *mc;
+ McAccount *account;
+ TpConn *tp_conn;
+ gchar *object_path;
+ const gchar *bus_name;
+ TpChan *new_chan;
+ EmpathyContactFactory *factory;
+ EmpathyTpGroup *group;
+ EmpathyContact *self_contact;
+ GError *error = NULL;
+
+ g_return_if_fail (EMPATHY_IS_CONTACT (contact));
+
+ /* StreamedMedia channels must have handle=0 and handle_type=none.
+ * To call a contact we have to add him in the group interface of the
+ * channel. MissionControl will detect the channel creation and
+ * dispatch it to the VoIP chandler automatically. */
+
+ mc = empathy_mission_control_new ();
+ account = empathy_contact_get_account (contact);
+ tp_conn = mission_control_get_connection (mc, account, NULL);
+ /* FIXME: Should be async */
+ if (!tp_conn_request_channel (DBUS_G_PROXY (tp_conn),
+ TP_IFACE_CHANNEL_TYPE_STREAMED_MEDIA,
+ TP_HANDLE_TYPE_NONE,
+ 0,
+ FALSE,
+ &object_path,
+ &error)) {
+ empathy_debug (DEBUG_DOMAIN,
+ "Couldn't request channel: %s",
+ error ? error->message : "No error given");
+ g_clear_error (&error);
+ g_object_unref (mc);
+ g_object_unref (tp_conn);
+ return;
+ }
+
+ bus_name = dbus_g_proxy_get_bus_name (DBUS_G_PROXY (tp_conn));
+ new_chan = tp_chan_new (tp_get_bus (),
+ bus_name,
+ object_path,
+ TP_IFACE_CHANNEL_TYPE_STREAMED_MEDIA,
+ TP_HANDLE_TYPE_NONE,
+ 0);
+
+ group = empathy_tp_group_new (account, new_chan);
+ factory = empathy_contact_factory_new ();
+ self_contact = empathy_contact_factory_get_user (factory, account);
+ empathy_tp_group_add_member (group, contact, "");
+ empathy_tp_group_add_member (group, self_contact, "");
+
+ g_object_unref (factory);
+ g_object_unref (self_contact);
+ g_object_unref (group);
+ g_object_unref (mc);
+ g_object_unref (tp_conn);
+ g_object_unref (new_chan);
+ g_free (object_path);
+#endif
+}
+
+#ifdef HAVE_VOIP
+static void
+got_handle_cb (EmpathyContact *contact,
+ GParamSpec *property,
+ EmpathyContactFactory *factory)
+{
+ g_signal_handlers_disconnect_by_func (contact,
+ got_handle_cb,
+ factory);
+
+ empathy_call_with_contact (contact);
+ g_object_unref (factory);
+ g_object_unref (contact);
+}
+#endif
+
+void
+empathy_call_with_contact_id (McAccount *account, const gchar *contact_id)
+{
+#ifdef HAVE_VOIP
+ EmpathyContactFactory *factory;
+ EmpathyContact *contact;
+
+ factory = empathy_contact_factory_new ();
+ contact = empathy_contact_factory_get_from_id (factory, account, contact_id);
+
+ if (empathy_contact_get_handle (contact) != 0) {
+ empathy_call_with_contact (contact);
+ g_object_unref (contact);
+ g_object_unref (factory);
+ } else {
+ g_signal_connect (contact, "notify::handle",
+ G_CALLBACK (got_handle_cb),
+ factory);
+ }
+#endif
+}
+
+void
+empathy_chat_with_contact (EmpathyContact *contact)
+{
+ MissionControl *mc;
+
+ mc = empathy_mission_control_new ();
+ mission_control_request_channel (mc,
+ empathy_contact_get_account (contact),
+ TP_IFACE_CHANNEL_TYPE_TEXT,
+ empathy_contact_get_handle (contact),
+ TP_HANDLE_TYPE_CONTACT,
+ NULL, NULL);
+ g_object_unref (mc);
+}
+
+void
+empathy_chat_with_contact_id (McAccount *account, const gchar *contact_id)
+{
+ MissionControl *mc;
+
+ mc = empathy_mission_control_new ();
+ mission_control_request_channel_with_string_handle (mc,
+ account,
+ TP_IFACE_CHANNEL_TYPE_TEXT,
+ contact_id,
+ TP_HANDLE_TYPE_CONTACT,
+ NULL, NULL);
+ g_object_unref (mc);
+}
+
+const gchar *
+empathy_presence_get_default_message (McPresence presence)
+{
+ switch (presence) {
+ case MC_PRESENCE_AVAILABLE:
+ return _("Available");
+ case MC_PRESENCE_DO_NOT_DISTURB:
+ return _("Busy");
+ case MC_PRESENCE_AWAY:
+ case MC_PRESENCE_EXTENDED_AWAY:
+ return _("Away");
+ case MC_PRESENCE_HIDDEN:
+ return _("Hidden");
+ case MC_PRESENCE_OFFLINE:
+ case MC_PRESENCE_UNSET:
+ return _("Offline");
+ default:
+ g_assert_not_reached ();
+ }
+
+ return NULL;
+}
+
+const gchar *
+empathy_presence_to_str (McPresence presence)
+{
+ switch (presence) {
+ case MC_PRESENCE_AVAILABLE:
+ return "available";
+ case MC_PRESENCE_DO_NOT_DISTURB:
+ return "busy";
+ case MC_PRESENCE_AWAY:
+ return "away";
+ case MC_PRESENCE_EXTENDED_AWAY:
+ return "ext_away";
+ case MC_PRESENCE_HIDDEN:
+ return "hidden";
+ case MC_PRESENCE_OFFLINE:
+ return "offline";
+ case MC_PRESENCE_UNSET:
+ return "unset";
+ default:
+ g_assert_not_reached ();
+ }
+
+ return NULL;
+}
+
+McPresence
+empathy_presence_from_str (const gchar *str)
+{
+ if (strcmp (str, "available") == 0) {
+ return MC_PRESENCE_AVAILABLE;
+ } else if ((strcmp (str, "dnd") == 0) || (strcmp (str, "busy") == 0)) {
+ return MC_PRESENCE_DO_NOT_DISTURB;
+ } else if ((strcmp (str, "away") == 0) || (strcmp (str, "brb") == 0)) {
+ return MC_PRESENCE_AWAY;
+ } else if ((strcmp (str, "xa") == 0) || (strcmp (str, "ext_away") == 0)) {
+ return MC_PRESENCE_EXTENDED_AWAY;
+ } else if (strcmp (str, "hidden") == 0) {
+ return MC_PRESENCE_HIDDEN;
+ } else if (strcmp (str, "offline") == 0) {
+ return MC_PRESENCE_OFFLINE;
+ } else if (strcmp (str, "unset") == 0) {
+ return MC_PRESENCE_UNSET;
+ }
+
+ return MC_PRESENCE_AVAILABLE;
+}
+
diff --git a/gnome-2-22/libempathy/empathy-utils.h b/gnome-2-22/libempathy/empathy-utils.h
new file mode 100644
index 000000000..cafc3db10
--- /dev/null
+++ b/gnome-2-22/libempathy/empathy-utils.h
@@ -0,0 +1,103 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2003-2007 Imendio AB
+ * Copyright (C) 2007 Collabora Ltd.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * 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: Richard Hult <richard@imendio.com>
+ * Martyn Russell <martyn@imendio.com>
+ * Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#ifndef __EMPATHY_UTILS_H__
+#define __EMPATHY_UTILS_H__
+
+#include <glib.h>
+#include <glib-object.h>
+
+#include <libxml/parser.h>
+#include <libxml/tree.h>
+
+#include <libtelepathy/tp-chan.h>
+
+#include <libmissioncontrol/mc-account.h>
+#include <libmissioncontrol/mission-control.h>
+
+#include "empathy-contact.h"
+
+G_BEGIN_DECLS
+
+#define G_STR_EMPTY(x) ((x) == NULL || (x)[0] == '\0')
+
+typedef enum {
+ EMPATHY_REGEX_AS_IS,
+ EMPATHY_REGEX_BROWSER,
+ EMPATHY_REGEX_EMAIL,
+ EMPATHY_REGEX_OTHER,
+ EMPATHY_REGEX_ALL,
+} EmpathyRegExType;
+
+/* Regular expressions */
+gchar * empathy_substring (const gchar *str,
+ gint start,
+ gint end);
+gint empathy_regex_match (EmpathyRegExType type,
+ const gchar *msg,
+ GArray *start,
+ GArray *end);
+
+/* Strings */
+gint empathy_strcasecmp (const gchar *s1,
+ const gchar *s2);
+gint empathy_strncasecmp (const gchar *s1,
+ const gchar *s2,
+ gsize n);
+
+/* XML */
+gboolean empathy_xml_validate (xmlDoc *doc,
+ const gchar *dtd_filename);
+xmlNodePtr empathy_xml_node_get_child (xmlNodePtr node,
+ const gchar *child_name);
+xmlChar * empathy_xml_node_get_child_content (xmlNodePtr node,
+ const gchar *child_name);
+xmlNodePtr empathy_xml_node_find_child_prop_value (xmlNodePtr node,
+ const gchar *prop_name,
+ const gchar *prop_value);
+
+/* Others */
+guint empathy_account_hash (gconstpointer key);
+gboolean empathy_account_equal (gconstpointer a,
+ gconstpointer b);
+MissionControl *empathy_mission_control_new (void);
+gchar * empathy_inspect_handle (McAccount *account,
+ guint handle,
+ guint handle_type);
+gchar * empathy_inspect_channel (McAccount *account,
+ TpChan *tp_chan);
+void empathy_call_with_contact (EmpathyContact *contact);
+void empathy_call_with_contact_id (McAccount *account,
+ const gchar *contact_id);
+void empathy_chat_with_contact (EmpathyContact *contact);
+void empathy_chat_with_contact_id (McAccount *account,
+ const gchar *contact_id);
+const gchar * empathy_presence_get_default_message (McPresence presence);
+const gchar * empathy_presence_to_str (McPresence presence);
+McPresence empathy_presence_from_str (const gchar *str);
+
+G_END_DECLS
+
+#endif /* __EMPATHY_UTILS_H__ */
diff --git a/gnome-2-22/libempathy/irc-networks.xml b/gnome-2-22/libempathy/irc-networks.xml
new file mode 100644
index 000000000..383ba25ff
--- /dev/null
+++ b/gnome-2-22/libempathy/irc-networks.xml
@@ -0,0 +1,543 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<networks>
+ <network name="Debian Servers" id="debian_servers">
+ <servers>
+ <server ssl="FALSE" port="6667" address="irc.debian.org"/>
+ <server ssl="FALSE" port="6667" address="irc.oftc.net"/>
+ </servers>
+ </network>
+ <network name="Ubuntu Servers" id="ubuntu_servers">
+ <servers>
+ <server ssl="FALSE" port="8001" address="irc.ubuntu.com"/>
+ </servers>
+ </network>
+ <network name="2600net" id="a2600net">
+ <servers>
+ <server ssl="FALSE" port="6667" address="irc.2600.net"/>
+ </servers>
+ </network>
+ <network name="AccessIRC" id="accessirc">
+ <servers>
+ <server ssl="FALSE" port="6667" address="irc.accessirc.net"/>
+ <server ssl="FALSE" port="6667" address="eu.accessirc.net"/>
+ </servers>
+ </network>
+ <network name="AfterNET" id="afternet">
+ <servers>
+ <server ssl="FALSE" port="6667" address="irc.afternet.org"/>
+ <server ssl="FALSE" port="6667" address="us.afternet.org"/>
+ <server ssl="FALSE" port="6667" address="eu.afternet.org"/>
+ </servers>
+ </network>
+ <network name="Aitvaras" id="aitvaras">
+ <servers>
+ <server ssl="TRUE" port="6668" address="irc.data.lt"/>
+ <server ssl="TRUE" port="6668" address="irc-ssl.omnitel.net"/>
+ <server ssl="TRUE" port="9999" address="irc-ssl.le.lt"/>
+ <server ssl="FALSE" port="6667" address="irc.data.lt"/>
+ <server ssl="FALSE" port="6667" address="irc.omnitel.net"/>
+ <server ssl="FALSE" port="6667" address="irc.ktu.lt"/>
+ <server ssl="FALSE" port="6667" address="irc.le.lt"/>
+ <server ssl="FALSE" port="6667" address="irc.takas.lt"/>
+ <server ssl="FALSE" port="6667" address="irc.5ci.net"/>
+ <server ssl="FALSE" port="6667" address="irc.kis.lt"/>
+ </servers>
+ </network>
+ <network name="AmigaNet" id="amiganet">
+ <servers>
+ <server ssl="FALSE" port="6667" address="irc.amiganet.org"/>
+ <server ssl="FALSE" port="6667" address="us.amiganet.org"/>
+ <server ssl="FALSE" port="6667" address="uk.amiganet.org"/>
+ </servers>
+ </network>
+ <network name="ARCNet" id="arcnet">
+ <servers>
+ <server ssl="FALSE" port="6667" address="se1.arcnet.vapor.com"/>
+ <server ssl="FALSE" port="6667" address="us1.arcnet.vapor.com"/>
+ <server ssl="FALSE" port="6667" address="us2.arcnet.vapor.com"/>
+ <server ssl="FALSE" port="6667" address="us3.arcnet.vapor.com"/>
+ <server ssl="FALSE" port="6667" address="ca1.arcnet.vapor.com"/>
+ <server ssl="FALSE" port="6667" address="de1.arcnet.vapor.com"/>
+ <server ssl="FALSE" port="6667" address="de3.arcnet.vapor.com"/>
+ <server ssl="FALSE" port="6667" address="ch1.arcnet.vapor.com"/>
+ <server ssl="FALSE" port="6667" address="be1.arcnet.vapor.com"/>
+ <server ssl="FALSE" port="6667" address="nl3.arcnet.vapor.com"/>
+ <server ssl="FALSE" port="6667" address="uk1.arcnet.vapor.com"/>
+ <server ssl="FALSE" port="6667" address="uk2.arcnet.vapor.com"/>
+ <server ssl="FALSE" port="6667" address="fr1.arcnet.vapor.com"/>
+ </servers>
+ </network>
+ <network name="AstroLink" id="astrolink">
+ <servers>
+ <server ssl="FALSE" port="6667" address="irc.astrolink.org"/>
+ </servers>
+ </network>
+ <network name="AustNet" id="austnet">
+ <servers>
+ <server ssl="FALSE" port="6667" address="au.austnet.org"/>
+ <server ssl="FALSE" port="6667" address="us.austnet.org"/>
+ <server ssl="FALSE" port="6667" address="ca.austnet.org"/>
+ </servers>
+ </network>
+ <network name="AzzurraNet" id="azzurranet">
+ <servers>
+ <server ssl="FALSE" port="6667" address="irc.azzurra.org"/>
+ <server ssl="FALSE" port="6667" address="crypto.azzurra.org"/>
+ </servers>
+ </network>
+ <network name="Beirut" id="beirut">
+ <servers>
+ <server ssl="FALSE" port="6667" address="irc.beirut.com"/>
+ </servers>
+ </network>
+ <network name="ChatJunkies" id="chatjunkies">
+ <servers>
+ <server ssl="FALSE" port="6667" address="irc.chatjunkies.org"/>
+ <server ssl="FALSE" port="6667" address="nl.chatjunkies.org"/>
+ </servers>
+ </network>
+ <network name="ChatNet" id="chatnet">
+ <servers>
+ <server ssl="FALSE" port="6667" address="US.ChatNet.Org"/>
+ <server ssl="FALSE" port="6667" address="EU.ChatNet.Org"/>
+ </servers>
+ </network>
+ <network name="ChatSociety" id="chatsociety">
+ <servers>
+ <server ssl="FALSE" port="6667" address="us.chatsociety.net"/>
+ <server ssl="FALSE" port="6667" address="eu.chatsociety.net"/>
+ </servers>
+ </network>
+ <network name="ChatSpike" id="chatspike">
+ <servers>
+ <server ssl="FALSE" port="6667" address="irc.chatspike.net"/>
+ </servers>
+ </network>
+ <network name="ChillFactory" id="chillfactory">
+ <servers>
+ <server ssl="FALSE" port="6667" address="irc.chillfactory.net"/>
+ </servers>
+ </network>
+ <network name="CoolChat" id="coolchat">
+ <servers>
+ <server ssl="FALSE" port="6667" address="irc.coolchat.net"/>
+ </servers>
+ </network>
+ <network name="Criten" id="criten">
+ <servers>
+ <server ssl="FALSE" port="6667" address="irc.criten.net"/>
+ <server ssl="FALSE" port="6667" address="irc.eu.criten.net"/>
+ </servers>
+ </network>
+ <network name="DALnet" id="dalnet">
+ <servers>
+ <server ssl="FALSE" port="6667" address="irc.dal.net"/>
+ <server ssl="FALSE" port="6667" address="irc.eu.dal.net"/>
+ </servers>
+ </network>
+ <network name="Dark-Tou-Net" id="dark-tou-net">
+ <servers>
+ <server ssl="FALSE" port="6667" address="irc.d-t-net.de"/>
+ <server ssl="FALSE" port="6667" address="bw.d-t-net.de"/>
+ <server ssl="FALSE" port="6667" address="nc.d-t-net.de"/>
+ <server ssl="FALSE" port="6667" address="wakka.d-t-net.de"/>
+ </servers>
+ </network>
+ <network name="DarkMyst" id="darkmyst">
+ <servers>
+ <server ssl="FALSE" port="6667" address="irc.darkmyst.org"/>
+ </servers>
+ </network>
+ <network name="DeepIRC" id="deepirc">
+ <servers>
+ <server ssl="FALSE" port="6667" address="irc.deepirc.net"/>
+ </servers>
+ </network>
+ <network name="DeltaAnime" id="deltaanime">
+ <servers>
+ <server ssl="FALSE" port="6667" address="irc.deltaanime.net"/>
+ </servers>
+ </network>
+ <network name="EFnet" id="efnet">
+ <servers>
+ <server ssl="FALSE" port="6667" address="irc.blackened.com"/>
+ <server ssl="FALSE" port="6667" address="irc.Prison.NET"/>
+ <server ssl="FALSE" port="6667" address="irc.Qeast.net"/>
+ <server ssl="FALSE" port="6667" address="irc.efnet.pl"/>
+ <server ssl="FALSE" port="6667" address="efnet.demon.co.uk"/>
+ <server ssl="FALSE" port="6667" address="irc.lightning.net"/>
+ <server ssl="FALSE" port="6667" address="irc.mindspring.com"/>
+ <server ssl="FALSE" port="6667" address="irc.easynews.com"/>
+ <server ssl="FALSE" port="6667" address="irc.servercentral.net"/>
+ </servers>
+ </network>
+ <network name="EnterTheGame" id="enterthegame">
+ <servers>
+ <server ssl="FALSE" port="6667" address="IRC.EnterTheGame.Com"/>
+ </servers>
+ </network>
+ <network name="EUIrc" id="euirc">
+ <servers>
+ <server ssl="FALSE" port="6667" address="irc.euirc.net"/>
+ <server ssl="FALSE" port="6667" address="irc.ham.de.euirc.net"/>
+ <server ssl="FALSE" port="6667" address="irc.ber.de.euirc.net"/>
+ <server ssl="FALSE" port="6667" address="irc.ffm.de.euirc.net"/>
+ <server ssl="FALSE" port="6667" address="irc.bre.de.euirc.net"/>
+ <server ssl="FALSE" port="6667" address="irc.hes.de.euirc.net"/>
+ <server ssl="FALSE" port="6667" address="irc.vie.at.euirc.net"/>
+ <server ssl="FALSE" port="6667" address="irc.inn.at.euirc.net"/>
+ <server ssl="FALSE" port="6667" address="irc.bas.ch.euirc.net"/>
+ </servers>
+ </network>
+ <network name="EuropNet" id="europnet">
+ <servers>
+ <server ssl="FALSE" port="6667" address="irc.europnet.org"/>
+ </servers>
+ </network>
+ <network name="EU-IRC" id="eu-irc">
+ <servers>
+ <server ssl="FALSE" port="6667" address="irc.eu-irc.net"/>
+ </servers>
+ </network>
+ <network name="FDFNet" id="fdfnet">
+ <servers>
+ <server ssl="FALSE" port="6667" address="irc.fdfnet.net"/>
+ <server ssl="FALSE" port="6667" address="irc.eu.fdfnet.net"/>
+ </servers>
+ </network>
+ <network name="FEFNet" id="fefnet">
+ <servers>
+ <server ssl="FALSE" port="6667" address="irc.fef.net"/>
+ <server ssl="FALSE" port="6667" address="irc.ggn.net"/>
+ <server ssl="FALSE" port="6667" address="irc.vendetta.com"/>
+ </servers>
+ </network>
+ <network name="FreeNode" id="freenode">
+ <servers>
+ <server ssl="FALSE" port="6667" address="irc.freenode.net"/>
+ </servers>
+ </network>
+ <network name="GalaxyNet" id="galaxynet">
+ <servers>
+ <server ssl="FALSE" port="6667" address="irc.galaxynet.org"/>
+ </servers>
+ </network>
+ <network name="GamesNET" id="gamesnet">
+ <servers>
+ <server ssl="FALSE" port="6667" address="irc.gamesnet.net"/>
+ <server ssl="FALSE" port="6667" address="irc.ca.gamesnet.net"/>
+ <server ssl="FALSE" port="6667" address="irc.eu.gamesnet.net"/>
+ </servers>
+ </network>
+ <network name="German-Elite" id="german-elite">
+ <servers>
+ <server ssl="FALSE" port="6667" address="dominion.german-elite.net"/>
+ <server ssl="FALSE" port="6667" address="komatu.german-elite.net"/>
+ </servers>
+ </network>
+ <network name="GimpNet" id="gimpnet">
+ <servers>
+ <server ssl="FALSE" port="6667" address="irc.gimp.org"/>
+ <server ssl="FALSE" port="6667" address="irc.us.gimp.org"/>
+ </servers>
+ </network>
+ <network name="HabberNet" id="habbernet">
+ <servers>
+ <server ssl="FALSE" port="6667" address="irc.habber.net"/>
+ </servers>
+ </network>
+ <network name="Hashmark" id="hashmark">
+ <servers>
+ <server ssl="FALSE" port="6667" address="irc.hashmark.net"/>
+ </servers>
+ </network>
+ <network name="IdleMonkeys" id="idlemonkeys">
+ <servers>
+ <server ssl="FALSE" port="6667" address="irc.idlemonkeys.net"/>
+ </servers>
+ </network>
+ <network name="insiderZ.DE" id="insiderz.de">
+ <servers>
+ <server ssl="FALSE" port="6667" address="irc.insiderz.de"/>
+ <server ssl="FALSE" port="6666" address="irc.insiderz.de"/>
+ </servers>
+ </network>
+ <network name="IrcLink" id="irclink">
+ <servers>
+ <server ssl="FALSE" port="6667" address="irc.irclink.net"/>
+ <server ssl="FALSE" port="6667" address="Alesund.no.eu.irclink.net"/>
+ <server ssl="FALSE" port="6667" address="Oslo.no.eu.irclink.net"/>
+ <server ssl="FALSE" port="6667" address="frogn.no.eu.irclink.net"/>
+ <server ssl="FALSE" port="6667" address="tonsberg.no.eu.irclink.net"/>
+ </servers>
+ </network>
+ <network name="IRCNet" id="ircnet">
+ <servers>
+ <server ssl="FALSE" port="6667" address="irc.ircnet.com"/>
+ <server ssl="FALSE" port="6668" address="irc.stealth.net"/>
+ <server ssl="FALSE" port="6667" address="ircnet.demon.co.uk"/>
+ <server ssl="FALSE" port="6667" address="irc.datacomm.ch"/>
+ <server ssl="FALSE" port="6667" address="random.ircd.de"/>
+ <server ssl="FALSE" port="6667" address="ircnet.netvision.net.il"/>
+ <server ssl="FALSE" port="6667" address="irc.cs.hut.fi"/>
+ </servers>
+ </network>
+ <network name="Irctoo.net" id="irctoo.net">
+ <servers>
+ <server ssl="FALSE" port="6667" address="irc.irctoo.net"/>
+ </servers>
+ </network>
+ <network name="Krstarica" id="krstarica">
+ <servers>
+ <server ssl="FALSE" port="6667" address="irc.krstarica.com"/>
+ </servers>
+ </network>
+ <network name="Librenet" id="librenet">
+ <servers>
+ <server ssl="FALSE" port="6667" address="irc.librenet.net"/>
+ <server ssl="FALSE" port="6667" address="ielf.fr.librenet.net"/>
+ </servers>
+ </network>
+ <network name="LinkNet" id="linknet">
+ <servers>
+ <server ssl="FALSE" port="6667" address="irc.link-net.org"/>
+ <server ssl="FALSE" port="6667" address="irc.no.link-net.org"/>
+ <server ssl="FALSE" port="6667" address="irc.bahnhof.se"/>
+ </servers>
+ </network>
+ <network name="MagicStar" id="magicstar">
+ <servers>
+ <server ssl="FALSE" port="6667" address="irc.magicstar.net"/>
+ </servers>
+ </network>
+ <network name="Majistic" id="majistic">
+ <servers>
+ <server ssl="FALSE" port="6667" address="irc.majistic.net"/>
+ </servers>
+ </network>
+ <network name="MindForge" id="mindforge">
+ <servers>
+ <server ssl="FALSE" port="6667" address="irc.mindforge.org"/>
+ </servers>
+ </network>
+ <network name="MIXXnet" id="mixxnet">
+ <servers>
+ <server ssl="FALSE" port="6667" address="irc.mixxnet.net"/>
+ </servers>
+ </network>
+ <network name="NeverNET" id="nevernet">
+ <servers>
+ <server ssl="FALSE" port="6667" address="irc.nevernet.net"/>
+ <server ssl="FALSE" port="6667" address="imagine.nevernet.net"/>
+ <server ssl="FALSE" port="6667" address="dimension.nevernet.net"/>
+ <server ssl="FALSE" port="6667" address="universe.nevernet.net"/>
+ <server ssl="FALSE" port="6667" address="wayland.nevernet.net"/>
+ <server ssl="FALSE" port="6667" address="forte.nevernet.net"/>
+ </servers>
+ </network>
+ <network name="NixHelpNet" id="nixhelpnet">
+ <servers>
+ <server ssl="FALSE" port="6667" address="irc.nixhelp.org"/>
+ <server ssl="FALSE" port="6667" address="us.nixhelp.org"/>
+ <server ssl="FALSE" port="6667" address="uk.nixhelp.org"/>
+ <server ssl="FALSE" port="6667" address="uk2.nixhelp.org"/>
+ <server ssl="FALSE" port="6667" address="uk3.nixhelp.org"/>
+ <server ssl="FALSE" port="6667" address="nl.nixhelp.org"/>
+ <server ssl="FALSE" port="6667" address="ca.ld.nixhelp.org"/>
+ <server ssl="FALSE" port="6667" address="us.co.nixhelp.org"/>
+ <server ssl="FALSE" port="6667" address="us.ca.nixhelp.org"/>
+ <server ssl="FALSE" port="6667" address="us.pa.nixhelp.org"/>
+ </servers>
+ </network>
+ <network name="NullusNet" id="nullusnet">
+ <servers>
+ <server ssl="FALSE" port="6667" address="irc.nullus.net"/>
+ </servers>
+ </network>
+ <network name="Oceanius" id="oceanius">
+ <servers>
+ <server ssl="FALSE" port="6667" address="irc.oceanius.com"/>
+ </servers>
+ </network>
+ <network name="OFTC" id="oftc">
+ <servers>
+ <server ssl="FALSE" port="6667" address="irc.oftc.net"/>
+ </servers>
+ </network>
+ <network name="OtherNet" id="othernet">
+ <servers>
+ <server ssl="FALSE" port="6667" address="irc.othernet.org"/>
+ </servers>
+ </network>
+ <network name="Oz.org" id="oz.org">
+ <servers>
+ <server ssl="FALSE" port="6667" address="irc.oz.org"/>
+ <server ssl="FALSE" port="6667" address="germany.oz.org"/>
+ <server ssl="FALSE" port="6667" address="sandiego.oz.org"/>
+ <server ssl="FALSE" port="6667" address="us.oz.org"/>
+ <server ssl="FALSE" port="6667" address="au.oz.org"/>
+ <server ssl="FALSE" port="6667" address="rockhampton.oz.org"/>
+ <server ssl="FALSE" port="6667" address="wollongong.oz.org"/>
+ <server ssl="FALSE" port="6667" address="waix.oz.org"/>
+ </servers>
+ </network>
+ <network name="PTlink" id="ptlink">
+ <servers>
+ <server ssl="FALSE" port="6667" address="irc.PTlink.net"/>
+ <server ssl="FALSE" port="6667" address="aaia.PTlink.net"/>
+ </servers>
+ </network>
+ <network name="PTNe" id="ptne">
+ <servers>
+ <server ssl="FALSE" port="6667" address="irc.PTNet.org"/>
+ <server ssl="FALSE" port="6667" address="rccn.PTnet.org"/>
+ <server ssl="FALSE" port="6667" address="uevora.PTnet.org"/>
+ <server ssl="FALSE" port="6667" address="umoderna.PTnet.org"/>
+ <server ssl="FALSE" port="6667" address="ist.PTnet.org"/>
+ <server ssl="FALSE" port="6667" address="aaum.PTnet.org"/>
+ <server ssl="FALSE" port="6667" address="uc.PTnet.org"/>
+ <server ssl="FALSE" port="6667" address="ualg.ptnet.org"/>
+ <server ssl="FALSE" port="6667" address="madinfo.PTnet.org"/>
+ <server ssl="FALSE" port="6667" address="ua.PTnet.org"/>
+ <server ssl="FALSE" port="6667" address="ipg.PTnet.org"/>
+ <server ssl="FALSE" port="6667" address="isec.PTnet.org"/>
+ <server ssl="FALSE" port="6667" address="utad.PTnet.org"/>
+ <server ssl="FALSE" port="6667" address="iscte.PTnet.org"/>
+ <server ssl="FALSE" port="6667" address="ubi.PTnet.org"/>
+ </servers>
+ </network>
+ <network name="QuakeNet" id="quakenet">
+ <servers>
+ <server ssl="FALSE" port="6667" address="irc.quakenet.org"/>
+ <server ssl="FALSE" port="6667" address="irc.se.quakenet.org"/>
+ <server ssl="FALSE" port="6667" address="irc.dk.quakenet.org"/>
+ <server ssl="FALSE" port="6667" address="irc.no.quakenet.org"/>
+ <server ssl="FALSE" port="6667" address="irc.fi.quakenet.org"/>
+ <server ssl="FALSE" port="6667" address="irc.be.quakenet.org"/>
+ <server ssl="FALSE" port="6667" address="irc.uk.quakenet.org"/>
+ <server ssl="FALSE" port="6667" address="irc.de.quakenet.org"/>
+ <server ssl="FALSE" port="6667" address="irc.it.quakenet.org"/>
+ </servers>
+ </network>
+ <network name="RebelChat" id="rebelchat">
+ <servers>
+ <server ssl="FALSE" port="6667" address="irc.rebelchat.org"/>
+ </servers>
+ </network>
+ <network name="RizeNET" id="rizenet">
+ <servers>
+ <server ssl="FALSE" port="6667" address="irc.rizenet.org"/>
+ <server ssl="FALSE" port="6667" address="omega.rizenet.org"/>
+ <server ssl="FALSE" port="6667" address="evelance.rizenet.org"/>
+ <server ssl="FALSE" port="6667" address="lisa.rizenet.org"/>
+ <server ssl="FALSE" port="6667" address="scott.rizenet.org"/>
+ </servers>
+ </network>
+ <network name="RusNet" id="rusnet">
+ <servers>
+ <server ssl="FALSE" port="6667" address="irc.tomsk.net"/>
+ <server ssl="FALSE" port="6667" address="irc.rinet.ru"/>
+ <server ssl="FALSE" port="6667" address="irc.run.net"/>
+ <server ssl="FALSE" port="6667" address="irc.ru"/>
+ <server ssl="FALSE" port="6667" address="irc.lucky.net"/>
+ </servers>
+ </network>
+ <network name="SceneNet" id="scenenet">
+ <servers>
+ <server ssl="FALSE" port="6667" address="irc.scene.org"/>
+ <server ssl="FALSE" port="6667" address="irc.eu.scene.org"/>
+ <server ssl="FALSE" port="6667" address="irc.us.scene.org"/>
+ </servers>
+ </network>
+ <network name="SlashNET" id="slashnet">
+ <servers>
+ <server ssl="FALSE" port="6667" address="irc.slashnet.org"/>
+ <server ssl="FALSE" port="6667" address="area51.slashnet.org"/>
+ <server ssl="FALSE" port="6667" address="moo.slashnet.org"/>
+ <server ssl="FALSE" port="6667" address="radon.slashnet.org"/>
+ </servers>
+ </network>
+ <network name="Sohbet.Net" id="sohbet.net">
+ <servers>
+ <server ssl="FALSE" port="6667" address="irc.sohbet.net"/>
+ </servers>
+ </network>
+ <network name="SolidIRC" id="solidirc">
+ <servers>
+ <server ssl="FALSE" port="6667" address="irc.solidirc.com"/>
+ </servers>
+ </network>
+ <network name="SorceryNet" id="sorcerynet">
+ <servers>
+ <server ssl="FALSE" port="9000" address="irc.sorcery.net"/>
+ <server ssl="FALSE" port="9000" address="irc.us.sorcery.net"/>
+ <server ssl="FALSE" port="9000" address="irc.eu.sorcery.net"/>
+ </servers>
+ </network>
+ <network name="Spidernet" id="spidernet">
+ <servers>
+ <server ssl="FALSE" port="6667" address="us.spidernet.org"/>
+ <server ssl="FALSE" port="6667" address="eu.spidernet.org"/>
+ <server ssl="FALSE" port="6667" address="irc.spidernet.org"/>
+ </servers>
+ </network>
+ <network name="StarChat" id="starchat">
+ <servers>
+ <server ssl="FALSE" port="6667" address="irc.starchat.net"/>
+ <server ssl="FALSE" port="6667" address="gainesville.starchat.net"/>
+ <server ssl="FALSE" port="6667" address="freebsd.starchat.net"/>
+ <server ssl="FALSE" port="6667" address="sunset.starchat.net"/>
+ <server ssl="FALSE" port="6667" address="revenge.starchat.net"/>
+ <server ssl="FALSE" port="6667" address="tahoma.starchat.net"/>
+ <server ssl="FALSE" port="6667" address="neo.starchat.net"/>
+ </servers>
+ </network>
+ <network name="TNI3" id="tni3">
+ <servers>
+ <server ssl="FALSE" port="6667" address="irc.tni3.com"/>
+ </servers>
+ </network>
+ <network name="UnderNet" id="undernet">
+ <servers>
+ <server ssl="FALSE" port="6667" address="us.undernet.org"/>
+ <server ssl="FALSE" port="6667" address="eu.undernet.org"/>
+ </servers>
+ </network>
+ <network name="UniBG" id="unibg">
+ <servers>
+ <server ssl="FALSE" port="6667" address="irc.lirex.com"/>
+ <server ssl="FALSE" port="6667" address="irc.naturella.com"/>
+ <server ssl="FALSE" port="6667" address="irc.spnet.net"/>
+ <server ssl="FALSE" port="6667" address="irc.techno-link.com"/>
+ <server ssl="FALSE" port="6667" address="irc.telecoms.bg"/>
+ <server ssl="FALSE" port="6667" address="irc.tu-varna.edu"/>
+ </servers>
+ </network>
+ <network name="Whiffle" id="whiffle">
+ <servers>
+ <server ssl="FALSE" port="6667" address="irc.whiffle.org"/>
+ </servers>
+ </network>
+ <network name="Worldnet" id="worldnet">
+ <servers>
+ <server ssl="FALSE" port="6667" address="irc.worldnet.net"/>
+ <server ssl="FALSE" port="6667" address="irc.fr.worldnet.net"/>
+ </servers>
+ </network>
+ <network name="Xentonix.net" id="xentonix.net">
+ <servers>
+ <server ssl="FALSE" port="6667" address="irc.ffm.de.eu.xentonix.net"/>
+ <server ssl="FALSE" port="6667" address="irc.kar.de.eu.xentonix.net"/>
+ <server ssl="FALSE" port="6667" address="irc.vie.at.eu.xentonix.net"/>
+ </servers>
+ </network>
+ <network name="XWorld" id="xworld">
+ <servers>
+ <server ssl="FALSE" port="6667" address="Buffalo.NY.US.XWorld.org"/>
+ <server ssl="FALSE" port="6667" address="Minneapolis.MN.US.Xworld.Org"/>
+ <server ssl="FALSE" port="6667" address="Rochester.NY.US.XWorld.org"/>
+ <server ssl="FALSE" port="6667" address="Bayern.DE.EU.XWorld.Org"/>
+ <server ssl="FALSE" port="6667" address="Chicago.IL.US.XWorld.Org"/>
+ </servers>
+ </network>
+</networks>
diff --git a/gnome-2-22/libempathy/libempathy.pc.in b/gnome-2-22/libempathy/libempathy.pc.in
new file mode 100644
index 000000000..e567fefce
--- /dev/null
+++ b/gnome-2-22/libempathy/libempathy.pc.in
@@ -0,0 +1,11 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: libempathy
+Description: Empathy base library
+Requires: glib-2.0, gobject-2.0, libxml-2.0, libtelepathy, libmissioncontrol
+Version: @VERSION@
+Libs: -L${libdir} -lempathy
+Cflags: -I${includedir}
diff --git a/gnome-2-22/m4/.gitignore b/gnome-2-22/m4/.gitignore
new file mode 100644
index 000000000..e429342b9
--- /dev/null
+++ b/gnome-2-22/m4/.gitignore
@@ -0,0 +1,2 @@
+gtk-doc.m4
+intltool.m4
diff --git a/gnome-2-22/m4/acinclude.m4 b/gnome-2-22/m4/acinclude.m4
new file mode 100644
index 000000000..3120d8620
--- /dev/null
+++ b/gnome-2-22/m4/acinclude.m4
@@ -0,0 +1,65 @@
+dnl Turn on the additional warnings last, so -Werror doesn't affect other tests.
+
+AC_DEFUN([IDT_COMPILE_WARNINGS],[
+ if test -f $srcdir/autogen.sh; then
+ default_compile_warnings="error"
+ else
+ default_compile_warnings="no"
+ fi
+
+ AC_ARG_WITH(compile-warnings,
+ AS_HELP_STRING([--with-compile-warnings=@<:@no/yes/error@:>@],
+ [Compiler warnings]),
+ [enable_compile_warnings="$withval"],
+ [enable_compile_warnings="$default_compile_warnings"])
+
+ warnCFLAGS=
+ if test "x$GCC" != xyes; then
+ enable_compile_warnings=no
+ fi
+
+ warning_flags=
+ realsave_CFLAGS="$CFLAGS"
+
+ case "$enable_compile_warnings" in
+ no)
+ warning_flags=
+ ;;
+ yes)
+ warning_flags="-Wall -Wunused -Wmissing-prototypes -Wmissing-declarations"
+ ;;
+ maximum|error)
+ warning_flags="-Wall -Wunused -Wchar-subscripts -Wmissing-declarations -Wmissing-prototypes -Wnested-externs -Wpointer-arith"
+ CFLAGS="$warning_flags $CFLAGS"
+ for option in -Wno-sign-compare -Wno-pointer-sign; do
+ SAVE_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS $option"
+ AC_MSG_CHECKING([whether gcc understands $option])
+ AC_TRY_COMPILE([], [],
+ has_option=yes,
+ has_option=no,)
+ CFLAGS="$SAVE_CFLAGS"
+ AC_MSG_RESULT($has_option)
+ if test $has_option = yes; then
+ warning_flags="$warning_flags $option"
+ fi
+ unset has_option
+ unset SAVE_CFLAGS
+ done
+ unset option
+ if test "$enable_compile_warnings" = "error" ; then
+ warning_flags="$warning_flags -Werror"
+ fi
+ ;;
+ *)
+ AC_MSG_ERROR(Unknown argument '$enable_compile_warnings' to --enable-compile-warnings)
+ ;;
+ esac
+ CFLAGS="$realsave_CFLAGS"
+ AC_MSG_CHECKING(what warning flags to pass to the C compiler)
+ AC_MSG_RESULT($warning_flags)
+
+ WARN_CFLAGS="$warning_flags"
+ AC_SUBST(WARN_CFLAGS)
+])
+
diff --git a/gnome-2-22/m4/empathy-args.m4 b/gnome-2-22/m4/empathy-args.m4
new file mode 100644
index 000000000..3daacbaba
--- /dev/null
+++ b/gnome-2-22/m4/empathy-args.m4
@@ -0,0 +1,19 @@
+dnl configure-time options for Empathy
+
+dnl EMPATHY_ARG_VALGRIND
+
+AC_DEFUN([EMPATHY_ARG_VALGRIND],
+[
+ dnl valgrind inclusion
+ AC_ARG_ENABLE(valgrind,
+ AC_HELP_STRING([--enable-valgrind],[enable valgrind checking and run-time detection]),
+ [
+ case "${enableval}" in
+ yes|no) enable="${enableval}" ;;
+ *) AC_MSG_ERROR(bad value ${enableval} for --enable-valgrind) ;;
+ esac
+ ],
+ [enable=no])
+
+ EMPATHY_VALGRIND($enable, [2.1])
+])
diff --git a/gnome-2-22/m4/empathy-valgrind.m4 b/gnome-2-22/m4/empathy-valgrind.m4
new file mode 100644
index 000000000..7a44e103f
--- /dev/null
+++ b/gnome-2-22/m4/empathy-valgrind.m4
@@ -0,0 +1,31 @@
+dnl Detect Valgrind location and flags
+
+AC_DEFUN([EMPATHY_VALGRIND],
+[
+ enable=$1
+ if test -n "$2"; then
+ valgrind_req=$2
+ else
+ valgrind_req="2.1"
+ fi
+
+ PKG_CHECK_MODULES(VALGRIND, valgrind > "$valgrind_req",
+ have_valgrind_runtime="yes", have_valgrind_runtime="no")
+
+ AC_PATH_PROG(VALGRIND_PATH, valgrind)
+
+ # Compile the instrumentation for valgrind only if the valgrind
+ # libraries are installed and the valgrind executable is found
+ if test "x$enable" = xyes &&
+ test "$have_valgrind_runtime" = yes &&
+ test -n "$VALGRIND_PATH" ;
+ then
+ AC_DEFINE(HAVE_VALGRIND, 1, [Define if valgrind should be used])
+ AC_MSG_NOTICE(using compile-time instrumentation for valgrind)
+ fi
+
+ AC_SUBST(VALGRIND_CFLAGS)
+ AC_SUBST(VALGRIND_LIBS)
+
+ AM_CONDITIONAL(HAVE_VALGRIND, test -n "$VALGRIND_PATH")
+])
diff --git a/gnome-2-22/megaphone/.gitignore b/gnome-2-22/megaphone/.gitignore
new file mode 100644
index 000000000..697575ef0
--- /dev/null
+++ b/gnome-2-22/megaphone/.gitignore
@@ -0,0 +1,4 @@
+GNOME_Megaphone_Applet.schemas
+GNOME_Megaphone_Applet.server
+GNOME_Megaphone_Applet.server.in
+megaphone-applet
diff --git a/gnome-2-22/megaphone/Makefile.am b/gnome-2-22/megaphone/Makefile.am
new file mode 100644
index 000000000..85d5f7528
--- /dev/null
+++ b/gnome-2-22/megaphone/Makefile.am
@@ -0,0 +1,2 @@
+SUBDIRS = src data
+
diff --git a/gnome-2-22/megaphone/data/GNOME_Megaphone_Applet.schemas.in b/gnome-2-22/megaphone/data/GNOME_Megaphone_Applet.schemas.in
new file mode 100644
index 000000000..26445a3e8
--- /dev/null
+++ b/gnome-2-22/megaphone/data/GNOME_Megaphone_Applet.schemas.in
@@ -0,0 +1,30 @@
+<gconfschemafile>
+ <schemalist>
+
+ <schema>
+ <key>/schemas/apps/megaphone-applet/prefs/contact_id</key>
+ <applyto>/apps/megaphone-applet/prefs/contact_id</applyto>
+ <owner>megaphone</owner>
+ <type>string</type>
+ <default></default>
+ <locale name="C">
+ <short>The contact to display in the applet. Empty means no contact is displayed.</short>
+ </locale>
+ </schema>
+ <schema>
+ <key>/schemas/apps/megaphone-applet/prefs/avatar_token</key>
+ <applyto>/apps/megaphone-applet/prefs/avatar_token</applyto>
+ <owner>megaphone</owner>
+ <type>string</type>
+ <default></default>
+ <locale name="C">
+ <short>The contact's avatar token. Empty means contact has no avatar.</short>
+ </locale>
+ </schema>
+
+ </schemalist>
+</gconfschemafile>
+
+
+
+
diff --git a/gnome-2-22/megaphone/data/GNOME_Megaphone_Applet.server.in.in b/gnome-2-22/megaphone/data/GNOME_Megaphone_Applet.server.in.in
new file mode 100644
index 000000000..2d1c3ac12
--- /dev/null
+++ b/gnome-2-22/megaphone/data/GNOME_Megaphone_Applet.server.in.in
@@ -0,0 +1,25 @@
+<oaf_info>
+
+<oaf_server iid="OAFIID:GNOME_Megaphone_Applet_Factory" type="exe" location="@LIBEXECDIR@/megaphone-applet">
+ <oaf_attribute name="repo_ids" type="stringv">
+ <item value="IDL:Bonobo/GenericFactory:1.0"/>
+ <item value="IDL:Bonobo/Unknown:1.0"/>
+ </oaf_attribute>
+ <oaf_attribute name="name" type="string" _value="Megaphone"/>
+ <oaf_attribute name="description" type="string" _value="Talk!"/>
+</oaf_server>
+
+<oaf_server iid="OAFIID:GNOME_Megaphone_Applet" type="factory" location="OAFIID:GNOME_Megaphone_Applet_Factory">
+
+ <oaf_attribute name="repo_ids" type="stringv">
+ <item value="IDL:GNOME/Vertigo/PanelAppletShell:1.0"/>
+ <item value="IDL:Bonobo/Control:1.0"/>
+ <item value="IDL:Bonobo/Unknown:1.0"/>
+ </oaf_attribute>
+ <oaf_attribute name="name" type="string" _value="Megaphone"/>
+ <oaf_attribute name="description" type="string" _value="Talk!"/>
+ <oaf_attribute name="panel:category" type="string" value="Internet"/>
+ <oaf_attribute name="panel:icon" type="string" value="empathy.png"/>
+</oaf_server>
+
+</oaf_info>
diff --git a/gnome-2-22/megaphone/data/GNOME_Megaphone_Applet.xml b/gnome-2-22/megaphone/data/GNOME_Megaphone_Applet.xml
new file mode 100644
index 000000000..8a139707a
--- /dev/null
+++ b/gnome-2-22/megaphone/data/GNOME_Megaphone_Applet.xml
@@ -0,0 +1,9 @@
+<Root>
+ <popups>
+ <popup name="button3">
+ <menuitem name="Information" verb="information" _label="_Information" pixtype="stock" pixname="gtk-info"/>
+ <menuitem name="Preferences" verb="preferences" _label="_Preferences" pixtype="stock" pixname="gtk-properties"/>
+ <menuitem name="About" verb="about" _label="_About" pixtype="stock" pixname="gtk-about"/>
+ </popup>
+ </popups>
+</Root>
diff --git a/gnome-2-22/megaphone/data/Makefile.am b/gnome-2-22/megaphone/data/Makefile.am
new file mode 100644
index 000000000..3dbde679f
--- /dev/null
+++ b/gnome-2-22/megaphone/data/Makefile.am
@@ -0,0 +1,35 @@
+# Panel applet bonobo stuff
+serverdir = $(libdir)/bonobo/servers
+server_in_files = GNOME_Megaphone_Applet.server.in
+server_DATA = $(server_in_files:.server.in=.server)
+
+
+# GConf Schemas
+schemadir = $(GCONF_SCHEMA_FILE_DIR)
+schema_in_files = GNOME_Megaphone_Applet.schemas.in
+schema_DATA = $(schema_in_files:.schemas.in=.schemas)
+
+# Misc data
+resourcesdir = $(pkgdatadir)
+resources_DATA = \
+ GNOME_Megaphone_Applet.xml
+# megaphone-applet.glade
+
+megaphonebindir = $(libexecdir)
+
+# Build rules
+@INTLTOOL_SERVER_RULE@
+@INTLTOOL_SCHEMAS_RULE@
+
+$(server_in_files): $(server_in_files:.server.in=.server.in.in)
+ sed -e "s|\@LIBEXECDIR\@|$(megaphonebindir)|" $< > $@
+
+DISTCLEANFILES = \
+ $(server_DATA) \
+ $(server_in_files) \
+ $(schema_DATA)
+
+EXTRA_DIST = \
+ GNOME_Megaphone_Applet.server.in.in \
+ $(resources_DATA) \
+ $(schema_in_files)
diff --git a/gnome-2-22/megaphone/src/Makefile.am b/gnome-2-22/megaphone/src/Makefile.am
new file mode 100644
index 000000000..d5876943c
--- /dev/null
+++ b/gnome-2-22/megaphone/src/Makefile.am
@@ -0,0 +1,17 @@
+AM_CPPFLAGS = \
+ -I$(top_srcdir) \
+ -DPKGDATADIR=\""$(pkgdatadir)"\" \
+ -DGNOMELOCALEDIR=\""$(prefix)/$(DATADIRNAME)/locale"\" \
+ -DIMAGEDIR=\"$(datadir)/empathy\" \
+ $(MEGAPHONE_CFLAGS) $(WARN_CFLAGS)
+
+libexec_PROGRAMS = megaphone-applet
+megaphone_applet_SOURCES = \
+ megaphone-applet.c megaphone-applet.h
+
+megaphone_applet_LDFLAGS = \
+ $(MEGAPHONE_LIBS)
+
+megaphone_applet_LDADD = \
+ $(top_builddir)/libempathy/libempathy.la \
+ $(top_builddir)/libempathy-gtk/libempathy-gtk.la
diff --git a/gnome-2-22/megaphone/src/megaphone-applet.c b/gnome-2-22/megaphone/src/megaphone-applet.c
new file mode 100644
index 000000000..17ae2c50b
--- /dev/null
+++ b/gnome-2-22/megaphone/src/megaphone-applet.c
@@ -0,0 +1,559 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2007 Raphaël Slinckx <raphael@slinckx.net>
+ * Copyright (C) 2007 Collabora Ltd.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public 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: Raphaël Slinckx <raphael@slinckx.net>
+ * Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#include "config.h"
+
+#include <string.h>
+
+#include <glib/gi18n.h>
+#include <gtk/gtk.h>
+#include <bonobo/bonobo-ui-component.h>
+#include <panel-2.0/panel-applet-gconf.h>
+#include <gconf/gconf-client.h>
+#include <libgnomevfs/gnome-vfs-utils.h>
+
+#include <libmissioncontrol/mission-control.h>
+#include <libmissioncontrol/mc-account.h>
+
+#include <libempathy/empathy-contact-factory.h>
+#include <libempathy/empathy-contact.h>
+#include <libempathy/empathy-contact-list.h>
+#include <libempathy/empathy-contact-manager.h>
+#include <libempathy/empathy-debug.h>
+#include <libempathy/empathy-utils.h>
+
+#include <libempathy-gtk/empathy-contact-list-view.h>
+#include <libempathy-gtk/empathy-contact-list-store.h>
+#include <libempathy-gtk/empathy-contact-dialogs.h>
+#include <libempathy-gtk/empathy-ui-utils.h>
+
+#include "megaphone-applet.h"
+
+#define DEBUG_DOMAIN "MegaphoneApplet"
+
+#define GET_PRIV(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), MEGAPHONE_TYPE_APPLET, MegaphoneAppletPriv))
+
+typedef struct _MegaphoneAppletPriv MegaphoneAppletPriv;
+
+struct _MegaphoneAppletPriv {
+ EmpathyContactFactory *factory;
+ GtkWidget *image;
+ gint image_size;
+ EmpathyContact *contact;
+ GConfClient *gconf;
+ guint gconf_cnxn;
+};
+
+static void megaphone_applet_finalize (GObject *object);
+static void megaphone_applet_size_allocate_cb (GtkWidget *widget,
+ GtkAllocation *allocation,
+ MegaphoneApplet *applet);
+static gboolean megaphone_applet_button_press_event_cb (GtkWidget *widget,
+ GdkEventButton *event,
+ MegaphoneApplet *applet);
+static void megaphone_applet_information_cb (BonoboUIComponent *uic,
+ MegaphoneApplet *applet,
+ const gchar *verb_name);
+static void megaphone_applet_preferences_cb (BonoboUIComponent *uic,
+ MegaphoneApplet *applet,
+ const gchar *verb_name);
+static void megaphone_applet_about_cb (BonoboUIComponent *uic,
+ MegaphoneApplet *applet,
+ const gchar *verb_name);
+
+G_DEFINE_TYPE(MegaphoneApplet, megaphone_applet, PANEL_TYPE_APPLET)
+
+static const BonoboUIVerb megaphone_applet_menu_verbs [] = {
+ BONOBO_UI_UNSAFE_VERB ("information", megaphone_applet_information_cb),
+ BONOBO_UI_UNSAFE_VERB ("preferences", megaphone_applet_preferences_cb),
+ BONOBO_UI_UNSAFE_VERB ("about", megaphone_applet_about_cb),
+ BONOBO_UI_VERB_END
+};
+
+static const char* authors[] = {
+ "Raphaël Slinckx <raphael@slinckx.net>",
+ "Xavier Claessens <xclaesse@gmail.com>",
+ NULL
+};
+
+static void
+megaphone_applet_class_init (MegaphoneAppletClass *class)
+{
+ GObjectClass *object_class;
+
+ object_class = G_OBJECT_CLASS (class);
+
+ object_class->finalize = megaphone_applet_finalize;
+
+ g_type_class_add_private (object_class, sizeof (MegaphoneAppletPriv));
+}
+
+static void
+megaphone_applet_init (MegaphoneApplet *applet)
+{
+ MegaphoneAppletPriv *priv = GET_PRIV (applet);
+
+ priv->factory = empathy_contact_factory_new ();
+ priv->gconf = gconf_client_get_default ();
+
+ /* Image holds the contact avatar */
+ priv->image = gtk_image_new ();
+ gtk_widget_show (priv->image);
+ gtk_container_add (GTK_CONTAINER (applet), priv->image);
+
+ /* We want transparency */
+ panel_applet_set_flags (PANEL_APPLET (applet), PANEL_APPLET_EXPAND_MINOR);
+ panel_applet_set_background_widget (PANEL_APPLET (applet), GTK_WIDGET (applet));
+
+ /* Listen for clicks on the applet to dispatch a channel */
+ g_signal_connect (applet, "button-press-event",
+ G_CALLBACK (megaphone_applet_button_press_event_cb),
+ applet);
+
+ /* Allow to resize our avatar when needed */
+ g_signal_connect (applet, "size-allocate",
+ G_CALLBACK (megaphone_applet_size_allocate_cb),
+ applet);
+}
+
+static void
+megaphone_applet_finalize (GObject *object)
+{
+ MegaphoneAppletPriv *priv = GET_PRIV (object);
+
+ if (priv->contact) {
+ g_object_unref (priv->contact);
+ }
+ g_object_unref (priv->factory);
+
+ if (priv->gconf_cnxn != 0) {
+ gconf_client_notify_remove (priv->gconf, priv->gconf_cnxn);
+ }
+ g_object_unref (priv->gconf);
+
+ G_OBJECT_CLASS (megaphone_applet_parent_class)->finalize (object);
+}
+
+static void
+megaphone_applet_update_icon (MegaphoneApplet *applet)
+{
+ MegaphoneAppletPriv *priv = GET_PRIV (applet);
+ EmpathyAvatar *avatar = NULL;
+ GdkPixbuf *avatar_pixbuf;
+
+ if (priv->contact) {
+ avatar = empathy_contact_get_avatar (priv->contact);
+ } else {
+ gtk_image_set_from_icon_name (GTK_IMAGE (priv->image),
+ GTK_STOCK_PREFERENCES,
+ GTK_ICON_SIZE_MENU);
+ return;
+ }
+
+ if (!avatar) {
+ gchar *avatar_token;
+
+ /* Try to take avatar from cache */
+ avatar_token = panel_applet_gconf_get_string (PANEL_APPLET (applet),
+ "avatar_token",
+ NULL);
+ if (!G_STR_EMPTY (avatar_token)) {
+ avatar = empathy_avatar_new_from_cache (avatar_token);
+ }
+ g_free (avatar_token);
+ } else {
+ empathy_avatar_ref (avatar);
+ }
+
+ if (avatar) {
+ avatar_pixbuf = empathy_pixbuf_from_avatar_scaled (avatar,
+ priv->image_size - 2,
+ priv->image_size - 2);
+ empathy_avatar_unref (avatar);
+ } else {
+ GtkIconTheme *icon_theme;
+
+ /* Load the default icon when no avatar is found */
+ icon_theme = gtk_icon_theme_get_default ();
+ avatar_pixbuf = gtk_icon_theme_load_icon (icon_theme,
+ "stock_contact",
+ priv->image_size - 2,
+ 0, NULL);
+ }
+
+ /* Now some desaturation if the contact is offline */
+ if (!empathy_contact_is_online (priv->contact)) {
+ GdkPixbuf *offline_avatar;
+
+ offline_avatar = gdk_pixbuf_new (GDK_COLORSPACE_RGB, TRUE,
+ 8,
+ gdk_pixbuf_get_height (avatar_pixbuf),
+ gdk_pixbuf_get_width (avatar_pixbuf));
+ gdk_pixbuf_saturate_and_pixelate (avatar_pixbuf,
+ offline_avatar,
+ 0.0,
+ TRUE);
+ g_object_unref (avatar_pixbuf);
+ avatar_pixbuf = offline_avatar;
+ }
+
+ gtk_image_set_from_pixbuf (GTK_IMAGE (priv->image), avatar_pixbuf);
+ g_object_unref (avatar_pixbuf);
+}
+
+static void
+megaphone_applet_update_contact (MegaphoneApplet *applet)
+{
+ MegaphoneAppletPriv *priv = GET_PRIV (applet);
+ const gchar *name;
+ const gchar *status;
+ gchar *tip;
+ const gchar *avatar_token = NULL;
+
+ if (priv->contact) {
+ EmpathyAvatar *avatar;
+
+ avatar = empathy_contact_get_avatar (priv->contact);
+ if (avatar) {
+ avatar_token = avatar->token;
+ }
+ }
+
+ if (avatar_token) {
+ panel_applet_gconf_set_string (PANEL_APPLET (applet),
+ "avatar_token", avatar_token,
+ NULL);
+ }
+
+ megaphone_applet_update_icon (applet);
+
+ if (priv->contact ) {
+ name = empathy_contact_get_name (priv->contact);
+ status = empathy_contact_get_status (priv->contact);
+ tip = g_strdup_printf ("<b>%s</b>: %s", name, status);
+ gtk_widget_set_tooltip_markup (GTK_WIDGET (applet), tip);
+ g_free (tip);
+ } else {
+ gtk_widget_set_tooltip_markup (GTK_WIDGET (applet),
+ "Please configure a contact.");
+ }
+
+}
+
+static void
+megaphone_applet_set_contact (MegaphoneApplet *applet,
+ const gchar *str)
+{
+ MegaphoneAppletPriv *priv = GET_PRIV (applet);
+ McAccount *account = NULL;
+ gchar **strv = NULL;
+
+ empathy_debug (DEBUG_DOMAIN, "Setting new contact %s", str);
+
+ /* Release old contact, if any */
+ if (priv->contact) {
+ g_signal_handlers_disconnect_by_func (priv->contact,
+ megaphone_applet_update_contact,
+ applet);
+ g_object_unref (priv->contact),
+ priv->contact = NULL;
+ }
+
+ /* Lookup the new contact */
+ if (str) {
+ strv = g_strsplit (str, "/", 2);
+ account = mc_account_lookup (strv[0]);
+ }
+ if (account) {
+ priv->contact = empathy_contact_factory_get_from_id (priv->factory,
+ account,
+ strv[1]);
+ g_object_unref (account);
+ }
+ g_strfreev (strv);
+
+ /* Take hold of the new contact if any */
+ if (priv->contact) {
+ /* Listen for updates on the contact, and force a first update */
+ g_signal_connect_swapped (priv->contact, "notify",
+ G_CALLBACK (megaphone_applet_update_contact),
+ applet);
+ }
+
+ megaphone_applet_update_contact (applet);
+}
+
+static void
+megaphone_applet_preferences_response_cb (GtkWidget *dialog,
+ gint response,
+ MegaphoneApplet *applet)
+{
+ if (response == GTK_RESPONSE_ACCEPT) {
+ EmpathyContactListView *contact_list;
+ EmpathyContact *contact;
+
+ /* Retrieve the selected contact, if any and set it up in gconf.
+ * GConf will notify us from the change and we will adjust ourselves */
+ contact_list = g_object_get_data (G_OBJECT (dialog), "contact-list");
+ contact = empathy_contact_list_view_get_selected (contact_list);
+ if (contact) {
+ McAccount *account;
+ const gchar *account_id;
+ const gchar *contact_id;
+ gchar *str;
+
+ account = empathy_contact_get_account (contact);
+ account_id = mc_account_get_unique_name (account);
+ contact_id = empathy_contact_get_id (contact);
+
+ str = g_strconcat (account_id, "/", contact_id, NULL);
+ panel_applet_gconf_set_string (PANEL_APPLET (applet),
+ "avatar_token", "",
+ NULL);
+ panel_applet_gconf_set_string (PANEL_APPLET (applet),
+ "contact_id", str,
+ NULL);
+ g_free (str);
+ }
+ }
+ gtk_widget_destroy (dialog);
+}
+
+static void
+megaphone_applet_show_preferences (MegaphoneApplet *applet)
+{
+ GtkWidget *dialog;
+ GtkWidget *scroll;
+ EmpathyContactListView *contact_list;
+ EmpathyContactListStore *contact_store;
+ EmpathyContactManager *contact_manager;
+
+ dialog = gtk_dialog_new_with_buttons ("Select contact...",
+ NULL, 0,
+ GTK_STOCK_CANCEL,
+ GTK_RESPONSE_REJECT,
+ GTK_STOCK_OK,
+ GTK_RESPONSE_ACCEPT,
+ NULL);
+
+ /* Show all contacts, even offline and sort alphabetically */
+ contact_manager = empathy_contact_manager_new ();
+ contact_store = empathy_contact_list_store_new (EMPATHY_CONTACT_LIST (contact_manager));
+ g_object_set (contact_store,
+ "is-compact", TRUE,
+ "show-avatars", TRUE,
+ "show-offline", TRUE,
+ "sort-criterium", EMPATHY_CONTACT_LIST_STORE_SORT_NAME,
+ NULL);
+ contact_list = empathy_contact_list_view_new (contact_store,
+ EMPATHY_CONTACT_LIST_FEATURE_NONE);
+ g_object_unref (contact_manager);
+ g_object_unref (contact_store);
+ gtk_widget_show (GTK_WIDGET (contact_list));
+
+ gtk_window_set_default_size (GTK_WINDOW (dialog), 300, 500);
+ scroll = gtk_scrolled_window_new (NULL, NULL);
+ gtk_container_add (GTK_CONTAINER (scroll), GTK_WIDGET (contact_list));
+ gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), scroll);
+ gtk_widget_show (scroll);
+
+ g_object_set_data (G_OBJECT (dialog), "contact-list", contact_list);
+
+ g_signal_connect (dialog, "response",
+ G_CALLBACK (megaphone_applet_preferences_response_cb),
+ applet);
+
+ gtk_widget_show (dialog);
+}
+
+static void
+megaphone_applet_information_cb (BonoboUIComponent *uic,
+ MegaphoneApplet *applet,
+ const gchar *verb_name)
+{
+ MegaphoneAppletPriv *priv = GET_PRIV (applet);
+
+ /* FIXME: We should grey out the menu item if there are no available contact */
+ if (priv->contact) {
+ empathy_contact_information_dialog_show (priv->contact, NULL, FALSE, FALSE);
+ }
+}
+
+static void
+megaphone_applet_preferences_cb (BonoboUIComponent *uic,
+ MegaphoneApplet *applet,
+ const gchar *verb_name)
+{
+ megaphone_applet_show_preferences (applet);
+}
+
+static void
+megaphone_applet_about_cb (BonoboUIComponent *uic,
+ MegaphoneApplet *applet,
+ const gchar *verb_name)
+{
+ gtk_show_about_dialog (NULL,
+ "name", "Megaphone",
+ "version", PACKAGE_VERSION,
+ "copyright", "Raphaël Slinckx 2007\nCollabora Ltd 2007",
+ "comments", _("Talk!"),
+ "authors", authors,
+ "logo-icon-name", "stock_people",
+ NULL);
+}
+
+static gboolean
+megaphone_applet_button_press_event_cb (GtkWidget *widget,
+ GdkEventButton *event,
+ MegaphoneApplet *applet)
+{
+ MegaphoneAppletPriv *priv = GET_PRIV (applet);
+ MissionControl *mc;
+
+ /* Only react on left-clicks */
+ if (event->button != 1 || event->type != GDK_BUTTON_PRESS) {
+ return FALSE;
+ }
+
+ /* If the contact is unavailable we display the preferences dialog */
+ if (priv->contact == NULL) {
+ megaphone_applet_show_preferences (applet);
+ return TRUE;
+ }
+
+ empathy_debug (DEBUG_DOMAIN, "Requesting text channel for contact %s (%d)",
+ empathy_contact_get_id (priv->contact),
+ empathy_contact_get_handle (priv->contact));
+
+ mc = empathy_mission_control_new ();
+ mission_control_request_channel (mc,
+ empathy_contact_get_account (priv->contact),
+ TP_IFACE_CHANNEL_TYPE_TEXT,
+ empathy_contact_get_handle (priv->contact),
+ TP_HANDLE_TYPE_CONTACT,
+ NULL, NULL);
+ g_object_unref (mc);
+
+ return TRUE;
+}
+
+static void
+megaphone_applet_size_allocate_cb (GtkWidget *widget,
+ GtkAllocation *allocation,
+ MegaphoneApplet *applet)
+{
+ MegaphoneAppletPriv *priv = GET_PRIV (applet);
+ gint size;
+ PanelAppletOrient orient;
+
+ orient = panel_applet_get_orient (PANEL_APPLET (widget));
+ if (orient == PANEL_APPLET_ORIENT_LEFT ||
+ orient == PANEL_APPLET_ORIENT_RIGHT) {
+ size = allocation->width;
+ } else {
+ size = allocation->height;
+ }
+
+ if (size != priv->image_size) {
+ priv->image_size = size;
+ megaphone_applet_update_icon (applet);
+ }
+}
+
+static void
+megaphone_applet_gconf_notify_cb (GConfClient *client,
+ guint cnxn_id,
+ GConfEntry *entry,
+ MegaphoneApplet *applet)
+{
+ const gchar *key;
+ GConfValue *value;
+
+ key = gconf_entry_get_key (entry);
+ value = gconf_entry_get_value (entry);
+ empathy_debug (DEBUG_DOMAIN, "GConf notification for key '%s'", key);
+
+ if (value && g_str_has_suffix (key, "/contact_id")) {
+ megaphone_applet_set_contact (applet,
+ gconf_value_get_string (value));
+ }
+}
+
+static gboolean
+megaphone_applet_factory (PanelApplet *applet,
+ const gchar *iid,
+ gpointer data)
+{
+ MegaphoneAppletPriv *priv = GET_PRIV (applet);
+ gchar *pref_dir;
+ gchar *contact_id;
+
+ /* Ensure it's us! */
+ if (strcmp (iid, "OAFIID:GNOME_Megaphone_Applet") != 0) {
+ return FALSE;
+ }
+
+ empathy_debug (DEBUG_DOMAIN, "Starting up new instance!");
+
+ /* Set up the right-click menu */
+ panel_applet_setup_menu_from_file (applet,
+ PKGDATADIR,
+ "GNOME_Megaphone_Applet.xml",
+ NULL,
+ megaphone_applet_menu_verbs,
+ applet);
+
+ /* Define the schema to be used for each applet instance's preferences */
+ panel_applet_add_preferences (applet,
+ "/schemas/apps/megaphone-applet/prefs",
+ NULL);
+
+ /* We watch the preferences directory */
+ pref_dir = panel_applet_gconf_get_full_key (applet, "");
+ pref_dir[strlen (pref_dir)-1] = '\0';
+ gconf_client_add_dir (priv->gconf, pref_dir,
+ GCONF_CLIENT_PRELOAD_ONELEVEL,
+ NULL);
+ gconf_client_notify_add (priv->gconf, pref_dir,
+ (GConfClientNotifyFunc) megaphone_applet_gconf_notify_cb,
+ applet,
+ NULL, NULL);
+ g_free (pref_dir);
+
+ /* Initial setup with the pre-existing gconf key, or contact_id=NULL if no previous pref */
+ contact_id = panel_applet_gconf_get_string (PANEL_APPLET (applet), "contact_id", NULL);
+ megaphone_applet_set_contact (MEGAPHONE_APPLET (applet), contact_id);
+ g_free (contact_id);
+
+ /* Let's go! */
+ gtk_widget_show (GTK_WIDGET (applet));
+
+ return TRUE;
+}
+
+PANEL_APPLET_BONOBO_FACTORY ("OAFIID:GNOME_Megaphone_Applet_Factory",
+ MEGAPHONE_TYPE_APPLET,
+ "Megaphone", PACKAGE_VERSION,
+ megaphone_applet_factory,
+ NULL);
+
diff --git a/gnome-2-22/megaphone/src/megaphone-applet.h b/gnome-2-22/megaphone/src/megaphone-applet.h
new file mode 100644
index 000000000..bae671d81
--- /dev/null
+++ b/gnome-2-22/megaphone/src/megaphone-applet.h
@@ -0,0 +1,53 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2007 Raphaël Slinckx <raphael@slinckx.net>
+ * Copyright (C) 2007 Collabora Ltd.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public 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: Raphaël Slinckx <raphael@slinckx.net>
+ * Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#ifndef __MEGAPHONE_APPLET_H__
+#define __MEGAPHONE_APPLET_H__
+
+#include <panel-applet.h>
+
+G_BEGIN_DECLS
+
+#define MEGAPHONE_TYPE_APPLET (megaphone_applet_get_type ())
+#define MEGAPHONE_APPLET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MEGAPHONE_TYPE_APPLET, MegaphoneApplet))
+#define MEGAPHONE_APPLET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MEGAPHONE_TYPE_APPLET, MegaphoneAppletClass))
+#define MEGAPHONE_IS_APPLET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MEGAPHONE_TYPE_APPLET))
+#define MEGAPHONE_IS_APPLET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MEGAPHONE_TYPE_APPLET))
+#define MEGAPHONE_APPLET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MEGAPHONE_TYPE_APPLET, MegaphoneAppletClass))
+
+typedef struct _MegaphoneApplet MegaphoneApplet;
+typedef struct _MegaphoneAppletClass MegaphoneAppletClass;
+
+struct _MegaphoneApplet {
+ PanelApplet applet;
+};
+
+struct _MegaphoneAppletClass {
+ PanelAppletClass parent_class;
+};
+
+GType megaphone_applet_get_type (void);
+
+G_END_DECLS
+
+#endif /* __MEGAPHONE_APPLET_H__ */
diff --git a/gnome-2-22/nothere/Makefile.am b/gnome-2-22/nothere/Makefile.am
new file mode 100644
index 000000000..85d5f7528
--- /dev/null
+++ b/gnome-2-22/nothere/Makefile.am
@@ -0,0 +1,2 @@
+SUBDIRS = src data
+
diff --git a/gnome-2-22/nothere/data/GNOME_NotHere_Applet.server.in.in b/gnome-2-22/nothere/data/GNOME_NotHere_Applet.server.in.in
new file mode 100644
index 000000000..e76ad14d2
--- /dev/null
+++ b/gnome-2-22/nothere/data/GNOME_NotHere_Applet.server.in.in
@@ -0,0 +1,25 @@
+<oaf_info>
+
+<oaf_server iid="OAFIID:GNOME_NotHere_Applet_Factory" type="exe" location="@LIBEXECDIR@/nothere-applet">
+ <oaf_attribute name="repo_ids" type="stringv">
+ <item value="IDL:Bonobo/GenericFactory:1.0"/>
+ <item value="IDL:Bonobo/Unknown:1.0"/>
+ </oaf_attribute>
+ <oaf_attribute name="name" type="string" _value="Presence"/>
+ <oaf_attribute name="description" type="string" _value="Set your own presence"/>
+</oaf_server>
+
+<oaf_server iid="OAFIID:GNOME_NotHere_Applet" type="factory" location="OAFIID:GNOME_NotHere_Applet_Factory">
+
+ <oaf_attribute name="repo_ids" type="stringv">
+ <item value="IDL:GNOME/Vertigo/PanelAppletShell:1.0"/>
+ <item value="IDL:Bonobo/Control:1.0"/>
+ <item value="IDL:Bonobo/Unknown:1.0"/>
+ </oaf_attribute>
+ <oaf_attribute name="name" type="string" _value="Presence"/>
+ <oaf_attribute name="description" type="string" _value="Set your own presence"/>
+ <oaf_attribute name="panel:category" type="string" value="Internet"/>
+ <oaf_attribute name="panel:icon" type="string" value="empathy.png"/>
+</oaf_server>
+
+</oaf_info>
diff --git a/gnome-2-22/nothere/data/GNOME_NotHere_Applet.xml b/gnome-2-22/nothere/data/GNOME_NotHere_Applet.xml
new file mode 100644
index 000000000..5d425f108
--- /dev/null
+++ b/gnome-2-22/nothere/data/GNOME_NotHere_Applet.xml
@@ -0,0 +1,7 @@
+<Root>
+ <popups>
+ <popup name="button3">
+ <menuitem name="About" verb="about" _label="_About" pixtype="stock" pixname="gtk-about"/>
+ </popup>
+ </popups>
+</Root>
diff --git a/gnome-2-22/nothere/data/Makefile.am b/gnome-2-22/nothere/data/Makefile.am
new file mode 100644
index 000000000..4aa92147f
--- /dev/null
+++ b/gnome-2-22/nothere/data/Makefile.am
@@ -0,0 +1,35 @@
+# Panel applet bonobo stuff
+serverdir = $(libdir)/bonobo/servers
+server_in_files = GNOME_NotHere_Applet.server.in
+server_DATA = $(server_in_files:.server.in=.server)
+
+
+# GConf Schemas
+#schemadir = $(GCONF_SCHEMA_FILE_DIR)
+#schema_in_files = GNOME_NotHere_Applet.schemas.in
+#schema_DATA = $(schema_in_files:.schemas.in=.schemas)
+
+# Misc data
+resourcesdir = $(pkgdatadir)
+resources_DATA = \
+ GNOME_NotHere_Applet.xml
+# nothere-applet.glade
+
+notherebindir = $(libexecdir)
+
+# Build rules
+@INTLTOOL_SERVER_RULE@
+@INTLTOOL_SCHEMAS_RULE@
+
+$(server_in_files): $(server_in_files:.server.in=.server.in.in)
+ sed -e "s|\@LIBEXECDIR\@|$(notherebindir)|" $< > $@
+
+DISTCLEANFILES = \
+ $(server_DATA) \
+ $(server_in_files)
+# $(schema_DATA)
+
+EXTRA_DIST = \
+ GNOME_NotHere_Applet.server.in.in \
+ $(resources_DATA)
+# $(schema_in_files)
diff --git a/gnome-2-22/nothere/src/Makefile.am b/gnome-2-22/nothere/src/Makefile.am
new file mode 100644
index 000000000..b4b016afc
--- /dev/null
+++ b/gnome-2-22/nothere/src/Makefile.am
@@ -0,0 +1,17 @@
+AM_CPPFLAGS = \
+ -I$(top_srcdir) \
+ -DPKGDATADIR=\""$(pkgdatadir)"\" \
+ -DGNOMELOCALEDIR=\""$(prefix)/$(DATADIRNAME)/locale"\" \
+ -DIMAGEDIR=\"$(datadir)/empathy\" \
+ $(NOTHERE_CFLAGS) $(WARN_CFLAGS)
+
+libexec_PROGRAMS = nothere-applet
+nothere_applet_SOURCES = \
+ nothere-applet.c nothere-applet.h
+
+nothere_applet_LDFLAGS = \
+ $(NOTHERE_LIBS)
+
+nothere_applet_LDADD = \
+ $(top_builddir)/libempathy/libempathy.la \
+ $(top_builddir)/libempathy-gtk/libempathy-gtk.la
diff --git a/gnome-2-22/nothere/src/nothere-applet.c b/gnome-2-22/nothere/src/nothere-applet.c
new file mode 100644
index 000000000..5d225698b
--- /dev/null
+++ b/gnome-2-22/nothere/src/nothere-applet.c
@@ -0,0 +1,120 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2007 Raphaël Slinckx <raphael@slinckx.net>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public 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: Raphaël Slinckx <raphael@slinckx.net>
+ */
+
+#include "config.h"
+
+#include <string.h>
+
+#include <glib/gi18n.h>
+#include <gtk/gtk.h>
+#include <bonobo/bonobo-ui-component.h>
+
+#include <libmissioncontrol/mission-control.h>
+#include <libempathy-gtk/empathy-presence-chooser.h>
+
+#include "nothere-applet.h"
+
+G_DEFINE_TYPE(NotHereApplet, nothere_applet, PANEL_TYPE_APPLET)
+
+static void nothere_applet_destroy (GtkObject *object);
+static void nothere_applet_about_cb (BonoboUIComponent *uic,
+ NotHereApplet *applet,
+ const gchar *verb_name);
+
+static const BonoboUIVerb nothere_applet_menu_verbs [] = {
+ BONOBO_UI_UNSAFE_VERB ("about", nothere_applet_about_cb),
+ BONOBO_UI_VERB_END
+};
+
+static const char* authors[] = {
+ "Raphaël Slinckx <raphael@slinckx.net>",
+ NULL
+};
+
+static void
+nothere_applet_class_init (NotHereAppletClass *class)
+{
+ GTK_OBJECT_CLASS (class)->destroy = nothere_applet_destroy;
+}
+
+static void
+nothere_applet_init (NotHereApplet *applet)
+{
+ applet->presence_chooser = empathy_presence_chooser_new ();
+ gtk_widget_show (applet->presence_chooser);
+
+ gtk_container_add (GTK_CONTAINER (applet), applet->presence_chooser);
+
+ panel_applet_set_flags (PANEL_APPLET (applet), PANEL_APPLET_EXPAND_MINOR);
+ panel_applet_set_background_widget (PANEL_APPLET (applet), GTK_WIDGET (applet));
+}
+
+static void
+nothere_applet_destroy (GtkObject *object)
+{
+ NotHereApplet *applet = NOTHERE_APPLET (object);
+
+ applet->presence_chooser = NULL;
+
+ (* GTK_OBJECT_CLASS (nothere_applet_parent_class)->destroy) (object);
+}
+
+static void
+nothere_applet_about_cb (BonoboUIComponent *uic,
+ NotHereApplet *applet,
+ const gchar *verb_name)
+{
+ gtk_show_about_dialog (NULL,
+ "name", "Presence",
+ "version", PACKAGE_VERSION,
+ "copyright", "Copyright \xc2\xa9 2007 Raphaël Slinckx",
+ "comments", _("Set your own presence"),
+ "authors", authors,
+ "logo-icon-name", "stock_people",
+ NULL);
+}
+
+static gboolean
+nothere_applet_factory (PanelApplet *applet,
+ const gchar *iid,
+ gpointer data)
+{
+ if (strcmp (iid, "OAFIID:GNOME_NotHere_Applet") != 0) {
+ return FALSE;
+ }
+
+ /* Set up the menu */
+ panel_applet_setup_menu_from_file (applet,
+ PKGDATADIR,
+ "GNOME_NotHere_Applet.xml",
+ NULL,
+ nothere_applet_menu_verbs,
+ applet);
+
+ gtk_widget_show (GTK_WIDGET (applet));
+ return TRUE;
+}
+
+PANEL_APPLET_BONOBO_FACTORY ("OAFIID:GNOME_NotHere_Applet_Factory",
+ NOTHERE_TYPE_APPLET,
+ "Presence", PACKAGE_VERSION,
+ nothere_applet_factory,
+ NULL);
diff --git a/gnome-2-22/nothere/src/nothere-applet.h b/gnome-2-22/nothere/src/nothere-applet.h
new file mode 100644
index 000000000..37e5d91a6
--- /dev/null
+++ b/gnome-2-22/nothere/src/nothere-applet.h
@@ -0,0 +1,52 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2007 Raphaël Slinckx <raphael@slinckx.net>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public 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: Raphaël Slinckx <raphael@slinckx.net>
+ */
+
+#ifndef __NOTHERE_APPLET_H__
+#define __NOTHERE_APPLET_H__
+
+#include <panel-applet.h>
+
+G_BEGIN_DECLS
+
+#define NOTHERE_TYPE_APPLET (nothere_applet_get_type ())
+#define NOTHERE_APPLET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), NOTHERE_TYPE_APPLET, NotHereApplet))
+#define NOTHERE_APPLET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), NOTHERE_TYPE_APPLET, NotHereAppletClass))
+#define NOTHERE_IS_APPLET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NOTHERE_TYPE_APPLET))
+#define NOTHERE_IS_APPLET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), NOTHERE_TYPE_APPLET))
+#define NOTHERE_APPLET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), NOTHERE_TYPE_APPLET, NotHereAppletClass))
+
+typedef struct _NotHereApplet NotHereApplet;
+typedef struct _NotHereAppletClass NotHereAppletClass;
+
+struct _NotHereApplet {
+ PanelApplet applet;
+ GtkWidget *presence_chooser;
+};
+
+struct _NotHereAppletClass {
+ PanelAppletClass parent_class;
+};
+
+GType nothere_applet_get_type (void);
+
+G_END_DECLS
+
+#endif /* __NOTHERE_APPLET_H__ */
diff --git a/gnome-2-22/po/.gitignore b/gnome-2-22/po/.gitignore
new file mode 100644
index 000000000..90b9b7408
--- /dev/null
+++ b/gnome-2-22/po/.gitignore
@@ -0,0 +1,6 @@
+*.gmo
+.intltool-merge-cache
+Makefile.in.in
+POTFILES
+stamp-it
+empathy.pot
diff --git a/gnome-2-22/po/ChangeLog b/gnome-2-22/po/ChangeLog
new file mode 100644
index 000000000..385554968
--- /dev/null
+++ b/gnome-2-22/po/ChangeLog
@@ -0,0 +1,13 @@
+=== DO NOT EDIT ===
+
+
+ChangeLog is now generated from SVN logs. Simply commit with a message in that format:
+
+Updated <lang> translation (<name>).
+
+Replace <lang> with the language you are commiting as in the name of the po file,
+and replace <name> by the name of the author if different from the name of the committer.
+For example:
+
+Updated fr translation (Xavier Claessens).
+
diff --git a/gnome-2-22/po/ChangeLog.old b/gnome-2-22/po/ChangeLog.old
new file mode 100644
index 000000000..faa7446f3
--- /dev/null
+++ b/gnome-2-22/po/ChangeLog.old
@@ -0,0 +1,347 @@
+2008-01-03 Kjartan Maraas <kmaraas@gnome.org>
+
+ * nb.po: Updated Norwegian bokmål translation.
+
+2007-12-31 Yannig Marchegay <yannig@marchegay.org>
+
+ * oc.po: Updated Occitan translation.
+
+2007-12-30 Claude Paroz <claude@2xlibre.net>
+
+ * fr.po: Updated French translation.
+
+2007-12-30 Daniel Nylander <po@danielnylander.se>
+
+ * sv.po: Updated Swedish translation.
+
+2007-12-30 Jorge Gonzalez <jorgegonz@svn.gnome.org>
+
+ * es.po: Updated Spanish translation
+
+2007-12-27 Leonardo Ferreira Fontenelle <leonardof@svn.gnome.org>
+
+ * pt_BR.po: Brazilian Portuguese translation updated by Og Maciel.
+
+2007-12-27 Inaki Larranaga Murgoitio <dooteo@euskalgnu.org>
+
+ * eu.po: Updated Basque translation.
+
+2007-12-23 Djihed Afifi <djihed@gmail.com>
+
+ * ar.po: Updated Arabic Translation by Djihed Afifi.
+
+2007-12-19 Kjartan Maraas <kmaraas@gnome.org>
+
+ * nb.po: Updated Norwegian bokmål translation.
+
+2007-12-18 Takeshi AIHANA <takeshi.aihana@gmail.com>
+
+ * ja.po: Updated Japanese translation.
+
+2007-12-17 Xavier Claessens <xclaesse@gmail.com>
+
+ * pt_BR.po: Updated pt_BR translation (André Filipe de Assunção e Brito).
+
+2007-12-17 Luca Ferretti <elle.uca@libero.it>
+
+ * it.po: Updated Italian translation by Milo Casagrande.
+
+2007-12-16 Espen Stefansen <espens@svn.gnome.org>
+
+ * nb.po: Updated Norwegian Bokmål translation.
+
+2007-12-16 Daniel Nylander <po@danielnylander.se>
+
+ * sv.po: Updated Swedish translation.
+
+2007-12-06 Jorge Gonzalez <jorgegonz@svn.gnome.org>
+
+ * es.po: Updated Spanish translation
+
+2007-12-05 Takeshi AIHANA <takeshi.aihana@gmail.com>
+
+ * ja.po: Updated Japanese translation.
+
+2007-12-03 Ignacio Casal Quinteiro <nacho.resa@gmail.com>
+
+ * gl.po: Updated Galician Translation.
+ * POTFILES.in: Updated.
+
+2007-12-03 Matej Urbančič <mateju@svn.gnome.org>
+
+ * sl.po: Updated Slovenian translation
+
+2007-11-30 Jorge Gonzalez <jorgegonz@svn.gnome.org>
+
+ * es.po: Updated Spanish translation
+
+2007-11-27 Luca Ferretti <elle.uca@libero.it>
+
+ * it.po: Updated Italian translation by Milo Casagrande.
+
+2007-11-26 Alexander Shopov <ash@contact.bg>
+
+ * bg.po: Updated Bulgarian translation
+
+2007-11-23 Takeshi AIHANA <takeshi.aihana@gmail.com>
+
+ * ja.po: Updated Japanese translation.
+
+2007-11-21 Yannig Marchegay <yannig@marchegay.org>
+
+ * oc.po: Updated Occitan translation
+
+2007-11-14 Andre Klapper <a9016009@gmx.de>
+
+ * de.po: Updated German translation.
+
+2007-11-11 Daniel Nylander <po@danielnylander.se>
+
+ * sv.po: Updated Swedish translation.
+
+2007-11-09 Ilkka Tuohela <hile@iki.fi>
+
+ * fi.po: Updated Finnish translation.
+
+2007-11-06 Ignacio Casal Quinteiro <nacho.resa@gmail.com>
+
+ * gl.po: Updated Galician Translation.
+
+2007-11-06 Jorge Gonzalez <jorgegonz@svn.gnome.org>
+
+ * es.po: Updated Spanish translation
+
+2007-11-04 Jorge Gonzalez <jorgegonz@svn.gnome.org>
+
+ * es.po: Updated Spanish translation
+
+2007-11-01 Espen Stefansen <espens@svn.gnome.org>
+
+ * nb.po: Updated Norwegian Bokmål translation.
+
+2007-11-01 Daniel Nylander <po@danielnylander.se>
+
+ * sv.po: Updated Swedish translation.
+
+2007-11-01 Takeshi AIHANA <takeshi.aihana@gmail.com>
+
+ * ja.po: Updated Japanese translation.
+
+2007-11-01 Jorge Gonzalez <jorgegonz@svn.gnome.org>
+
+ * es.po: Updated Spanish translation
+
+2007-10-30 Gabor Kelemen <kelemeng@gnome.hu>
+
+ * hu.po: Translation updated
+
+2007-10-28 Ignacio Casal Quinteiro <nacho.resa@gmail.com>
+
+ * gl.po: Added Galician Translation.
+ * LINGUAS: Added 'gl'
+
+2007-10-25 Jorge Gonzalez <jorgegonz@svn.gnome.org>
+
+ * es.po: Updated Spanish translation.
+
+2007-10-24 Claude Paroz <claude@2xlibre.net>
+
+ * fr.po: Updated French translation.
+
+2007-10-23 Djihed Afifi <djihed@gmail.com>
+
+ * ar.po: Updated Arabic Translation by Djihed Afifi.
+
+2007-10-22 Daniel Nylander <po@danielnylander.se>
+
+ * sv.po: Updated Swedish translation.
+
+2007-10-19 Jorge Gonzalez <jorgegonz@svn.gnome.org>
+
+ * es.po: Updated Spanish translation.
+
+2007-10-14 Jorge Gonzalez <jorgegonz@svn.gnome.org>
+
+ * es.po: Updated Spanish translation.
+
+2007-10-11 Daniel Nylander <po@danielnylander.se>
+
+ * sv.po: Updated Swedish translation.
+
+2007-10-08 Takeshi AIHANA <takeshi.aihana@gmail.com>
+
+ * ja.po: Updated Japanese translation.
+
+2007-10-07 Jorge Gonzalez <jorgegonz@svn.gnome.org>
+
+ * es.po: Updated Spanish translation.
+
+2007-09-29 Takeshi AIHANA <takeshi.aihana@gmail.com>
+
+ * ja.po: Updated Japanese translation.
+
+2007-09-26 Jorge Gonzalez <jorgegonz@svn.gnome.org>
+
+ * es.po: Updated Spanish translation
+
+2007-09-20 Jorge Gonzalez <jorgegonz@svn.gnome.org>
+
+ * es.po: Updated Spanish translation
+
+2007-09-13 Ilkka Tuohela <hile@iki.fi>
+
+ * fi.po: Updated Finnish translation.
+
+2007-09-10 Jordi Mallach <jordi@sindominio.net>
+
+ * ca.po: Updated Catalan translation.
+
+2007-09-01 Ilkka Tuohela <hile@iki.fi>
+
+ * fi.po: Updated Finnish translation.
+
+2007-08-30 Stéphane Raimbault <stephane.raimbault@gmail.com>
+
+ * fr.po: Updated French translation by Laurent Bigonville and
+ Stéphane Raimbault.
+
+2007-08-26 Xavier Claessens <xclaesse@gmail.com>
+
+ * hr.po: Updated Croatian translation (Senko Rasic).
+
+2007-08-26 Takeshi AIHANA <takeshi.aihana@gmail.com>
+
+ * ja.po: Updated Japanese translation.
+
+2007-08-25 Jorge Gonzalez <jorgegonz@svn.gnome.org>
+
+ * es.po: Updated Spanish translation
+
+2007-08-19 Artur Flinta <aflinta@svn.gnome.org>
+
+ * pl.po: Updated Polish translation (GNOME PL Team).
+
+2007-08-18 Jorge Gonzalez <jorgegonz@svn.gnome.org>
+
+ * es.po: Updated Spanish translation
+
+2007-08-16 Ilkka Tuohela <hile@iki.fi>
+
+ * fi.po: Updated Finnish translation.
+
+2007-08-16 Ilkka Tuohela <hile@iki.fi>
+
+ * fi.po: Updated Finnish translation.
+
+2007-08-14 Takeshi AIHANA <takeshi.aihana@gmail.com>
+
+ * ja.po: Updated Japanese translation.
+
+2007-08-13 Stéphane Raimbault <stephane.raimbault@gmail.com>
+
+ * fr.po: One more fix. Thanks to Claude Paroz.
+
+2007-08-13 Frederic Peters <fpeters@0d.be>
+
+ * fr.po: Updated French translation with fixes suggested by Stéphane
+ Raimbault.
+
+2007-08-10 Frederic Peters <fpeters@0d.be>
+
+ * fr.po: Updated French translation.
+
+2007-08-09 Inaki Larranaga Murgoitio <dooteo@zundan.com>
+
+ * eu.po: Updated Basque translation.
+
+2007-08-08 Artur Flinta <aflinta@svn.gnome.org>
+
+ * pl.po: Updated Polish translation by GNOME PL Team.
+
+2007-08-05 Jorge Gonzalez <jorgegonz@svn.gnome.org>
+
+ * es.po: Updated Spanish translation
+
+2007-08-01 Jorge Gonzalez <jorgegonz@svn.gnome.org>
+
+ * es.po: Updated Spanish translation
+
+2007-07-31 Takeshi AIHANA <takeshi.aihana@gmail.com>
+
+ * ja.po: Updated Japanese translation.
+
+2007-07-30 Daniel Nylander <po@danielnylander.se>
+
+ * sv.po: Updated Swedish translation.
+
+2007-07-15 Jorge Gonzalez <jorgegonz@svn.gnome.org>
+
+ * es.po: Updated Spanish translation
+
+2007-06-30 Jorge Gonzalez <jorgegonz@svn.gnome.org>
+
+ * pl.po: Updated Polish translation (Tomasz Dominikowski).
+
+2007-06-28 Jorge Gonzalez <jorgegonz@svn.gnome.org>
+
+ * es.po: Updated Spanish translation
+
+2007-06-24 Takeshi AIHANA <takeshi.aihana@gmail.com>
+
+ * ja.po: Updated Japanese translation.
+
+2007-06-21 Daniel Nylander <po@danielnylander.se>
+
+ * sv.po: Updated Swedish translation.
+
+2007-06-21 Pema Geyleg <pema.geyleg@gmail.com>
+
+ * dz.po: Updated dzongkha translation
+
+2007-06-18 Gabor Kelemen <kelemeng@gnome.hu>
+
+ * hu.po: Translation updated.
+
+2007-06-15 Jorge Gonzalez <jorgegonz@svn.gnome.org>
+
+ * es.po: Updated Spanish translation
+
+2007-06-15 Gabor Kelemen <kelemeng@gnome.hu>
+
+ * hu.po: Translation updated - this time really :).
+
+2007-06-11 Gabor Kelemen <kelemeng@gnome.hu>
+
+ * hu.po: Translation updated.
+
+2007-06-10 Xavier Claessens <xclaesse@gmail.com>
+
+ * pl.po: Updated Polish translation (Tomasz Dominikowski).
+
+2007-06-10 Takeshi AIHANA <takeshi.aihana@gmail.com>
+
+ * ja.po: Updated Japanese translation.
+
+2007-06-07 Jorge Gonzalez <jorgegonz@svn.gnome.org>
+
+ * es.po: Updated Spanish translation
+
+2007-06-03 Daniel Nylander <po@danielnylander.se>
+
+ * sv.po: Updated Swedish translation.
+
+2007-05-26 Takeshi AIHANA <takeshi.aihana@gmail.com>
+
+ * ja.po, LINGUAS: Added Japanese translation.
+
+2007-05-15 David Lodge <dave@cirt.net>
+
+ * en_GB.po: Added British English translation
+
+2007-05-14 Daniel Nylander <po@danielnylander.se>
+
+ * sv.po: Added Swedish translation.
+
+2007-05-14 Xavier Claessens <xclaesse@gmail.com>
+
+ * Initial version imported from gossip
diff --git a/gnome-2-22/po/LINGUAS b/gnome-2-22/po/LINGUAS
new file mode 100644
index 000000000..d7d0f3f94
--- /dev/null
+++ b/gnome-2-22/po/LINGUAS
@@ -0,0 +1,47 @@
+# please keep this list sorted alphabetically
+ar
+az
+bg
+ca
+cs
+cy
+da
+de
+dz
+el
+en_CA
+en_GB
+eo
+es
+eu
+fi
+fr
+ga
+gl
+he
+hr
+hu
+it
+ja
+lt
+ml
+ms
+nb
+ne
+nl
+oc
+pl
+pt
+pt_BR
+ru
+sl
+sq
+sr
+sr@Latn
+sv
+tr
+uk
+vi
+zh_CN
+zh_HK
+zh_TW
diff --git a/gnome-2-22/po/POTFILES.in b/gnome-2-22/po/POTFILES.in
new file mode 100644
index 000000000..ec20aec63
--- /dev/null
+++ b/gnome-2-22/po/POTFILES.in
@@ -0,0 +1,74 @@
+# List of source files containing translatable strings.
+# Please keep this file sorted alphabetically.
+
+data/empathy.desktop.in.in
+data/empathy.schemas.in
+
+libempathy/empathy-idle.c
+libempathy/empathy-contact.c
+libempathy/empathy-tp-contact-list.c
+libempathy/empathy-utils.c
+
+libempathy-gtk/empathy-about-dialog.c
+libempathy-gtk/empathy-account-chooser.c
+libempathy-gtk/empathy-account-widget.c
+libempathy-gtk/empathy-account-widget-generic.glade
+libempathy-gtk/empathy-account-widget-icq.glade
+libempathy-gtk/empathy-account-widget-irc.c
+libempathy-gtk/empathy-account-widget-irc.glade
+libempathy-gtk/empathy-account-widget-jabber.glade
+libempathy-gtk/empathy-account-widget-msn.glade
+libempathy-gtk/empathy-account-widget-salut.glade
+libempathy-gtk/empathy-account-widget-sip.glade
+libempathy-gtk/empathy-account-widget-yahoo.glade
+libempathy-gtk/empathy-accounts-dialog.c
+libempathy-gtk/empathy-accounts-dialog.glade
+libempathy-gtk/empathy-avatar-chooser.c
+libempathy-gtk/empathy-avatar-image.c
+libempathy-gtk/empathy-call-window.c
+libempathy-gtk/empathy-call-window.glade
+libempathy-gtk/empathy-chat.c
+libempathy-gtk/empathy-chat.glade
+libempathy-gtk/empathy-chat-view.c
+libempathy-gtk/empathy-chat-window.c
+libempathy-gtk/empathy-chatrooms-window.c
+libempathy-gtk/empathy-chatrooms-window.glade
+libempathy-gtk/empathy-contact-dialogs.c
+libempathy-gtk/empathy-contact-dialogs.glade
+libempathy-gtk/empathy-contact-list-view.c
+libempathy-gtk/empathy-contact-widget.c
+libempathy-gtk/empathy-contact-widget.glade
+libempathy-gtk/empathy-group-chat.c
+libempathy-gtk/empathy-group-chat.glade
+libempathy-gtk/empathy-irc-network-dialog.c
+libempathy-gtk/empathy-log-window.c
+libempathy-gtk/empathy-log-window.glade
+libempathy-gtk/empathy-new-chatroom-dialog.c
+libempathy-gtk/empathy-new-chatroom-dialog.glade
+libempathy-gtk/empathy-main-window.c
+libempathy-gtk/empathy-main-window.glade
+libempathy-gtk/empathy-new-message-dialog.glade
+libempathy-gtk/empathy-preferences.c
+libempathy-gtk/empathy-preferences.glade
+libempathy-gtk/empathy-presence-chooser.c
+libempathy-gtk/empathy-presence-chooser.glade
+libempathy-gtk/empathy-private-chat.c
+libempathy-gtk/empathy-spell-dialog.c
+libempathy-gtk/empathy-spell-dialog.glade
+libempathy-gtk/empathy-status-icon.c
+libempathy-gtk/empathy-status-icon.glade
+libempathy-gtk/empathy-theme-boxes.c
+libempathy-gtk/empathy-theme-irc.c
+libempathy-gtk/empathy-theme-manager.c
+libempathy-gtk/totem-subtitle-encoding.c
+
+megaphone/data/GNOME_Megaphone_Applet.schemas.in
+megaphone/data/GNOME_Megaphone_Applet.server.in.in
+megaphone/data/GNOME_Megaphone_Applet.xml
+megaphone/src/megaphone-applet.c
+
+nothere/data/GNOME_NotHere_Applet.server.in.in
+nothere/data/GNOME_NotHere_Applet.xml
+nothere/src/nothere-applet.c
+
+src/empathy.c
diff --git a/gnome-2-22/po/POTFILES.skip b/gnome-2-22/po/POTFILES.skip
new file mode 100644
index 000000000..126726d76
--- /dev/null
+++ b/gnome-2-22/po/POTFILES.skip
@@ -0,0 +1,6 @@
+# Please keep this file sorted alphabetically.
+
+data/empathy.desktop.in
+megaphone/data/GNOME_Megaphone_Applet.server.in
+nothere/data/GNOME_NotHere_Applet.server.in
+
diff --git a/gnome-2-22/po/ar.po b/gnome-2-22/po/ar.po
new file mode 100644
index 000000000..1de9245e5
--- /dev/null
+++ b/gnome-2-22/po/ar.po
@@ -0,0 +1,2485 @@
+# translation of gossip.HEAD.po to Arabic
+# Arabisch translation of PACKAGE.
+# Copyright (C) 2004 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+#
+#
+# Arafat Medini <lumina@silverpen.de>, 2004.
+# Abdulaziz Al-Arfaj <alarfaj0@yahoo.com>, 2004.
+# Khaled Hosny <khaledhosny@eglug.org>, 2006.
+# Abou Manal <aboumanal@gmail.com>, 2008.
+# Djihed Afifi<djihed@gmail.com, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: gossip.HEAD\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-02-27 14:27+0000\n"
+"PO-Revision-Date: 2008-02-09 22:41+0100\n"
+"Last-Translator: Abou Manal <aboumanal@gmail.com>\n"
+"Language-Team: Arabic <support@eglug.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.2\n"
+"Plural-Forms: nplurals=4; plural=n==1 ? 0 : n==2 ? 1 : n>=3 && n<=10 ? 2 : "
+"3\n"
+
+#: ../data/empathy.desktop.in.in.h:1
+msgid "Empathy Instant Messenger"
+msgstr "مرسال أمبثي"
+
+#: ../data/empathy.desktop.in.in.h:2
+msgid "Send and receive instant messages"
+msgstr "ارسل و استقبل رسائل فورية"
+
+#: ../data/empathy.schemas.in.h:1
+msgid "Always open a separate chat window for new chats."
+msgstr "افتح دائما نافذة دردشة منفصلة للدردشات الجديدة."
+
+#: ../data/empathy.schemas.in.h:2
+msgid ""
+"Character to add after nickname when using nick completion (tab) in group "
+"chat."
+msgstr "المِحرف المضاف للكنية عند استعمال (tab) تكملة الكنية في مجموعة الدردشة."
+
+#: ../data/empathy.schemas.in.h:3
+msgid "Chat window theme"
+msgstr "تيمة نافذة الدردشة"
+
+#: ../data/empathy.schemas.in.h:4
+msgid "Checks if Empathy should autoconnect on startup"
+msgstr "تحقَّق إذا كان على أمبثي الاتصال آليا عند بدء التَّشغيل"
+
+#: ../data/empathy.schemas.in.h:5
+msgid "Checks if NetworkManager should be used"
+msgstr "تحقق من وجوب استخدام NetworkManager"
+
+#: ../data/empathy.schemas.in.h:6
+msgid "Checks if Salut account is created"
+msgstr "تحقق إذا كان حساب Salut قد أنشىء"
+
+#: ../data/empathy.schemas.in.h:7
+msgid ""
+"Comma separated list of spell checker languages to use (e.g. en, fr, nl)."
+msgstr ""
+"لائحة عناصرها مُفرقة بالفاصلة للغات المدقق الاملائي قصد الاستخدام (مثال en, "
+"fr, nl)."
+
+#: ../data/empathy.schemas.in.h:8
+msgid "Compact contact list"
+msgstr "قائمة مضغوطة للمراسَلين"
+
+#: ../data/empathy.schemas.in.h:9
+msgid "Contact list sort criterium"
+msgstr "معيار ترتيب قائمة المراسلين"
+
+#: ../data/empathy.schemas.in.h:10
+msgid "Default directory to select an avatar image from"
+msgstr "المجلد الافتراضي الذي سيُختار منه صورة الأفاتار"
+
+#: ../data/empathy.schemas.in.h:11
+msgid "Enable popup when contact is available"
+msgstr "تمكين النافذة المنبثقة حين تواجد المرَاسل"
+
+#: ../data/empathy.schemas.in.h:12
+msgid "Enable sound when away"
+msgstr "فعل الصوت عندما أكون بعيدا"
+
+#: ../data/empathy.schemas.in.h:13
+msgid "Enable sound when busy"
+msgstr "فعل الصوت عندما أكون مشغولا"
+
+#: ../data/empathy.schemas.in.h:14
+msgid "Enable spell checker"
+msgstr "فعل فحص التهجئة"
+
+#: ../data/empathy.schemas.in.h:15
+msgid "Hide main window"
+msgstr "إخفاء النَّافذة الرَّئيسيَّة"
+
+#: ../data/empathy.schemas.in.h:16
+msgid "Hide the main window."
+msgstr "إخفاء النَّافذة الرَّئيسيَّة."
+
+#: ../data/empathy.schemas.in.h:17
+msgid "Nick completed character"
+msgstr "مِحرف الكنية التام"
+
+#: ../data/empathy.schemas.in.h:18
+msgid "Open new chats in separate windows"
+msgstr "افتح الدردشات الجديدة في نوافذ منفصلة"
+
+#: ../data/empathy.schemas.in.h:19
+msgid "Show avatars"
+msgstr "أعرض الأفاتارات"
+
+#: ../data/empathy.schemas.in.h:20
+msgid "Show hint about closing the main window"
+msgstr "أظهر التلميحة حول إغلاق النافذة الرئيسية"
+
+#: ../data/empathy.schemas.in.h:21
+msgid "Show offline contacts"
+msgstr "إظهار المراسلين الغير متَّصلين"
+
+#: ../data/empathy.schemas.in.h:22
+msgid "Spell checking languages"
+msgstr "لغات التدقيق الهجائي"
+
+#: ../data/empathy.schemas.in.h:23
+msgid "The last directory that an avatar image was chosen from."
+msgstr "آخر مجلد الذي اخْتِير منه صورة الأفاتار."
+
+#: ../data/empathy.schemas.in.h:24
+msgid "The theme that is used to display the conversation in chat windows."
+msgstr "السِمة المستخدمة لعرض المحادثة في نوافذ الدردشة."
+
+#: ../data/empathy.schemas.in.h:25
+msgid "Use graphical smileys"
+msgstr "استخدام التعابير المرسومة"
+
+#: ../data/empathy.schemas.in.h:26
+msgid "Use notification sounds"
+msgstr "استخدام أصوات التَّبليغ"
+
+#: ../data/empathy.schemas.in.h:27
+msgid "Use theme for chat rooms"
+msgstr "استخدم السمة لغرف الدردشة"
+
+#: ../data/empathy.schemas.in.h:28
+msgid ""
+"Whether or not Empathy should automatically login to your accounts on "
+"startup."
+msgstr ""
+"فيما إذا كان ينبغي على أمبثي الولوج آليا إلى حساباتك عند بدء التشغيل أم لا."
+
+#: ../data/empathy.schemas.in.h:29
+msgid ""
+"Whether or not the Salut account has been created on the first empathy run."
+msgstr "فيما إذا كان حساب Salut قد أُنشِئ عند أول تشغيل لِأمبثي. "
+
+#: ../data/empathy.schemas.in.h:30
+msgid ""
+"Whether or not the network manager should be used to automatically "
+"disconnect/reconnect."
+msgstr ""
+"فيما إذا كان مدير الشبكة سيُستخدم آليا لقطع الاتصال/إعادة الاتصال أم لا."
+
+#: ../data/empathy.schemas.in.h:31
+msgid ""
+"Whether or not to check words typed against the languages you want to check "
+"with."
+msgstr ""
+"فيما ينبغي أم لا التأكد من الكلمات المكتوبة مقابل اللغات التي ترغب التأكد "
+"بواسطتها. "
+
+#: ../data/empathy.schemas.in.h:32
+msgid ""
+"Whether or not to convert smileys into graphical images in conversations."
+msgstr "فيما إذا ستحول التعابير المرسومة إلى صور مرسومة في المحادثات."
+
+#: ../data/empathy.schemas.in.h:33
+msgid "Whether or not to play a sound when messages arrive."
+msgstr "فيما إذا سيصدر صوت عند وصول الرَّسائل."
+
+#: ../data/empathy.schemas.in.h:34
+msgid "Whether or not to play sounds when away."
+msgstr "فيما إذا سيصدر صوت عندما أكون غائباً."
+
+#: ../data/empathy.schemas.in.h:35
+msgid "Whether or not to play sounds when busy."
+msgstr "فيما إذا سيصدر صوت عندما أكون مشغولاً."
+
+#: ../data/empathy.schemas.in.h:36
+msgid "Whether or not to show a popup when a contact becomes available."
+msgstr "فيما إذا ستعرض نافذة منبثقة أم لا عندما يتوفر مراسل."
+
+#: ../data/empathy.schemas.in.h:37
+msgid ""
+"Whether or not to show avatars for contacts in the contact list and chat "
+"windows."
+msgstr ""
+"فيما إذا سيظهر أم لا أفاتارات للمراسلين الموجودين في قائمة المراسَلين ونوافذ "
+"الدردشة."
+
+#: ../data/empathy.schemas.in.h:38
+msgid "Whether or not to show contacts that are offline in the contact list."
+msgstr "فيما إذا سيظهر المراسلين الغير متَّصلين في قائمة المراسَلين."
+
+#: ../data/empathy.schemas.in.h:39
+msgid ""
+"Whether or not to show the message dialog about closing the main window with "
+"the 'x' button in the title bar."
+msgstr ""
+"فيما إذا كان ينبغي إظهار حوار الرسالة حول إغلاق النافذة الرئيسية بزر 'x' من "
+"على شريط العنوان أم لا."
+
+#: ../data/empathy.schemas.in.h:40
+msgid "Whether to show the contact list in compact mode or not."
+msgstr "فيما إذا سيظهر قائمة المراسَلين في وضع مدمج أم لا."
+
+#: ../data/empathy.schemas.in.h:41
+msgid "Whether to use the theme for chat rooms or not."
+msgstr "أتُستخدم السِمة لغرف الدردشة أم لا."
+
+#: ../data/empathy.schemas.in.h:42
+msgid ""
+"Which criterium to use when sorting the contact list. Default is to use sort "
+"by the contact's name with the value \"name\". A value of \"state\" will "
+"sort the contact list by state."
+msgstr ""
+"أي معيار سيُستخدم لفرز لائحة المراسلين. المفترض استخدام الفرز بواسطة اسم "
+"المراسل بقيمة \"name\". أما قيمة \"state\" فستُفرز الائحة بواسطة الولاية."
+
+#: ../libempathy/empathy-tp-contact-list.c:724 ../src/empathy.c:149
+msgid "People nearby"
+msgstr "الأشخاص القريبون"
+
+#: ../libempathy/empathy-utils.c:539
+msgid "Available"
+msgstr "متوفّر"
+
+#: ../libempathy/empathy-utils.c:541
+msgid "Busy"
+msgstr "مشغول"
+
+#: ../libempathy/empathy-utils.c:544
+msgid "Away"
+msgstr "غائب"
+
+#: ../libempathy/empathy-utils.c:546
+msgid "Hidden"
+msgstr "مخفي"
+
+#: ../libempathy/empathy-utils.c:549
+msgid "Offline"
+msgstr "غير متصل"
+
+#: ../libempathy-gtk/empathy-about-dialog.c:63
+msgid ""
+"Empathy is free software; you can redistribute it and/or modify it under the "
+"terms of the GNU General Public License as published by the Free Software "
+"Foundation; either version 2 of the License, or (at your option) any later "
+"version."
+msgstr ""
+"أمبثي برنامج حر؛ بامكانك إعادة توزيعه و/أو تعديله تحت شروط الرخصة العامة "
+"لجنو والتي نشرتها منظمة البرمجيات الحرة؛ سواء كانت الإصدارة 2 للرخصة أو أي "
+"إصدارة بعدها حسب الرغبة. "
+
+#: ../libempathy-gtk/empathy-about-dialog.c:67
+msgid ""
+"Empathy is distributed in the hope that it will be useful, but WITHOUT ANY "
+"WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS "
+"FOR A PARTICULAR PURPOSE. See the GNU General Public License for more "
+"details."
+msgstr ""
+"يوزّع أمبثي على أمل أن يكون مفيدال لمن يستخدمه دون أدنى مسؤولية؛ ولا حتى "
+"أيضشمان يضمن صلاحية العرض في السوق أو توافقه مع أي استخدام محدد. يمكنم "
+"مراجعة الرخصة العامة لجنو لمزيد من التفاصيل. "
+
+#: ../libempathy-gtk/empathy-about-dialog.c:71
+msgid ""
+"You should have received a copy of the GNU General Public License along with "
+"Empathy; if not, write to the Free Software Foundation, Inc., 51 Franklin "
+"Street, Fifth Floor, Boston, MA 02110-130159 USA"
+msgstr ""
+"من المفترض أن تكون قد استلمت نسخة من رخصة جنو العامة مع هذا البرنامج؛ في حال "
+"عدم استلامك لذلك، يمكنك مكاتبة: Free Software Foundation, Inc., 51 Franklin "
+"Street, Fifth Floor, Boston, MA 02110-1301, USA"
+
+#: ../libempathy-gtk/empathy-about-dialog.c:99
+msgid "An Instant Messaging client for GNOME"
+msgstr "عميل مراسلة فورية لجنوم"
+
+#: ../libempathy-gtk/empathy-about-dialog.c:105
+msgid "translator-credits"
+msgstr ""
+"فريق عربآيز للترجمة http://www.arabeyes.org :\n"
+"جهاد عفيفي\t<djihed@gmail.com>\n"
+"يوسف رفه\t<yousef@raffah.com>"
+
+#: ../libempathy-gtk/empathy-account-chooser.c:337
+msgid "All"
+msgstr "الكل"
+
+#: ../libempathy-gtk/empathy-account-widget.c:276
+#: ../libempathy-gtk/empathy-account-widget.c:321
+#, c-format
+msgid "%s:"
+msgstr "%s:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:1
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:1
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:1
+msgid "<b>Advanced</b>"
+msgstr "<b>متقدم</b>"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:2
+msgid "<b>Override server settings</b>"
+msgstr "<b>تجاوز إعدادات الخادم</b>"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:3
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:2
+msgid "Forget password and clear the entry."
+msgstr "انسَ كلمة المرور وامْحُ المدخلة."
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:4
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:3
+msgid "Login I_D:"
+msgstr "ا_سم المستخدم:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:5
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:4
+msgid "Pass_word:"
+msgstr "كلمة الم_رور:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:6
+msgid "Pri_ority:"
+msgstr "الأو_لويّة:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:7
+msgid "Reso_urce:"
+msgstr "الم_ورد:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:8
+msgid "Use old SS_L"
+msgstr "إستعمل التشفير القديم SS_L"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:9
+msgid "_Encryption required (TLS/SSL)"
+msgstr "مطلوب ال_تشفير (TLS/SSL )"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:10
+msgid "_Ignore SSL certificate errors"
+msgstr "_تجاهل أخطاء شهادة SSL"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:11
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:5
+msgid "_Port:"
+msgstr "ال_منْفذ:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:12
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:6
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:10
+msgid "_Server:"
+msgstr "ال_خادم:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:13
+msgid "jabber account settings"
+msgstr "إعدادات حساب jabber"
+
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:7
+msgid "msn account settings"
+msgstr "إعدادات حساب msn"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:2
+msgid "_E-mail:"
+msgstr "البريد إل_كتروني:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:3
+msgid "_First Name: "
+msgstr "الإ_سم:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:4
+msgid "_Jabber ID:"
+msgstr "ه_وية Jabber:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:5
+msgid "_Last Name:"
+msgstr "ال_لقب:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:6
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:8
+msgid "_Nickname:"
+msgstr "الك_نية:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:7
+msgid "_Published Name:"
+msgstr "ا_سم متعارف عليه:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:8
+msgid "salut account settings"
+msgstr "إعدادات حساب salut"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:225
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to start configuring."
+msgstr ""
+"لإظافة حساب جديد، يمكنك النقر على زر ‘أظف‘ فتُنشأ مُدخلة جديدة لتبدأ بتشكيلها."
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:229
+msgid ""
+"To add a new account, you first have to install a backend for each protocol "
+"you want to use."
+msgstr ""
+"لإظافة حساب جديد، عليك أولا بتثبيت منتهى خلفي لكل بروتوكول تود استعماله."
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:236
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:2
+msgid "<b>No Account Selected</b>"
+msgstr "<b>لم يتم انتقاء أيّ حساب</b>"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:237
+msgid ""
+"\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want "
+"to configure in the list on the left."
+msgstr ""
+"\n"
+"\n"
+"إذا لم تكن ترغب في إظافة حساب، فانقر فقط على الحساب الذي ترغب في تشكيله من "
+"الائحة على اليسار."
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:243
+msgid "<b>No Accounts Configured</b>"
+msgstr "<b>لم تتم تهيئة أيّ حساب</b>"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:411
+msgid "Enabled"
+msgstr "مفعّل"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:421
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:4
+msgid "Accounts"
+msgstr "حسابات"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:904
+#, c-format
+msgid ""
+"You are about to remove your %s account!\n"
+"Are you sure you want to proceed?"
+msgstr ""
+"إنك علة وشك إزالة حسابك %s!\n"
+"أمُتأكد أنك ترغب في إتمام العملية؟"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:910
+msgid ""
+"Any associated conversations and chat rooms will NOT be removed if you "
+"decide to proceed.\n"
+"\n"
+"Should you decide to add the account back at a later time, they will still "
+"be available."
+msgstr ""
+"لن تُزال أي محادثات أو غرف دردشة إذا قررت إتمام العملية.\n"
+"\n"
+"إذا ما قررت إظافة الحساب لاحقا، سيبقون متوفرين. "
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:1
+msgid "<b>New Account</b>"
+msgstr "<b>حساب جديد</b>"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:3
+msgid "<b>Settings</b>"
+msgstr "<b>إعدادات</b>"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:5
+msgid "Cr_eate"
+msgstr "ا_نشاء"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:6
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to started configuring.\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want "
+"to configure in the list on the left."
+msgstr ""
+"لإظافة حساب جديد، يمكنك النقر على زر ‘أظف‘ فتُنشأ مُدخلة جديدة لتبدأ "
+"بتشكيلها.\n"
+"\n"
+"إذا لم تكن ترغب في إظافة حساب، فانقر فقط على الحساب الذي ترغب في تشكيله من "
+"الائحة على اليسار. "
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:9
+msgid "Type:"
+msgstr "النّوع:"
+
+#: ../libempathy-gtk/empathy-avatar-chooser.c:449
+msgid "Select Your Avatar Image"
+msgstr "اختر صورة الأفاتار"
+
+#: ../libempathy-gtk/empathy-avatar-chooser.c:452
+msgid "No Image"
+msgstr "لا صورة"
+
+#: ../libempathy-gtk/empathy-avatar-chooser.c:512
+msgid "Images"
+msgstr "صور"
+
+#: ../libempathy-gtk/empathy-avatar-chooser.c:516
+msgid "All Files"
+msgstr "كل الملفّات"
+
+#: ../libempathy-gtk/empathy-avatar-image.c:298
+msgid "Click to enlarge"
+msgstr "انقر للتكبير"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:1
+#, fuzzy
+msgid "End Call"
+msgstr "اتصال"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:2
+msgid "Input"
+msgstr "دخْل"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:3
+msgid "Mute"
+msgstr "صمت"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:4
+msgid "Output"
+msgstr "إخراج"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:5
+msgid "Send Video"
+msgstr "ارسال الفيديو"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:6
+msgid "Start Call"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:7
+msgid "Volume"
+msgstr "شدة الصوت"
+
+#: ../libempathy-gtk/empathy-chat.c:445
+msgid "Disconnected"
+msgstr "غير متَّصل"
+
+#: ../libempathy-gtk/empathy-chat.c:580
+msgid "offline"
+msgstr "غير متّصل"
+
+#: ../libempathy-gtk/empathy-chat.c:583
+msgid "invalid contact"
+msgstr "مراسل غير صحيح"
+
+#: ../libempathy-gtk/empathy-chat.c:586
+msgid "permission denied"
+msgstr "رُفض التّصريح"
+
+#: ../libempathy-gtk/empathy-chat.c:589
+msgid "too long message"
+msgstr "الرسالة طويلة جدا"
+
+#: ../libempathy-gtk/empathy-chat.c:592
+msgid "not implemented"
+msgstr "غير مطبق"
+
+#: ../libempathy-gtk/empathy-chat.c:595
+msgid "unknown"
+msgstr "مجهول"
+
+#: ../libempathy-gtk/empathy-chat.c:599
+#, c-format
+msgid "Error sending message '%s': %s"
+msgstr "خطأ في ارسال الرسالة '%s': %s"
+
+#: ../libempathy-gtk/empathy-chat.c:1056
+msgid "Insert Smiley"
+msgstr "أدرج التعابير المرسومة"
+
+#: ../libempathy-gtk/empathy-chat.c:1103
+msgid "_Check Word Spelling..."
+msgstr "_دقق الإملاء..."
+
+#: ../libempathy-gtk/empathy-chat.c:1558
+msgid "Connected"
+msgstr "متَّصل"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:1
+msgid "C_lear"
+msgstr "_مسح"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:2
+msgid "Ca_ll"
+msgstr "إتّ_صل"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:3
+msgid "Change _Topic..."
+msgstr "_موضوع جديد..."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:4
+#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:3
+msgid "Chat"
+msgstr "دردشة"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:5
+msgid "Contact Infor_mation"
+msgstr "م_علومات المراسل."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:6
+msgid "Cu_t"
+msgstr "_قص"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:7
+msgid "In_vite..."
+msgstr "ا_دعو..."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:8
+msgid "Insert _Smiley"
+msgstr "أدرج تعبيرا ر_سوميا"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:9
+msgid "Invitation _message:"
+msgstr "رسالة ال_دعوة:"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:10
+msgid "Invite"
+msgstr "استدعاء"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:11
+#: ../libempathy-gtk/empathy-main-window.glade.h:4
+msgid "Join _New..."
+msgstr "ان_ضم الى جدبد..."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:12
+msgid "Move Tab _Left"
+msgstr "نقل اللِّسان إلى اليسا_ر"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:13
+msgid "Move Tab _Right"
+msgstr "نقل اللِّسان إلى ال_يمين"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:14
+msgid "Select who would you like to invite:"
+msgstr "اختر من تريد دعوته"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:15
+msgid "You have been invited to join a chat conference."
+msgstr "لقد استُدعيت للانضمام إلى اجتماع دردشة. "
+
+#: ../libempathy-gtk/empathy-chat.glade.h:16
+#: ../libempathy-gtk/empathy-main-window.glade.h:9
+msgid "_Add Contact..."
+msgstr "إ_ضافة مراسَل..."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:17
+msgid "_Add To Favorites"
+msgstr "أ_ضِف للمفضّلة"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:18
+msgid "_Close"
+msgstr "أ_غلق"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:19
+#: ../libempathy-gtk/empathy-main-window.glade.h:11
+msgid "_Contents"
+msgstr "_المحتويات"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:20
+msgid "_Conversation"
+msgstr "ّم_حادثَة"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:21
+msgid "_Copy"
+msgstr "ا_نسخ"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:22
+msgid "_Detach Tab"
+msgstr "_فصل اللِّسان"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:23
+#: ../libempathy-gtk/empathy-contact-list-view.c:217
+#: ../libempathy-gtk/empathy-main-window.glade.h:12
+msgid "_Edit"
+msgstr "_حرّر"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:24
+#: ../libempathy-gtk/empathy-main-window.glade.h:13
+msgid "_Help"
+msgstr "م_ساعدة"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:25
+msgid "_Next Tab"
+msgstr "اللِّسان ال_تَّالي"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:26
+msgid "_Paste"
+msgstr "ا_لصق"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:27
+msgid "_Previous Tab"
+msgstr "اللِّسان ال_سَّابق"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:28
+#: ../libempathy-gtk/empathy-main-window.glade.h:18
+msgid "_Room"
+msgstr "_غرفة"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:29
+msgid "_Show Contacts"
+msgstr "ا_عرض المراسلين"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:30
+msgid "_Tabs"
+msgstr "أ_لْسنة"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:31
+#: ../libempathy-gtk/empathy-contact-list-view.c:233
+#: ../libempathy-gtk/empathy-main-window.glade.h:19
+msgid "_View Previous Conversations"
+msgstr "ا_عرض المحادثات السابقة"
+
+#: ../libempathy-gtk/empathy-chat-view.c:441
+msgid "_Copy Link Address"
+msgstr "_نسخ عنوان الوصلة"
+
+#: ../libempathy-gtk/empathy-chat-view.c:449
+msgid "_Open Link"
+msgstr "_فتح الوصلة"
+
+#: ../libempathy-gtk/empathy-chat-window.c:699
+#, c-format
+msgid "Conversations (%d)"
+msgstr "محادثات (%d)"
+
+#: ../libempathy-gtk/empathy-chat-window.c:1299
+msgid "Typing a message."
+msgstr "يتم كتابة رسالة"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.c:258
+msgid "Name"
+msgstr "اسم"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.c:276
+msgid "Room"
+msgstr "غرفة"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.c:285
+msgid "Auto Connect"
+msgstr "اتّصال تلقائي"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:1
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:5
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:1
+#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:1
+msgid "Account:"
+msgstr "حساب:"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:2
+msgid "Edit Favorite Room"
+msgstr "حرر الغرفة المفضلة"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:3
+msgid "Join room on start_up"
+msgstr "انضم للغرفة عند بدء التشغيل"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:4
+msgid "Join this chat room when Empathy starts and you are connected"
+msgstr "انضم إلى غرفة الدردشة هاته حين يبدأ أومبثي وها أنت متصَل"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:5
+msgid "Manage Favorite Rooms"
+msgstr "ادر الغرف المفضّلة"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:6
+msgid "N_ame:"
+msgstr "الإ_سم:"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:7
+msgid "S_erver:"
+msgstr "ال_خادم:"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:9
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:9
+msgid "_Room:"
+msgstr "ال_غُرفة:"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:176
+msgid "Personal Information"
+msgstr "المعلومات الشخصية"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:179
+msgid "Edit Contact Information"
+msgstr "عدّل معلومات المراسل"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:182
+msgid "Contact Information"
+msgstr "معلومات المراسَل"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:277
+msgid "I would like to add you to my contact list."
+msgstr "أود إضافتك إلى قائمة مراسليَّ."
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:301
+msgid "New Contact"
+msgstr "مراسَل جديد"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.glade.h:1
+msgid "Decide _Later"
+msgstr "_سأقرر لاحقاً"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.glade.h:2
+msgid "Subscription Request"
+msgstr "طلب تسجيل"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:197
+msgid "_Contact"
+msgstr "_مراسَل"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:201
+msgid "_Group"
+msgstr "م_جموعة"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:205
+#: ../libempathy-gtk/empathy-main-window.glade.h:10
+msgid "_Chat"
+msgstr "_دردشة"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:205
+msgid "Chat with contact"
+msgstr "دردشة مع المراسل"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:209
+msgid "Infor_mation"
+msgstr "_معلومات"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:209
+msgid "View contact information"
+msgstr "اعرض معلومات المراسَل"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:213
+msgid "Re_name"
+msgstr "أعِد ال_تسمية"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:213
+msgid "Rename"
+msgstr "أعِد التسمية"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:217
+msgid "Edit the groups and name for this contact"
+msgstr "حرر المجموعات والاسم لهذا المرَاسل"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:221
+msgid "_Remove"
+msgstr "أ_زل"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:221
+msgid "Remove contact"
+msgstr "احذف المراسل"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:225
+msgid "_Invite to Chat Room"
+msgstr "ادعو الى غرفة المحادثة"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:225
+msgid "Invite to a currently open chat room"
+msgstr "استدعِ إلى غرفة دردشة مفتوحة حاليا"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:229
+msgid "_Send File..."
+msgstr "أرسل م_لف..."
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:229
+msgid "Send a file"
+msgstr "أرسل ملفا"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:233
+msgid "View previous conversations with this contact"
+msgstr "اعرض المحادثات السابقة مع هذا المراسل"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:238
+msgid "_Call"
+msgstr "_اتصال"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:238
+msgid "Start a voice or video conversation with this contact"
+msgstr "ابدأ محادثة صوتية أو فيديوية مع هذا المراسل"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:1469
+msgid "Sorry, I don't want you in my contact list anymore."
+msgstr "آسف، ولكن لا أرغب بك في لائحة مراسليَّ بعد الآن."
+
+#: ../libempathy-gtk/empathy-contact-widget.c:688
+msgid "Select"
+msgstr "إنتقاء"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:698
+#: ../libempathy-gtk/empathy-main-window.c:609
+msgid "Group"
+msgstr "المجموعة"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:1
+msgid "<b>Client Information</b>"
+msgstr "<b>معلومات العميل</b>"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:2
+msgid "<b>Contact Details</b>"
+msgstr "<b>تفاصيل المراسل</b>"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:3
+msgid "<b>Contact</b>"
+msgstr "<b>مراسَل</b>"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:4
+msgid "<b>Groups</b>"
+msgstr "<b>المجموعات</b>"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:6
+msgid "Alias:"
+msgstr "الاسم المستعار:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:7
+msgid "Birthday:"
+msgstr "يوم الميلاد:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:8
+msgid "Client:"
+msgstr "العميل:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:9
+msgid "Contact information"
+msgstr "معلومات المراسَل"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:10
+msgid "Email:"
+msgstr "البريد الإلكتروني:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:11
+msgid "Fullname:"
+msgstr "الإسم الكامل:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:12
+msgid "Identifier:"
+msgstr "اسم:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:13
+msgid "Information requested..."
+msgstr "معلومات م_طلوبة..."
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:14
+msgid "OS:"
+msgstr "نظام التَّشغيل:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:15
+msgid ""
+"Select the groups you want this contact to appear in, you can select more "
+"than one group or no groups."
+msgstr ""
+"انْتقِ المجموعات التي تود أن يظهر فيها هذا المراسَل، يمكنك انتقاء أكثر من "
+"مجموعة أو لا مجموعة."
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:16
+msgid "Version:"
+msgstr "الإصدارة:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:17
+msgid "Web site:"
+msgstr "موقع الإنترنت:"
+
+#: ../libempathy-gtk/empathy-group-chat.c:251
+msgid "Enter the new topic you want to set for this room:"
+msgstr "ّما الموضوع الذي تريد تحديده لهذه الغرفة؟"
+
+#: ../libempathy-gtk/empathy-group-chat.c:361
+#, c-format
+msgid "%s has joined the room"
+msgstr "أنضم %s الى غرفة"
+
+#: ../libempathy-gtk/empathy-group-chat.c:364
+#, c-format
+msgid "%s has left the room"
+msgstr "غادر %s الغرفة"
+
+#: ../libempathy-gtk/empathy-group-chat.c:445
+#, c-format
+msgid "Topic: %s"
+msgstr "الموضوع: %s"
+
+#: ../libempathy-gtk/empathy-group-chat.c:574
+#, c-format
+msgid "Topic set to: %s"
+msgstr "الموضوع: %s"
+
+#: ../libempathy-gtk/empathy-group-chat.c:576
+msgid "No topic defined"
+msgstr "لا موضوع معرف"
+
+#: ../libempathy-gtk/empathy-group-chat.glade.h:1
+msgid "<b>Topic:</b>"
+msgstr "<b>موضوع:</b>"
+
+#: ../libempathy-gtk/empathy-group-chat.glade.h:2
+msgid "Group Chat"
+msgstr "محادثة جماعية"
+
+#: ../libempathy-gtk/empathy-log-window.c:499
+msgid "Account"
+msgstr "حساب"
+
+#: ../libempathy-gtk/empathy-log-window.c:506
+msgid "Conversation"
+msgstr "محادثة"
+
+#: ../libempathy-gtk/empathy-log-window.c:516
+msgid "Date"
+msgstr "التاريخ"
+
+#: ../libempathy-gtk/empathy-log-window.glade.h:1
+msgid "Conversations"
+msgstr "محادثات"
+
+#: ../libempathy-gtk/empathy-log-window.glade.h:2
+msgid "Previous Conversations"
+msgstr "المحادثات السابقة"
+
+#: ../libempathy-gtk/empathy-log-window.glade.h:3
+msgid "Search"
+msgstr "ابحث"
+
+#: ../libempathy-gtk/empathy-log-window.glade.h:4
+msgid "_For:"
+msgstr "_عن:"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.c:286
+msgid "Chat Rooms"
+msgstr "غرف المحادثة"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:2
+msgid "Browse:"
+msgstr "تصفّح:"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:3
+msgid ""
+"Enter the room name to join here or click on one or more rooms in the list."
+msgstr ""
+"أدخِل هنا اسم الغرفة التي تود الانضمام إليها أو انقر غرفة واحدة أو أكثر في "
+"الائحة."
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:4
+msgid ""
+"Enter the server which hosts the room, or leave it empty if the room is on "
+"the current account's server"
+msgstr ""
+"أدخِل الخادم الذي يستضيف الغرفة، أو اتركه فارغا إذا كانت الغرفة على خادم "
+"الحساب الحالي"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:5
+msgid "Join"
+msgstr "انضم"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:6
+msgid "Join New"
+msgstr "انضم لجديد"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:7
+msgid "Re_fresh"
+msgstr "تح_ديث"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:8
+msgid ""
+"This list represents all chat rooms hosted on the server you have entered."
+msgstr "هذه الائحة تمثل كل الغرف المُستضافة على الخادم الذي أدخلت اسمه."
+
+#: ../libempathy-gtk/empathy-main-window.c:266
+msgid "Show and edit accounts"
+msgstr "اعرض و _حرّر الحسابات"
+
+#: ../libempathy-gtk/empathy-main-window.c:630
+msgid "Contact"
+msgstr "مراسَل"
+
+#: ../libempathy-gtk/empathy-main-window.c:813
+msgid "_Edit account"
+msgstr "_حرِّرْ الحساب"
+
+#: ../libempathy-gtk/empathy-main-window.c:896
+msgid "Network error"
+msgstr "خطأ شبكي"
+
+#: ../libempathy-gtk/empathy-main-window.c:899
+msgid "Authentication failed"
+msgstr "فشل التحقق"
+
+#: ../libempathy-gtk/empathy-main-window.c:902
+msgid "Encryption error"
+msgstr "خطأ التشفير"
+
+#: ../libempathy-gtk/empathy-main-window.c:905
+msgid "Name in use"
+msgstr "الاسم مستخدم مسبقا"
+
+#: ../libempathy-gtk/empathy-main-window.c:908
+msgid "Certificate not provided"
+msgstr "الشهادة غير متوفرة"
+
+#: ../libempathy-gtk/empathy-main-window.c:911
+msgid "Certificate untrusted"
+msgstr "الشّهادة غير موثوق بها"
+
+#: ../libempathy-gtk/empathy-main-window.c:914
+msgid "Certificate expired"
+msgstr "انتهت صلاحيّة الشهادة"
+
+#: ../libempathy-gtk/empathy-main-window.c:917
+msgid "Certificate not activated"
+msgstr "الشهادة غير نشطة"
+
+#: ../libempathy-gtk/empathy-main-window.c:920
+msgid "Certificate hostname mismatch"
+msgstr "عدم تطابق الشهادة مع اسم الخادم"
+
+#: ../libempathy-gtk/empathy-main-window.c:923
+msgid "Certificate fingerprint mismatch"
+msgstr "عدم تطابق الشهادة مع التوقيع"
+
+#: ../libempathy-gtk/empathy-main-window.c:926
+msgid "Certificate self signed"
+msgstr "شهادة موقّعة ذاتيّاً"
+
+#: ../libempathy-gtk/empathy-main-window.c:929
+msgid "Certificate error"
+msgstr "خطأ في الشهادة"
+
+#: ../libempathy-gtk/empathy-main-window.c:932
+msgid "Unknown error"
+msgstr "خطأ مجهول"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:1
+msgid "Contact List"
+msgstr "قائمة المراسَلين"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:2
+msgid "Context"
+msgstr "السياق"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:3
+msgid "Join _Favorites"
+msgstr "إن_ضِم إلى المفضلين"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:5
+msgid "Manage Favorites"
+msgstr "أدر المفضلة"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:6
+msgid "Show _Offline Contacts"
+msgstr "إظهار المراسلين ال_غير متَّصلين"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:7
+#: ../megaphone/data/GNOME_Megaphone_Applet.xml.h:1
+#: ../nothere/data/GNOME_NotHere_Applet.xml.h:1
+msgid "_About"
+msgstr "_حول"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:8
+msgid "_Accounts"
+msgstr "_حسابات"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:14
+#: ../libempathy-gtk/empathy-status-icon.glade.h:2
+msgid "_New Conversation..."
+msgstr "م_حادثة جديدة..."
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:15
+msgid "_Personal Information"
+msgstr "الم_علومات الشخصية"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:16
+#: ../megaphone/data/GNOME_Megaphone_Applet.xml.h:3
+msgid "_Preferences"
+msgstr "ال_تَّفضيلات"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:17
+#: ../libempathy-gtk/empathy-status-icon.glade.h:3
+msgid "_Quit"
+msgstr "أ_نه"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:2
+msgid "Call"
+msgstr "اتصال"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:4
+msgid "Contact ID:"
+msgstr "هويّة المراسَل:"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:5
+msgid "New Conversation"
+msgstr "محادثة جديدة"
+
+#: ../libempathy-gtk/empathy-preferences.c:247
+msgid "Language"
+msgstr "اللغة"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:1
+msgid "<b>Appearance</b>"
+msgstr "<b>المظهر</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:2
+msgid "<b>Audio</b>"
+msgstr "<b>صوت</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:3
+msgid "<b>Behaviour</b>"
+msgstr "<b>السّلوك</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:4
+msgid "<b>Contact List</b>"
+msgstr "<b>قائمة المراسَلين</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:5
+msgid "<b>Enable spell checking for languages:</b>"
+msgstr "<b>فعل التهجئة للغات:</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:6
+msgid "<b>Options</b>"
+msgstr "<b>الخيارات</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:7
+msgid "<b>Visual</b>"
+msgstr "<b>مرئي</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:8
+msgid ""
+"<small>The list of languages reflects only the languages for which you have "
+"a dictionary installed.</small>"
+msgstr ""
+"<small>قائمة اللغات الموجودة هنا لا تظهر إلا اللغات التي يوجد لها قاموس مركب."
+"</small>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:9
+msgid "Automatically _connect on startup "
+msgstr "_اتَّصل آليا عند بدء التَّشغيل"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:10
+msgid "Avatars are user chosen images shown in the contact list"
+msgstr "الأفاتارات هي الصور التي اختار المستخدم والظاهرة في لائحة المراسَل"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:11
+msgid "Chat Th_eme:"
+msgstr "_سمة المحادثة:"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:12
+msgid "Display notifications when contacts come _online"
+msgstr "اعرض الاشعارات عندما يصبح المراسَلون متصلين "
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:13
+msgid "Enable sounds when _away"
+msgstr "فعل الأصوات عندما أكون _بعيدا"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:14
+msgid "Enable sounds when _busy"
+msgstr "فعل الأصوات عندما أكون مَ_شْغولاً"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:15
+msgid "General"
+msgstr "عامّ"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:16
+msgid "Notifications"
+msgstr "التبليغات"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:17
+msgid "Preferences"
+msgstr "تفضيلات"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:18
+msgid "Show _avatars"
+msgstr "اعرض الأ_فاتارات"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:19
+msgid "Show _smileys as images"
+msgstr "اظهر الصّور المتحرّكة كرسوم."
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:20
+msgid "Show co_mpact contact list"
+msgstr "إظهار _قائمة مضغوطة للمراسلين"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:21
+msgid "Sort by _name"
+msgstr "رتّب بالإ_سم"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:22
+msgid "Sort by s_tate"
+msgstr "رتّب حسب ال_حالة"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:23
+msgid "Spell Checking"
+msgstr "مراجعة التهجئة"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:24
+msgid "Themes"
+msgstr "السِمات"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:25
+msgid "_Open new chats in separate windows"
+msgstr "_افتح غرف الدردشة الجديدة في نوافذ منفصلة"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:26
+msgid "_Play sound when messages arrive"
+msgstr "شغل صوت عند وصول الرسائل"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:27
+msgid "_Use for chat rooms"
+msgstr "ا_ستعمال لغرف المحادثة"
+
+#. Custom messages
+#: ../libempathy-gtk/empathy-presence-chooser.c:691
+msgid "Custom messages..."
+msgstr "الرسائل المخصصة..."
+
+#: ../libempathy-gtk/empathy-presence-chooser.glade.h:1
+msgid "Custom message"
+msgstr "رسالة مخصّصة"
+
+#: ../libempathy-gtk/empathy-presence-chooser.glade.h:2
+msgid "Message:"
+msgstr "الرسالة:"
+
+#: ../libempathy-gtk/empathy-presence-chooser.glade.h:3
+msgid "Save message"
+msgstr "احفظ الرّسالة"
+
+#: ../libempathy-gtk/empathy-presence-chooser.glade.h:4
+msgid "Status:"
+msgstr "الحالة:"
+
+#: ../libempathy-gtk/empathy-private-chat.c:229
+#, c-format
+msgid "%s went offline"
+msgstr "%s صار دون اتِّصال"
+
+#: ../libempathy-gtk/empathy-private-chat.c:243
+#, c-format
+msgid "%s has come online"
+msgstr "%s قام بالإتصال"
+
+#: ../libempathy-gtk/empathy-spell-dialog.c:85
+msgid "Word"
+msgstr "كلمة"
+
+#: ../libempathy-gtk/empathy-spell-dialog.c:258
+msgid "Suggestions for the word"
+msgstr "الإقتراحات للكلمة"
+
+#: ../libempathy-gtk/empathy-spell-dialog.glade.h:1
+msgid "Spell Checker"
+msgstr "مدقق الإملاء"
+
+#: ../libempathy-gtk/empathy-spell-dialog.glade.h:2
+msgid "Suggestions for the word:"
+msgstr "الإقتراحات للكلمة:"
+
+#: ../libempathy-gtk/empathy-status-icon.c:369
+#, c-format
+msgid ""
+"New message from %s:\n"
+"%s"
+msgstr ""
+"رسالة جديدة من %s:\n"
+"%s"
+
+#: ../libempathy-gtk/empathy-status-icon.c:434
+#, c-format
+msgid ""
+"Incoming call from %s:\n"
+"%s"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-status-icon.c:738
+#, c-format
+msgid "Subscription requested by %s"
+msgstr "طُلِبَ التسجيل من %s"
+
+#: ../libempathy-gtk/empathy-status-icon.c:741
+#, c-format
+msgid ""
+"\n"
+"Message: %s"
+msgstr ""
+"\n"
+"رسالة: %s"
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:1
+msgid "Status"
+msgstr "الحالة"
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:4
+msgid "_Show Contact List"
+msgstr "إظهار _قائمة المراسلين"
+
+#: ../libempathy-gtk/empathy-theme-boxes.c:780
+#: ../libempathy-gtk/empathy-theme-irc.c:297
+msgid "%A %d %B %Y"
+msgstr "%A·%d·%B·%Y"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:78
+msgid "Classic"
+msgstr "تقليدي"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:79
+msgid "Simple"
+msgstr "بسيط"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:80
+msgid "Clean"
+msgstr "نظيف"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:81
+msgid "Blue"
+msgstr "أزرق"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.c:246
+msgid "New Network"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:1
+#, fuzzy
+msgid "<b>Network</b>"
+msgstr "اسم"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:2
+#, fuzzy
+msgid "<b>Servers</b>"
+msgstr "<b>إعدادات</b>"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:3
+#, fuzzy
+msgid "Charset:"
+msgstr "دردشة"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:4
+msgid "Create a new IRC network"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:5
+msgid "Edit the selected IRC network"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:6
+#, fuzzy
+msgid "Network"
+msgstr "خطأ شبكي"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:7
+#, fuzzy
+msgid "Network:"
+msgstr "خطأ شبكي"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:8
+#, fuzzy
+msgid "Nickname:"
+msgstr "الإسم المستعار"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:9
+#, fuzzy
+msgid "Password:"
+msgstr "كلمة الم_رور:"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:10
+#, fuzzy
+msgid "Quit message:"
+msgstr "رسالة مخصّصة"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:11
+#, fuzzy
+msgid "Real name:"
+msgstr "أعِد التسمية"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:12
+msgid "Remove the selected IRC network"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:13
+#, fuzzy
+msgid "irc account settings"
+msgstr "ابق الإعدادات الحالية"
+
+#: ../libempathy-gtk/empathy-irc-network-dialog.c:287
+#, fuzzy
+msgid "new server"
+msgstr "الخادم:"
+
+#: ../libempathy-gtk/empathy-irc-network-dialog.c:512
+#, fuzzy
+msgid "Server"
+msgstr "الخادم:"
+
+#: ../libempathy-gtk/empathy-irc-network-dialog.c:527
+#, fuzzy
+msgid "Port"
+msgstr "ال_منْفذ:"
+
+#: ../libempathy-gtk/empathy-irc-network-dialog.c:540
+msgid "SSL"
+msgstr ""
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:158
+msgid "Current Locale"
+msgstr ""
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:161
+#: ../libempathy-gtk/totem-subtitle-encoding.c:163
+#: ../libempathy-gtk/totem-subtitle-encoding.c:165
+#: ../libempathy-gtk/totem-subtitle-encoding.c:167
+msgid "Arabic"
+msgstr ""
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:170
+msgid "Armenian"
+msgstr ""
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:173
+#: ../libempathy-gtk/totem-subtitle-encoding.c:175
+#: ../libempathy-gtk/totem-subtitle-encoding.c:177
+msgid "Baltic"
+msgstr ""
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:180
+#, fuzzy
+msgid "Celtic"
+msgstr "تقليدي"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:183
+#: ../libempathy-gtk/totem-subtitle-encoding.c:185
+#: ../libempathy-gtk/totem-subtitle-encoding.c:187
+#: ../libempathy-gtk/totem-subtitle-encoding.c:189
+msgid "Central European"
+msgstr ""
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:192
+#: ../libempathy-gtk/totem-subtitle-encoding.c:194
+#: ../libempathy-gtk/totem-subtitle-encoding.c:196
+#: ../libempathy-gtk/totem-subtitle-encoding.c:198
+msgid "Chinese Simplified"
+msgstr ""
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:201
+#: ../libempathy-gtk/totem-subtitle-encoding.c:203
+#: ../libempathy-gtk/totem-subtitle-encoding.c:205
+msgid "Chinese Traditional"
+msgstr ""
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:208
+#, fuzzy
+msgid "Croatian"
+msgstr "محادثة"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:211
+#: ../libempathy-gtk/totem-subtitle-encoding.c:213
+#: ../libempathy-gtk/totem-subtitle-encoding.c:215
+#: ../libempathy-gtk/totem-subtitle-encoding.c:217
+#: ../libempathy-gtk/totem-subtitle-encoding.c:219
+#: ../libempathy-gtk/totem-subtitle-encoding.c:221
+msgid "Cyrillic"
+msgstr ""
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:224
+msgid "Cyrillic/Russian"
+msgstr ""
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:227
+#: ../libempathy-gtk/totem-subtitle-encoding.c:229
+msgid "Cyrillic/Ukrainian"
+msgstr ""
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:232
+msgid "Georgian"
+msgstr ""
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:235
+#: ../libempathy-gtk/totem-subtitle-encoding.c:237
+#: ../libempathy-gtk/totem-subtitle-encoding.c:239
+msgid "Greek"
+msgstr ""
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:242
+msgid "Gujarati"
+msgstr ""
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:245
+msgid "Gurmukhi"
+msgstr ""
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:248
+#: ../libempathy-gtk/totem-subtitle-encoding.c:250
+#: ../libempathy-gtk/totem-subtitle-encoding.c:252
+#: ../libempathy-gtk/totem-subtitle-encoding.c:254
+msgid "Hebrew"
+msgstr ""
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:257
+msgid "Hebrew Visual"
+msgstr ""
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:260
+msgid "Hindi"
+msgstr ""
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:263
+msgid "Icelandic"
+msgstr ""
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:266
+#: ../libempathy-gtk/totem-subtitle-encoding.c:268
+#: ../libempathy-gtk/totem-subtitle-encoding.c:270
+msgid "Japanese"
+msgstr ""
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:273
+#: ../libempathy-gtk/totem-subtitle-encoding.c:275
+#: ../libempathy-gtk/totem-subtitle-encoding.c:277
+#: ../libempathy-gtk/totem-subtitle-encoding.c:279
+msgid "Korean"
+msgstr ""
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:282
+#, fuzzy
+msgid "Nordic"
+msgstr "كلمة"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:285
+#, fuzzy
+msgid "Persian"
+msgstr "الإصدارة:"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:288
+#: ../libempathy-gtk/totem-subtitle-encoding.c:290
+msgid "Romanian"
+msgstr ""
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:293
+msgid "South European"
+msgstr ""
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:296
+msgid "Thai"
+msgstr ""
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:299
+#: ../libempathy-gtk/totem-subtitle-encoding.c:301
+#: ../libempathy-gtk/totem-subtitle-encoding.c:303
+#: ../libempathy-gtk/totem-subtitle-encoding.c:305
+msgid "Turkish"
+msgstr ""
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:308
+#: ../libempathy-gtk/totem-subtitle-encoding.c:310
+#: ../libempathy-gtk/totem-subtitle-encoding.c:312
+#: ../libempathy-gtk/totem-subtitle-encoding.c:314
+#: ../libempathy-gtk/totem-subtitle-encoding.c:316
+msgid "Unicode"
+msgstr ""
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:319
+#: ../libempathy-gtk/totem-subtitle-encoding.c:321
+#: ../libempathy-gtk/totem-subtitle-encoding.c:323
+#: ../libempathy-gtk/totem-subtitle-encoding.c:325
+#: ../libempathy-gtk/totem-subtitle-encoding.c:327
+#, fuzzy
+msgid "Western"
+msgstr "موقع الإنترنت:"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:330
+#: ../libempathy-gtk/totem-subtitle-encoding.c:332
+#: ../libempathy-gtk/totem-subtitle-encoding.c:334
+#, fuzzy
+msgid "Vietnamese"
+msgstr "أعِد التسمية"
+
+#.
+#. * vim: sw=2 ts=8 cindent noai bs=2
+#.
+#: ../megaphone/data/GNOME_Megaphone_Applet.schemas.in.h:1
+msgid ""
+"The contact to display in the applet. Empty means no contact is displayed."
+msgstr "المراسَل الذي سيعرض في البريمج. فارغ يعني لم يتم عرض أي مراسَل. "
+
+#: ../megaphone/data/GNOME_Megaphone_Applet.schemas.in.h:2
+msgid "The contact's avatar token. Empty means contact has no avatar."
+msgstr "أمارة أفاتار المراسَل. إذا كانت فارغة فهذا يعني أن المراسَل بدون أفاتار."
+
+#: ../megaphone/data/GNOME_Megaphone_Applet.server.in.in.h:1
+msgid "Megaphone"
+msgstr "مكبّر الصوت"
+
+#: ../megaphone/data/GNOME_Megaphone_Applet.server.in.in.h:2
+#: ../megaphone/src/megaphone-applet.c:419
+msgid "Talk!"
+msgstr "تكلم!"
+
+#: ../megaphone/data/GNOME_Megaphone_Applet.xml.h:2
+msgid "_Information"
+msgstr "_معلومات"
+
+#: ../nothere/data/GNOME_NotHere_Applet.server.in.in.h:1
+msgid "Presence"
+msgstr "الوجود"
+
+#: ../nothere/data/GNOME_NotHere_Applet.server.in.in.h:2
+#: ../nothere/src/nothere-applet.c:89
+msgid "Set your own presence"
+msgstr "اضبط وجودك"
+
+#: ../src/empathy.c:205
+msgid "- Empathy Instant Messenger"
+msgstr "- مرسال أمبثي"
+
+#~ msgid "Call from %s"
+#~ msgstr "مكالمة من %s"
+
+#~ msgid "_New Message..."
+#~ msgstr "_رسالة جديدة..."
+
+#~ msgid "New message"
+#~ msgstr "رسالة جديدة"
+
+#~ msgid "Disable"
+#~ msgstr "عطّل"
+
+#~ msgid "Edit Account _Details"
+#~ msgstr "حرّر تفاصيل الحساب"
+
+#~ msgid "gtk-cancel"
+#~ msgstr "gtk-cancel"
+
+#~ msgid "gtk-ok"
+#~ msgstr "gtk-ok"
+
+#~ msgid "Instant Messenger"
+#~ msgstr "مراسل فوري"
+
+#, fuzzy
+#~ msgid "Contact List - Empathy"
+#~ msgstr "إظهار _قائمة المراسلين"
+
+#, fuzzy
+#~ msgid "<b>Account</b>"
+#~ msgstr "الحساب"
+
+#~ msgid "Jabber"
+#~ msgstr "جَابّر"
+
+#, fuzzy
+#~ msgid ""
+#~ "<small><b><span foreground=\"#555\">Example: user@jabber.org</span></b></"
+#~ "small>"
+#~ msgstr "<span size=\"smaller\">مثال: user@jabber.org</span>"
+
+#, fuzzy
+#~ msgid "Chat Room"
+#~ msgstr "نافذة المحادثة"
+
+#, fuzzy
+#~ msgid "<b>Languages</b>"
+#~ msgstr "<b>اللغات</b>"
+
+#, fuzzy
+#~ msgid "_Enable spell checking"
+#~ msgstr "إكمال التثبت من التهجئة"
+
+#, fuzzy
+#~ msgid "Clear List..."
+#~ msgstr " مسح قائمة المستندات الأخيرة؟"
+
+#, fuzzy
+#~ msgid "Are you sure you want to clear the list?"
+#~ msgstr "أمتأكد من أنك تريد مسح قائمة المواقع التي زرتها؟"
+
+#, fuzzy
+#~ msgid "Clear List"
+#~ msgstr " مسح قائمة المستندات الأخيرة؟"
+
+#~ msgid "Enter status message:"
+#~ msgstr "أدخل رسالة الحالة:"
+
+#, fuzzy
+#~ msgid "Status Message Presets"
+#~ msgstr ""
+#~ "قوبلت رسالة حالة GnuPG غير متوقعة:\n"
+#~ "\n"
+#~ "%s"
+
+#, fuzzy
+#~ msgid "_Add to status message list"
+#~ msgstr "تأليف رد إلى القائمة البريديّة للرّسالة المنتقاة"
+
+#, fuzzy
+#~ msgid "Gossip Instant Messenger"
+#~ msgstr "مقطع صوتي لرسالة فورية جديدة"
+
+#, fuzzy
+#~ msgid "Normal"
+#~ msgstr "عادي"
+
+#, fuzzy
+#~ msgid "Joining"
+#~ msgstr "إ_نضمام"
+
+#, fuzzy
+#~ msgid "Active"
+#~ msgstr "نشط"
+
+#, fuzzy
+#~ msgid "Inactive"
+#~ msgstr "غير نشط"
+
+#, fuzzy
+#~ msgid "Error"
+#~ msgstr "خطأ"
+
+#, fuzzy
+#~ msgid "Participant"
+#~ msgid_plural "Participants"
+#~ msgstr[0] "مشارك إلزامي"
+#~ msgstr[1] ""
+#~ msgstr[2] ""
+#~ msgstr[3] ""
+
+#, fuzzy
+#~ msgid "No role"
+#~ msgstr "لا دور متوفر"
+
+#, fuzzy
+#~ msgid "Owner"
+#~ msgid_plural "Owners"
+#~ msgstr[0] "المالك"
+#~ msgstr[1] ""
+#~ msgstr[2] ""
+#~ msgstr[3] ""
+
+#, fuzzy
+#~ msgid "Member"
+#~ msgid_plural "Members"
+#~ msgstr[0] "عضو"
+#~ msgstr[1] ""
+#~ msgstr[2] ""
+#~ msgstr[3] ""
+
+#, fuzzy
+#~ msgid "No affiliation"
+#~ msgstr "لا تاريخ"
+
+#, fuzzy
+#~ msgid "An unknown error occurred, check your details are correct."
+#~ msgstr "خطأ مجهول"
+
+#, fuzzy
+#~ msgid "Joining the chatroom was canceled."
+#~ msgstr "حجم نافذة المحادثة"
+
+#, fuzzy
+#~ msgid "Unavailable"
+#~ msgstr "غير متوفّر"
+
+#, fuzzy
+#~ msgid "Connection refused."
+#~ msgstr "“%s” رفض الإتصال"
+
+#, fuzzy
+#~ msgid "Server address could not be resolved."
+#~ msgstr "خادم X الموجود في إعداد جي دي ام غير موجود."
+
+#, fuzzy
+#~ msgid "Connection timed out."
+#~ msgstr "انتهت الفرصة الزمنية لتنشيط Moniker"
+
+#, fuzzy
+#~ msgid "The username you are trying is not valid."
+#~ msgstr "الملف الذي تحاول فتحه ليس عاديا."
+
+#, fuzzy
+#~ msgid "This feature is unavailable."
+#~ msgstr "هل هذا العمل مستمر؟"
+
+#, fuzzy
+#~ msgid "This feature is unauthorized."
+#~ msgstr "هل هذا العمل مستمر؟"
+
+#~ msgid "Home"
+#~ msgstr "المنزل"
+
+#, fuzzy
+#~ msgid "Couldn't send message!"
+#~ msgstr "إرسال هذه الرسالة"
+
+#, fuzzy
+#~ msgid "Connection could not be opened"
+#~ msgstr "لم يمكن فتح الفيلم."
+
+#, fuzzy
+#~ msgid "This service is unavailable or not found"
+#~ msgstr "هل هذا العمل مستمر؟"
+
+#, fuzzy
+#~ msgid "Stop"
+#~ msgstr "توقّف"
+
+#, fuzzy
+#~ msgid "Disconnect"
+#~ msgstr "_قطع الاتصال"
+
+#~ msgid "Connect"
+#~ msgstr "إتَّصال"
+
+#, fuzzy
+#~ msgid "Successfully registered your new account settings."
+#~ msgstr "فشل تسجيل الحساب"
+
+#, fuzzy
+#~ msgid "Failed to register your new account settings."
+#~ msgstr "فشل تسجيل الحساب"
+
+#, fuzzy
+#~ msgid "Successfully changed your account password."
+#~ msgstr "فشل تسجيل الحساب"
+
+#, fuzzy
+#~ msgid "Failed to change your account password."
+#~ msgstr "الرجاء إدخال كلمة السِّر:"
+
+#, fuzzy
+#~ msgid ""
+#~ "Please enter a new password for this account:\n"
+#~ "%s"
+#~ msgstr "أكتب إسما جديدا للشعار المعروض:"
+
+#, fuzzy
+#~ msgid "Information requested, please wait..."
+#~ msgstr "جاري تدريب داشر·-·الرجاء الإنتظار"
+
+#, fuzzy
+#~ msgid "To summarize:"
+#~ msgstr "مسجل ل %s"
+
+#, fuzzy
+#~ msgid "%d subscription request"
+#~ msgid_plural "%d subscription requests"
+#~ msgstr[0] "طلب غير صحيح"
+#~ msgstr[1] ""
+
+#, fuzzy
+#~ msgid "%d file transfer request"
+#~ msgid_plural "%d file transfer requests"
+#~ msgstr[0] "طلب تحديث إجتماع"
+#~ msgstr[1] ""
+
+#, fuzzy
+#~ msgid "%d server message"
+#~ msgid_plural "%d server messages"
+#~ msgstr[0] "رسالة النّادل:"
+#~ msgstr[1] ""
+
+#, fuzzy
+#~ msgid "%d error"
+#~ msgid_plural "%d errors"
+#~ msgstr[0] "خطأ"
+#~ msgstr[1] ""
+
+#, fuzzy
+#~ msgid "Your invitation has been declined"
+#~ msgstr "تمّ تغيير كلمة السر."
+
+#, fuzzy
+#~ msgid "Accept"
+#~ msgstr "اقبل"
+
+#, fuzzy
+#~ msgid "Decline"
+#~ msgstr "رفض"
+
+#, fuzzy
+#~ msgid "Do you want to remove this contact from your roster?"
+#~ msgstr ""
+#~ "هل تريد إزالة المراسَل\n"
+#~ "%s\n"
+#~ "من قائمة مراسَليك؟"
+
+#, fuzzy
+#~ msgid ""
+#~ "Please enter a new name for the group:\n"
+#~ "%s"
+#~ msgstr "أكتب إسما جديدا للشعار المعروض:"
+
+#~ msgid "Unsorted"
+#~ msgstr "غير مصنّف"
+
+#, fuzzy
+#~ msgid "Unknown error occurred during file transfer."
+#~ msgstr "خطأ مجهول"
+
+#, fuzzy
+#~ msgid "%s would like to send you a file."
+#~ msgstr "هل تريد تحميل ملفات modmap ؟"
+
+#, fuzzy
+#~ msgid "Someone would like to send you a file."
+#~ msgstr "هل تريد تحميل ملفات modmap ؟"
+
+#, fuzzy
+#~ msgid "Select a file"
+#~ msgstr "إنتقاء ملف"
+
+#, fuzzy
+#~ msgid "Connecting..."
+#~ msgstr "إتَّصال"
+
+#, fuzzy
+#~ msgid "Retry connection"
+#~ msgstr "إتَّصال"
+
+#, fuzzy
+#~ msgid "%s has set the topic: %s"
+#~ msgstr "انشاء موضوع جديد"
+
+#, fuzzy
+#~ msgid "Conversation With"
+#~ msgstr "الفتح بـاستخدام"
+
+#~ msgid "List the available accounts"
+#~ msgstr "سرد الحسابات المتوفرة"
+
+#~ msgid "ACCOUNT-NAME"
+#~ msgstr "إسم-الحساب"
+
+#, fuzzy
+#~ msgid "No accounts available."
+#~ msgstr "لا وجود لوصف."
+
+#~ msgid "Available accounts:"
+#~ msgstr "الحسابات المتوفرة:"
+
+#~ msgid "[default]"
+#~ msgstr "[الإفتراض]"
+
+#~ msgid "There is no account with the name '%s'."
+#~ msgstr "لا حساب بإسم '%s'."
+
+#, fuzzy
+#~ msgid "Create"
+#~ msgstr "التاريخ"
+
+#, fuzzy
+#~ msgid "Browsing for conference rooms, please wait..."
+#~ msgstr "جاري تدريب داشر·-·الرجاء الإنتظار"
+
+#, fuzzy
+#~ msgid "Default"
+#~ msgstr "الافتراضي"
+
+#, fuzzy
+#~ msgid "Chat!"
+#~ msgstr "نافذة المحادثة"
+
+#, fuzzy
+#~ msgid "%s wants to be added to your contact list."
+#~ msgstr "سيضاف %s إلى قائمة مراسليك."
+
+#, fuzzy
+#~ msgid "Someone wants to be added to your contact list."
+#~ msgstr "سيضاف %s إلى قائمة مراسليك."
+
+#, fuzzy
+#~ msgid "Show"
+#~ msgstr "عرض"
+
+#, fuzzy
+#~ msgid "Contact has been removed"
+#~ msgstr "تمّ تغيير كلمة السر."
+
+#, fuzzy
+#~ msgid "Subject: %s"
+#~ msgstr "<b>الموضوع:</b>"
+
+#, fuzzy
+#~ msgid "New subscription request from %s"
+#~ msgstr "إنشاء طلب إجتماع جديد"
+
+#, fuzzy
+#~ msgid "Do you want to add this person to your contact list?"
+#~ msgstr ""
+#~ "هل تريد إزالة المراسَل\n"
+#~ "%s\n"
+#~ "من قائمة مراسَليك؟"
+
+#, fuzzy
+#~ msgid "Do you want to add %s to your contact list?"
+#~ msgstr ""
+#~ "هل تريد إزالة المراسَل\n"
+#~ "%s\n"
+#~ "من قائمة مراسَليك؟"
+
+#, fuzzy
+#~ msgid "Please enter your %s account password"
+#~ msgstr "الرجاء إدخال كلمة سر NNTP لـ %s@%s"
+
+#, fuzzy
+#~ msgid "Logging in to account '%s'"
+#~ msgstr "تم الاتصال مع %s باستخدام %s"
+
+#~ msgid "Remember Password?"
+#~ msgstr "أتذكَّر كلمة السِّر؟"
+
+#, fuzzy
+#~ msgid "Do not show this again"
+#~ msgstr "لا تظهر هذا الحوار مجدداً"
+
+#, fuzzy
+#~ msgid "Could not display the help contents."
+#~ msgstr "تعذّر عرض المساعدة لتوتم"
+
+#, fuzzy
+#~ msgid "Try again later."
+#~ msgstr "رجاء حاول مرة أخرى."
+
+#, fuzzy
+#~ msgid "Change"
+#~ msgstr "دردشة"
+
+#, fuzzy
+#~ msgid "Contact goes offline"
+#~ msgstr "خطأ: مستخدم غير متصل"
+
+#, fuzzy
+#~ msgid "Contact goes online"
+#~ msgstr "عنوان البريد الالكتروني للموصول"
+
+#, fuzzy
+#~ msgid "Do you want to accept this file?"
+#~ msgstr "هل تريد الحفاظ على هذه الاستبانة؟"
+
+#, fuzzy
+#~ msgid "File Transfer Request"
+#~ msgstr "طلب تحديث إجتماع"
+
+#, fuzzy
+#~ msgid "File name:"
+#~ msgstr "إسم الملف:"
+
+#, fuzzy
+#~ msgid "File size:"
+#~ msgstr "حجم الملف:"
+
+#, fuzzy
+#~ msgid "Not supported yet"
+#~ msgstr "البروتوكول غير مدعوم"
+
+#~ msgid "_Accept"
+#~ msgstr "م_وافقة"
+
+#~ msgid "_Deny"
+#~ msgstr "_رفض"
+
+#, fuzzy
+#~ msgid "-"
+#~ msgstr "-"
+
+#, fuzzy
+#~ msgid "<b>About</b>"
+#~ msgstr "_حول"
+
+#, fuzzy
+#~ msgid "<b>Personal Details</b>"
+#~ msgstr "اظهار التفاصيل"
+
+#, fuzzy
+#~ msgid "<b>Subscription</b>"
+#~ msgstr "<b>الخيارات</b>"
+
+#, fuzzy
+#~ msgid "<span size=\"smaller\">Example: Mikael or user@server.org</span>"
+#~ msgstr "<span size=\"smaller\">مثال: user@jabber.org</span>"
+
+#, fuzzy
+#~ msgid "Accou_nt:"
+#~ msgstr "ويندوزNT"
+
+#, fuzzy
+#~ msgid "Add Contact"
+#~ msgstr "إ_ضافة مراسَل..."
+
+#, fuzzy
+#~ msgid "Ch_at"
+#~ msgstr "اليوم عند %-I:%M %p"
+
+#, fuzzy
+#~ msgid "Con_tact:"
+#~ msgstr "إ_عداد"
+
+#, fuzzy
+#~ msgid "Connect on S_tartup"
+#~ msgstr "على هذا الحاسوب"
+
+#~ msgid "Country:"
+#~ msgstr "البلد:"
+
+#, fuzzy
+#~ msgid "Edit Contact"
+#~ msgstr "تحرير المعارف %s"
+
+#~ msgid "Edit Groups"
+#~ msgstr "تحرير المجموعات"
+
+#, fuzzy
+#~ msgid "ID:"
+#~ msgstr "الهوية"
+
+#~ msgid "Name:"
+#~ msgstr "الإسم:"
+
+#, fuzzy
+#~ msgid "Personal Details"
+#~ msgstr "اظهار التفاصيل"
+
+#, fuzzy
+#~ msgid "R_egister"
+#~ msgstr "جاري تسجيل الحساب"
+
+#, fuzzy
+#~ msgid "This is the name that will be used on your roster for this contact"
+#~ msgstr "ّما اللَّقب الذي تريد إطلاقه على هذا المراسل؟"
+
+#, fuzzy
+#~ msgid "Use system pro_xy"
+#~ msgstr "_لا شيء (يستخدم تيمة النظام)"
+
+#, fuzzy
+#~ msgid "Which account do you want to use?"
+#~ msgstr "ما إسم المستخدم الذي تريد استعماله؟"
+
+#, fuzzy
+#~ msgid "You are not subscribed to this contact."
+#~ msgstr "لا يمكنك فتح هذا الملف."
+
+#, fuzzy
+#~ msgid "_Connect"
+#~ msgstr "اتّ_صل"
+
+#, fuzzy
+#~ msgid "_Description:"
+#~ msgstr "الوصف:"
+
+#~ msgid "_Disconnect"
+#~ msgstr "_قطع الإتصال"
+
+# To Arabeyes.org translators, from Abdulaziz (08/04/2004):
+# We have no standard word for User ID (or I couldnt find one).
+# This word should not be translated as two seperate
+# words because the English equivalents are never
+# used seperately in this context.
+# I suggest permanently settling on one of the following
+# and adding it to the Qamoose:
+# هوية، رمز، بطاقة، مفتاح، شارة
+# I will leave this one up to the superiors
+#, fuzzy
+#~ msgid ""
+#~ "_Enter the name or contact ID of the person you want to chat to below:"
+#~ msgstr "أدخل هوية المستخدم الذي تَود أن ترسل له رسالة دردشة."
+
+#, fuzzy
+#~ msgid "_Group:"
+#~ msgstr "الم_جموعة:"
+
+#, fuzzy
+#~ msgid "_Nick Name:"
+#~ msgstr "الك_نية:"
+
+#, fuzzy
+#~ msgid "_Password:"
+#~ msgstr "كلمة الس_ر..."
+
+#, fuzzy
+#~ msgid "_Retrieve"
+#~ msgstr "إ_ستلم المكالمة"
+
+#, fuzzy
+#~ msgid "_Subscribe"
+#~ msgstr "_إشتراك"
+
+#, fuzzy
+#~ msgid "_Web site:"
+#~ msgstr "موقع الإنترنت:"
+
+#~ msgid " "
+#~ msgstr " "
+
+#~ msgid "Gossip"
+#~ msgstr "كُسِّب"
+
+#, fuzzy
+#~ msgid "Group:"
+#~ msgstr "المجموعة:"
+
+#, fuzzy
+#~ msgid "Web Site:"
+#~ msgstr "موقع الإنترنت"
+
+#, fuzzy
+#~ msgid "Add to _favourites"
+#~ msgstr "مُرفق للإضافة."
+
+#, fuzzy
+#~ msgid "Na_me:"
+#~ msgstr "إدراج إس_م المستخدم"
+
+#, fuzzy
+#~ msgid "New Chat Room"
+#~ msgstr "حجم نافذة المحادثة"
+
+#, fuzzy
+#~ msgid "_Group Chat"
+#~ msgstr "نافذة المحادثة"
+
+#~ msgid "Preset status messages."
+#~ msgstr "رسائل حالة مضبوطة مسبّقا."
+
+#~ msgid "%s will be added to your contact list."
+#~ msgstr "سيضاف %s إلى قائمة مراسليك."
+
+#, fuzzy
+#~ msgid "%s ID of new contact:"
+#~ msgstr "هوية جَابّ_ر للمراسَل الجديد:"
+
+#, fuzzy
+#~ msgid "Show accounts and pending connections"
+#~ msgstr "لم يمكن الإتِّصال"
+
+#, fuzzy
+#~ msgid ""
+#~ "Please enter your invitation message to:\n"
+#~ "%s"
+#~ msgstr "الرجاء إدخال كلمة السِّر:"
+
+#, fuzzy
+#~ msgid "/Contact Infor_mation"
+#~ msgstr "/_معلومات المراسَل"
+
+#, fuzzy
+#~ msgid "/Re_name Contact"
+#~ msgstr "/إعادة تسمية الم_راسَل"
+
+#, fuzzy
+#~ msgid "/_Edit Groups"
+#~ msgstr "/_تحرير المجموعات"
+
+#, fuzzy
+#~ msgid "/_View Previous Conversations"
+#~ msgstr "ّم_حادثَة"
+
+#~ msgid ""
+#~ "Please enter a new nickname for the contact\n"
+#~ "%s"
+#~ msgstr ""
+#~ "الرجاء إدخال كنية جديدة للمراسَل\n"
+#~ "%s"
+
+#~ msgid "Edit groups for %s"
+#~ msgstr "تحرير المجموعات لـ %s"
+
+#~ msgid "Registering account"
+#~ msgstr "جاري تسجيل الحساب"
+
+#, fuzzy
+#~ msgid "<b>Information requested, please wait...</b>"
+#~ msgstr "<b>المعلومات قيد الطلب، الرجاء الإنتظار...</b>"
+
+#, fuzzy
+#~ msgid "<span size=\"smaller\">Example:</span>"
+#~ msgstr "<span size=\"smaller\">مثال: user@jabber.org</span>"
+
+#, fuzzy
+#~ msgid "Do you already have an account set up on a server?"
+#~ msgstr "هل لديك حساب عند خادم \"جَابّر\"؟"
+
+#, fuzzy
+#~ msgid "Enter the port used in the connection for this account"
+#~ msgstr ""
+#~ "الرجاء إدخال كنية جديدة للمراسَل\n"
+#~ "%s"
+
+#, fuzzy
+#~ msgid "Enter the server used in the connection for this account"
+#~ msgstr ""
+#~ "الرجاء إدخال كنية جديدة للمراسَل\n"
+#~ "%s"
+
+#, fuzzy
+#~ msgid "Finished"
+#~ msgstr "تمَّ الضبط"
+
+#~ msgid ""
+#~ "Gossip is a modern client for the Jabber Instant Messaging system.\n"
+#~ "\n"
+#~ "This assistant will help you configure Gossip and connect you to your "
+#~ "favorite Jabber server.\n"
+#~ "\n"
+#~ "To get started, just click \"Forward\"."
+#~ msgstr ""
+#~ "كُسِّب عميلٌ حَديث لنظام المراسلة الفورية \"جَابّر\".\n"
+#~ "\n"
+#~ "سيساعدك هذا المُعاون على تهيئَة كُسِّب و الإتِّصال بخادم \"جَابّر\" المفضَّل لديك.\n"
+#~ "\n"
+#~ "للبدء، أنقر \"إلى الأمام\"."
+
+#~ msgid ""
+#~ "In order to subscribe to presence notifications from the user, a request "
+#~ "will be sent. Until this request is approved, the user will always be "
+#~ "shown as \"Offline\" in your contact list."
+#~ msgstr ""
+#~ "سيتم·إرسال·طلب للإشتراك بتبليغات وجود المستخدم. سيظهر المستخدم دائماً على "
+#~ "أنَّه \"غير متَّصل\" في قائمة مراسليك. إلى·أن·تتمَّ·الموافقة·على·هذا·الطَّلب."
+
+#~ msgid "In which group do you want to place this contact?"
+#~ msgstr "في أيّ مجموعة تريد وضع هذا المراسَل؟"
+
+#, fuzzy
+#~ msgid "Registering Account"
+#~ msgstr "جاري تسجيل الحساب"
+
+#, fuzzy
+#~ msgid "Resource:"
+#~ msgstr "الم_ورد:"
+
+#~ msgid "Welcome to Gossip"
+#~ msgstr "أهلاً بكم في كُسِّب"
+
+#~ msgid "What instant messaging system does the contact use?"
+#~ msgstr "ما نظام المراسلة الفورية الذي يستعمله المراسل؟"
+
+#~ msgid "What is your name?"
+#~ msgstr "ما إسمك؟"
+
+#, fuzzy
+#~ msgid "What password do you want to use?"
+#~ msgstr "أي خادم تريد أن تستعمل؟"
+
+#~ msgid "What username do you use?"
+#~ msgstr "ما إسم المستخدم الذي تستعمله؟"
+
+#~ msgid "What username do you want to use?"
+#~ msgstr "ما إسم المستخدم الذي تريد استعماله؟"
+
+#, fuzzy
+#~ msgid "Which account do you want to add this contact to?"
+#~ msgstr "في أيّ مجموعة تريد وضع هذا المراسَل؟"
+
+#, fuzzy
+#~ msgid ""
+#~ "You can change your account settings later by selecting the Edit-"
+#~ ">Accounts menu item."
+#~ msgstr ""
+#~ "كُسِّب الآن مهيَّئ بشكلٍ مناسبٍ لنظامك.\n"
+#~ "يمكنك تغيير تعيينات حسابك لاحقا، بإختيار العنصر>إتَّصل... من قائِمة دردشة-."
+
+#, fuzzy
+#~ msgid "Your Account"
+#~ msgstr "حساب جَابّر"
+
+#~ msgid "Your Identity"
+#~ msgstr "هويَّتك"
+
+#~ msgid "_Hide Contact List"
+#~ msgstr "إ_خفاء قائمة المراسلين"
+
+#, fuzzy
+#~ msgid "_No"
+#~ msgstr "لا"
+
+#~ msgid "_Search..."
+#~ msgstr "_بحث..."
+
+#, fuzzy
+#~ msgid "_Yes"
+#~ msgstr "نعم"
diff --git a/gnome-2-22/po/az.po b/gnome-2-22/po/az.po
new file mode 100644
index 000000000..d722dd0b6
--- /dev/null
+++ b/gnome-2-22/po/az.po
@@ -0,0 +1,1136 @@
+# gossip.HEAD.po faylının Azərbaycan Dilinə tərcüməsi
+# gossip.HEAD.po faylının Azərbaycan dilinə tərcüməsi
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# Mətin Əmirov <metin@karegen.com>, 2003
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gossip.HEAD\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-05-15 23:46+0200\n"
+"PO-Revision-Date: 2003-10-19 20:34+0300\n"
+"Last-Translator: Mətin Əmirov <metin@karegen.com>\n"
+"Language-Team: Azərbaycan Dili <gnome@azətt.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.0.1\n"
+
+#: ../data/empathy.desktop.in.h:1
+#, fuzzy
+msgid "Empathy Instant Messenger"
+msgstr "İsmarış:"
+
+#: ../data/empathy.desktop.in.h:2
+msgid "Instant Messenger"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:1
+msgid "Always open a separate chat window for new chats."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:2
+msgid "Chat window theme"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:3
+msgid ""
+"Comma separated list of spell checker languages to use (e.g. en, fr, nl)."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:4
+msgid "Compact contact list"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:5
+msgid "Contact list sort criterium"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:6
+msgid "Default directory to select an avatar image from"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:7
+msgid "Enable popup when contact is available"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:8
+msgid "Enable sound when away"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:9
+msgid "Enable sound when busy"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:10
+msgid "Enable spell checker"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:11
+msgid "Hide main window"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:12
+msgid "Hide the main window."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:13
+msgid "Open new chats in separate windows"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:14
+msgid "Show avatars"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:15
+msgid "Show hint about closing the main window"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:16
+msgid "Show offline contacts"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:17
+msgid "Spell checking languages"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:18
+msgid "The last directory that an avatar image was chosen from."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:19
+msgid "The theme that is used to display the conversation in chat windows."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:20
+msgid "Use graphical smileys"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:21
+msgid "Use notification sounds"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:22
+msgid "Use theme for chat rooms"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:23
+msgid ""
+"Whether or not to check words typed against the languages you want to check "
+"with."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:24
+msgid ""
+"Whether or not to convert smileys into graphical images in conversations."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:25
+msgid "Whether or not to play a sound when messages arrive."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:26
+msgid "Whether or not to play sounds when away."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:27
+msgid "Whether or not to play sounds when busy."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:28
+msgid "Whether or not to show a popup when a contact becomes available."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:29
+msgid ""
+"Whether or not to show avatars for contacts in the contact list and chat "
+"windows."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:30
+msgid "Whether or not to show contacts that are offline in the contact list."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:31
+msgid ""
+"Whether or not to show the message dialog about closing the main window with "
+"the 'x' button in the title bar."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:32
+msgid "Whether to show the contact list in compact mode or not."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:33
+msgid "Whether to use the theme for chat rooms or not."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:34
+msgid ""
+"Which criterium to use when sorting the contact list. Default is to use sort "
+"by the contact's name with the value \"name\". A value of \"state\" will "
+"sort the contact list by state."
+msgstr ""
+
+#: ../libempathy/gossip-contact.c:654 ../libempathy/gossip-presence.c:184
+#: ../libempathy/gossip-presence.c:283
+msgid "Offline"
+msgstr ""
+
+#: ../libempathy/gossip-presence.c:274
+msgid "Available"
+msgstr ""
+
+#: ../libempathy/gossip-presence.c:276
+msgid "Busy"
+msgstr ""
+
+#: ../libempathy/gossip-presence.c:279
+msgid "Away"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.c:254
+msgid "Show and edit accounts"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.c:456
+msgid "Group"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.c:477
+#, fuzzy
+msgid "Contact"
+msgstr "Bağlan"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:1
+msgid "Contact List - Empathy"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:2
+#, fuzzy
+msgid "Context"
+msgstr "Bağlan"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:3
+msgid "Join _Favorites"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:4
+#: ../libempathy-gtk/gossip-chat.glade.h:10
+msgid "Join _New..."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:5
+msgid "Manage Favorites..."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:6
+msgid "Show _Offline Contacts"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:7
+#, fuzzy
+msgid "_About"
+msgstr "_Gedişatlar"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:8
+#, fuzzy
+msgid "_Accounts"
+msgstr "_Gedişatlar"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:9
+#: ../libempathy-gtk/gossip-chat.glade.h:15
+msgid "_Add Contact..."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:10
+#: ../libempathy-gtk/gossip-contact-list.c:298
+msgid "_Chat"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:11
+#, fuzzy
+msgid "_Contents"
+msgstr "Bağlan"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:12
+#: ../libempathy-gtk/gossip-chat.glade.h:21
+#: ../libempathy-gtk/gossip-contact-list.c:310
+#, fuzzy
+msgid "_Edit"
+msgstr "Çı_x"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:13
+msgid "_Help"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:14
+#: ../libempathy-gtk/empathy-status-icon.glade.h:2
+msgid "_New Message..."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:15
+msgid "_Personal Information"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:16
+#, fuzzy
+msgid "_Preferences"
+msgstr "Qurğular"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:17
+#: ../libempathy-gtk/empathy-status-icon.glade.h:3
+msgid "_Quit"
+msgstr "Çı_x"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:18
+#: ../libempathy-gtk/gossip-chat.glade.h:25
+msgid "_Room"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:19
+#: ../libempathy-gtk/gossip-chat.glade.h:28
+#: ../libempathy-gtk/gossip-contact-list.c:326
+msgid "_View Previous Conversations"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:1
+#, fuzzy
+msgid "Status"
+msgstr "<b>Vəziyyət:</b>"
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:4
+msgid "_Show Contact List"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-about-dialog.c:63
+msgid ""
+"Empathy is free software; you can redistribute it and/or modify it under the "
+"terms of the GNU General Public License as published by the Free Software "
+"Foundation; either version 2 of the License, or (at your option) any later "
+"version."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-about-dialog.c:67
+msgid ""
+"Empathy is distributed in the hope that it will be useful, but WITHOUT ANY "
+"WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS "
+"FOR A PARTICULAR PURPOSE. See the GNU General Public License for more "
+"details."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-about-dialog.c:71
+msgid ""
+"You should have received a copy of the GNU General Public License along with "
+"Empathy; if not, write to the Free Software Foundation, Inc., 51 Franklin "
+"Street, Fifth Floor, Boston, MA 02110-130159 USA"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-about-dialog.c:99
+msgid "An Instant Messaging client for GNOME"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-about-dialog.c:105
+#, fuzzy
+msgid "translator-credits"
+msgstr ""
+"Vasif İsmailoğlu\n"
+"Mətin Əmirov"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:224
+msgid "Disable"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:227
+msgid "Enable"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:261
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:3
+#, fuzzy
+msgid "<b>No Account Selected</b>"
+msgstr "_Gedişatlar"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:263
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to start configuring.\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want "
+"to configure in the list on the left."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:272
+#, fuzzy
+msgid "<b>No Accounts Configured</b>"
+msgstr "_Gedişatlar"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:274
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to start configuring."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:362
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:6
+#, fuzzy
+msgid "Accounts"
+msgstr "_Gedişatlar"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:857
+#, c-format
+msgid ""
+"You are about to remove your %s account!\n"
+"Are you sure you want to proceed?"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:863
+msgid ""
+"Any associated conversations and chat rooms will NOT be removed if you "
+"decide to proceed.\n"
+"\n"
+"Should you decide to add the account back at a later time, they will still "
+"be available."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:1
+#, fuzzy
+msgid "<b>Account</b>"
+msgstr "_Gedişatlar"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:2
+#, fuzzy
+msgid "<b>New Account</b>"
+msgstr "_Gedişatlar"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:4
+#, fuzzy
+msgid "<b>Settings</b>"
+msgstr "<b>Ad:</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:5
+msgid "A unique name for this account to identify it personally to you."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:7
+msgid "Cr_eate"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:8
+msgid "Imendio "
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:9
+msgid "Jabber"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:10
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to started configuring.\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want "
+"to configure in the list on the left."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:13
+#, fuzzy
+msgid "_Name:"
+msgstr "Ad:"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:14
+msgid "_Type:"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-account-widget-generic.c:144
+#: ../libempathy-gtk/gossip-account-widget-generic.c:186
+#, c-format
+msgid "%s:"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:1
+msgid ""
+"<small><b><span foreground=\"#555\">Example: user@jabber.org</span></b></"
+"small>"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:2
+msgid "Forget password and clear the entry."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:3
+msgid "Login I_D:"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:4
+#, fuzzy
+msgid "Pass_word:"
+msgstr "_Şifrə:"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:5
+msgid "Reso_urce:"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:6
+msgid "Use encryption (SS_L)"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:7
+#, fuzzy
+msgid "_Port:"
+msgstr "Üstünlük:"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:8
+msgid "_Server:"
+msgstr "_Verici:"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:9
+msgid "jabber account settings"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.c:314
+#, fuzzy
+msgid "Disconnected"
+msgstr "_Ayır"
+
+#: ../libempathy-gtk/gossip-chat.c:858
+msgid "Insert Smiley"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.c:906
+msgid "_Check Word Spelling..."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.c:1244
+#, fuzzy
+msgid "Connected"
+msgstr "Bağlan"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:1
+msgid "C_lear"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:2
+msgid "Change _Topic..."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:3
+msgid "Chat"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:4
+msgid "Contact Infor_mation"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:5
+msgid "Cu_t"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:6
+msgid "In_vite..."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:7
+msgid "Insert _Smiley"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:8
+#, fuzzy
+msgid "Invitation _message:"
+msgstr "İsmarış:"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:9
+msgid "Invite"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:11
+msgid "Move Tab _Left"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:12
+msgid "Move Tab _Right"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:13
+msgid "Select who would you like to invite:"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:14
+msgid "You have been invited to join a chat conference."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:16
+msgid "_Add To Favorites"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:17
+msgid "_Close"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:18
+msgid "_Conversation"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:19
+msgid "_Copy"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:20
+msgid "_Detach Tab"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:22
+msgid "_Next Tab"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:23
+msgid "_Paste"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:24
+msgid "_Previous Tab"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:26
+msgid "_Show Contacts"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:27
+msgid "_Tabs"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat-view.c:544
+msgid "_Copy Link Address"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat-view.c:552
+msgid "_Open Link"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat-view.c:889
+msgid "%A %d %B %Y"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat-window.c:685
+#: ../libempathy-gtk/gossip-chat-window.c:715
+#, fuzzy
+msgid "New Message"
+msgid_plural "New Messages"
+msgstr[0] "İsmarış:"
+msgstr[1] "İsmarış:"
+
+#: ../libempathy-gtk/gossip-chat-window.c:691
+msgid "Chat Room"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat-window.c:696
+#: ../libempathy-gtk/gossip-chat-window.c:719
+#, fuzzy, c-format
+msgid "Conversation"
+msgid_plural "Conversations (%d)"
+msgstr[0] "Bağlan"
+msgstr[1] "Bağlan"
+
+#: ../libempathy-gtk/gossip-chat-window.c:1295
+msgid "Typing a message."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-contact-list.c:290
+#, fuzzy
+msgid "_Contact"
+msgstr "Bağlan"
+
+#: ../libempathy-gtk/gossip-contact-list.c:294
+msgid "_Group"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-contact-list.c:298
+msgid "Chat with contact"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-contact-list.c:302
+#, fuzzy
+msgid "Infor_mation"
+msgstr "Bağlan"
+
+#: ../libempathy-gtk/gossip-contact-list.c:302
+msgid "View contact information"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-contact-list.c:306
+#, fuzzy
+msgid "Re_name"
+msgstr "Ad:"
+
+#: ../libempathy-gtk/gossip-contact-list.c:306
+msgid "Rename"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-contact-list.c:310
+msgid "Edit the groups and name for this contact"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-contact-list.c:314
+msgid "_Remove"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-contact-list.c:314
+msgid "Remove contact"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-contact-list.c:318
+msgid "_Invite to Chat Room"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-contact-list.c:318
+msgid "Invite to a currently open chat room"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-contact-list.c:322
+msgid "_Send File..."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-contact-list.c:322
+#, fuzzy
+msgid "Send a file"
+msgstr "İsmarış:"
+
+#: ../libempathy-gtk/gossip-contact-list.c:326
+msgid "View previous conversations with this contact"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.c:250
+msgid "Language"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:1
+#, fuzzy
+msgid "<b>Appearance</b>"
+msgstr "<b>Ad:</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:2
+#, fuzzy
+msgid "<b>Audio</b>"
+msgstr "<b>Ad:</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:3
+#, fuzzy
+msgid "<b>Behaviour</b>"
+msgstr "<b>Ad:</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:4
+#, fuzzy
+msgid "<b>Contact List</b>"
+msgstr "<b>Ad:</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:5
+#, fuzzy
+msgid "<b>Languages</b>"
+msgstr "<b>Ad:</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:6
+#, fuzzy
+msgid "<b>Options</b>"
+msgstr "Bağlan"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:7
+#, fuzzy
+msgid "<b>Visual</b>"
+msgstr "<b>Ad:</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:8
+msgid ""
+"<small>The list of languages reflects only the languages for which you have "
+"a dictionary installed.</small>"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:9
+msgid "Avatars are user chosen images shown in the contact list"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:10
+msgid "Chat Th_eme:"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:11
+msgid "Display notifications when contacts come _online"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:12
+msgid "Enable sounds when _away"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:13
+msgid "Enable sounds when _busy"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:14
+msgid "General"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:15
+msgid "Notifications"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:16
+#, fuzzy
+msgid "Preferences"
+msgstr "Qurğular"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:17
+msgid "Show _avatars"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:18
+msgid "Show _smileys as images"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:19
+msgid "Show co_mpact contact list"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:20
+msgid "Sort by _name"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:21
+msgid "Sort by s_tate"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:22
+msgid "Spell Checking"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:23
+msgid "Themes"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:24
+msgid "_Enable spell checking"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:25
+msgid "_Open new chats in separate windows"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:26
+msgid "_Play sound when messages arrive"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:27
+msgid "_Use for chat rooms"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:702
+msgid "Custom message..."
+msgstr ""
+
+#. Clear list
+#: ../libempathy-gtk/gossip-presence-chooser.c:724
+msgid "Clear List..."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:803
+msgid "Are you sure you want to clear the list?"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:807
+msgid ""
+"This will remove any custom messages you have added to the list of preset "
+"status messages."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:812
+msgid "Clear List"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-presence-chooser.glade.h:1
+#, fuzzy
+msgid "Enter status message:"
+msgstr "İsmarış:"
+
+#: ../libempathy-gtk/gossip-presence-chooser.glade.h:2
+#, fuzzy
+msgid "Status Message Presets"
+msgstr "İsmarış:"
+
+#: ../libempathy-gtk/gossip-presence-chooser.glade.h:3
+#, fuzzy
+msgid "_Add to status message list"
+msgstr "İsmarış:"
+
+#: ../libempathy-gtk/gossip-private-chat.c:198
+#, c-format
+msgid "%s went offline"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-private-chat.c:212
+#, c-format
+msgid "%s has come online"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-theme-manager.c:87
+msgid "Classic"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-theme-manager.c:88
+msgid "Simple"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-theme-manager.c:89
+msgid "Clean"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-theme-manager.c:90
+msgid "Blue"
+msgstr ""
+
+#: ../src/empathy-main.c:145
+msgid "Don't connect on startup"
+msgstr ""
+
+#: ../src/empathy-main.c:155
+#, fuzzy
+msgid "- Empathy Instant Messenger"
+msgstr "İsmarış:"
+
+#, fuzzy
+#~ msgid "Active"
+#~ msgstr "_Gedişatlar"
+
+#, fuzzy
+#~ msgid "Unknown"
+#~ msgstr "Namə'lum xəta"
+
+#, fuzzy
+#~ msgid "An unknown error occurred, check your details are correct."
+#~ msgstr "Namə'lum xəta"
+
+#, fuzzy
+#~ msgid "An unknown error occurred."
+#~ msgstr "Namə'lum xəta"
+
+#, fuzzy
+#~ msgid "Connection refused."
+#~ msgstr "Bağlan"
+
+#, fuzzy
+#~ msgid "Connection timed out."
+#~ msgstr "Bağlan"
+
+#, fuzzy
+#~ msgid "new account"
+#~ msgstr "_Gedişatlar"
+
+#~ msgid "Home"
+#~ msgstr "Ev"
+
+#, fuzzy
+#~ msgid "Disconnect"
+#~ msgstr "_Ayır"
+
+#~ msgid "Connect"
+#~ msgstr "Bağlan"
+
+#, fuzzy
+#~ msgid "%d new message"
+#~ msgid_plural "%d new messages"
+#~ msgstr[0] "İsmarış:"
+#~ msgstr[1] "İsmarış:"
+
+#, fuzzy
+#~ msgid "Name"
+#~ msgstr "Ad:"
+
+#, fuzzy
+#~ msgid "Auto Connect"
+#~ msgstr "Bağlan"
+
+#, fuzzy
+#~ msgid "Information requested..."
+#~ msgstr "Bağlan"
+
+#, fuzzy
+#~ msgid "Unknown error occurred during file transfer."
+#~ msgstr "Namə'lum xəta"
+
+#, fuzzy
+#~ msgid "Connecting..."
+#~ msgstr "Bağlan"
+
+#, fuzzy
+#~ msgid "Retry connection"
+#~ msgstr "Bağlan"
+
+#~ msgid "[default]"
+#~ msgstr "[ön qurğulu]"
+
+#, fuzzy
+#~ msgid "Default"
+#~ msgstr "[ön qurğulu]"
+
+#, fuzzy
+#~ msgid "<b>Topic:</b>"
+#~ msgstr "<b>Ad:</b>"
+
+#, fuzzy
+#~ msgid "N_ame:"
+#~ msgstr "Ad:"
+
+#, fuzzy
+#~ msgid "S_erver:"
+#~ msgstr "_Verici:"
+
+#, fuzzy
+#~ msgid "<b>Groups</b>"
+#~ msgstr "<b>Ad:</b>"
+
+#, fuzzy
+#~ msgid "<b>Name</b>"
+#~ msgstr "<b>Ad:</b>"
+
+#, fuzzy
+#~ msgid "<b>Subscription</b>"
+#~ msgstr "Bağlan"
+
+#, fuzzy
+#~ msgid "Accou_nt:"
+#~ msgstr "_Gedişatlar"
+
+#, fuzzy
+#~ msgid "Con_tact:"
+#~ msgstr "Bağlan"
+
+#, fuzzy
+#~ msgid "Connect on S_tartup"
+#~ msgstr "Bağlan"
+
+#, fuzzy
+#~ msgid "Contacts"
+#~ msgstr "Bağlan"
+
+#, fuzzy
+#~ msgid "Edit Contact"
+#~ msgstr "Bağlan"
+
+#~ msgid "Email:"
+#~ msgstr "ePoçt:"
+
+#~ msgid "Name:"
+#~ msgstr "Ad:"
+
+#~ msgid "Version:"
+#~ msgstr "Buraxılış:"
+
+#, fuzzy
+#~ msgid "_Birthday:"
+#~ msgstr "_Vacibiyyət:"
+
+#, fuzzy
+#~ msgid "_Connect"
+#~ msgstr "Bağlan"
+
+#, fuzzy
+#~ msgid "_Description:"
+#~ msgstr "Buraxılış:"
+
+#~ msgid "_Disconnect"
+#~ msgstr "_Ayır"
+
+#, fuzzy
+#~ msgid "_Email:"
+#~ msgstr "ePoçt:"
+
+#, fuzzy
+#~ msgid "_For:"
+#~ msgstr "Üstünlük:"
+
+#, fuzzy
+#~ msgid "_Full Name:"
+#~ msgstr "Ad:"
+
+#, fuzzy
+#~ msgid "_Nick Name:"
+#~ msgstr "Ad:"
+
+#, fuzzy
+#~ msgid "_Password:"
+#~ msgstr "_Şifrə:"
+
+#, fuzzy
+#~ msgid "_Quit Message:"
+#~ msgstr "İsmarış:"
+
+#, fuzzy
+#~ msgid "Preset status messages"
+#~ msgstr "İsmarış:"
+
+#, fuzzy
+#~ msgid "Preset status messages."
+#~ msgstr "İsmarış:"
+
+#, fuzzy
+#~ msgid "Na_me:"
+#~ msgstr "Ad:"
+
+#~ msgid " "
+#~ msgstr " "
+
+#~ msgid "Gossip"
+#~ msgstr "Gossip"
+
+#, fuzzy
+#~ msgid "Port:"
+#~ msgstr "Üstünlük:"
+
+#, fuzzy
+#~ msgid "_No"
+#~ msgstr "Xeyir"
+
+#, fuzzy
+#~ msgid "_Yes"
+#~ msgstr "Bəli"
+
+#, fuzzy
+#~ msgid "Por_t:"
+#~ msgstr "Üstünlük:"
+
+#, fuzzy
+#~ msgid "Persian"
+#~ msgstr "Buraxılış:"
+
+#, fuzzy
+#~ msgid "Gossip - Preferences"
+#~ msgstr "Qurğular"
+
+#~ msgid "*"
+#~ msgstr "*"
+
+#~ msgid "From:"
+#~ msgstr "Mənbə:"
+
+#~ msgid "To:"
+#~ msgstr "Hədəf:"
+
+#~ msgid "C_onnect"
+#~ msgstr "_Bağlan"
+
+#~ msgid "_Add"
+#~ msgstr "Ə_lavə et"
+
+#, fuzzy
+#~ msgid "About Gossip"
+#~ msgstr "Gossip"
+
+#, fuzzy
+#~ msgid "translator_credits_old"
+#~ msgstr ""
+#~ "Vasif İsmailoğlu <linuxaz@azerimail.net>\n"
+#~ "Mətin Əmirov <metin@karegen.com>"
+
+#~ msgid "Others"
+#~ msgstr "Başqaları"
+
+#~ msgid "minutes"
+#~ msgstr "dəqiqə"
diff --git a/gnome-2-22/po/bg.po b/gnome-2-22/po/bg.po
new file mode 100644
index 000000000..9e56d75d8
--- /dev/null
+++ b/gnome-2-22/po/bg.po
@@ -0,0 +1,1406 @@
+# Bulgarian translation of empathy po-file.
+# Copyright (C) 2004, 2007 Free Software Foundation, Inc.
+# This file is distributed under the same license as the empathy package.
+# Yasen Pramatarov <yasen@lindeas.com>, 2004.
+# Alexander Shopov <ash@contact.bg>, 2007.
+#
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gossip trunk\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-11-26 08:23+0200\n"
+"PO-Revision-Date: 2007-11-26 07:45+0200\n"
+"Last-Translator: Alexander Shopov <ash@contact.bg>\n"
+"Language-Team: Bulgarian <dict@fsa-bg.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+
+#: ../data/empathy.desktop.in.in.h:1
+msgid "Empathy Instant Messenger"
+msgstr "Бързи съобщения с Empathy"
+
+#: ../data/empathy.desktop.in.in.h:2
+msgid "Send and receive instant messages"
+msgstr "Изпращане и получаване на бързи съобщения"
+
+#: ../data/empathy.schemas.in.h:1
+msgid "Always open a separate chat window for new chats."
+msgstr "Новите разговори да се отварят в отделни прозорци."
+
+#: ../data/empathy.schemas.in.h:2
+msgid "Chat window theme"
+msgstr "Графична тема за прозореца за разговори"
+
+#: ../data/empathy.schemas.in.h:3
+msgid "Checks if Salut account is created"
+msgstr "Проверка дали е създаден абонамент за Salut"
+
+#: ../data/empathy.schemas.in.h:4
+msgid ""
+"Comma separated list of spell checker languages to use (e.g. en, fr, nl)."
+msgstr ""
+"Списък от двубуквените съкращения на езиците с проверка за правопис (напр. "
+"bg, en, ru)."
+
+#: ../data/empathy.schemas.in.h:5
+msgid "Compact contact list"
+msgstr "Стегнат списък с контакти"
+
+#: ../data/empathy.schemas.in.h:6
+msgid "Contact list sort criterium"
+msgstr "Критерий за подребдата на списъка с контактите"
+
+#: ../data/empathy.schemas.in.h:7
+msgid "Default directory to select an avatar image from"
+msgstr "Стандартна папка, в която да се търсят изображения за аватари"
+
+#: ../data/empathy.schemas.in.h:8
+msgid "Enable popup when contact is available"
+msgstr "Известяване с прозорец при появата на контакт"
+
+#: ../data/empathy.schemas.in.h:9
+msgid "Enable sound when away"
+msgstr "Със звуци в състояние „_Отсъстващ“"
+
+#: ../data/empathy.schemas.in.h:10
+msgid "Enable sound when busy"
+msgstr "Със звуци в състояние „_Зает“"
+
+#: ../data/empathy.schemas.in.h:11
+msgid "Enable spell checker"
+msgstr "Да се ползва проверка на правописа"
+
+#: ../data/empathy.schemas.in.h:12
+msgid "Hide main window"
+msgstr "Скриване на основния прозорец"
+
+#: ../data/empathy.schemas.in.h:13
+msgid "Hide the main window."
+msgstr "Скирване на основния прозорец."
+
+#: ../data/empathy.schemas.in.h:14
+msgid "Open new chats in separate windows"
+msgstr "Отваряне на разговорите в отделни прозорци"
+
+#: ../data/empathy.schemas.in.h:15
+msgid "Show avatars"
+msgstr "Показване на аватари"
+
+#: ../data/empathy.schemas.in.h:16
+msgid "Show hint about closing the main window"
+msgstr "Показване на съвет за затваряне на основния прозорец"
+
+#: ../data/empathy.schemas.in.h:17
+msgid "Show offline contacts"
+msgstr "Показване на изключените контакти"
+
+#: ../data/empathy.schemas.in.h:18
+msgid "Spell checking languages"
+msgstr "Езици с проверка на правописа"
+
+#: ../data/empathy.schemas.in.h:19
+msgid "The last directory that an avatar image was chosen from."
+msgstr "Последната папка, от която е взето изображение за аватар."
+
+#: ../data/empathy.schemas.in.h:20
+msgid "The theme that is used to display the conversation in chat windows."
+msgstr "Темата, която ще се ползва за прозорците за разговори."
+
+#: ../data/empathy.schemas.in.h:21
+msgid "Use graphical smileys"
+msgstr "Изображения за емотикони"
+
+#: ../data/empathy.schemas.in.h:22
+msgid "Use notification sounds"
+msgstr "Използване на звуци за уведомяване"
+
+#: ../data/empathy.schemas.in.h:23
+msgid "Use theme for chat rooms"
+msgstr "Тема за прозорците за разговори"
+
+#: ../data/empathy.schemas.in.h:24
+msgid ""
+"Whether or not the Salut account has been created on the first empathy run."
+msgstr "Дали при първото стартиране на Empathy е създаден абонамент за Salut."
+
+#: ../data/empathy.schemas.in.h:25
+msgid ""
+"Whether or not to check words typed against the languages you want to check "
+"with."
+msgstr ""
+"Дали да се прави проверка на правописа на въведения текст спрямо избраните "
+"езици."
+
+#: ../data/empathy.schemas.in.h:26
+msgid ""
+"Whether or not to convert smileys into graphical images in conversations."
+msgstr "Дали емотиконите да се преобразуват от ASCII в картинки."
+
+#: ../data/empathy.schemas.in.h:27
+msgid "Whether or not to play a sound when messages arrive."
+msgstr "Дали пристигането на съобщения да се известява със звук."
+
+#: ../data/empathy.schemas.in.h:28
+msgid "Whether or not to play sounds when away."
+msgstr "Дали в състояние „Отсъствам“ да се ползват звуци."
+
+#: ../data/empathy.schemas.in.h:29
+msgid "Whether or not to play sounds when busy."
+msgstr "Дали в състояние „Зает“ да се ползват звуци."
+
+#: ../data/empathy.schemas.in.h:30
+msgid "Whether or not to show a popup when a contact becomes available."
+msgstr "Дали прозорец да известява за появата на контакт."
+
+#: ../data/empathy.schemas.in.h:31
+msgid ""
+"Whether or not to show avatars for contacts in the contact list and chat "
+"windows."
+msgstr ""
+"Дали да се показват аватари в списъците за контакти и прозорците за "
+"разговори."
+
+#: ../data/empathy.schemas.in.h:32
+msgid "Whether or not to show contacts that are offline in the contact list."
+msgstr ""
+"Дали в списъка да се показват контактите, които в момента не са включени."
+
+#: ../data/empathy.schemas.in.h:33
+msgid ""
+"Whether or not to show the message dialog about closing the main window with "
+"the 'x' button in the title bar."
+msgstr ""
+"Дали да се показва съобщение за затварянето на основния прозорец при "
+"натискане на бутона „х“ в заглавната лента."
+
+#: ../data/empathy.schemas.in.h:34
+msgid "Whether to show the contact list in compact mode or not."
+msgstr "Дали да се ползва стегнат изглед за списъка с контактите."
+
+#: ../data/empathy.schemas.in.h:35
+msgid "Whether to use the theme for chat rooms or not."
+msgstr "Дали да се ползва тема за стаите за разговори."
+
+#: ../data/empathy.schemas.in.h:36
+msgid ""
+"Which criterium to use when sorting the contact list. Default is to use sort "
+"by the contact's name with the value \"name\". A value of \"state\" will "
+"sort the contact list by state."
+msgstr ""
+"Кой критерий да се използва за подредбата на списъка с контактите. "
+"Стандартната стойност е „name“ - подредба по име. Стойност „state“ означава "
+"подреждане по състояние."
+
+#: ../libempathy/empathy-presence.c:185 ../libempathy/empathy-presence.c:285
+msgid "Offline"
+msgstr "Изключен"
+
+#: ../libempathy/empathy-presence.c:275
+msgid "Available"
+msgstr "На линия"
+
+#: ../libempathy/empathy-presence.c:277
+msgid "Busy"
+msgstr "Зает"
+
+#: ../libempathy/empathy-presence.c:280
+msgid "Away"
+msgstr "Отсъстващ"
+
+#: ../libempathy/empathy-presence.c:282
+msgid "Hidden"
+msgstr "Скрит"
+
+#: ../libempathy/empathy-tp-contact-list.c:729 ../src/empathy.c:151
+msgid "People nearby"
+msgstr "Хора наблизо"
+
+#: ../libempathy-gtk/empathy-about-dialog.c:63
+msgid ""
+"Empathy is free software; you can redistribute it and/or modify it under the "
+"terms of the GNU General Public License as published by the Free Software "
+"Foundation; either version 2 of the License, or (at your option) any later "
+"version."
+msgstr ""
+"Тази програма (Empathy) е свободен софтуер. Можете да я разпространявате и/"
+"или променяте според условията на версия 2 или по-висока (по ваш избор) на "
+"Общия публичен лиценз на GNU, който е публикуван от Фондацията за свободен "
+"софтуер."
+
+#: ../libempathy-gtk/empathy-about-dialog.c:67
+msgid ""
+"Empathy is distributed in the hope that it will be useful, but WITHOUT ANY "
+"WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS "
+"FOR A PARTICULAR PURPOSE. See the GNU General Public License for more "
+"details."
+msgstr ""
+"Тази програма (Empathy) се разпространява с надеждата да е полезна, но БЕЗ "
+"НИКАКВА ГАРАНЦИЯ, дори и подразбиращата се ПРИГОДНОСТ или ГОДНОСТ ЗА "
+"КОНКРЕТНА УПОТРЕБА. За подробности прегледайте Общия публичен лиценз на GNU."
+
+#: ../libempathy-gtk/empathy-about-dialog.c:71
+msgid ""
+"You should have received a copy of the GNU General Public License along with "
+"Empathy; if not, write to the Free Software Foundation, Inc., 51 Franklin "
+"Street, Fifth Floor, Boston, MA 02110-130159 USA"
+msgstr ""
+"Трябва да сте получили копие на Общия публичен лиценз на GNU заедно с тази "
+"програма. Ако не се сте - пишете на Фондацията за свободен софтуер на "
+"адрес:\n"
+"Free Software Foundation, Inc., 51 Franklin Street,\n"
+"Fifth Floor, Boston, MA 02110-1301, USA. "
+
+#: ../libempathy-gtk/empathy-about-dialog.c:99
+msgid "An Instant Messaging client for GNOME"
+msgstr "Програма за бързи съобщения за GNOME"
+
+#: ../libempathy-gtk/empathy-about-dialog.c:105
+msgid "translator-credits"
+msgstr ""
+"Ясен Праматаров <yasen@lindeas.com>\n"
+"Александър Шопов <ash@contact.bg>\n"
+"\n"
+"Проектът за превод на GNOME има нужда от подкрепа.\n"
+"Научете повече за нас на http://gnome.cult.bg\n"
+"Докладвайте за грешки на http://gnome.cult.bg/bugs"
+
+#: ../libempathy-gtk/empathy-account-chooser.c:337
+msgid "All"
+msgstr "Всички"
+
+#: ../libempathy-gtk/empathy-account-widget-generic.c:146
+#: ../libempathy-gtk/empathy-account-widget-generic.c:208
+#, c-format
+msgid "%s:"
+msgstr "%s:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:1
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:1
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:1
+msgid "<b>Advanced</b>"
+msgstr "<b>За напреднали</b>"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:2
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:2
+msgid "Forget password and clear the entry."
+msgstr "Изчистване на полето и забравяне на паролата."
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:3
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:3
+msgid "Login I_D:"
+msgstr "_Идентификатор:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:4
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:4
+msgid "Pass_word:"
+msgstr "П_арола:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:5
+msgid "Priority:"
+msgstr "Приоритет:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:6
+msgid "Reso_urce:"
+msgstr "_Ресурс:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:7
+msgid "Use encryption (SS_L)"
+msgstr "Използване на _шифриране (SSL)"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:8
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:5
+msgid "_Port:"
+msgstr "_Порт:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:9
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:6
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:10
+msgid "_Server:"
+msgstr "_Сървър:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:10
+msgid "jabber account settings"
+msgstr "Настройки на абонамент за jabber"
+
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:7
+msgid "msn account settings"
+msgstr "Настройки на абонамент за msn"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:2
+msgid "_E-mail:"
+msgstr "_Е-поща:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:3
+msgid "_First Name: "
+msgstr "_Лично име:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:4
+msgid "_Jabber ID:"
+msgstr "_Идентификатор по Jabber:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:5
+msgid "_Last Name:"
+msgstr "_Фамилно име:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:6
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:8
+msgid "_Nickname:"
+msgstr "_Псевдоним:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:7
+msgid "_Published Name:"
+msgstr "Име за п_убликуване:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:8
+msgid "salut account settings"
+msgstr "Настройки на абонамент за Salut"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:218
+msgid "Disable"
+msgstr "Изключване"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:221
+msgid "Enable"
+msgstr "Включване"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:256
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to start configuring."
+msgstr ""
+"За да добавите нов абонамент, натиснете бутона „Добавяне“. Ще се появи нов "
+"запис, който можете да настроите."
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:260
+msgid ""
+"To add a new account, you first have to install a backend for each protocol "
+"you want to use."
+msgstr ""
+"За да добавите нов абонамент, трябва да имате модул, който поддръжа неговия "
+"протокол."
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:267
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:2
+msgid "<b>No Account Selected</b>"
+msgstr "<b>Не е избран абонамент</b>"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:268
+msgid ""
+"\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want "
+"to configure in the list on the left."
+msgstr ""
+"\n"
+"\n"
+"Ако не искате да добавяте нов абонамент, натиснете върху абонамента, който "
+"искате да настроите, в списъка отляво."
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:274
+msgid "<b>No Accounts Configured</b>"
+msgstr "<b>Няма настроени абонаменти</b>"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:401
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:4
+msgid "Accounts"
+msgstr "Абонаменти"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:898
+#, c-format
+msgid ""
+"You are about to remove your %s account!\n"
+"Are you sure you want to proceed?"
+msgstr ""
+"Ще изтриете абонамента „%s“!\n"
+"Искате ли да продължите?"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:904
+msgid ""
+"Any associated conversations and chat rooms will NOT be removed if you "
+"decide to proceed.\n"
+"\n"
+"Should you decide to add the account back at a later time, they will still "
+"be available."
+msgstr ""
+"Никои придналежащи на този абонамент разговори или стаи НЯМА да бъдат "
+"премахнати.\n"
+"\n"
+"Те ще бъдат достъпни, ако решите да добавите отново този абонамент."
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:1
+msgid "<b>New Account</b>"
+msgstr "<b>Нов абонамент</b>"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:3
+msgid "<b>Settings</b>"
+msgstr "<b>Настройки</b>"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:5
+msgid "Cr_eate"
+msgstr "_Създаване"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:6
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to started configuring.\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want "
+"to configure in the list on the left."
+msgstr ""
+"За да добавите нов абонамент, натиснете бутона „Добавяне“. Ще се появи нов "
+"запис, който можете да настроите.\n"
+"\n"
+"Ако не искате да добавяте нов абонамент, натиснете върху абонамента, който "
+"искате да настроите, в списъка отляво."
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:9
+msgid "Type:"
+msgstr "Вид:"
+
+#: ../libempathy-gtk/empathy-avatar-chooser.c:448
+msgid "Select Your Avatar Image"
+msgstr "Избор на изображение за аватар"
+
+#: ../libempathy-gtk/empathy-avatar-chooser.c:451
+msgid "No Image"
+msgstr "Без изображение"
+
+#: ../libempathy-gtk/empathy-avatar-chooser.c:511
+msgid "Images"
+msgstr "Изображения"
+
+#: ../libempathy-gtk/empathy-avatar-chooser.c:515
+msgid "All Files"
+msgstr "Всички файлове"
+
+#: ../libempathy-gtk/empathy-avatar-image.c:298
+msgid "Click to enlarge"
+msgstr "Натиснете за увеличаване"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:1
+msgid "Call"
+msgstr "Обаждане"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:2
+msgid "Input"
+msgstr "Вход"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:3
+msgid "Mute"
+msgstr "Заглушаване"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:4
+msgid "Output"
+msgstr "Изход"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:5
+msgid "Send Video"
+msgstr "Изпращане на видео"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:6
+msgid "Volume"
+msgstr "Сила на звука"
+
+#: ../libempathy-gtk/empathy-chat.c:329
+msgid "Disconnected"
+msgstr "Изключен"
+
+#: ../libempathy-gtk/empathy-chat.c:449
+msgid "offline"
+msgstr "изключен"
+
+#: ../libempathy-gtk/empathy-chat.c:452
+msgid "invalid contact"
+msgstr "грешен контакт"
+
+#: ../libempathy-gtk/empathy-chat.c:455
+msgid "permission denied"
+msgstr "липсват права"
+
+#: ../libempathy-gtk/empathy-chat.c:458
+msgid "too long message"
+msgstr "прекалено дълго съобщение"
+
+#: ../libempathy-gtk/empathy-chat.c:461
+msgid "not implemented"
+msgstr "не е реализирано"
+
+#: ../libempathy-gtk/empathy-chat.c:464
+msgid "unknown"
+msgstr "неизвестна грешка"
+
+#: ../libempathy-gtk/empathy-chat.c:468
+#, c-format
+msgid "Error sending message '%s': %s"
+msgstr "Грешка при изпращането на съобщението „%s“: %s"
+
+#: ../libempathy-gtk/empathy-chat.c:925
+msgid "Insert Smiley"
+msgstr "Вмъкване на емотикон"
+
+#: ../libempathy-gtk/empathy-chat.c:972
+msgid "_Check Word Spelling..."
+msgstr "_Проверка на правопис..."
+
+#: ../libempathy-gtk/empathy-chat.c:1397
+msgid "Connected"
+msgstr "Свързан"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:1
+msgid "C_lear"
+msgstr "_Изчистване на прозореца"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:2
+msgid "Ca_ll"
+msgstr "_Обаждане"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:3
+msgid "Change _Topic..."
+msgstr "_Смяна на темата..."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:4
+msgid "Chat"
+msgstr "Разговор"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:5
+msgid "Contact Infor_mation"
+msgstr "_Данни за контакта"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:6
+msgid "Cu_t"
+msgstr "От_рязване"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:7
+msgid "In_vite..."
+msgstr "П_окана..."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:8
+msgid "Insert _Smiley"
+msgstr "_Вмъкване на емотикон"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:9
+msgid "Invitation _message:"
+msgstr "_Съобщение за поканата:"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:10
+msgid "Invite"
+msgstr "Покана"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:11
+#: ../libempathy-gtk/empathy-main-window.glade.h:4
+msgid "Join _New..."
+msgstr "Влизане в _нова..."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:12
+msgid "Move Tab _Left"
+msgstr "Преместване на подпрозореца _наляво"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:13
+msgid "Move Tab _Right"
+msgstr "Преместване на подпрозореца _надясно"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:14
+msgid "Select who would you like to invite:"
+msgstr "Изберете, кого ще поканите:"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:15
+msgid "You have been invited to join a chat conference."
+msgstr "Поканени сте да се присъедините към конферентен разговор."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:16
+#: ../libempathy-gtk/empathy-main-window.glade.h:9
+msgid "_Add Contact..."
+msgstr "_Добавяне на контакт..."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:17
+msgid "_Add To Favorites"
+msgstr "_Добавяне към отметките..."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:18
+msgid "_Close"
+msgstr "_Затваряне"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:19
+msgid "_Conversation"
+msgstr "_Разговор"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:20
+msgid "_Copy"
+msgstr "_Копиране"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:21
+msgid "_Detach Tab"
+msgstr "_Отделяне на подпрозореца"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:22
+#: ../libempathy-gtk/empathy-contact-list-view.c:218
+#: ../libempathy-gtk/empathy-main-window.glade.h:12
+msgid "_Edit"
+msgstr "_Редактиране"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:23
+msgid "_Next Tab"
+msgstr "_Следващ подпрозорец"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:24
+msgid "_Paste"
+msgstr "_Поставяне"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:25
+msgid "_Previous Tab"
+msgstr "_Предишен подпрозорец"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:26
+#: ../libempathy-gtk/empathy-main-window.glade.h:18
+msgid "_Room"
+msgstr "_Стая:"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:27
+msgid "_Show Contacts"
+msgstr "_Показване на списъка с контакти"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:28
+msgid "_Tabs"
+msgstr "_Страници"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:29
+#: ../libempathy-gtk/empathy-contact-list-view.c:234
+#: ../libempathy-gtk/empathy-main-window.glade.h:19
+msgid "_View Previous Conversations"
+msgstr "_Преглед на предишни разговори"
+
+#: ../libempathy-gtk/empathy-chat-view.c:468
+msgid "_Copy Link Address"
+msgstr "_Копиране на адреса"
+
+#: ../libempathy-gtk/empathy-chat-view.c:476
+msgid "_Open Link"
+msgstr "_Отваряне на адреса"
+
+#: ../libempathy-gtk/empathy-chat-view.c:754
+msgid "%A %d %B %Y"
+msgstr "%d.%m.%Y, %A"
+
+#: ../libempathy-gtk/empathy-chat-window.c:695
+#, c-format
+msgid "Conversations (%d)"
+msgstr "Разговори (%d)"
+
+#: ../libempathy-gtk/empathy-chat-window.c:1281
+msgid "Typing a message."
+msgstr "Пише съобщение."
+
+#: ../libempathy-gtk/empathy-chatrooms-window.c:258
+msgid "Name"
+msgstr "Име"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.c:276
+msgid "Room"
+msgstr "Стая"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.c:285
+msgid "Auto Connect"
+msgstr "Автоматично свързване"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:1
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:5
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:1
+msgid "Account:"
+msgstr "Абонамент:"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:2
+msgid "Edit Favorite Room"
+msgstr "Редактиране на стаите в отметките"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:3
+msgid "Join room on start_up"
+msgstr "_Автоматично влизане в стаи при стартиране"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:4
+msgid "Join this chat room when Empathy starts and you are connected"
+msgstr "Влизане в тази стая при стартиране на Empathy, ако сте свързани"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:5
+msgid "Manage Favorite Rooms"
+msgstr "Управление на стаите в отметките"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:6
+msgid "N_ame:"
+msgstr "_Име:"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:7
+msgid "S_erver:"
+msgstr "_Сървър:"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:9
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:9
+msgid "_Room:"
+msgstr "_Стая:"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:176
+msgid "Personal Information"
+msgstr "Лични данни"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:179
+msgid "Edit Contact Information"
+msgstr "Редактиране на данните за контакта"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:182
+msgid "Contact Information"
+msgstr "Данни за контакта"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:277
+msgid "I would like to add you to my contact list."
+msgstr ""
+"bg: Искам да ви добавя към списъка си с контакти.\n"
+"en: I would like to add you to my contact list."
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:301
+msgid "New Contact"
+msgstr "Нов контакт"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.glade.h:1
+msgid "Decide _Later"
+msgstr "Отлагане на _решението"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.glade.h:2
+msgid "Subscription Request"
+msgstr "Искане за записване"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:198
+msgid "_Contact"
+msgstr "_Контакт"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:202
+msgid "_Group"
+msgstr "_Група"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:206
+#: ../libempathy-gtk/empathy-main-window.glade.h:10
+msgid "_Chat"
+msgstr "_Разговор"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:206
+msgid "Chat with contact"
+msgstr "Разговор с контакт"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:210
+msgid "Infor_mation"
+msgstr "_Данни за контакта"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:210
+msgid "View contact information"
+msgstr "Данни за контакта"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:214
+msgid "Re_name"
+msgstr "_Преименуване"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:214
+msgid "Rename"
+msgstr "Преименуване"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:218
+msgid "Edit the groups and name for this contact"
+msgstr ""
+"Редактиране на името и групите на този контакт\n"
+"%s"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:222
+msgid "_Remove"
+msgstr "_Премахване"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:222
+msgid "Remove contact"
+msgstr "Премахване на контакт"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:226
+msgid "_Invite to Chat Room"
+msgstr "_Пращане на покана в стая за рзговор"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:226
+msgid "Invite to a currently open chat room"
+msgstr "Изпращане на покана за текущо отворена стая за разговор"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:230
+msgid "_Send File..."
+msgstr "_Изпращане на файл..."
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:230
+msgid "Send a file"
+msgstr "Изпращане на файл"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:234
+msgid "View previous conversations with this contact"
+msgstr "Разглеждане на предишните разговори с този контакт"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:239
+msgid "_Call"
+msgstr "_Разговор"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:239
+msgid "Start a voice or video conversation with this contact"
+msgstr "Начало на гласова или видео връзка с този контакт"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:1423
+msgid "Sorry, I don't want you in my contact list anymore."
+msgstr ""
+"bg: Съжалявам, вече не желая да сте в списъка ми с контакти.\n"
+"en: Sorry, I don't want you in my contact list anymore."
+
+#: ../libempathy-gtk/empathy-contact-widget.c:662
+msgid "Select"
+msgstr "Избор"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:672
+#: ../libempathy-gtk/empathy-main-window.c:608
+msgid "Group"
+msgstr "Група"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:1
+msgid "<b>Client Information</b>"
+msgstr "<b>Данни за клиента</b>"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:2
+msgid "<b>Contact Details</b>"
+msgstr "<b>Данни за контакта</b>"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:3
+msgid "<b>Contact</b>"
+msgstr "<b>Контакт</b>"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:4
+msgid "<b>Groups</b>"
+msgstr "<b>Групи</b>"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:6
+msgid "Alias:"
+msgstr "Псевдоним:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:7
+msgid "Birthday:"
+msgstr "Рожден ден:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:8
+msgid "Client:"
+msgstr "Клиент:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:9
+msgid "Contact information"
+msgstr "Данни за контакта"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:10
+msgid "Email:"
+msgstr "Е-поща:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:11
+msgid "Fullname:"
+msgstr "Пълно име:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:12
+msgid "Identifier:"
+msgstr "Идентификатор:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:13
+msgid "Information requested..."
+msgstr "Данните са поискани..."
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:14
+msgid "OS:"
+msgstr "ОС:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:15
+msgid ""
+"Select the groups you want this contact to appear in, you can select more "
+"than one group or no groups."
+msgstr ""
+"Изберете групите, в които да се появава контакта. Можете да изберете 0 или "
+"повече групи за контакт."
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:16
+msgid "Version:"
+msgstr "Версия:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:17
+msgid "Web site:"
+msgstr "Интернет страница:"
+
+#: ../libempathy-gtk/empathy-group-chat.c:254
+msgid "Enter the new topic you want to set for this room:"
+msgstr "Въведете новата тема за тази стая:"
+
+#: ../libempathy-gtk/empathy-group-chat.c:367
+#, c-format
+msgid "%s has joined the room"
+msgstr "%s влезе в стаята"
+
+#: ../libempathy-gtk/empathy-group-chat.c:370
+#, c-format
+msgid "%s has left the room"
+msgstr "%s излезе от стаята"
+
+#: ../libempathy-gtk/empathy-group-chat.c:450
+#, c-format
+msgid "Topic: %s"
+msgstr "Тема: „%s“"
+
+#: ../libempathy-gtk/empathy-group-chat.c:572
+#, c-format
+msgid "Topic set to: %s"
+msgstr "Темата вече е: „%s“"
+
+#: ../libempathy-gtk/empathy-group-chat.c:574
+msgid "No topic defined"
+msgstr "Не е зададена тема"
+
+#: ../libempathy-gtk/empathy-group-chat.glade.h:1
+msgid "<b>Topic:</b>"
+msgstr "<b>Тема:</b>"
+
+#: ../libempathy-gtk/empathy-group-chat.glade.h:2
+msgid "Group Chat"
+msgstr "Разговор в група"
+
+#: ../libempathy-gtk/empathy-log-window.c:497
+msgid "Account"
+msgstr "Абонамент"
+
+#: ../libempathy-gtk/empathy-log-window.c:504
+msgid "Conversation"
+msgstr "Разговор"
+
+#: ../libempathy-gtk/empathy-log-window.c:514
+msgid "Date"
+msgstr "Дата"
+
+#: ../libempathy-gtk/empathy-log-window.glade.h:1
+msgid "Conversations"
+msgstr "Разговори"
+
+#: ../libempathy-gtk/empathy-log-window.glade.h:2
+msgid "Previous Conversations"
+msgstr "Предишни разговори"
+
+#: ../libempathy-gtk/empathy-log-window.glade.h:3
+msgid "Search"
+msgstr "Търсене"
+
+#: ../libempathy-gtk/empathy-log-window.glade.h:4
+msgid "_For:"
+msgstr "_За:"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.c:286
+msgid "Chat Rooms"
+msgstr "Стаи за разговор"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:2
+msgid "Browse:"
+msgstr "Избор:"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:3
+msgid ""
+"Enter the room name to join here or click on one or more rooms in the list."
+msgstr ""
+"Въведете името на стаята, в която да влезете, или натиснете една или повече "
+"стаи от списъка."
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:4
+msgid ""
+"Enter the server which hosts the room, or leave it empty if the room is on "
+"the current account's server"
+msgstr ""
+"Попълнете сървъра, на който е стаята. Ако тя е на сървъра на текущия "
+"абонамент, оставете полето празно."
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:5
+msgid "Join"
+msgstr "Влизане"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:6
+msgid "Join New"
+msgstr "Влизане в нова"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:7
+msgid "Re_fresh"
+msgstr "_Обновяване"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:8
+msgid ""
+"This list represents all chat rooms hosted on the server you have entered."
+msgstr ""
+"Този списък показва всички стаи, които се намират на съвръра, към който се "
+"включихте."
+
+#: ../libempathy-gtk/empathy-main-window.c:265
+msgid "Show and edit accounts"
+msgstr "Показване и редактиране на абонаменти"
+
+#: ../libempathy-gtk/empathy-main-window.c:629
+msgid "Contact"
+msgstr "Контакт"
+
+#: ../libempathy-gtk/empathy-main-window.c:812
+msgid "Edit Account _Details"
+msgstr "_Редактиране настройките на абонамент"
+
+#: ../libempathy-gtk/empathy-main-window.c:895
+msgid "Network error"
+msgstr "Мрежова грешка"
+
+#: ../libempathy-gtk/empathy-main-window.c:898
+msgid "Authentication failed"
+msgstr "Неуспешно идентифициране"
+
+#: ../libempathy-gtk/empathy-main-window.c:901
+msgid "Encryption error"
+msgstr "Грешка в шифрирането"
+
+#: ../libempathy-gtk/empathy-main-window.c:904
+msgid "Name in use"
+msgstr "Името е заето"
+
+#: ../libempathy-gtk/empathy-main-window.c:907
+msgid "Certificate not provided"
+msgstr "Не е предоставен сертификат"
+
+#: ../libempathy-gtk/empathy-main-window.c:910
+msgid "Certificate untrusted"
+msgstr "Сертификатът не е доверен"
+
+#: ../libempathy-gtk/empathy-main-window.c:913
+msgid "Certificate expired"
+msgstr "Сертификатът е изтекъл"
+
+#: ../libempathy-gtk/empathy-main-window.c:916
+msgid "Certificate not activated"
+msgstr "Сертификатът не е влязъл в сила"
+
+#: ../libempathy-gtk/empathy-main-window.c:919
+msgid "Certificate hostname mismatch"
+msgstr "Несъвпадение на името с това в сертификата"
+
+#: ../libempathy-gtk/empathy-main-window.c:922
+msgid "Certificate fingerprint mismatch"
+msgstr "Несъвпадение на отпечатъка на сертификата"
+
+#: ../libempathy-gtk/empathy-main-window.c:925
+msgid "Certificate self signed"
+msgstr "Сертификатът е самоподписан"
+
+#: ../libempathy-gtk/empathy-main-window.c:928
+msgid "Certificate error"
+msgstr "Грешка в сертификата"
+
+#: ../libempathy-gtk/empathy-main-window.c:931
+msgid "Unknown error"
+msgstr "Неизвестна грешка"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:1
+msgid "Contact List"
+msgstr "Списък с контакти"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:2
+msgid "Context"
+msgstr "Контекст"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:3
+msgid "Join _Favorites"
+msgstr "_Добавяне към отметките"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:5
+msgid "Manage Favorites"
+msgstr "Редактиране на отметките"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:6
+msgid "Show _Offline Contacts"
+msgstr "Показване на _изключените контакти"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:7
+#: ../megaphone/data/GNOME_Megaphone_Applet.xml.h:1
+#: ../nothere/data/GNOME_NotHere_Applet.xml.h:1
+msgid "_About"
+msgstr "_Относно"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:8
+msgid "_Accounts"
+msgstr "_Абонаменти"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:11
+msgid "_Contents"
+msgstr "_Ръководство"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:13
+msgid "_Help"
+msgstr "_Помощ"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:14
+#: ../libempathy-gtk/empathy-status-icon.glade.h:2
+msgid "_New Message..."
+msgstr "_Ново съобщение..."
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:15
+msgid "_Personal Information"
+msgstr "_Лични данни"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:16
+#: ../megaphone/data/GNOME_Megaphone_Applet.xml.h:3
+msgid "_Preferences"
+msgstr "_Настройки"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:17
+#: ../libempathy-gtk/empathy-status-icon.glade.h:3
+msgid "_Quit"
+msgstr "_Спиране на програмата"
+
+#: ../libempathy-gtk/empathy-preferences.c:243
+msgid "Language"
+msgstr "Език"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:1
+msgid "<b>Appearance</b>"
+msgstr "<b>Изглед</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:2
+msgid "<b>Audio</b>"
+msgstr "<b>Звуци</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:3
+msgid "<b>Behaviour</b>"
+msgstr "<b>Поведение</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:4
+msgid "<b>Contact List</b>"
+msgstr "<b>Списък с контакти</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:5
+msgid "<b>Enable spell checking for languages:</b>"
+msgstr "<b>Езици с проверка на правописа:</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:6
+msgid "<b>Options</b>"
+msgstr "<b>Настройки</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:7
+msgid "<b>Visual</b>"
+msgstr "<b>Визуални настройки</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:8
+msgid ""
+"<small>The list of languages reflects only the languages for which you have "
+"a dictionary installed.</small>"
+msgstr ""
+"<small>В списъка са само езицитие, за които е инсталиран речник.</small>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:9
+msgid "Avatars are user chosen images shown in the contact list"
+msgstr ""
+"Аватарите са изображенията, които се избират от потребителите, за да се "
+"показват в списъка с контакти"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:10
+msgid "Chat Th_eme:"
+msgstr "_Тема за прозорците за разговори:"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:11
+msgid "Display notifications when contacts come _online"
+msgstr "_Известяване при появата на контакти"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:12
+msgid "Enable sounds when _away"
+msgstr "Със звуци в състояние „_Отсъстващ“"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:13
+msgid "Enable sounds when _busy"
+msgstr "Със звуци в състояние „_Зает“"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:14
+msgid "General"
+msgstr "Общи"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:15
+msgid "Notifications"
+msgstr "Уведомяване"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:16
+msgid "Preferences"
+msgstr "Настройки"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:17
+msgid "Show _avatars"
+msgstr "Показване на _аватари"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:18
+msgid "Show _smileys as images"
+msgstr "Използване на _картинки за емотикони"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:19
+msgid "Show co_mpact contact list"
+msgstr "_Стегнат списък с контакти"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:20
+msgid "Sort by _name"
+msgstr "Подреждане по _име"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:21
+msgid "Sort by s_tate"
+msgstr "Подреждане по _състояние"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:22
+msgid "Spell Checking"
+msgstr "Проверка на правописа"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:23
+msgid "Themes"
+msgstr "Теми"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:24
+msgid "_Open new chats in separate windows"
+msgstr "_Отваряне на разговорите в отделни прозорци"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:25
+msgid "_Play sound when messages arrive"
+msgstr "_Уведомяване със звук при пристигане на съобщение"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:26
+msgid "_Use for chat rooms"
+msgstr "_Да се ползва за стаите за разговор"
+
+#. Custom messages
+#: ../libempathy-gtk/empathy-presence-chooser.c:691
+msgid "Custom messages..."
+msgstr "Други съобщения..."
+
+#: ../libempathy-gtk/empathy-presence-chooser.glade.h:1
+msgid "Custom message"
+msgstr "Други съобщения"
+
+#: ../libempathy-gtk/empathy-presence-chooser.glade.h:2
+msgid "Message:"
+msgstr "Съобщение:"
+
+#: ../libempathy-gtk/empathy-presence-chooser.glade.h:3
+msgid "Save message"
+msgstr "Запазване на съобщение"
+
+#: ../libempathy-gtk/empathy-presence-chooser.glade.h:4
+msgid "Status:"
+msgstr "Състояние:"
+
+#: ../libempathy-gtk/empathy-private-chat.c:188
+#, c-format
+msgid "%s went offline"
+msgstr "%s се изключи"
+
+#: ../libempathy-gtk/empathy-private-chat.c:202
+#, c-format
+msgid "%s has come online"
+msgstr "%s се включи"
+
+#: ../libempathy-gtk/empathy-spell-dialog.c:85
+msgid "Word"
+msgstr "Дума"
+
+#: ../libempathy-gtk/empathy-spell-dialog.c:258
+msgid "Suggestions for the word"
+msgstr "Предложения за думата"
+
+#: ../libempathy-gtk/empathy-spell-dialog.glade.h:1
+msgid "Spell Checker"
+msgstr "Проверка на правописа"
+
+#: ../libempathy-gtk/empathy-spell-dialog.glade.h:2
+msgid "Suggestions for the word:"
+msgstr "Предложения за думата:"
+
+#: ../libempathy-gtk/empathy-status-icon.c:310
+#, c-format
+msgid ""
+"New message from %s:\n"
+"%s"
+msgstr ""
+"Ново съобщение от :%s\n"
+"%s"
+
+#: ../libempathy-gtk/empathy-status-icon.c:579
+#, c-format
+msgid "Subscription requested by %s"
+msgstr "Искане за записване от %s"
+
+#: ../libempathy-gtk/empathy-status-icon.c:582
+#, c-format
+msgid ""
+"\n"
+"Message: %s"
+msgstr ""
+"\n"
+"Съобщение: %s"
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:1
+msgid "Status"
+msgstr "Състояние"
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:4
+msgid "_Show Contact List"
+msgstr "_Показване на списъка с контакти"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:87
+msgid "Classic"
+msgstr "Класическа"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:88
+msgid "Simple"
+msgstr "Проста"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:89
+msgid "Clean"
+msgstr "Изчистена"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:90
+msgid "Blue"
+msgstr "Синя"
+
+#: ../megaphone/data/GNOME_Megaphone_Applet.schemas.in.h:1
+msgid ""
+"The contact to display in the applet. Empty means no contact is displayed."
+msgstr ""
+"Контактът, който да се появява в аплета. Ако остане празно, няма да се "
+"показва никой контакт."
+
+#: ../megaphone/data/GNOME_Megaphone_Applet.schemas.in.h:2
+msgid "The contact's avatar token. Empty means contact has no avatar."
+msgstr ""
+"Идентификаторът на аватара на контакта. Ако не е попълнено нищо, контактът "
+"няма аватар."
+
+#: ../megaphone/data/GNOME_Megaphone_Applet.server.in.in.h:1
+msgid "Megaphone"
+msgstr "Мегафон"
+
+#: ../megaphone/data/GNOME_Megaphone_Applet.server.in.in.h:2
+#: ../megaphone/src/megaphone-applet.c:419
+msgid "Talk!"
+msgstr "Разговаряйте!"
+
+#: ../megaphone/data/GNOME_Megaphone_Applet.xml.h:2
+msgid "_Information"
+msgstr "_Данни за контакта"
+
+#: ../nothere/data/GNOME_NotHere_Applet.server.in.in.h:1
+msgid "Presence"
+msgstr "Присъствие"
+
+#: ../nothere/data/GNOME_NotHere_Applet.server.in.in.h:2
+#: ../nothere/src/nothere-applet.c:89
+msgid "Set your own presence"
+msgstr "Задайте присъствието си"
+
+#: ../src/empathy.c:210
+msgid "Don't connect on startup"
+msgstr "Без автоматично свързване в началото"
+
+#: ../src/empathy.c:222
+msgid "- Empathy Instant Messenger"
+msgstr "- бързи съобщения с Empathy"
diff --git a/gnome-2-22/po/ca.po b/gnome-2-22/po/ca.po
new file mode 100644
index 000000000..cdaaac7e4
--- /dev/null
+++ b/gnome-2-22/po/ca.po
@@ -0,0 +1,3499 @@
+# Catalan translation for Gossip
+# Copyright © 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
+# This file is distributed under the same licence as the gossip package.
+# Jordi Mallach <jordi@sindominio.net>, 2003, 2004, 2005, 2006, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gossip 0.27\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-09-10 12:00+0200\n"
+"PO-Revision-Date: 2007-09-10 12:09+0200\n"
+"Last-Translator: Jordi Mallach <jordi@sindominio.net>\n"
+"Language-Team: Catalan <tradgnome@softcatala.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n!=1;\n"
+
+#: ../data/empathy.desktop.in.in.h:1
+msgid "Empathy Instant Messenger"
+msgstr "Missatgeria instantània Empathy"
+
+#: ../data/empathy.desktop.in.in.h:2
+msgid "Send and receive instant messages"
+msgstr "Envia i rep missatges instantanis"
+
+#: ../data/empathy.schemas.in.h:1
+msgid "Always open a separate chat window for new chats."
+msgstr "Obre sempre una finestra de xat separada per a xats nous."
+
+#: ../data/empathy.schemas.in.h:2
+msgid "Chat window theme"
+msgstr "Tema de la finestra de xat"
+
+#: ../data/empathy.schemas.in.h:3
+msgid "Checks if Salut account is created"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:4
+msgid ""
+"Comma separated list of spell checker languages to use (e.g. en, fr, nl)."
+msgstr ""
+"Llista separada per comes de les llengües de corrector ortogràfic a "
+"utilitzar (p. ex. ca, en, es, fr)."
+
+#: ../data/empathy.schemas.in.h:5
+msgid "Compact contact list"
+msgstr "Llista de contactes compacta"
+
+#: ../data/empathy.schemas.in.h:6
+msgid "Contact list sort criterium"
+msgstr "Criteri d'ordenació de la llista de contactes"
+
+#: ../data/empathy.schemas.in.h:7
+msgid "Default directory to select an avatar image from"
+msgstr "El directori per defecte des d'on seleccionar una imatge d'àvatar"
+
+#: ../data/empathy.schemas.in.h:8
+msgid "Enable popup when contact is available"
+msgstr "Habilita les finestres emergents quan un contacte és disponible"
+
+#: ../data/empathy.schemas.in.h:9
+msgid "Enable sound when away"
+msgstr "Habilita els sons quan s'està absent"
+
+#: ../data/empathy.schemas.in.h:10
+msgid "Enable sound when busy"
+msgstr "Habilita els sons quan s'està ocupat"
+
+#: ../data/empathy.schemas.in.h:11
+msgid "Enable spell checker"
+msgstr "Habilita el corrector ortogràfic"
+
+#: ../data/empathy.schemas.in.h:12
+msgid "Hide main window"
+msgstr "Amaga la finestra principal"
+
+#: ../data/empathy.schemas.in.h:13
+msgid "Hide the main window."
+msgstr "Amaga la finestra principal."
+
+#: ../data/empathy.schemas.in.h:14
+msgid "Open new chats in separate windows"
+msgstr "Obre les finestres de xat noves en finestres separades"
+
+#: ../data/empathy.schemas.in.h:15
+msgid "Show avatars"
+msgstr "Mostra els àvatars"
+
+#: ../data/empathy.schemas.in.h:16
+msgid "Show hint about closing the main window"
+msgstr "Mostra un consell sobre tancar la finestra principal"
+
+#: ../data/empathy.schemas.in.h:17
+msgid "Show offline contacts"
+msgstr "Mostra els contactes desconnectats"
+
+#: ../data/empathy.schemas.in.h:18
+msgid "Spell checking languages"
+msgstr "Llengües per a la correcció ortogràfica"
+
+#: ../data/empathy.schemas.in.h:19
+msgid "The last directory that an avatar image was chosen from."
+msgstr "L'últim directori des d'on es va seleccionar una imatge d'àvatar."
+
+#: ../data/empathy.schemas.in.h:20
+msgid "The theme that is used to display the conversation in chat windows."
+msgstr "El tema que s'usa per a mostrar la conversa a les finestres de xat."
+
+#: ../data/empathy.schemas.in.h:21
+msgid "Use graphical smileys"
+msgstr "Utilitza emoticones gràfiques"
+
+#: ../data/empathy.schemas.in.h:22
+msgid "Use notification sounds"
+msgstr "Utilitza sons de notificació"
+
+#: ../data/empathy.schemas.in.h:23
+msgid "Use theme for chat rooms"
+msgstr "Usa el tema per a les sales de xat"
+
+#: ../data/empathy.schemas.in.h:24
+msgid ""
+"Whether or not the Salut account has been created on the first empathy run."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:25
+msgid ""
+"Whether or not to check words typed against the languages you want to check "
+"with."
+msgstr ""
+"Si s'han de comprovar o no les paraules introduïdes contra les llengües amb "
+"les quals voler fer comprovacions."
+
+#: ../data/empathy.schemas.in.h:26
+msgid ""
+"Whether or not to convert smileys into graphical images in conversations."
+msgstr ""
+"Si s'ha de convertir o no les emoticones a imatges gràfiques a les converses."
+
+#: ../data/empathy.schemas.in.h:27
+msgid "Whether or not to play a sound when messages arrive."
+msgstr "Si s'ha de reproduir o no un so quan arriba un missatge."
+
+#: ../data/empathy.schemas.in.h:28
+msgid "Whether or not to play sounds when away."
+msgstr "Si s'ha de reproduir o no sons quan s'està absent."
+
+#: ../data/empathy.schemas.in.h:29
+msgid "Whether or not to play sounds when busy."
+msgstr "Si s'ha de reproduir o no sons quan s'està ocupat."
+
+#: ../data/empathy.schemas.in.h:30
+msgid "Whether or not to show a popup when a contact becomes available."
+msgstr ""
+"Si s'ha de mostrar o no una finestra emergent quan un contacte esdevé "
+"disponible."
+
+#: ../data/empathy.schemas.in.h:31
+msgid ""
+"Whether or not to show avatars for contacts in the contact list and chat "
+"windows."
+msgstr ""
+"Si s'han de mostrar o no els àvatars per als contactes a la llista de "
+"contactes i finestres de xat."
+
+#: ../data/empathy.schemas.in.h:32
+msgid "Whether or not to show contacts that are offline in the contact list."
+msgstr ""
+"Si s'han de mostrar o no els contactes que estan desconnectats a la llista "
+"de contactes."
+
+#: ../data/empathy.schemas.in.h:33
+msgid ""
+"Whether or not to show the message dialog about closing the main window with "
+"the 'x' button in the title bar."
+msgstr ""
+"Si s'ha de mostrar o no el diàleg de missatge sobre tancar la finestra "
+"principal amb el botó «x» de la barra de títol."
+
+#: ../data/empathy.schemas.in.h:34
+msgid "Whether to show the contact list in compact mode or not."
+msgstr "Si s'ha de mostrar o no la llista de contactes en mode compacte."
+
+#: ../data/empathy.schemas.in.h:35
+msgid "Whether to use the theme for chat rooms or not."
+msgstr "Si s'ha d'usar o no el tema per a les sales de xat."
+
+#: ../data/empathy.schemas.in.h:36
+msgid ""
+"Which criterium to use when sorting the contact list. Default is to use sort "
+"by the contact's name with the value \"name\". A value of \"state\" will "
+"sort the contact list by state."
+msgstr ""
+"Quin criteri fer servir quan s'ordena la llista de contactes. Per defecte és "
+"ordenar pel nom del contacte amb el valor «name». Un valor «state» ordenarà "
+"la llista de contactes per estat."
+
+#: ../libempathy/empathy-presence.c:185 ../libempathy/empathy-presence.c:285
+msgid "Offline"
+msgstr "Desconnectat"
+
+#: ../libempathy/empathy-presence.c:275
+msgid "Available"
+msgstr "Disponible"
+
+#: ../libempathy/empathy-presence.c:277
+msgid "Busy"
+msgstr "Ocupat"
+
+#: ../libempathy/empathy-presence.c:280
+msgid "Away"
+msgstr "Absent"
+
+#: ../libempathy/empathy-presence.c:282
+msgid "Hidden"
+msgstr "Amagat"
+
+#: ../libempathy/empathy-tp-contact-list.c:735 ../src/empathy.c:213
+msgid "People nearby"
+msgstr "Gent propera"
+
+#: ../libempathy-gtk/empathy-about-dialog.c:63
+msgid ""
+"Empathy is free software; you can redistribute it and/or modify it under the "
+"terms of the GNU General Public License as published by the Free Software "
+"Foundation; either version 2 of the License, or (at your option) any later "
+"version."
+msgstr "L'Empathy és programari lliure; podeu redistribuir-lo i/o modificar-lo sota els termes de la Llicència Pública General GNU tal i com ha estat publicada per la Free Software Foundation; bé sota la versió 2 de la Llicència o bé (si ho preferiu) sota qualsevol versió posterior."
+
+#: ../libempathy-gtk/empathy-about-dialog.c:67
+msgid ""
+"Empathy is distributed in the hope that it will be useful, but WITHOUT ANY "
+"WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS "
+"FOR A PARTICULAR PURPOSE. See the GNU General Public License for more "
+"details."
+msgstr "L'Empathy es distribueix amb l'expectativa de que serà útil, però SENSE CAP GARANTIA; fins i tot la garantia implícita de COMERCIALITZACIÓ o ADEQUACIÓ PER UN PROPÒSIT PARTICULAR. Vegeu la Llicència Pública General GNU per obtenir-ne més detalls."
+
+#: ../libempathy-gtk/empathy-about-dialog.c:71
+msgid ""
+"You should have received a copy of the GNU General Public License along with "
+"Empathy; if not, write to the Free Software Foundation, Inc., 51 Franklin "
+"Street, Fifth Floor, Boston, MA 02110-130159 USA"
+msgstr "Hauríeu d'haver rebut una còpia de la Llicència Pública General GNU juntament amb l'Empathy; en cas contrari, escriviu a la Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA"
+
+#: ../libempathy-gtk/empathy-about-dialog.c:99
+msgid "An Instant Messaging client for GNOME"
+msgstr "Un client de missatgeria instantània per al GNOME"
+
+#: ../libempathy-gtk/empathy-about-dialog.c:105
+msgid "translator-credits"
+msgstr "Jordi Mallach <jordi@sindominio.net>"
+
+#: ../libempathy-gtk/empathy-account-chooser.c:336
+msgid "All"
+msgstr "Tots"
+
+#: ../libempathy-gtk/empathy-account-widget-generic.c:146
+#: ../libempathy-gtk/empathy-account-widget-generic.c:208
+#, c-format
+msgid "%s:"
+msgstr "%s:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:1
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:1
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:1
+msgid "<b>Advanced</b>"
+msgstr "<b>Avançat</b>"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:2
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:2
+msgid "Forget password and clear the entry."
+msgstr "Oblida la contrasenya i neteja el camp."
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:3
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:3
+msgid "Login I_D:"
+msgstr "I_D d'entrada:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:4
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:4
+msgid "Pass_word:"
+msgstr "Con_trasenya:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:5
+msgid "Reso_urce:"
+msgstr "Rec_urs:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:6
+msgid "Use encryption (SS_L)"
+msgstr "Utilitza el xifrat (SS_L)"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:7
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:5
+msgid "_Port:"
+msgstr "_Port:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:8
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:6
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:10
+msgid "_Server:"
+msgstr "_Servidor:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:9
+msgid "jabber account settings"
+msgstr "paràmetres del compte jabber"
+
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:7
+msgid "msn account settings"
+msgstr "paràmetres del compte msn"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:2
+msgid "_E-mail:"
+msgstr "Corr_eu electrònic:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:3
+msgid "_First Name: "
+msgstr "_Nom: "
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:4
+msgid "_Jabber ID:"
+msgstr "_Jabber ID:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:5
+msgid "_Last Name:"
+msgstr "Co_gnoms:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:6
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:8
+msgid "_Nickname:"
+msgstr "Àl_ies:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:7
+msgid "_Published Name:"
+msgstr "Nom _públic:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:8
+msgid "salut account settings"
+msgstr "paràmetres del compte salut"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:218
+msgid "Disable"
+msgstr "Inhabilita"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:221
+msgid "Enable"
+msgstr "Habilita"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:255
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:2
+msgid "<b>No Account Selected</b>"
+msgstr "<b>No hi ha un compte seleccionat</b>"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:257
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to start configuring.\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want "
+"to configure in the list on the left."
+msgstr ""
+"Per a afegir un compte nou, podeu fer clic al botó «Add» i es crearà una "
+"nova entrada per a que pugueu configurar-la.\n"
+"\n"
+"Si no voleu afegir un compte, feu clic al compte que voleu configurar a la "
+"llista de l'esquerra."
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:266
+msgid "<b>No Accounts Configured</b>"
+msgstr "<b>Cap compte configurat</b>"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:268
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to start configuring."
+msgstr ""
+"Per a afegir un compte nou, podeu fer clic al botó «Afegeix» i es crearà una "
+"nova entrada per a que comenceu a configurar."
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:394
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:4
+msgid "Accounts"
+msgstr "Comptes"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:898
+#, c-format
+msgid ""
+"You are about to remove your %s account!\n"
+"Are you sure you want to proceed?"
+msgstr ""
+"Esteu a punt de suprimir el vostre compte %s.\n"
+"Esteu segur de voler continuar?"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:904
+msgid ""
+"Any associated conversations and chat rooms will NOT be removed if you "
+"decide to proceed.\n"
+"\n"
+"Should you decide to add the account back at a later time, they will still "
+"be available."
+msgstr ""
+"Qualsevol conversa i sales de xat associades NO es suprimiran si decidiu "
+"continuar.\n"
+"\n"
+"Si decidiu tornar a afegir el compte més tard, encara seran disponibles."
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:1
+msgid "<b>New Account</b>"
+msgstr "<b>Compte nou</b>"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:3
+msgid "<b>Settings</b>"
+msgstr "<b>Paràmetres</b>"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:5
+msgid "Cr_eate"
+msgstr "Cr_ea"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:6
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to started configuring.\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want "
+"to configure in the list on the left."
+msgstr ""
+"Per a afegir un compte nou, podeu fer clic al botó «Add» i es crearà una "
+"nova entrada per a que pugueu configurar-la.\n"
+"\n"
+"Si no voleu afegir un compte, feu clic al compte que voleu configurar a la "
+"llista de l'esquerra."
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:9
+msgid "Type:"
+msgstr "Tipus:"
+
+#: ../libempathy-gtk/empathy-chat.c:335
+msgid "Disconnected"
+msgstr "Desconnectat"
+
+#: ../libempathy-gtk/empathy-chat.c:450
+msgid "offline"
+msgstr "desconnectat"
+
+#: ../libempathy-gtk/empathy-chat.c:453
+msgid "invalid contact"
+msgstr "contacte invàlid"
+
+#: ../libempathy-gtk/empathy-chat.c:456
+msgid "permission denied"
+msgstr "s'ha denegat el permís"
+
+#: ../libempathy-gtk/empathy-chat.c:459
+msgid "too long message"
+msgstr "El missatge és massa llarg"
+
+#: ../libempathy-gtk/empathy-chat.c:462
+msgid "not implemented"
+msgstr "no implementat"
+
+#: ../libempathy-gtk/empathy-chat.c:465
+msgid "unknown"
+msgstr "desconegut"
+
+#: ../libempathy-gtk/empathy-chat.c:469
+#, c-format
+msgid "Error sending message '%s': %s"
+msgstr "S'ha produït un error en enviar el missatge «%s»: %s"
+
+#: ../libempathy-gtk/empathy-chat.c:924
+msgid "Insert Smiley"
+msgstr "Insereix una emoticona"
+
+#: ../libempathy-gtk/empathy-chat.c:972
+msgid "_Check Word Spelling..."
+msgstr "_Comprova l'ortografia de la paraula..."
+
+#: ../libempathy-gtk/empathy-chat.c:1397
+msgid "Connected"
+msgstr "Connectat"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:1
+msgid "C_lear"
+msgstr "_Neteja"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:2
+msgid "Ca_ll"
+msgstr "T_ruca"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:3
+msgid "Change _Topic..."
+msgstr "Canvia el _tema..."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:4
+msgid "Chat"
+msgstr "Xat"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:5
+msgid "Contact Infor_mation"
+msgstr "Infor_mació del contacte"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:6
+msgid "Cu_t"
+msgstr "Re_tall"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:7
+msgid "In_vite..."
+msgstr "Con_vida..."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:8
+msgid "Insert _Smiley"
+msgstr "Insereix una e_moticona"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:9
+msgid "Invitation _message:"
+msgstr "_Missatge d'invitació:"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:10
+msgid "Invite"
+msgstr "Convida"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:11
+#: ../libempathy-gtk/empathy-main-window.glade.h:4
+msgid "Join _New..."
+msgstr "Uneix-te a un _nou..."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:12
+msgid "Move Tab _Left"
+msgstr "Mou la pestanya a l'_esquerra"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:13
+msgid "Move Tab _Right"
+msgstr "Mou la pestanya a la d_reta"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:14
+msgid "Select who would you like to invite:"
+msgstr "Seleccioneu qui voleu convidar:"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:15
+msgid "You have been invited to join a chat conference."
+msgstr "Us han convidat a unir-vos a una conferència de xat."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:16
+#: ../libempathy-gtk/empathy-main-window.glade.h:9
+msgid "_Add Contact..."
+msgstr "_Afegeix un contacte..."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:17
+msgid "_Add To Favorites"
+msgstr "_Afegeix als favorits"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:18
+msgid "_Close"
+msgstr "_Tanca"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:19
+msgid "_Conversation"
+msgstr "_Conversa"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:20
+msgid "_Copy"
+msgstr "_Copia"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:21
+msgid "_Detach Tab"
+msgstr "D_esenganxa la pestanya"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:22
+#: ../libempathy-gtk/empathy-contact-list-view.c:209
+#: ../libempathy-gtk/empathy-main-window.glade.h:12
+msgid "_Edit"
+msgstr "_Edita"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:23
+msgid "_Next Tab"
+msgstr "Pestanya següe_nt"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:24
+msgid "_Paste"
+msgstr "_Enganxa"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:25
+msgid "_Previous Tab"
+msgstr "_Pestanya anterior"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:26
+#: ../libempathy-gtk/empathy-main-window.glade.h:18
+msgid "_Room"
+msgstr "_Sala"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:27
+msgid "_Show Contacts"
+msgstr "_Mostra els contactes"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:28
+msgid "_Tabs"
+msgstr "Pes_tanyes"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:29
+#: ../libempathy-gtk/empathy-contact-list-view.c:225
+#: ../libempathy-gtk/empathy-main-window.glade.h:19
+msgid "_View Previous Conversations"
+msgstr "_Visualitza les converses anteriors"
+
+#: ../libempathy-gtk/empathy-chat-view.c:468
+msgid "_Copy Link Address"
+msgstr "_Còpia l'adreça de l'enllaç"
+
+#: ../libempathy-gtk/empathy-chat-view.c:476
+msgid "_Open Link"
+msgstr "_Obre l'enllaç"
+
+#: ../libempathy-gtk/empathy-chat-view.c:754
+msgid "%A %d %B %Y"
+msgstr "%A %d %B %Y"
+
+#: ../libempathy-gtk/empathy-chat-window.c:710
+#: ../libempathy-gtk/empathy-chat-window.c:740
+msgid "New Message"
+msgid_plural "New Messages"
+msgstr[0] "Missatge nou"
+msgstr[1] "Missatges nous"
+
+#: ../libempathy-gtk/empathy-chat-window.c:716
+msgid "Chat Room"
+msgstr "Sala de xat"
+
+#: ../libempathy-gtk/empathy-chat-window.c:721
+#: ../libempathy-gtk/empathy-chat-window.c:744
+#: ../libempathy-gtk/empathy-log-window.c:504
+#, c-format
+msgid "Conversation"
+msgid_plural "Conversations (%d)"
+msgstr[0] "_Conversa"
+msgstr[1] "_Converses (%d)"
+
+#: ../libempathy-gtk/empathy-chat-window.c:1337
+msgid "Typing a message."
+msgstr "S'està teclejant un missatge..."
+
+#: ../libempathy-gtk/empathy-chatrooms-window.c:252
+msgid "Name"
+msgstr "Nom"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.c:270
+msgid "Room"
+msgstr "Sala"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.c:279
+msgid "Auto Connect"
+msgstr "Connexió automàtica"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:1
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:5
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:1
+msgid "Account:"
+msgstr "Compte:"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:2
+msgid "Edit Favorite Room"
+msgstr "Edita la sala favorita"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:3
+msgid "Join room on start_up"
+msgstr "Uneix-te a la sala en _iniciar"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:4
+#, fuzzy
+msgid "Join this chat room when Empathy starts and you are connected"
+msgstr "Uneix-te a aquesta sala de xat quan s'inicie el Gossip i es connecte"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:5
+msgid "Manage Favorite Rooms"
+msgstr "Gestiona les sales favorites"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:6
+msgid "N_ame:"
+msgstr "N_om:"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:7
+msgid "S_erver:"
+msgstr "S_ervidor:"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:9
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:9
+msgid "_Room:"
+msgstr "Sa_la:"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:173
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:9
+msgid "Contact information"
+msgstr "Informació del contacte"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:221
+msgid "I would like to add you to my contact list."
+msgstr "M'agradaria afegir-te a la meua llista de contactes."
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:245
+msgid "New contact"
+msgstr "Contacte nou"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.glade.h:1
+msgid "Decide _Later"
+msgstr "_Decideix després"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.glade.h:2
+msgid "Subscription Request"
+msgstr "Petició de subscripció"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:189
+msgid "_Contact"
+msgstr "_Contacte"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:193
+msgid "_Group"
+msgstr "_Grup"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:197
+#: ../libempathy-gtk/empathy-main-window.glade.h:10
+msgid "_Chat"
+msgstr "_Xat"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:197
+msgid "Chat with contact"
+msgstr "Xateja amb un contacte"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:201
+msgid "Infor_mation"
+msgstr "Infor_mació"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:201
+msgid "View contact information"
+msgstr "Visualitza la informació del contacte"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:205
+msgid "Re_name"
+msgstr "/Rea_nomena"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:205
+msgid "Rename"
+msgstr "Reanomena"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:209
+msgid "Edit the groups and name for this contact"
+msgstr "Edita els grups i nom per a aquest contacte"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:213
+msgid "_Remove"
+msgstr "_Elimina"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:213
+msgid "Remove contact"
+msgstr "Suprimeix el contacte"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:217
+msgid "_Invite to Chat Room"
+msgstr "Conv_ida a una sala de xat"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:217
+msgid "Invite to a currently open chat room"
+msgstr "Convida a una sala de xat actualment oberta"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:221
+msgid "_Send File..."
+msgstr "E_nvia un fitxer..."
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:221
+msgid "Send a file"
+msgstr "Envia un fitxer"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:225
+msgid "View previous conversations with this contact"
+msgstr "Visualitza les converses anteriors amb aquest contacte"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:229
+msgid "_Call"
+msgstr "Tru_ca"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:229
+#, fuzzy
+msgid "Start a voice or video conversation with this contact"
+msgstr "Visualitza les converses anteriors amb aquest contacte"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:1349
+msgid "Sorry, I don't want you in my contact list anymore."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-contact-widget.c:637
+msgid "Select"
+msgstr "Selecciona"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:647
+#: ../libempathy-gtk/empathy-main-window.c:612
+msgid "Group"
+msgstr "Grup"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:1
+msgid "<b>Client Information</b>"
+msgstr "<b>Informació del client</b>"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:2
+#, fuzzy
+msgid "<b>Contact Details</b>"
+msgstr "<b>Llista de contactes</b>"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:3
+#, fuzzy
+msgid "<b>Contact</b>"
+msgstr "<b>Llista de contactes</b>"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:4
+msgid "<b>Groups</b>"
+msgstr "<b>Grups</b>"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:6
+#, fuzzy
+msgid "Alias:"
+msgstr "Àlie_s:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:7
+msgid "Birthday:"
+msgstr "Aniversari:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:8
+msgid "Client:"
+msgstr "Client:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:10
+msgid "Email:"
+msgstr "Correu electrònic:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:11
+msgid "Fullname:"
+msgstr "Nom complet:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:12
+msgid "Identifier:"
+msgstr "Indentificador:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:13
+msgid "Information requested..."
+msgstr "S'ha demanat la informació..."
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:14
+msgid "OS:"
+msgstr "SO:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:15
+msgid ""
+"Select the groups you want this contact to appear in, you can select more "
+"than one group or no groups."
+msgstr ""
+"Seleccioneu els grups en els quals voleu que aparega aquest contacte, podeu "
+"seleccionar més d'un grup o cap grup."
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:16
+msgid "Version:"
+msgstr "Versió:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:17
+msgid "Web site:"
+msgstr "Pàgina web:"
+
+#: ../libempathy-gtk/empathy-group-chat.c:253
+msgid "Enter the new topic you want to set for this room:"
+msgstr "Introduïu el tema nou que voleu establir a aquesta sala:"
+
+#: ../libempathy-gtk/empathy-group-chat.c:366
+#, c-format
+msgid "%s has joined the room"
+msgstr "%s ha entrat a la sala"
+
+#: ../libempathy-gtk/empathy-group-chat.c:369
+#, c-format
+msgid "%s has left the room"
+msgstr "%s ha sortit de la sala"
+
+#: ../libempathy-gtk/empathy-group-chat.c:449
+#, c-format
+msgid "Topic: %s"
+msgstr "Tema: %s"
+
+#: ../libempathy-gtk/empathy-group-chat.c:569
+#, c-format
+msgid "Topic set to: %s"
+msgstr "Tema establert a: %s"
+
+#: ../libempathy-gtk/empathy-group-chat.c:571
+msgid "No topic defined"
+msgstr "No s'ha definit un tema"
+
+#: ../libempathy-gtk/empathy-group-chat.glade.h:1
+msgid "<b>Topic:</b>"
+msgstr "<b>Tema:</b>"
+
+#: ../libempathy-gtk/empathy-group-chat.glade.h:2
+msgid "Group Chat"
+msgstr "Xat en grup"
+
+#: ../libempathy-gtk/empathy-log-window.c:497
+msgid "Account"
+msgstr "Compte"
+
+#: ../libempathy-gtk/empathy-log-window.c:514
+msgid "Date"
+msgstr "Data"
+
+#: ../libempathy-gtk/empathy-log-window.glade.h:1
+msgid "Conversations"
+msgstr "Converses"
+
+#: ../libempathy-gtk/empathy-log-window.glade.h:2
+msgid "Search"
+msgstr "Cerca"
+
+#: ../libempathy-gtk/empathy-log-window.glade.h:3
+msgid "View Previous Conversations"
+msgstr "Visualitza les converses anteriors"
+
+#: ../libempathy-gtk/empathy-log-window.glade.h:4
+msgid "_For:"
+msgstr "_Per a:"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.c:286
+msgid "Chat Rooms"
+msgstr "Sales de xat"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:2
+msgid "Browse:"
+msgstr "Navega:"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:3
+msgid ""
+"Enter the room name to join here or click on one or more rooms in the list."
+msgstr ""
+"Introduïu el nom de la sala a la qual us voleu unir o feu clic en una o més "
+"sales de la llista."
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:4
+msgid ""
+"Enter the server which hosts the room, or leave it empty if the room is on "
+"the current account's server"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:5
+msgid "Join"
+msgstr "Uneix-te"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:6
+msgid "Join New"
+msgstr "Uneix-te a un nou"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:7
+msgid "Re_fresh"
+msgstr "Ac_tualitza"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:8
+msgid ""
+"This list represents all chat rooms hosted on the server you have entered."
+msgstr ""
+"Aquesta llista representa totes les sales de xat hostatjades al servidor que "
+"heu introduït."
+
+#: ../libempathy-gtk/empathy-main-window.c:278
+msgid "Show and edit accounts"
+msgstr "Mostra i edita els comptes"
+
+#: ../libempathy-gtk/empathy-main-window.c:633
+msgid "Contact"
+msgstr "Contacte"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:1
+msgid "Contact list"
+msgstr "Llista de contactes"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:2
+msgid "Context"
+msgstr "Context"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:3
+msgid "Join _Favorites"
+msgstr "Uneix-te als _favorits"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:5
+msgid "Manage Favorites..."
+msgstr "Gestiona els favorits..."
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:6
+msgid "Show _Offline Contacts"
+msgstr "M_ostra els contactes desconnectats"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:7
+msgid "_About"
+msgstr "_Quant a"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:8
+msgid "_Accounts"
+msgstr "_Comptes"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:11
+msgid "_Contents"
+msgstr "_Continguts"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:13
+msgid "_Help"
+msgstr "A_juda"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:14
+#: ../libempathy-gtk/empathy-status-icon.glade.h:2
+msgid "_New Message..."
+msgstr "_Nou missatge..."
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:15
+msgid "_Personal Information"
+msgstr "Informació _personal"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:16
+msgid "_Preferences"
+msgstr "_Preferències"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:17
+#: ../libempathy-gtk/empathy-status-icon.glade.h:3
+msgid "_Quit"
+msgstr "_Surt"
+
+#: ../libempathy-gtk/empathy-preferences.c:243
+msgid "Language"
+msgstr "Llengua"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:1
+msgid "<b>Appearance</b>"
+msgstr "<b>Aparença</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:2
+msgid "<b>Audio</b>"
+msgstr "<b>Àudio</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:3
+msgid "<b>Behaviour</b>"
+msgstr "<b>Comportament</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:4
+msgid "<b>Contact List</b>"
+msgstr "<b>Llista de contactes</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:5
+msgid "<b>Enable spell checking for languages:</b>"
+msgstr "<b>Habilita la correcció ortogràfica per a les llengües:</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:6
+msgid "<b>Options</b>"
+msgstr "<b>Opcions</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:7
+msgid "<b>Visual</b>"
+msgstr "<b>Visual</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:8
+msgid ""
+"<small>The list of languages reflects only the languages for which you have "
+"a dictionary installed.</small>"
+msgstr ""
+"<small>La llista de llengües només reflecteix les llengües per a les quals "
+"teniu un diccionari instal·lat.</small>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:9
+msgid "Avatars are user chosen images shown in the contact list"
+msgstr ""
+"Els àvatar són imatges seleccionades per l'usuari que es mostren a la llista "
+"de contactes"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:10
+msgid "Chat Th_eme:"
+msgstr "T_ema de xat:"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:11
+msgid "Display notifications when contacts come _online"
+msgstr "Mostra les notificacions quan els contactes es c_onnecten"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:12
+msgid "Enable sounds when _away"
+msgstr "Habilita els sons quan s'està _absent"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:13
+msgid "Enable sounds when _busy"
+msgstr "Habilita els sons quan s'està _ocupat"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:14
+msgid "General"
+msgstr "General"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:15
+msgid "Notifications"
+msgstr "Notificacions"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:16
+msgid "Preferences"
+msgstr "Preferències"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:17
+msgid "Show _avatars"
+msgstr "Mostra els àv_atars"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:18
+msgid "Show _smileys as images"
+msgstr "Mo_stra les emoticones com a imatges"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:19
+msgid "Show co_mpact contact list"
+msgstr "_Mostra la llista de contactes compacta"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:20
+msgid "Sort by _name"
+msgstr "Ordena per _nom"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:21
+msgid "Sort by s_tate"
+msgstr "Ordena per es_tat"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:22
+msgid "Spell Checking"
+msgstr "Correcció ortogràfica"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:23
+msgid "Themes"
+msgstr "Temes"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:24
+msgid "_Open new chats in separate windows"
+msgstr "_Obre xats nous en finestres separades"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:25
+msgid "_Play sound when messages arrive"
+msgstr "Re_produeix un so quan arriben missatges"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:26
+msgid "_Use for chat rooms"
+msgstr "_Utilitza a les sales de xat"
+
+#. Custom messages
+#: ../libempathy-gtk/empathy-presence-chooser.c:690
+msgid "Custom messages..."
+msgstr "Missatges personalitzats..."
+
+#: ../libempathy-gtk/empathy-presence-chooser.glade.h:1
+msgid "Custom message"
+msgstr "Missatge personalitzat"
+
+#: ../libempathy-gtk/empathy-presence-chooser.glade.h:2
+msgid "Message:"
+msgstr "Missatge:"
+
+#: ../libempathy-gtk/empathy-presence-chooser.glade.h:3
+msgid "Save message"
+msgstr "Desa el missatge"
+
+#: ../libempathy-gtk/empathy-presence-chooser.glade.h:4
+msgid "Status:"
+msgstr "Estat:"
+
+#: ../libempathy-gtk/empathy-private-chat.c:188
+#, c-format
+msgid "%s went offline"
+msgstr "%s s'ha desconnectat"
+
+#: ../libempathy-gtk/empathy-private-chat.c:202
+#, c-format
+msgid "%s has come online"
+msgstr "%s s'ha connectat"
+
+#: ../libempathy-gtk/empathy-spell-dialog.c:85
+msgid "Word"
+msgstr "Paraula"
+
+#: ../libempathy-gtk/empathy-spell-dialog.c:258
+msgid "Suggestions for the word"
+msgstr "Suggeriments per a la paraula"
+
+#: ../libempathy-gtk/empathy-spell-dialog.glade.h:1
+msgid "Spell Checker"
+msgstr "Corrector ortogràfic"
+
+#: ../libempathy-gtk/empathy-spell-dialog.glade.h:2
+msgid "Suggestions for the word:"
+msgstr "Suggeriments per a la paraula:"
+
+#: ../libempathy-gtk/empathy-status-icon.c:309
+#, c-format
+msgid ""
+"New message from %s:\n"
+"%s"
+msgstr ""
+"Missatge nou de %s:\n"
+"%s"
+
+#: ../libempathy-gtk/empathy-status-icon.c:569
+#, c-format, fuzzy
+msgid ""
+"Subscription requested for %s\n"
+"Message: %s"
+msgstr "Petició de subscripció nova de %s"
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:1
+msgid "Status"
+msgstr "Estat"
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:4
+msgid "_Show Contact List"
+msgstr "_Mostra la llista de contactes"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:87
+msgid "Classic"
+msgstr "Clàssic"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:88
+msgid "Simple"
+msgstr "Simple"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:89
+msgid "Clean"
+msgstr "Net"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:90
+msgid "Blue"
+msgstr "Blau"
+
+#: ../src/empathy.c:274
+msgid "Don't connect on startup"
+msgstr "No connectes en iniciar"
+
+#: ../src/empathy.c:285
+msgid "- Empathy Instant Messenger"
+msgstr "- Missatgeria instantània Empathy"
+
+#~ msgid "Gossip Instant Messenger"
+#~ msgstr "Missatgeria instantània Gossip"
+
+#~ msgid "The default location for file transfers to be saved to"
+#~ msgstr "La ubicació per defecte per a les transferències de fitxers desades"
+
+#~ msgid ""
+#~ "This is updated each time the user changes the location they wish to save "
+#~ "the file to so that the last location used to save file transfers can be "
+#~ "used without prompting the user each time."
+#~ msgstr ""
+#~ "Això s'actualitza cada vegada que l'usuari canvia la ubicació on volen "
+#~ "desar el fitxer per a que sempre s'utilitze l'última ubicació per a desar "
+#~ "les transferències de fitxers sense haver de preguntar a l'usuari cada "
+#~ "vegada."
+
+#~ msgid "Normal"
+#~ msgstr "Normal"
+
+#~ msgid "Joining"
+#~ msgstr "S'està entrant"
+
+#~ msgid "Active"
+#~ msgstr "Actiu"
+
+#~ msgid "Inactive"
+#~ msgstr "Inactiu"
+
+#~ msgid "Error"
+#~ msgstr "Error"
+
+#~ msgid "Moderator"
+#~ msgid_plural "Moderators"
+#~ msgstr[0] "Moderador"
+#~ msgstr[1] "Moderadors"
+
+#~ msgid "Participant"
+#~ msgid_plural "Participants"
+#~ msgstr[0] "Participant"
+#~ msgstr[1] "Participants"
+
+#~ msgid "Visitor"
+#~ msgid_plural "Visitors"
+#~ msgstr[0] "Visitant"
+#~ msgstr[1] "Visitants"
+
+#~ msgid "No role"
+#~ msgstr "Cap rol"
+
+#~ msgid "Owner"
+#~ msgid_plural "Owners"
+#~ msgstr[0] "Propietari"
+#~ msgstr[1] "Propietaris"
+
+#~ msgid "Administrator"
+#~ msgid_plural "Administrators"
+#~ msgstr[0] "Administrador"
+#~ msgstr[1] "Administradors"
+
+#~ msgid "Member"
+#~ msgid_plural "Members"
+#~ msgstr[0] "Membre"
+#~ msgstr[1] "Menbres"
+
+#~ msgid "Outcast"
+#~ msgid_plural "Outcasts"
+#~ msgstr[0] "Rebutjat"
+#~ msgstr[1] "Rebutjats"
+
+#~ msgid "No affiliation"
+#~ msgstr "Sense afiliació"
+
+#~ msgid ""
+#~ "The chat room you tried to join requires a password. You either failed to "
+#~ "supply a password or the password you tried was incorrect."
+#~ msgstr ""
+#~ "La sala de xat a la qual heu intentat unir-vos requereix una contrasenya. "
+#~ "No heu introduït una contrasenya, o aquesta era incorrecta."
+
+#~ msgid "You have been banned from this chatroom."
+#~ msgstr "Heu estat bandejats d'aquesta sala de xat."
+
+#~ msgid "The conference room you tried to join could not be found."
+#~ msgstr ""
+#~ "No s'ha trobat la sala de conferències a la qual heu intentat unir-vos."
+
+#~ msgid "Chatroom creation is restricted on this server."
+#~ msgstr "La creació de sales de xat és restringida en aquest servidor."
+
+#~ msgid "Chatroom reserved nick names must be used on this server."
+#~ msgstr ""
+#~ "En aquest servidor s'ha d'utilitzar sobrenoms reservats per a cada sala."
+
+#~ msgid "You are not on the chatroom's members list."
+#~ msgstr "No sou a la llista de membres de la sala de xat."
+
+#~ msgid "The nickname you have chosen is already in use."
+#~ msgstr "El sobrenom que heu triat ja està en ús."
+
+#~ msgid "The maximum number of users for this chatroom has been reached."
+#~ msgstr "S'ha assolit el nombre màxim d'usuaris per a aquesta sala de xat."
+
+#~ msgid "The remote conference server did not respond in a sensible time."
+#~ msgstr ""
+#~ "El servidor de conferències remot no ha contestat en un temps raonable."
+
+#~ msgid "An unknown error occurred, check your details are correct."
+#~ msgstr ""
+#~ "S'ha produït un error desconegut, comproveu que els vostres detalls són "
+#~ "correctes."
+
+#~ msgid "Joining the chatroom was canceled."
+#~ msgstr "S'ha cancel·lat la unió a la sala de xat."
+
+#~ msgid "Unavailable"
+#~ msgstr "No disponible"
+
+#~ msgid "Service has gone and is no longer available"
+#~ msgstr "El servei ha desaparegut i ja no està disponible"
+
+#~ msgid "Bad or malformed request to this service"
+#~ msgstr "Petició incorrecta o malformada a aquest servei"
+
+#~ msgid "Unauthorized request to this service"
+#~ msgstr "Petició no autoritzada a aquest servei"
+
+#~ msgid "Payment is required for this service"
+#~ msgstr "Es requereix pagament per a aquest servei"
+
+#~ msgid "This service is forbidden"
+#~ msgstr "Aquest servei és prohibit"
+
+#~ msgid "This service is unavailable or not found"
+#~ msgstr "Aquest servei no és disponible o no s'ha trobat"
+
+#~ msgid "Unacceptable request sent to this services"
+#~ msgstr "Petició inacceptable enviada a aquest servei"
+
+#~ msgid "Registration is required"
+#~ msgstr "Es requereix l'enregistrament"
+
+#~ msgid "There was a conflict of interest trying to use this service"
+#~ msgstr "Hi havia un conflicte d'interessos en tractar d'usar aquest servei"
+
+#~ msgid "There was an internal service error"
+#~ msgstr "S'ha produït un error intern del servei"
+
+#~ msgid "This feature is not implemented"
+#~ msgstr "Aquesta funcionalitat no està implementada"
+
+#~ msgid "The remote service timed out"
+#~ msgstr "S'ha esgotat el temps d'espera per al servei remot"
+
+#~ msgid "new account"
+#~ msgstr "compte nou"
+
+#~ msgid "Home"
+#~ msgstr "Casa"
+
+#~ msgid "Couldn't send message!"
+#~ msgstr "No s'ha pogut enviar el missatge!"
+
+#~ msgid "Connection could not be opened"
+#~ msgstr "No s'ha pogut obrir la connexió"
+
+#~ msgid "An unknown error occurred."
+#~ msgstr "S'ha produït un error desconegut."
+
+#~ msgid "Connection refused."
+#~ msgstr "S'ha rebutjat la connexió."
+
+#~ msgid "Server address could not be resolved."
+#~ msgstr "No s'ha pogut resoldre l'adreça del servidor."
+
+#~ msgid "Connection timed out."
+#~ msgstr "S'ha exhaurit el temps d'espera de la connexió."
+
+#~ msgid "Authentication failed."
+#~ msgstr "Ha fallat l'autenticació."
+
+#~ msgid "The username you are trying already exists."
+#~ msgstr "El nom d'usuari que esteu intentant fer servir ja existeix."
+
+#~ msgid "The username you are trying is not valid."
+#~ msgstr "El nom d'usuari que esteu intentant fer servir no és vàlid."
+
+#~ msgid "This feature is unavailable."
+#~ msgstr "Aquesta funcionalitat no està disponible."
+
+#~ msgid "This feature is unauthorized."
+#~ msgstr "Aquesta funcionalitat no està autoritzada."
+
+#~ msgid "A specific protocol error occurred that was unexpected."
+#~ msgstr "S'ha produït un error de protocol específic inesperat."
+
+#~ msgid "The other party disconnected"
+#~ msgstr "L'altra part s'ha desconnectat"
+
+#~ msgid "A protocol error occurred during the transfer"
+#~ msgstr "S'ha produït un error de protocol durant la transferència"
+
+#~ msgid "Unable to connect to the other party"
+#~ msgstr "No s'ha pogut connectar a l'altra part"
+
+#~ msgid "File name is too long"
+#~ msgstr "El nom del fitxer és massa llarg"
+
+#~ msgid "File doesn't exist"
+#~ msgstr "El fitxer no existeix"
+
+#~ msgid "File is a directory"
+#~ msgstr "El fitxer és un directori"
+
+#~ msgid "Read only file system"
+#~ msgstr "Sistema de fitxers de només lectura"
+
+#~ msgid "File is busy"
+#~ msgstr "El fitxer està ocupat"
+
+#~ msgid "Bad memory"
+#~ msgstr "Memòria invàlida"
+
+#~ msgid "Too many levels of symbolic links"
+#~ msgstr "Massa nivells d'enllaços simbòlics"
+
+#~ msgid "No space is available"
+#~ msgstr "No hi ha espai disponible"
+
+#~ msgid "Virtual memory exhausted"
+#~ msgstr "S'ha exhaurit la memòria virtual"
+
+#~ msgid "Too many open files"
+#~ msgstr "Hi ha massa fitxers oberts"
+
+#~ msgid "Input/output error"
+#~ msgstr "Error d'Entrada/Sortida"
+
+#~ msgid "File is too large"
+#~ msgstr "El fitxer és massa gran"
+
+#~ msgid "Unknown error"
+#~ msgstr "Error desconegut"
+
+#~ msgid "Stop"
+#~ msgstr "Atura"
+
+#~ msgid "Disconnect"
+#~ msgstr "Desconnecta"
+
+#~ msgid "Connect"
+#~ msgstr "Connecta"
+
+#~ msgid "Successfully registered your new account settings."
+#~ msgstr "S'ha registrat els nous paràmetres del compte."
+
+#~ msgid "You should now be able to connect to your new account."
+#~ msgstr "Ara hauríeu de poder connectar al vostre compte nou."
+
+#~ msgid "Failed to register your new account settings."
+#~ msgstr "No s'han pogut enregistrar els nous paràmetres del compte."
+
+#~ msgid "Successfully changed your account password."
+#~ msgstr "S'ha canviat la contrasenya correctament."
+
+#~ msgid "You should now be able to connect with your new password."
+#~ msgstr "Ara haurieu de poder connectar amb la vostra contrasenya nova."
+
+#~ msgid "Failed to change your account password."
+#~ msgstr "No s'ha pogut canviar la contrasenya del compte."
+
+#~ msgid ""
+#~ "Please enter a new password for this account:\n"
+#~ "%s"
+#~ msgstr ""
+#~ "Introduïu una contrasenya nova per a aquest compte:\n"
+#~ "%s"
+
+#~ msgid "No information is available for this contact."
+#~ msgstr "No hi ha informació disponible per a aquest contacte."
+
+#~ msgid "Information requested, please wait..."
+#~ msgstr "S'ha demanat la informació, espereu, si us plau..."
+
+#~ msgid "To summarize:"
+#~ msgstr "En resum:"
+
+#~ msgid "%d subscription request"
+#~ msgid_plural "%d subscription requests"
+#~ msgstr[0] "%d petició de subscripció"
+#~ msgstr[1] "%d peticions de subscripció"
+
+#~ msgid "%d file transfer request"
+#~ msgid_plural "%d file transfer requests"
+#~ msgstr[0] "%d petició de transferència de fitxer"
+#~ msgstr[1] "%d peticions de transferència de fitxer"
+
+#~ msgid "%d server message"
+#~ msgid_plural "%d server messages"
+#~ msgstr[0] "%d missatge del servidor"
+#~ msgstr[1] "%d missatges del servidor"
+
+#~ msgid "%d error"
+#~ msgid_plural "%d errors"
+#~ msgstr[0] "%d error"
+#~ msgstr[1] "%d errors"
+
+#~ msgid "If you quit, you will lose all unread information."
+#~ msgstr "Si sortiu, perdreu tota la informació no llegida."
+
+#~ msgid "Gossip is still running, it is just hidden."
+#~ msgstr "El Gossip encara s'està executant, només està amagat."
+
+#~ msgid "Click on the notification area icon to show Gossip."
+#~ msgstr "Feu clic a l'àrea de notificació per a mostrar el Gossip."
+
+#~ msgid "You were about to quit!"
+#~ msgstr "Estàveu a punt de sortir!"
+
+#~ msgid ""
+#~ "Since no system or notification tray has been found, this action would "
+#~ "normally quit Gossip.\n"
+#~ "\n"
+#~ "This is just a reminder, from now on, Gossip will quit when performing "
+#~ "this action unless you uncheck the option below."
+#~ msgstr ""
+#~ "Com no s'ha trobat una safata del sistema o de notificació, aquesta acció "
+#~ "normalment sortiria del Gossip.\n"
+#~ "\n"
+#~ "Això només és un recordatori, des d'ara Gossip sortirà quan realitzeu "
+#~ "aquesta acció a no ser que desmarqueu la següent opció."
+
+#~ msgid "Edit Account _Details"
+#~ msgstr "Edita els _detalls del compte"
+
+#~ msgid "Click to enlarge"
+#~ msgstr "Feu clic per a fer gran"
+
+#~ msgid "Select who would you like to invite to room:"
+#~ msgstr "Seleccioneu a qui us agradaria convidar a la sala:"
+
+#~ msgid "Select which room you would like to invite:"
+#~ msgstr "Seleccioneu a quina sala voldrieu convidar:"
+
+#~ msgid "Your invitation has been declined"
+#~ msgstr "S'ha declinat la vostra invitació"
+
+#~ msgid "Accept"
+#~ msgstr "Accepta"
+
+#~ msgid "Decline"
+#~ msgstr "Declina"
+
+#~ msgid "Server"
+#~ msgstr "Servidor"
+
+#~ msgid "Emai_l..."
+#~ msgstr "Correu e_lectrònic..."
+
+#~ msgid "Do you want to remove this contact from your roster?"
+#~ msgstr "Voleu eliminar aquest contacte de la llista de contactes?"
+
+#~ msgid ""
+#~ "Please enter a new name for the group:\n"
+#~ "%s"
+#~ msgstr ""
+#~ "Introduïu un nom nou per al grup:\n"
+#~ "%s"
+
+#~ msgid "Unsorted"
+#~ msgstr "Sense ordenar"
+
+#~ msgid ""
+#~ "Set the alias you want to use for:\n"
+#~ "<b>%s</b>\n"
+#~ "\n"
+#~ "You can retrieve contact information from the server."
+#~ msgstr ""
+#~ "Establiu l'àlias que voleu usar per a:\n"
+#~ "<b>%s</b>\n"
+#~ "\n"
+#~ "Podeu obtenir informació del contacte des del servidor."
+
+#~ msgid "New file transfer request from %s"
+#~ msgstr "Petició de transferència de fitxer nova de %s"
+
+#~ msgid "Your file transfer offer declined."
+#~ msgstr "S'ha declinat el vostre oferiment de transferència."
+
+#~ msgid "The other user decided not to continue."
+#~ msgstr "L'altre usuari ha decidit no continuar."
+
+#~ msgid "Unable to complete the file transfer."
+#~ msgstr "No s'ha pogut completar la transferència del fitxer."
+
+#~ msgid "Unable to start the file transfer."
+#~ msgstr "No s'ha pogut iniciar la transferència del fitxer."
+
+#~ msgid "File transfer is not supported by both parties."
+#~ msgstr "La transferència de fitxers no està suportada pels dos usuaris."
+
+#~ msgid "An unknown error occurred during file transfer."
+#~ msgstr ""
+#~ "S'ha produït un error desconegut durant la transferència del fitxer."
+
+#~ msgid "Transfer complete"
+#~ msgstr "Transferència completa"
+
+#~ msgid "The file has been transfered successfully."
+#~ msgstr "S'ha transferit el fitxer correctament."
+
+#~ msgid "Transferring file"
+#~ msgstr "S'està transferint el fitxer"
+
+#~ msgid "Please wait while the file is transferred"
+#~ msgstr "Espereu mentre es transfereix el fitxer"
+
+#~ msgid "%s would like to send you a file"
+#~ msgstr "%s vol enviar-vos un fitxer"
+
+#~ msgid "Someone would like to send you a file"
+#~ msgstr "Algú vol enviar-vos un fitxer"
+
+#~ msgid "Do you want to accept this file?"
+#~ msgstr "Voleu acceptar aquest fitxer?"
+
+#~ msgid "Attempting to send file to %s"
+#~ msgstr "S'està tractant d'enviar el fitxer a %s"
+
+#~ msgid "Attempting to send file"
+#~ msgstr "S'està tractant d'enviar el fitxer"
+
+#~ msgid "Please wait while the other participant responds"
+#~ msgstr "Espereu mentre l'altre participant respon"
+
+#~ msgid "Select a file"
+#~ msgstr "Seleccioneu un fitxer"
+
+#~ msgid "Connecting..."
+#~ msgstr "S'està connectant..."
+
+#~ msgid "Retry connection"
+#~ msgstr "Torna a intentar la connexió"
+
+#~ msgid "Invited %s to join this chat conference."
+#~ msgstr "S'ha convidat a %s a unir-se a aquesta conferència de xat."
+
+#~ msgid "You have been kicked from this room"
+#~ msgstr "Heu estat expulsats d'aquesta sala de xat"
+
+#~ msgid "%s has set the topic: %s"
+#~ msgstr "%s ha establert el tema: %s"
+
+#~ msgid "Enter the new nickname you want to be know by:"
+#~ msgstr "Introduïu l'àlies nou pel qual voleu que us coneguen:"
+
+#~ msgid ""
+#~ "What reason do you want to give for removing this user from the room?"
+#~ msgstr "Quina raó voleu donar per a expulsar aquest usuari de la sala?"
+
+#~ msgid "You have been removed from the room by an administrator."
+#~ msgstr "Heu estat expulsats de la sala per l'administrador."
+
+#~ msgid "Do not show this again"
+#~ msgstr "No mostres això de nou"
+
+#~ msgid "Conversation With"
+#~ msgstr "Conversa amb"
+
+#~ msgid "Allow multiple instances of the application to run at the same time"
+#~ msgstr "Permet que s'executen diverses instàncies de l'aplicació a l'hora"
+
+#~ msgid "List the available accounts"
+#~ msgstr "Llista els comptes disponibles"
+
+#~ msgid "Which account to connect to on startup"
+#~ msgstr "A quin compte connectar en iniciar"
+
+#~ msgid "ACCOUNT-NAME"
+#~ msgstr "NOM-COMPTE"
+
+#~ msgid "You can not use --no-connect together with --account"
+#~ msgstr "No podeu utilitzar --no-connect amb --account"
+
+#~ msgid "No accounts available."
+#~ msgstr "No hi ha comptes disponibles."
+
+#~ msgid "Available accounts:"
+#~ msgstr "Comptes disponibles:"
+
+#~ msgid "[default]"
+#~ msgstr "[predeterminat]"
+
+#~ msgid "There is no account with the name '%s'."
+#~ msgstr "No hi ha cap compte amb el nom «%s»."
+
+#~ msgid "Create"
+#~ msgstr "Crea"
+
+#~ msgid "Rooms"
+#~ msgstr "Sales"
+
+#~ msgid "Users"
+#~ msgstr "Usuaris"
+
+#~ msgid "Description"
+#~ msgstr "Descripció"
+
+#~ msgid "Found %d conference room"
+#~ msgid_plural "Found %d conference rooms"
+#~ msgstr[0] "S'ha trobat %d sala de xat"
+#~ msgstr[1] "S'han trobat %d sales de xat"
+
+#~ msgid "Browsing for conference rooms, please wait..."
+#~ msgstr "S'estan cercant sales de xat, espereu..."
+
+#~ msgid "Browsing cancelled!"
+#~ msgstr "S'ha cancel·lat la cerca."
+
+#~ msgid "Default"
+#~ msgstr "Predeterminat"
+
+#~ msgid "Chat!"
+#~ msgstr "Xateja!"
+
+#~ msgid "%s wants to be added to your contact list for your '%s' account."
+#~ msgstr ""
+#~ "%s vol afegir-se a la vostra llista de contactes per al vostre compte «%"
+#~ "s»."
+
+#~ msgid ""
+#~ "Someone wants to be added to your contact list for your '%s' account."
+#~ msgstr ""
+#~ "Algú vol afegir-se a la vostra llista de contactes per al vostre compte «%"
+#~ "s»."
+
+#~ msgid "%s wants to be added to your contact list."
+#~ msgstr "%s vol afegir-se a la vostra llista de contactes."
+
+#~ msgid "Someone wants to be added to your contact list."
+#~ msgstr "Algú vol afegir-se a la vostra llista de contactes."
+
+#~ msgid "Subscription request"
+#~ msgstr "Petició de subscripció"
+
+#~ msgid "Show"
+#~ msgstr "Mostra"
+
+#~ msgid "Contact Information"
+#~ msgstr "Informació del contacte"
+
+#~ msgid "Are you sure you want to clear the list?"
+#~ msgstr "Esteu segur de voler buidar la llista?"
+
+#~ msgid ""
+#~ "This will remove any custom messages you have added to the list of preset "
+#~ "status messages."
+#~ msgstr ""
+#~ "Això suprimirà qualsevol missatge personalitzat que hagueu afegit a la "
+#~ "llista de missatges d'estat preestablerts."
+
+#~ msgid "Clear List"
+#~ msgstr "Neteja la llista"
+
+#~ msgid "Clear List..."
+#~ msgstr "Neteja la llista..."
+
+#~ msgid "Contact has been removed"
+#~ msgstr "S'ha suprimit el contacte"
+
+#~ msgid "Subject: %s"
+#~ msgstr "Assumpte: %s"
+
+#~ msgid "Do you want to add this person to your contact list?"
+#~ msgstr "Voleu afegir a aquesta persona a la vostra llista de contactes?"
+
+#~ msgid "Do you want to add %s to your contact list?"
+#~ msgstr "Voleu afegir a %s a la vostra llista de contactes?"
+
+#~ msgid "Please enter your %s account password"
+#~ msgstr "Si us plau, introduïu la contrasenya per al compte %s"
+
+#~ msgid "Logging in to account '%s'"
+#~ msgstr "S'està entrant al compte «%s»"
+
+#~ msgid "Remember Password?"
+#~ msgstr "Voleu que es recorde la contrasenya?"
+
+#~ msgid "Could not display the help contents."
+#~ msgstr "No s'han pogut mostrar els continguts de l'ajuda."
+
+#~ msgid "Select Your Avatar Image"
+#~ msgstr "Seleccioneu la vostra imatge d'àvatar"
+
+#~ msgid "No Image"
+#~ msgstr "Cap imatge"
+
+#~ msgid "The server does not seem to be responding."
+#~ msgstr "Sembla que el servidor no està responent."
+
+#~ msgid "Try again later."
+#~ msgstr "Proveu-ho més tard."
+
+#~ msgid "Change"
+#~ msgstr "Canvia"
+
+#~ msgid "Contact goes offline"
+#~ msgstr "El contacte s'ha desconnectat"
+
+#~ msgid "Contact goes online"
+#~ msgstr "El contacte s'ha connectat"
+
+#~ msgid "Change Na_me..."
+#~ msgstr "Canvia el no_m..."
+
+#~ msgid "Send _Email..."
+#~ msgstr "_Envia un correu electrònic..."
+
+#~ msgid "_Kick..."
+#~ msgstr "E_xpulsa..."
+
+#~ msgid "Contact ID:"
+#~ msgstr "ID del contacte:"
+
+#~ msgid "File Transfer"
+#~ msgstr "Transferència de fitxer"
+
+#~ msgid "Location:"
+#~ msgstr "Ubicació:"
+
+#~ msgid "Name:"
+#~ msgstr "Nom:"
+
+#~ msgid "Not supported yet"
+#~ msgstr "Encara no està implementat"
+
+#~ msgid "Open _Folder"
+#~ msgstr "Obre la _carpeta"
+
+#~ msgid "Select A File"
+#~ msgstr "Seleccioneu un fitxer"
+
+#~ msgid "Size:"
+#~ msgstr "Mida:"
+
+#~ msgid ""
+#~ "Show more information about chatrooms found and make the window resizable."
+#~ msgstr ""
+#~ "Mostra més informació sobre les sales de xat trobades i fes la finestra "
+#~ "redimensionable."
+
+#~ msgid "_Password"
+#~ msgstr "Con_trassenya"
+
+#~ msgid "-"
+#~ msgstr "-"
+
+#~ msgid "<b>About</b>"
+#~ msgstr "<b>Quant a</b>"
+
+#~ msgid "<b>Account</b>"
+#~ msgstr "<b>Compte</b>"
+
+#~ msgid "<b>Languages</b>"
+#~ msgstr "<b>Llengües</b>"
+
+#~ msgid "<b>Name</b>"
+#~ msgstr "<b>Nom</b>"
+
+#~ msgid "<b>Personal Details</b>"
+#~ msgstr "<b>Detalls personals</b>"
+
+#~ msgid "<b>Status</b>"
+#~ msgstr "<b>Estat</b>"
+
+#~ msgid "<b>Subscription</b>"
+#~ msgstr "<b>Subscripció</b>"
+
+#~ msgid "<span size=\"smaller\">Example: Mikael or user@server.org</span>"
+#~ msgstr "<span size=\"smaller\">Exemple: Pere o usuari@jabber.org</span>"
+
+#~ msgid ""
+#~ "<span size=\"smaller\">Note: You must select an account if the contact is "
+#~ "unknown</span>"
+#~ msgstr ""
+#~ "<span size=\"smaller\">Nota: Heu de seleccionar un compte si el contacte "
+#~ "és desconegut</span>"
+
+#~ msgid "A unique name for this account to identify it personally to you."
+#~ msgstr "Un nom únic per a aquest compte que us ajude a identificar-lo."
+
+#~ msgid "Accou_nt:"
+#~ msgstr "Com_pte:"
+
+#~ msgid "Add Contact"
+#~ msgstr "Afegeix un contacte"
+
+#~ msgid "Avatar:"
+#~ msgstr "Àvatar:"
+
+#~ msgid "C_hange"
+#~ msgstr "Ca_nvia"
+
+#~ msgid "Ch_at"
+#~ msgstr "X_at"
+
+#~ msgid "Con_tact:"
+#~ msgstr "Con_tacte:"
+
+#~ msgid "Connect on S_tartup"
+#~ msgstr "Connec_ta en iniciar"
+
+#~ msgid "Contact List - Gossip"
+#~ msgstr "_Mostra la llista de contactes"
+
+#~ msgid "Country:"
+#~ msgstr "Estat:"
+
+#~ msgid "Edit Contact"
+#~ msgstr "Edita el contacte"
+
+#~ msgid "Edit Groups"
+#~ msgstr "Edita els grups"
+
+#~ msgid "Enter status message:"
+#~ msgstr "Introduïu el missatge d'estat:"
+
+#~ msgid "ID:"
+#~ msgstr "ID:"
+
+#~ msgid ""
+#~ "If you chose to decide later you will be asked the next time you log on."
+#~ msgstr ""
+#~ "Si trieu decidir-ho més tard, se us tornarà a preguntar la pròxima vegada "
+#~ "que entreu."
+
+#~ msgid "Imendio "
+#~ msgstr "Imendio"
+
+#~ msgid "Personal Details"
+#~ msgstr "Detalls personals"
+
+#~ msgid "R_egister"
+#~ msgstr "R_egistra'm..."
+
+#~ msgid ""
+#~ "Set the alias you want to use for:\n"
+#~ "<b>foo@bar.baz</b>\n"
+#~ "\n"
+#~ "You can retrieve contact information from the server. "
+#~ msgstr ""
+#~ "Establiu l'àlias que voleu usar per a:\n"
+#~ "<b>foo@bar.baz</b>\n"
+#~ "\n"
+#~ "Podeu obtenir informació del contacte des del servidor. "
+
+#~ msgid "Status Message Presets"
+#~ msgstr "Missatges d'estat predefinits"
+
+#~ msgid ""
+#~ "This acts as a filter to the contact list below.\n"
+#~ "\n"
+#~ "You can use segments of contact's name or ID, for example, \"jabber.org\" "
+#~ "will list everyone using that server.\n"
+#~ "\n"
+#~ "You can also use the name of a group to show only contacts in a specific "
+#~ "group."
+#~ msgstr ""
+#~ "Això actua com un filtre per a la llista de contactes següent.\n"
+#~ "\n"
+#~ "Podeu utilitzar segments del nom del contacte o ID; per exemple, «jabber."
+#~ "org» mostrarà a tothom que utilitze aquest servidor.\n"
+#~ "\n"
+#~ "També podeu utilitzar el nom d'un grup per a mostrar només contactes d'un "
+#~ "grup específic."
+
+#~ msgid ""
+#~ "This acts as a filter to the contact list below. You can use segments of "
+#~ "contact's name or ID, for example, \"jabber.org\" will list everyone "
+#~ "using that server"
+#~ msgstr ""
+#~ "Això actua com un filtre per a la llista de contactes. Podeu utilitzar "
+#~ "segments del nom del contacte o ID; per exemple, «jabber.org» mostrarà a "
+#~ "tothom que utilitze aquest servidor"
+
+#~ msgid "This is the name that will be used on your roster for this contact"
+#~ msgstr ""
+#~ "Aquest és el nom que s'utilitzarà per a aquest contacte a la vostra "
+#~ "llista de contactes"
+
+#~ msgid "This name will be used to identify you in chat windows"
+#~ msgstr "Aquest nom s'usarà per a indentificar-vos en les finestres de xat"
+
+#~ msgid ""
+#~ "This name will be used to identify you when new contacts lookup your "
+#~ "details"
+#~ msgstr ""
+#~ "Aquest nom s'usarà per a indentificar-vos quan contactes nous cerquen els "
+#~ "vostres detalls"
+
+#~ msgid "Use default name here from the contact's VCard."
+#~ msgstr "Utilitza ací el nom per defecte de l'VCard del contacte."
+
+#~ msgid "Use system pro_xy"
+#~ msgstr "Utilitza el _servidor intermediari del sistema"
+
+#~ msgid "Which account do you want to use?"
+#~ msgstr "Quin compte voleu utilitzar?"
+
+#~ msgid "You are not subscribed to this contact."
+#~ msgstr "No esteu subscrit a aquest contacte."
+
+#~ msgid "_Accept"
+#~ msgstr "_Accepta"
+
+#~ msgid "_Add to status message list"
+#~ msgstr "_Afegeix a la llista de missatges d'estat"
+
+#~ msgid "_Birthday:"
+#~ msgstr "Ani_versari:"
+
+#~ msgid "_Connect"
+#~ msgstr "_Connecta"
+
+#~ msgid "_Deny"
+#~ msgstr "_Denega"
+
+#~ msgid "_Description:"
+#~ msgstr "_Descripció:"
+
+#~ msgid "_Disconnect"
+#~ msgstr "_Desconnecta"
+
+#~ msgid "_Enable spell checking"
+#~ msgstr "_Habilita la correcció ortogràfica"
+
+#~ msgid ""
+#~ "_Enter the name or contact ID of the person you want to chat to below:"
+#~ msgstr ""
+#~ "Introduïu el nom o ID d'usuari de la persona amb la qual voleu xatejar:"
+
+#~ msgid "_Group:"
+#~ msgstr "_Grup:"
+
+#~ msgid "_Nick Name:"
+#~ msgstr "Àl_ies:"
+
+#~ msgid "_Password:"
+#~ msgstr "Con_trassenya:"
+
+#~ msgid "_Quit Message:"
+#~ msgstr "Missatge de _desconnexió:"
+
+#~ msgid "_Retrieve"
+#~ msgstr "_Obté"
+
+#~ msgid "_Search"
+#~ msgstr "_Cerca"
+
+#~ msgid "_Subscribe"
+#~ msgstr "_Subscriu"
+
+#~ msgid "_Web site:"
+#~ msgstr "Pàgina _web:"
+
+#~ msgid "irc account settings"
+#~ msgstr "paràmetres del compte irc"
+
+#~ msgid "The chat room you tried to join requires a password."
+#~ msgstr ""
+#~ "La sala de xat a la qual heu intentat unir-vos requereix una contrasenya."
+
+#~ msgid "Using the %s backend"
+#~ msgstr "Usant el rerefons de %s"
+
+#~ msgid "Bye bye"
+#~ msgstr "Adéu siau"
+
+#~ msgid "Cancel"
+#~ msgstr "Cancel·la"
+
+#~ msgid "OK"
+#~ msgstr "D'acord"
+
+#~ msgid "File name:"
+#~ msgstr "Nom del fitxer:"
+
+#~ msgid "File size:"
+#~ msgstr "Mida del fitxer:"
+
+#~ msgid "This person wishes to send you this file:"
+#~ msgstr "Aquesta persona us vol enviar aquest fitxer:"
+
+#~ msgid "Jabber"
+#~ msgstr "Jabber"
+
+#~ msgid "Edit"
+#~ msgstr "Edita"
+
+#~ msgid "Connecting"
+#~ msgstr "S'està connectant"
+
+#~ msgid "Perhaps you are trying to connect to the wrong port?"
+#~ msgstr "Potser us esteu intentant connectar al port incorrecte?"
+
+#~ msgid "Perhaps the service is not currently running?"
+#~ msgstr "Potser el servei no s'està executant actualment?"
+
+#~ msgid "Check your connection details."
+#~ msgstr "Comproveu els detalls de la connexió."
+
+#~ msgid "Perhaps the server is not running this service."
+#~ msgstr "Potser el servidor no està executant aquest servei."
+
+#~ msgid "Check your username and password are correct."
+#~ msgstr "Comproveu que el vostre nom d'usuari i contrasenya són correctes."
+
+#~ msgid "%s will be added to your contact list."
+#~ msgstr "S'afegirà a %s a la vostra llista de contactes."
+
+#~ msgid "%s ID of new contact:"
+#~ msgstr "%s ID del nou contacte:"
+
+#~ msgid "Example: %s"
+#~ msgstr "Exemple: %s"
+
+#~ msgid "Show accounts and pending connections"
+#~ msgstr "Mostra els comptes i les connexions pendents"
+
+#~ msgid "You have no Instant Messaging accounts configured!"
+#~ msgstr "No teniu cap compte de missatgeria instantània configurat!"
+
+#~ msgid ""
+#~ "Next you will be presented with the Account Information dialog to set "
+#~ "your details up."
+#~ msgstr ""
+#~ "A continuació s'obrirà el diàleg d'Informació del compte per a que "
+#~ "establiu els vostres paràmetres."
+
+#~ msgid "Favourite"
+#~ msgstr "Favorit"
+
+#~ msgid "Registering account"
+#~ msgstr "S'està registrant el compte"
+
+#~ msgid "Example"
+#~ msgstr "Exemple"
+
+#~ msgid "Add to _favourites"
+#~ msgstr "Afegeix als _favorits"
+
+#~ msgid ""
+#~ "Customize your own nickname, the server and chatroom which you wish to "
+#~ "join."
+#~ msgstr ""
+#~ "Personalitzeu el vostre sobrenom, el servidor i sala de xat a la qual "
+#~ "voleu entrar."
+
+#~ msgid "Edit your chat room details:"
+#~ msgstr "Editeu els detalls de la sala de xat:"
+
+#~ msgid "Na_me:"
+#~ msgstr "No_m:"
+
+#~ msgid "New Chat Room"
+#~ msgstr "Sala de xat nova"
+
+#~ msgid ""
+#~ "Pick a saved chat room from the presets available below and click Join to "
+#~ "start chatting."
+#~ msgstr ""
+#~ "Seleccioneu una sala de xat desada de les predefinides a continuació i "
+#~ "feu clic en «Uneix-te» per a començar a xatejar."
+
+#~ msgid "Save _this chat room"
+#~ msgstr "Desa aques_ta sala de xat"
+
+#~ msgid " "
+#~ msgstr " "
+
+#~ msgid "<b>Information requested, please wait...</b>"
+#~ msgstr "<b>S'ha demanat la informació, espereu, si us plau...</b>"
+
+#~ msgid "<span size=\"smaller\">Example: user@jabber.org</span>"
+#~ msgstr "<span size=\"smaller\">Exemple: usuari@jabber.org</span>"
+
+#~ msgid "<span size=\"smaller\">Example:</span>"
+#~ msgstr "<span size=\"smaller\">Exemple:</span>"
+
+#~ msgid "Account Name"
+#~ msgstr "Nom del compte"
+
+#~ msgid "Add a contact"
+#~ msgstr "Afegeix un contacte"
+
+#~ msgid "Connection Details"
+#~ msgstr "Detalls de la connexió"
+
+#~ msgid "Do you already have an account set up on a server?"
+#~ msgstr "Teniu ja un compte configurat en un servidor?"
+
+#~ msgid "Enter a name for this account"
+#~ msgstr "Introduïu un nom per a aquest compte"
+
+#~ msgid "Enter the port used in the connection for this account"
+#~ msgstr "Introduïu el port utilitzat en la connexió per a aquest compte"
+
+#~ msgid "Enter the server used in the connection for this account"
+#~ msgstr "Introduïu el servidor utilitzat en la connexió per a aquest compte"
+
+#~ msgid "Enter the user's contact ID:"
+#~ msgstr "Introduïu l'ID de contacte de l'usuari:"
+
+#~ msgid "Enter your real name here"
+#~ msgstr "Introduïu ací el vostre nom real"
+
+#~ msgid "Finished"
+#~ msgstr "Finalitzat"
+
+#~ msgid "For increased security, enable this option"
+#~ msgstr "Per a més seguretat, habiliteu aquesta opció"
+
+#~ msgid "Gossip"
+#~ msgstr "Gossip"
+
+#~ msgid ""
+#~ "Gossip is a modern client for the Jabber Instant Messaging system.\n"
+#~ "\n"
+#~ "This assistant will help you configure Gossip and connect you to your "
+#~ "favorite Jabber server.\n"
+#~ "\n"
+#~ "To get started, just click \"Forward\"."
+#~ msgstr ""
+#~ "Gossip és un client modern per al sistema de missatgeria instantània "
+#~ "Jabber.\n"
+#~ "\n"
+#~ "Aquest assistent vos ajudarà a configurar Gossip i connectar-vos al "
+#~ "vostre\n"
+#~ "servidor de Jabber favorit.\n"
+#~ "\n"
+#~ "Per començar, feu clic en «Endavant»."
+
+#~ msgid "Group:"
+#~ msgstr "Grup:"
+
+#~ msgid ""
+#~ "If you have another machine on your network which 'proxies' the "
+#~ "connection to the internet and you want to use it, enable this option"
+#~ msgstr ""
+#~ "Si teniu un altre ordinador que fa de «servidor intermediari» de la "
+#~ "connexió a Internet i el voleu utilitzar, habiliteu aquesta opció"
+
+#~ msgid ""
+#~ "If you need to set specific connection details, like a different server "
+#~ "or port, you can configure that here:"
+#~ msgstr ""
+#~ "Si necessiteu establir detalls de connexió específics, com un servidor o "
+#~ "port diferent, ho podeu configurar ací:"
+
+#~ msgid ""
+#~ "In order to subscribe to presence notifications from the user, a request "
+#~ "will be sent. Until this request is approved, the user will always be "
+#~ "shown as \"Offline\" in your contact list."
+#~ msgstr ""
+#~ "Per a subscriure a les notificacions de presència de l'usuari, s'enviarà "
+#~ "una petició. Fins que s'aprove aquesta petició, l'usuari es mostrarà "
+#~ "sempre com «Desconnectat» a la vostra llista de contactes."
+
+#~ msgid "In which group do you want to place this contact?"
+#~ msgstr "A quin grup voleu afegir a aquest contacte?"
+
+#~ msgid "Jabber ID:"
+#~ msgstr "Jabber ID:"
+
+#~ msgid ""
+#~ "Leave this blank if you don't want your password stored on a public "
+#~ "machine. If you decide to do this, you will be prompted each time you "
+#~ "connect for a password"
+#~ msgstr ""
+#~ "Deixeu això en blanc si no voleu que s'emmagatzeme la vostra contrasenya "
+#~ "en un ordinador públic. Si decidiu fer això, se us preguntarà per la "
+#~ "contrasenya cada vegada que us connecteu"
+
+#~ msgid "Nickname:"
+#~ msgstr "Àlies:"
+
+#~ msgid "Port:"
+#~ msgstr "Port:"
+
+#~ msgid "Press Subscribe to request to receive their status"
+#~ msgstr "Premeu «Subscriu» per a demanar la recepció del seu estat"
+
+#~ msgid "Registering Account"
+#~ msgstr "S'està registrant el compte"
+
+#~ msgid "Resource:"
+#~ msgstr "Recurs:"
+
+#~ msgid "Sending request"
+#~ msgstr "S'està enviant la petició"
+
+#~ msgid ""
+#~ "Set the alias you want to use for:\n"
+#~ "<b>martyn@imendio.com</b>\n"
+#~ "\n"
+#~ "You can retrieve contact information from the server. "
+#~ msgstr ""
+#~ "Establiu l'àlias que voleu usar per a:\n"
+#~ "<b>martyn@imendio.com</b>\n"
+#~ "\n"
+#~ "Podeu obtenir informació del contacte des del servidor."
+
+#~ msgid "Web Site:"
+#~ msgstr "Pàgina web:"
+
+#~ msgid "Welcome to Gossip"
+#~ msgstr "Benvinguts a Gossip"
+
+#~ msgid "What instant messaging system does the contact use?"
+#~ msgstr "Quin sistema de missatgeria instantània utilitza el contacte?"
+
+#~ msgid "What is your name?"
+#~ msgstr "Quin és el vostre nom?"
+
+#~ msgid ""
+#~ "What name do you want to use to identify this account?\n"
+#~ "\n"
+#~ "This name could be something associated with the service provider, for "
+#~ "example, <b>Google</b>."
+#~ msgstr ""
+#~ "Quin nom voleu utilitzar per a identificar aquest compte?\n"
+#~ "\n"
+#~ "Aquest nom pot ser alguna cosa associada amb el proveidor del servei, per "
+#~ "exemple, <b>Google</b>."
+
+#~ msgid "What password do you want to use?"
+#~ msgstr "Quina contrasenya voleu utilitzar?"
+
+#~ msgid "What username do you use?"
+#~ msgstr "Quin nom d'usuari utilitzeu?"
+
+#~ msgid "What username do you want to use?"
+#~ msgstr "Quin nom d'usuari voleu utilitzar?"
+
+#~ msgid "Which account do you want to add this contact to?"
+#~ msgstr "A quin compte voleu afegir a aquest contacte?"
+
+#~ msgid ""
+#~ "You can change your account settings later by selecting the Edit-"
+#~ ">Accounts menu item."
+#~ msgstr ""
+#~ "Podeu canviar els paràmetres del vostre compte més endavant, seleccionant "
+#~ "l'element del menú «Edita->Comptes»."
+
+#~ msgid ""
+#~ "You need to set a name for the connection, for example, <b>Home</b> or "
+#~ "<b>Laptop</b>."
+#~ msgstr ""
+#~ "Heu d'establir un nom per a la connexió, per exemple <b>Casa</b> o "
+#~ "<b>Portàtil</b>."
+
+#~ msgid "Your Account"
+#~ msgstr "El vostre compte"
+
+#~ msgid "Your Identity"
+#~ msgstr "La vostra identitat"
+
+#~ msgid "Your new account has now been set up."
+#~ msgstr "S'ha configurat el vostre compte nou."
+
+#~ msgid "_Forget"
+#~ msgstr "_Oblida-la"
+
+#~ msgid "_Group Chat"
+#~ msgstr "Xat en _grup"
+
+#~ msgid "_No"
+#~ msgstr "_No"
+
+#~ msgid "_Search..."
+#~ msgstr "_Cerca..."
+
+#~ msgid "_Yes"
+#~ msgstr "_Sí"
+
+#~ msgid "Preset status messages."
+#~ msgstr "Missatges d'estat preestablerts."
+
+#~ msgid ""
+#~ "Please enter your invitation message to:\n"
+#~ "%s"
+#~ msgstr ""
+#~ "Introduïu el vostre missatge d'invitació a:\n"
+#~ "%s"
+
+#~ msgid "Contact Information for %s"
+#~ msgstr "Informació del contacte %s"
+
+#~ msgid "/Contact Infor_mation"
+#~ msgstr "/Infor_mació del contacte"
+
+#~ msgid "/Re_name Contact"
+#~ msgstr "/Rea_nomena el contacte"
+
+#~ msgid "/_Edit Groups"
+#~ msgstr "/_Edita els grups"
+
+#~ msgid "/_View Previous Conversations"
+#~ msgstr "/_Visualitza converses prèvies"
+
+#~ msgid ""
+#~ "Please enter a new nickname for the contact\n"
+#~ "%s"
+#~ msgstr ""
+#~ "Introduïu un àlias nou per al contacte\n"
+#~ "%s"
+
+#~ msgid "Edit groups for %s"
+#~ msgstr "Edita els grups per %s"
+
+#~ msgid "Conversation Log"
+#~ msgstr "Registre de conversa"
+
+#~ msgid "Respond"
+#~ msgstr "Respon!"
+
+#~ msgid "Chat Rooms..."
+#~ msgstr "Sales de xat..."
+
+#~ msgid "_Hide Contact List"
+#~ msgstr "_Amaga la llista de contactes"
+
+#~ msgid "Be silent when away"
+#~ msgstr "Sigues silenciós quan s'està absent"
+
+#~ msgid "Be silent when busy"
+#~ msgstr "Sigues silenciós quan s'està ocupat"
+
+#~ msgid "Height of main window"
+#~ msgstr "Alçada de la finestra principal"
+
+#~ msgid "The X position of the main window."
+#~ msgstr "La posició X de la finestra principal."
+
+#~ msgid "The Y position of the main window."
+#~ msgstr "La posició Y de la finestra principal."
+
+#~ msgid "The width of the main window."
+#~ msgstr "L'amplada de la finestra principal."
+
+#~ msgid "Whether spell checking should be turned on."
+#~ msgstr "Si s'hauria d'habilitar la correcció ortogràfica."
+
+#~ msgid "Width of the main window"
+#~ msgstr "Amplada de la finestra principal"
+
+#~ msgid "X position of main window"
+#~ msgstr "Posició X de la finestra principal"
+
+#~ msgid "Y position of main window"
+#~ msgstr "Posició Y de la finestra principal"
+
+#~ msgid "Gossip, Instant Messaging Client"
+#~ msgstr "Gossip, un client de missatgeria instantània"
+
+#~ msgid "Close this chat window"
+#~ msgstr "Tanca aquesta finestra de xat"
+
+#~ msgid "Requested Information"
+#~ msgstr "Informació sol·licitada"
+
+#~ msgid "Available..."
+#~ msgstr "Disponible..."
+
+#~ msgid "Busy..."
+#~ msgstr "Ocupat..."
+
+#~ msgid "Away..."
+#~ msgstr "Absent..."
+
+#~ msgid "<b>Sound</b>"
+#~ msgstr "<b>So</b>"
+
+#~ msgid "Check spelling while I _type"
+#~ msgstr "Comprova l'ortografia mentre s'escriu"
+
+#~ msgid "Join _Group Chat..."
+#~ msgstr "Entra a un xat en _grup..."
+
+#~ msgid "Requested information."
+#~ msgstr "S'ha demanat la informació."
+
+#~ msgid "Requesting contact information, please wait..."
+#~ msgstr "S'està demanant la informació del contacte, espereu..."
+
+#~ msgid "/_Invite to Chat Conference"
+#~ msgstr "/_Convida a una conferència de xat"
+
+#~ msgid "Contact _Information"
+#~ msgstr "_Informació del contacte"
+
+#~ msgid "Gossip - Accounts"
+#~ msgstr "Gossip - Comptes"
+
+#~ msgid "Por_t:"
+#~ msgstr "Por_t:"
+
+#~ msgid "Open"
+#~ msgstr "Obert"
+
+#~ msgid "Could not find the server you wanted to use"
+#~ msgstr "No s'ha trobat el servidor que volieu utilitzar"
+
+#~ msgid "Connection to the server failed."
+#~ msgstr "Ha fallat la connexió al servidor."
+
+#~ msgid "Authentication failed"
+#~ msgstr "Ha fallat l'autenticació"
+
+#~ msgid "Written by:"
+#~ msgstr "Escrit per:"
+
+#~ msgid "Artwork by:"
+#~ msgstr "Art per:"
+
+#~ msgid "Translated by:"
+#~ msgstr "Traduït per:"
+
+#~ msgid "Account ID"
+#~ msgstr "ID del compte"
+
+#~ msgid "Last Error"
+#~ msgstr "Últim error"
+
+#~ msgid "%sChat - %s"
+#~ msgstr "%sXat - %s"
+
+#~ msgid "/Show _Log"
+#~ msgstr "/Mostra el _registre"
+
+#~ msgid "Afrikaans"
+#~ msgstr "Afrikaans"
+
+#~ msgid "Amharic"
+#~ msgstr "Amhàric"
+
+#~ msgid "Arabic"
+#~ msgstr "Àrab"
+
+#~ msgid "Azerbaijani"
+#~ msgstr "Àzeri"
+
+#~ msgid "Belarusian"
+#~ msgstr "Bielorús"
+
+#~ msgid "Bulgarian"
+#~ msgstr "Búlgar"
+
+#~ msgid "Bengali"
+#~ msgstr "Bengalès"
+
+#~ msgid "Breton"
+#~ msgstr "Bretó"
+
+#~ msgid "Bosnian"
+#~ msgstr "Bosni"
+
+#~ msgid "Catalan"
+#~ msgstr "Català"
+
+#~ msgid "Czech"
+#~ msgstr "Txec"
+
+#~ msgid "Welsh"
+#~ msgstr "Gal·lès"
+
+#~ msgid "Danish"
+#~ msgstr "Danès"
+
+#~ msgid "German"
+#~ msgstr "Alemany"
+
+#~ msgid "German (Austria)"
+#~ msgstr "Alemany (Àustria)"
+
+#~ msgid "German (Germany)"
+#~ msgstr "Alemany (Alemanya)"
+
+#~ msgid "German (Swiss)"
+#~ msgstr "Alemany (Suïssa)"
+
+#~ msgid "Greek"
+#~ msgstr "Grec"
+
+#~ msgid "English"
+#~ msgstr "Anglès"
+
+#~ msgid "English (Canadian)"
+#~ msgstr "Anglès (canadenc)"
+
+#~ msgid "English (British)"
+#~ msgstr "Anglès (britànic)"
+
+#~ msgid "English (American)"
+#~ msgstr "Anglès (americà)"
+
+#~ msgid "Esperanto"
+#~ msgstr "Esperanto"
+
+#~ msgid "Spanish"
+#~ msgstr "Castellà"
+
+#~ msgid "Estonian"
+#~ msgstr "Estonià"
+
+#~ msgid "Persian"
+#~ msgstr "Persa"
+
+#~ msgid "Finnish"
+#~ msgstr "Finès"
+
+#~ msgid "French"
+#~ msgstr "Francès"
+
+#~ msgid "French (France)"
+#~ msgstr "Francès (França)"
+
+#~ msgid "French (Swiss)"
+#~ msgstr "Francès (Suïssa)"
+
+#~ msgid "Irish Gaelic"
+#~ msgstr "Gaèlic irlandès"
+
+#~ msgid "Scots Gaelic"
+#~ msgstr "Gaèlic escocès"
+
+#~ msgid "Gujarati"
+#~ msgstr "Gujarati"
+
+#~ msgid "Manx Gaelic"
+#~ msgstr "Manx"
+
+#~ msgid "Hebrew"
+#~ msgstr "Hebreu"
+
+#~ msgid "Hindi"
+#~ msgstr "Hindi"
+
+#~ msgid "Croatian"
+#~ msgstr "Croat"
+
+#~ msgid "Hungarian"
+#~ msgstr "Hongarès"
+
+#~ msgid "Indonesian"
+#~ msgstr "Indonesi"
+
+#~ msgid "Icelandic"
+#~ msgstr "Islandès"
+
+#~ msgid "Italian"
+#~ msgstr "Italià"
+
+#~ msgid "Japanese"
+#~ msgstr "Japonès"
+
+#~ msgid "Georgian"
+#~ msgstr "Georgià"
+
+#~ msgid "Kannada"
+#~ msgstr "Kannada"
+
+#~ msgid "Korean"
+#~ msgstr "Coreà"
+
+#~ msgid "Kurdish"
+#~ msgstr "Kurd"
+
+#~ msgid "Limburgish"
+#~ msgstr "Limburguès"
+
+#~ msgid "Lithuanian"
+#~ msgstr "Lituà"
+
+#~ msgid "Latvian"
+#~ msgstr "Letó"
+
+#~ msgid "Maori"
+#~ msgstr "Maori"
+
+#~ msgid "Macedonian"
+#~ msgstr "Macedoni"
+
+#~ msgid "Malayalam"
+#~ msgstr "Malailam"
+
+#~ msgid "Mongolian"
+#~ msgstr "Mongol"
+
+#~ msgid "Marathi"
+#~ msgstr "Marati"
+
+#~ msgid "Malay"
+#~ msgstr "Malai"
+
+#~ msgid "Norwegian (Bokmal)"
+#~ msgstr "Noruec (Bokmål)"
+
+#~ msgid "Nepali"
+#~ msgstr "Nepalès"
+
+#~ msgid "Dutch"
+#~ msgstr "Holandès"
+
+#~ msgid "Norwegian"
+#~ msgstr "Noruec"
+
+#~ msgid "Norwegian (Nynorsk)"
+#~ msgstr "Noruec (Nynorsk)"
+
+#~ msgid "Norwegian (Nyorsk)"
+#~ msgstr "Norwegian (Nyorsk)"
+
+#~ msgid "Oriya"
+#~ msgstr "Oriya"
+
+#~ msgid "Punjabi"
+#~ msgstr "Panjabi"
+
+#~ msgid "Polish"
+#~ msgstr "Polonès"
+
+#~ msgid "Portuguese"
+#~ msgstr "Portuguès"
+
+#~ msgid "Portuguese (Portugal)"
+#~ msgstr "Portuguès (Portugal)"
+
+#~ msgid "Portuguese (Brazil)"
+#~ msgstr "Portuguès (Brasil)"
+
+#~ msgid "Romanian"
+#~ msgstr "Romanès"
+
+#~ msgid "Russian"
+#~ msgstr "Rus"
+
+# NOTA: Segons el Termcat (Josep)
+#~ msgid "Kinyarwanda"
+#~ msgstr "Kinyarwanda"
+
+#~ msgid "Slovak"
+#~ msgstr "Eslovac"
+
+#~ msgid "Slovenian"
+#~ msgstr "Eslovè"
+
+#~ msgid "Albanian"
+#~ msgstr "Albanès"
+
+#~ msgid "Serbian"
+#~ msgstr "Serbi"
+
+#~ msgid "Swedish"
+#~ msgstr "Suec"
+
+#~ msgid "Tamil"
+#~ msgstr "Tàmil"
+
+#~ msgid "Telugu"
+#~ msgstr "Telugu"
+
+#~ msgid "Thai"
+#~ msgstr "Tailandès"
+
+#~ msgid "Turkmen"
+#~ msgstr "Turcman"
+
+#~ msgid "Turkish"
+#~ msgstr "Turc"
+
+#~ msgid "Ukrainian"
+#~ msgstr "Ucraïnès"
+
+#~ msgid "Vietnamese"
+#~ msgstr "Vietnamita"
+
+#~ msgid "Wallon"
+#~ msgstr "Való"
+
+#~ msgid "Xhosa"
+#~ msgstr "Xhosa"
+
+# Nota: Segons el Termcat (Josep)
+#~ msgid "Yiddish"
+#~ msgstr "Jiddisch"
+
+#~ msgid "Chinese Simplified"
+#~ msgstr "Xinès simplificat"
+
+#~ msgid "Chinese Traditional"
+#~ msgstr "Xinès tradicional"
+
+#~ msgid "View Lo_g"
+#~ msgstr "Visualitza el re_gistre"
+
+#~ msgid "Gossip - Group Chat"
+#~ msgstr "Gossip - Xat en grup"
+
+#~ msgid "Gossip - New Chatroom"
+#~ msgstr "Gossip - Sala de xat nova"
+
+#~ msgid "Idle"
+#~ msgstr "Inactiu"
+
+#~ msgid "Progress:"
+#~ msgstr "Progrés:"
+
+#~ msgid "Gossip - Add contact"
+#~ msgstr "Gossip - Afegeix un contacte"
+
+#~ msgid "Gossip - Contact Information"
+#~ msgstr "Gossip - Informació del contacte"
+
+#~ msgid "Gossip - Edit Groups"
+#~ msgstr "Gossip - Edita els grups"
+
+#~ msgid "Gossip - New Account"
+#~ msgstr "Gossip - Compte nou"
+
+#~ msgid "Gossip - New Message"
+#~ msgstr "Gossip - Missatge nou"
+
+#~ msgid "Gossip - Personal Details"
+#~ msgstr "Gossip - Detalls personals"
+
+#~ msgid "Gossip - Preferences"
+#~ msgstr "Gossip - Preferències"
+
+#~ msgid "Gossip - Spell Checker"
+#~ msgstr "Gossip - Corrector ortogràfic"
+
+#~ msgid "Gossip - Status Message"
+#~ msgstr "Gossip - missatge d'estat"
+
+#~ msgid "Personal Details Saved!"
+#~ msgstr "S'han desat els detalls personals."
+
+#~ msgid "Waiting for server to respond, please wait..."
+#~ msgstr "S'està esperant a la resposta del servidor, espereu..."
+
+#~ msgid ""
+#~ "You can identify this account with a name, for example, <b>Home</b> or "
+#~ "<b>Work</b>. Choose a name for this account:"
+#~ msgstr ""
+#~ "Podeu identificar aquest compte amb un nom, com per exemple, <b>Casa</b> "
+#~ "o <b>Feina</b>. Seleccioneu un nom per a aquest compte:"
+
+#~ msgid "Redirect"
+#~ msgstr "Redirecció"
+
+#~ msgid "Bad Request"
+#~ msgstr "Petició incorrecta"
+
+#~ msgid "Not Authorized"
+#~ msgstr "No autoritzat"
+
+#~ msgid "Payment Required"
+#~ msgstr "Es requereix pagament"
+
+#~ msgid "Not Found"
+#~ msgstr "No s'ha trobat"
+
+#~ msgid "Not Allowed"
+#~ msgstr "No permés"
+
+#~ msgid "Not Acceptable"
+#~ msgstr "No acceptable"
+
+#~ msgid "Request Timeout"
+#~ msgstr "Temps d'espera esgotat per a la petició"
+
+#~ msgid "Conflict"
+#~ msgstr "Conflicte"
+
+#~ msgid "Remote Server Error"
+#~ msgstr "Error d'un servidor remot"
+
+#~ msgid "Service Unavailable"
+#~ msgstr "Servei no disponible"
+
+#~ msgid "Edit List..."
+#~ msgstr "Edita la llista..."
+
+#~ msgid "Custom"
+#~ msgstr "Personalitzat"
+
+#~ msgid "Gossip will now try to use your account:"
+#~ msgstr "Gossip tractarà d'utilitzar el vostre compte:"
+
+#~ msgid "Gossip will now try to register the account:"
+#~ msgstr "Gossip tractarà d'enregistrar el compte:"
+
+#~ msgid ""
+#~ "If you continue, you will not be able to talk to the 1 contact you are "
+#~ "using this account for!"
+#~ msgstr ""
+#~ "Si continueu, no podreu parlar amb el contacte amb qui esteu utilitzant "
+#~ "aquest compte!"
+
+#~ msgid ""
+#~ "If you continue, you will not be able to add or talk to contacts using "
+#~ "this transport!"
+#~ msgstr ""
+#~ "Si continueu, no podreu afegir o parlar amb els contactes que utilitzen "
+#~ "aquest transport!"
+
+#~ msgid ""
+#~ "If you continue, you will not be able to talk to the %d contacts you are "
+#~ "using this account for!"
+#~ msgstr ""
+#~ "Si continueu, no podreu parlar amb els %d contactes amb els quals esteu "
+#~ "utilitzant aquest compte!"
+
+#~ msgid "Searching Local Services..."
+#~ msgstr "S'estan cercant els serveis locals..."
+
+#~ msgid "Searching Local Services (%d of %d)"
+#~ msgstr "S'estan cercant els serveis locals (%d de %d)"
+
+#~ msgid "Talking to available services..."
+#~ msgstr "S'està communicant amb els serveis disponibles..."
+
+#~ msgid "Searching 3rd Party Services..."
+#~ msgstr "S'estan cercant serveis de tercers..."
+
+#~ msgid "Searching 3rd Party Services (%d of %d)"
+#~ msgstr "S'estan cercant serveis de tercers (%d de %d)"
+
+#~ msgid "Sorry, no services found at this time."
+#~ msgstr "No s'ha trobat cap servei ara mateix."
+
+#~ msgid ""
+#~ "Currently no providers are available for the account type you are trying "
+#~ "to configure. Please try again later."
+#~ msgstr ""
+#~ "Actualment no hi ha proveïdors disponibles per al tipus de compte que "
+#~ "esteu intentant configurar. Intenteu-ho de nou més tard."
+
+#~ msgid "This will be used to configure your account details."
+#~ msgstr ""
+#~ "Això s'utilitzarà per a configurar els vostres paràmetres de compte."
+
+#~ msgid "Unable to Register"
+#~ msgstr "No s'ha pogut registrar"
+
+#~ msgid "The service confirmed the user '%s' is already registered."
+#~ msgstr "El servei ha confirmat que l'usuari «%s» ja està registrat."
+
+#~ msgid ""
+#~ "When registering a token is provided by the service to register with, in "
+#~ "this case, the token has not been sent."
+#~ msgstr ""
+#~ "Quan vos registreu, el servei amb qui us esteu registrent proporciona un "
+#~ "testimoni, però en aquest cas no s'ha enviat cap."
+
+#~ msgid "Please try again, or perhaps another service."
+#~ msgstr "Proveu-ho de nou, o potser un altre servei."
+
+#~ msgid "Configuring Roster"
+#~ msgstr "S'està configurant el roster"
+
+#~ msgid "Registration Successful!"
+#~ msgstr "El registre ha tingut èxit!"
+
+#~ msgid "You are now able to add contacts using this transport."
+#~ msgstr "Ara podeu afegir contactes utilitzant aquest transport."
+
+#~ msgid "Service"
+#~ msgstr "Servei"
+
+#~ msgid "Checking your local service first..."
+#~ msgstr "S'està comprovant el vostre servei local primer..."
+
+#~ msgid ""
+#~ "<b>Configuring your new service...</b>\n"
+#~ "This will take a few moments, please wait."
+#~ msgstr ""
+#~ "<b>S'està configurant el servei nou...</b>\n"
+#~ "Això trigarà uns moments, espereu."
+
+#~ msgid "Registering With Service"
+#~ msgstr "S'està registrant amb el servei"
+
+#~ msgid "Saving personal details, please wait..."
+#~ msgstr "S'estan desant els detalls personals, espereu..."
+
+#~ msgid "*"
+#~ msgstr "*"
+
+#~ msgid "From:"
+#~ msgstr "De:"
+
+#~ msgid "Gossip - Received Message"
+#~ msgstr "Gossip - Missatge rebut"
+
+#~ msgid "In reply to:"
+#~ msgstr "En resposta a:"
+
+#~ msgid "To:"
+#~ msgstr "A:"
+
+#~ msgid "_Reply..."
+#~ msgstr "_Respon..."
+
+#~ msgid "_Send"
+#~ msgstr "_Envia"
+
+#~ msgid "<b>Connect to server</b>"
+#~ msgstr "<b>Connecta a un servidor</b>"
+
+#~ msgid "C_onnect"
+#~ msgstr "C_onnecta"
+
+#~ msgid "Connect _Server:"
+#~ msgstr "_Servidor de connexió:"
+
+#~ msgid "_Resource:"
+#~ msgstr "_Recurs:"
+
+#~ msgid "Imendio Gossip - Group Chat"
+#~ msgstr "Imendio Gossip - Xat en grup"
+
+#~ msgid " "
+#~ msgstr " "
+
+#~ msgid "<b>Personal information</b>"
+#~ msgstr "<b>Informació personal</b>"
+
+#~ msgid "<b>Recommended Services</b>"
+#~ msgstr "<b>Serveis recomanats</b>"
+
+#~ msgid ""
+#~ "<b>Requested service requirements...</b>\n"
+#~ "This will take a few moments, please wait."
+#~ msgstr ""
+#~ "<b>S'han demanat els requeriments del servei...</b>\n"
+#~ "Això trigarà uns moments, espereu."
+
+#~ msgid "<b>Spell Checking</b>"
+#~ msgstr "<b>Correció ortogràfica</b>"
+
+#~ msgid "<i>Information not available</i>"
+#~ msgstr "<i>Informació no disponible</i>"
+
+#~ msgid "Add Another Account"
+#~ msgstr "Afegeix un altre compte"
+
+#~ msgid "Choose a Server"
+#~ msgstr "Seleccioneu un servidor"
+
+#~ msgid "Choose from list:"
+#~ msgstr "Seleccioneu de la llista:"
+
+#~ msgid "Configure Transport"
+#~ msgstr "Configura el transport"
+
+#~ msgid "Configure Transports"
+#~ msgstr "Configura els transports"
+
+#~ msgid "Configuring Service"
+#~ msgstr "Configuració del servei"
+
+#~ msgid "If you prefer, you can specify your own service:"
+#~ msgstr "Si ho preferiu, podeu especificar el vostre propi servei:"
+
+#~ msgid "Information about ..."
+#~ msgstr "Informació sobre..."
+
+#~ msgid "Jabber Account"
+#~ msgstr "Compte Jabber"
+
+#~ msgid "Jabber.com"
+#~ msgstr "Jabber.com"
+
+#~ msgid "Jabber.org"
+#~ msgstr "Jabber.org"
+
+#~ msgid "Nick name:"
+#~ msgstr "Àlies:"
+
+#~ msgid "On what server do you have a Jabber account?"
+#~ msgstr "A quin servidor teniu un compte Jabber?"
+
+#~ msgid "Please complete the details below to set up your account: "
+#~ msgstr "Introduïu els detalls a sota per a configurar el vostre compte:"
+
+#~ msgid "Populating services..."
+#~ msgstr "S'estan emplenant els serveis..."
+
+#~ msgid "Remove Account"
+#~ msgstr "Supimeix el compte"
+
+#~ msgid "Service Details"
+#~ msgstr "Detalls del servei"
+
+#~ msgid "Status Message"
+#~ msgstr "Missatge d'estat"
+
+#~ msgid ""
+#~ "This wizard will allow you to configure your account settings for another "
+#~ "protocol. "
+#~ msgstr ""
+#~ "Aquest auxiliar vos permetrà configurar els vostres paràmetres de compte "
+#~ "per a un altre protocol. "
+
+#~ msgid "Transport Accounts"
+#~ msgstr "Comptes de transports"
+
+#~ msgid "Use a different server"
+#~ msgstr "Utilitza un servidor diferent"
+
+#~ msgid "Which protocol would you like to set up? "
+#~ msgstr "Quin protocol voleu configurar? "
+
+#~ msgid ""
+#~ "You can set the status presets which appear in the presence menu on the "
+#~ "main window here."
+#~ msgstr ""
+#~ "Ací podeu establir els estats preestablerts que apareixen al menú de "
+#~ "presència de la finestra principal."
+
+#~ msgid "You currently have the following accounts set up:"
+#~ msgstr "Actualment teniu els comptes següents configurats:"
+
+#~ msgid "_Connect..."
+#~ msgstr "_Connecta..."
+
+#~ msgid "_Jabber ID of new contact:"
+#~ msgstr "_Jabber ID del nou contacte:"
+
+#~ msgid "What request message do you want to send to %s?"
+#~ msgstr "Quin missatge de petició voleu enviar a %s?"
+
+#~ msgid " "
+#~ msgstr " "
+
+#~ msgid "<b>Available chat rooms</b>"
+#~ msgstr "<b>Sales de xat disponibles</b>"
+
+#~ msgid "<b>Chat room information</b>"
+#~ msgstr "<b>Informació sobre la sala de xat</b>"
+
+#~ msgid "N_ickname:"
+#~ msgstr "Àl_ies:"
+
+#~ msgid "R_emove"
+#~ msgstr "_Elimina"
+
+#~ msgid "_Add"
+#~ msgstr "_Afegeix"
+
+#~ msgid "<b>Preset status messages</b>"
+#~ msgstr "<b>Missatges d'estat preestablerts</b>"
+
+#~ msgid "Add to your contact list"
+#~ msgstr "Afegeix a la llista de contactes"
+
+#~ msgid "What request message do you want to send to ...?"
+#~ msgstr "Quin missatge de petició voleu enviar a ...?"
+
+#~ msgid "Sound"
+#~ msgstr "So"
+
+#~ msgid "Make sure that your account information is correct."
+#~ msgstr "Assegureu-vos que la informació del vostre compte és correcta."
+
+#~ msgid "%s wants to be notified of your status."
+#~ msgstr "%s vol ser notificat del vostre estat."
+
+#~ msgid "You were disconnected from the server. Do you want to reconnect?"
+#~ msgstr "Vos heu desconnectat del servidor. Voleu reconnectar?"
+
+#~ msgid ""
+#~ "Make sure that your account information is correct. The server may also "
+#~ "currently be unavailable."
+#~ msgstr ""
+#~ "Assegureu-vos que la informació del vostre compte és correcta. El "
+#~ "servidor també pot no estar disponible en aquest moment."
+
+#~ msgid "Details:"
+#~ msgstr "Detalls:"
+
+#~ msgid "An error occurred when chatting with %s."
+#~ msgstr "S'ha produït un error mentre es xatejava amb %s."
+
+#~ msgid "Discover Services"
+#~ msgstr "Descobreix serveix"
+
+#~ msgid "_AIM"
+#~ msgstr "_AIM"
+
+#~ msgid "_ICQ"
+#~ msgstr "_ICQ"
+
+#~ msgid "_MSN"
+#~ msgstr "_MSN"
+
+#~ msgid "_Yahoo!"
+#~ msgstr "_Yahoo!"
+
+#~ msgid "subscription_label"
+#~ msgstr "etiqueta de subscripció"
+
+#~ msgid "Gossip Website"
+#~ msgstr "Lloc web del Gossip"
+
+#~ msgid "Gossip, Jabber Client"
+#~ msgstr "Gossip, client de Jabber"
+
+#~ msgid "About to leave..."
+#~ msgstr "Estic a punt de sortir..."
+
+#~ msgid "Autoaway message"
+#~ msgstr "Missatge d'absència automàtica"
+
+#~ msgid "Busy messages"
+#~ msgstr "Missatge d'ocupat"
+
+#~ msgid "Message to show before going away"
+#~ msgstr "Missatge a mostrar abans de canviar a absent"
+
+#~ msgid "Not at the computer"
+#~ msgstr "No estic a l'ordinador"
+
+#~ msgid "Enter the new available message"
+#~ msgstr "Introduïu el nou missatge per «Disponible»"
+
+#~ msgid "Enter the new busy message"
+#~ msgstr "Introduïu el nou missatge per «Ocupat»"
+
+#~ msgid "Enter the new away message"
+#~ msgstr "Introduïu el nou missatge per «Absent»"
+
+#~ msgid "<b>Preset messages for quickly setting your status</b>"
+#~ msgstr ""
+#~ "<b>Preestableix missatges per a establir ràpidament el vostre estat</b>"
+
+#~ msgid "Enter the new message:"
+#~ msgstr "Introduïu el nou missatge:"
+
+#~ msgid "Leave"
+#~ msgstr "Surt"
+
+#~ msgid "New Status Message"
+#~ msgstr "Nou missatge d'estat"
+
+#~ msgid "Reason for being busy:"
+#~ msgstr "Raó per estar ocupat:"
+
+#~ msgid "Reason for leaving:"
+#~ msgstr "Raó per sortir:"
+
+#~ msgid "Just about to leave..."
+#~ msgstr "Estic a punt de sortir..."
+
+#~ msgid "Custom Busy Message..."
+#~ msgstr "Missatge «Ocupat» personalitzat..."
+
+#~ msgid "Leave..."
+#~ msgstr "Surt..."
+
+#~ msgid "New Busy Message"
+#~ msgstr "Nou missatge d'ocupat"
+
+#~ msgid "New Away Message"
+#~ msgstr "Nou missatge d'absència"
+
+#~ msgid "Working"
+#~ msgstr "Treballant"
+
+#~ msgid "Eating"
+#~ msgstr "Menjant"
+
+#~ msgid "Sleeping"
+#~ msgstr "Dormint"
+
+#~ msgid "Preset messages for quickly setting busy status."
+#~ msgstr "Preestableix missatges per a establir ràpidament estats d'ocupat."
+
+#~ msgid ""
+#~ "Note: contacts can belong to multiple groups or they can be in no group "
+#~ "at all."
+#~ msgstr ""
+#~ "Nota: els contactes poden estar en múltiples grups o poden no estar en "
+#~ "cap grup."
+
+#~ msgid "As _Windows"
+#~ msgstr "Com _finestres"
+
+#~ msgid "As a _List"
+#~ msgstr "Com una _llista"
+
+#~ msgid "_Go"
+#~ msgstr "_Vés"
+
+#~ msgid "Open conversations in single window with list view"
+#~ msgstr "Obre els xats a una sola finestra amb una vista de llista"
+
+#~ msgid "Timestamp all messages"
+#~ msgstr "Fica marques de temps a tots els missatges"
+
+#~ msgid "Whether or not to timestamp all messages in conversations."
+#~ msgstr ""
+#~ "Si s'ha de ficar marques de temps o no a tots els missatges als xats."
+
+#~ msgid "[Eating,Sleeping]"
+#~ msgstr "[Menjant,Dormint]"
+
+#~ msgid "[Working]"
+#~ msgstr "[Treballant]"
+
+#~ msgid "Custom Away Message..."
+#~ msgstr "Missatge d'absència personalitzat..."
+
+#~ msgid "Open conversations in a single window with _list view"
+#~ msgstr "Obre els xats en una sola finestra amb una vista de _llista"
+
+#~ msgid ""
+#~ "These messages are used to describe your status when you're about to "
+#~ "leave and when you're away."
+#~ msgstr ""
+#~ "Aquests missatges s'utilitzen per a descriure el vostre estat quan esteu "
+#~ "a punt de sortir i quan esteu absent."
+
+#~ msgid "Use com_pact conversation style"
+#~ msgstr "Utilitza l'estil de xat com_pacte"
+
+#~ msgid "Use sounds to _notify when new messages arrive"
+#~ msgstr "Utilitza sons per a _notificar quan arriben missatges nous"
+
+#~ msgid "_Timestamp all messages"
+#~ msgstr "Fica _marques de temps a tots els missatges"
+
+#~ msgid "%sChat"
+#~ msgstr "%sXat"
+
+#~ msgid "Offline "
+#~ msgstr "Desconnectats"
+
+#~ msgid "Others"
+#~ msgstr "Altres"
+
+#~ msgid "Get _Info"
+#~ msgstr "Obté _informació"
+
+#~ msgid "I'm here"
+#~ msgstr "Estic ací"
+
+#~ msgid "I'm not here right now"
+#~ msgstr "No estic ací ara mateix"
+
+#~ msgid "Available:"
+#~ msgstr "Disponible:"
+
+#~ msgid "Use ta_bs instead of windows for conversations"
+#~ msgstr "Utilitza pes_tanyes en comptes de finestres per als xats"
+
+#~ msgid "Auto away enabled"
+#~ msgstr "Absència automàtica habilitada"
+
+#~ msgid "Extended autoaway time"
+#~ msgstr "Temps per a canviar a absent fa estona automàticament"
+
+#~ msgid ""
+#~ "The number of minutes of idle time before automatically going into \"away"
+#~ "\" mode."
+#~ msgstr ""
+#~ "El nombre de minuts d'inactivitat abans de canviar automàticament al mode "
+#~ "«absent»."
+
+#~ msgid ""
+#~ "The number of minutes of idle time before automatically going into "
+#~ "\"extended away\" mode."
+#~ msgstr ""
+#~ "El nombre de minuts d'inactivitat abans de canviar automàticament al mode "
+#~ "«absent fa estona»."
+
+#~ msgid "Timestamp messages"
+#~ msgstr "Posa marques de temps als missatges"
+
+#~ msgid ""
+#~ "Whether or not to go into \"away\" mode automatically when a certain time "
+#~ "of idling has passed."
+#~ msgstr ""
+#~ "Si s'ha de canviar al mode «absent» automàticament quan ha passat una "
+#~ "certa quantitat de temps."
+
+#~ msgid "Free to chat"
+#~ msgstr "Disponible per xatejar"
+
+#~ msgid "Extended away"
+#~ msgstr "Absent fa estona"
+
+#~ msgid "_Edit Account..."
+#~ msgstr "_Edita el compte..."
+
+#~ msgid "<b>Additional information</b>"
+#~ msgstr "<b>Informació addicional</b>"
+
+#~ msgid "<b>Address</b>"
+#~ msgstr "<b>Adreça</b>"
+
+#~ msgid "<b>Auto away</b>"
+#~ msgstr "<b>Absència automàtica</b>"
+
+#~ msgid "<b>Jabber ID:</b>"
+#~ msgstr "<b>Jabber ID:</b>"
+
+#~ msgid "<b>Setup Finished</b>"
+#~ msgstr "<b>Configuració finalitzada</b>"
+
+#~ msgid "Automatically enter away mode during inactivity"
+#~ msgstr "Entra en mode «Absent» automàticament quan s'està inactiu"
+
+#~ msgid "Enter away mode after"
+#~ msgstr "Entra en mode «Absent» després de"
+
+#~ msgid "I'm away eating dinner, bbiab..."
+#~ msgstr "Estic sopant, tornaré aviat..."
+
+#~ msgid "Presence:"
+#~ msgstr "Presència:"
+
+#~ msgid "Priority:"
+#~ msgstr "Prioritat:"
+
+#~ msgid "Set the status you want to use"
+#~ msgstr "Estableix l'estat que voleu utilitzar"
+
+#~ msgid "_Approve"
+#~ msgstr "_Aprova"
+
+#~ msgid "_Defer"
+#~ msgstr "Retar_da"
+
+#~ msgid "minutes"
+#~ msgstr "minuts"
+
+#~ msgid "Default Account"
+#~ msgstr "Compte predeterminat"
+
+#~ msgid "Could not open the address \"%s\": %s"
+#~ msgstr "No s'ha pogut obrir l'adreça «%s»: %s"
+
+#~ msgid "<b>Available accounts</b>"
+#~ msgstr "<b>Comptes disponibles</b>"
+
+#~ msgid "Use SS_L"
+#~ msgstr "Utilitza SS_L"
+
+#~ msgid "What request message do you want to send to <b>micke</b>?"
+#~ msgstr "Quin missatge de petició voleu enviar a <b>micke</b>?"
+
+#~ msgid "Operating system:"
+#~ msgstr "Sistema operatiu:"
diff --git a/gnome-2-22/po/cs.po b/gnome-2-22/po/cs.po
new file mode 100644
index 000000000..0765e293b
--- /dev/null
+++ b/gnome-2-22/po/cs.po
@@ -0,0 +1,2040 @@
+# Czech translation of gossip.
+# Copyright (C) 2003, 2004 gossip'S COPYRIGHT HOLDER
+# Copyright (C) 2003, 2004 Miloslav Trmac <mitr@volny.cz>
+# This file is distributed under the same license as the gossip package.
+# Miloslav Trmac <mitr@volny.cz>, 2003, 2004.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gossip VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-05-15 23:46+0200\n"
+"PO-Revision-Date: 2006-02-20 03:46+0100\n"
+"Last-Translator: Miloslav Trmac <mitr@volny.cz>\n"
+"Language-Team: Czech <cs@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../data/empathy.desktop.in.h:1
+#, fuzzy
+msgid "Empathy Instant Messenger"
+msgstr "Instant Messenger"
+
+#: ../data/empathy.desktop.in.h:2
+msgid "Instant Messenger"
+msgstr "Instant Messenger"
+
+#: ../data/empathy.schemas.in.h:1
+msgid "Always open a separate chat window for new chats."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:2
+msgid "Chat window theme"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:3
+msgid ""
+"Comma separated list of spell checker languages to use (e.g. en, fr, nl)."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:4
+#, fuzzy
+msgid "Compact contact list"
+msgstr "Přidat do vašeho seznamu kontaktů"
+
+#: ../data/empathy.schemas.in.h:5
+msgid "Contact list sort criterium"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:6
+msgid "Default directory to select an avatar image from"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:7
+msgid "Enable popup when contact is available"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:8
+#, fuzzy
+msgid "Enable sound when away"
+msgstr "Zakázat zvuky, když jsem _pryč"
+
+#: ../data/empathy.schemas.in.h:9
+#, fuzzy
+msgid "Enable sound when busy"
+msgstr "Zakázat zvuky, když jsem _zaneprázdněn"
+
+#: ../data/empathy.schemas.in.h:10
+#, fuzzy
+msgid "Enable spell checker"
+msgstr "Gossip - Odeslat zprávu"
+
+#: ../data/empathy.schemas.in.h:11
+msgid "Hide main window"
+msgstr "Skrýt hlavní okno"
+
+#: ../data/empathy.schemas.in.h:12
+msgid "Hide the main window."
+msgstr "Skrýt hlavní okno."
+
+#: ../data/empathy.schemas.in.h:13
+msgid "Open new chats in separate windows"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:14
+#, fuzzy
+msgid "Show avatars"
+msgstr "_Zobrazit seznam kontaktů"
+
+#: ../data/empathy.schemas.in.h:15
+#, fuzzy
+msgid "Show hint about closing the main window"
+msgstr "Výška hlavního okna."
+
+#: ../data/empathy.schemas.in.h:16
+msgid "Show offline contacts"
+msgstr "Zobrazovat odpojené kontakty"
+
+#: ../data/empathy.schemas.in.h:17
+msgid "Spell checking languages"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:18
+msgid "The last directory that an avatar image was chosen from."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:19
+#, fuzzy
+msgid "The theme that is used to display the conversation in chat windows."
+msgstr "Toto jméno se bude používat pro vaši identifikaci v oknech diskusí."
+
+#: ../data/empathy.schemas.in.h:20
+msgid "Use graphical smileys"
+msgstr "Používat grafické smajlíky"
+
+#: ../data/empathy.schemas.in.h:21
+msgid "Use notification sounds"
+msgstr "Používat zvuky upozornění"
+
+#: ../data/empathy.schemas.in.h:22
+msgid "Use theme for chat rooms"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:23
+msgid ""
+"Whether or not to check words typed against the languages you want to check "
+"with."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:24
+msgid ""
+"Whether or not to convert smileys into graphical images in conversations."
+msgstr "Jestli převádět smajlíky v konverzacích na grafické smajlíky."
+
+#: ../data/empathy.schemas.in.h:25
+msgid "Whether or not to play a sound when messages arrive."
+msgstr "Jestli přehrávat zvuk, když přijdou zprávy."
+
+#: ../data/empathy.schemas.in.h:26
+msgid "Whether or not to play sounds when away."
+msgstr "Jestli přehrávat zvuky, když jsem pryč."
+
+#: ../data/empathy.schemas.in.h:27
+msgid "Whether or not to play sounds when busy."
+msgstr "Jestli přehrávat zvuky, když jsem zaneprázdněn."
+
+#: ../data/empathy.schemas.in.h:28
+#, fuzzy
+msgid "Whether or not to show a popup when a contact becomes available."
+msgstr "Jestli přehrávat zvuk, když přijdou zprávy."
+
+#: ../data/empathy.schemas.in.h:29
+#, fuzzy
+msgid ""
+"Whether or not to show avatars for contacts in the contact list and chat "
+"windows."
+msgstr "Jestli zobrazovat odpojené kontakty v seznamu kontaktů."
+
+#: ../data/empathy.schemas.in.h:30
+msgid "Whether or not to show contacts that are offline in the contact list."
+msgstr "Jestli zobrazovat odpojené kontakty v seznamu kontaktů."
+
+#: ../data/empathy.schemas.in.h:31
+msgid ""
+"Whether or not to show the message dialog about closing the main window with "
+"the 'x' button in the title bar."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:32
+#, fuzzy
+msgid "Whether to show the contact list in compact mode or not."
+msgstr "Jestli zobrazovat odpojené kontakty v seznamu kontaktů."
+
+#: ../data/empathy.schemas.in.h:33
+msgid "Whether to use the theme for chat rooms or not."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:34
+msgid ""
+"Which criterium to use when sorting the contact list. Default is to use sort "
+"by the contact's name with the value \"name\". A value of \"state\" will "
+"sort the contact list by state."
+msgstr ""
+
+#: ../libempathy/gossip-contact.c:654 ../libempathy/gossip-presence.c:184
+#: ../libempathy/gossip-presence.c:283
+msgid "Offline"
+msgstr "Odpojen"
+
+#: ../libempathy/gossip-presence.c:274
+msgid "Available"
+msgstr "K dispozici"
+
+#: ../libempathy/gossip-presence.c:276
+msgid "Busy"
+msgstr "Zaneprázdněn"
+
+#: ../libempathy/gossip-presence.c:279
+msgid "Away"
+msgstr "Pryč"
+
+#: ../libempathy-gtk/empathy-main-window.c:254
+#, fuzzy
+msgid "Show and edit accounts"
+msgstr "_Zobrazit seznam kontaktů"
+
+#: ../libempathy-gtk/empathy-main-window.c:456
+msgid "Group"
+msgstr "Skupina"
+
+#: ../libempathy-gtk/empathy-main-window.c:477
+#, fuzzy
+msgid "Contact"
+msgstr "_Přidat kontakt..."
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:1
+#, fuzzy
+msgid "Contact List - Empathy"
+msgstr "_Skrýt seznam kontaktů"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:2
+#, fuzzy
+msgid "Context"
+msgstr "Připojit"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:3
+#, fuzzy
+msgid "Join _Favorites"
+msgstr "_Upravit oblíbené..."
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:4
+#: ../libempathy-gtk/gossip-chat.glade.h:10
+msgid "Join _New..."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:5
+msgid "Manage Favorites..."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:6
+msgid "Show _Offline Contacts"
+msgstr "Zobrazovat _odpojené kontakty"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:7
+#, fuzzy
+msgid "_About"
+msgstr "_Přijmout"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:8
+#, fuzzy
+msgid "_Accounts"
+msgstr "_Přijmout"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:9
+#: ../libempathy-gtk/gossip-chat.glade.h:15
+msgid "_Add Contact..."
+msgstr "_Přidat kontakt..."
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:10
+#: ../libempathy-gtk/gossip-contact-list.c:298
+msgid "_Chat"
+msgstr "_Diskuse"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:11
+#, fuzzy
+msgid "_Contents"
+msgstr "Připojit"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:12
+#: ../libempathy-gtk/gossip-chat.glade.h:21
+#: ../libempathy-gtk/gossip-contact-list.c:310
+msgid "_Edit"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:13
+msgid "_Help"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:14
+#: ../libempathy-gtk/empathy-status-icon.glade.h:2
+msgid "_New Message..."
+msgstr "_Nová zpráva..."
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:15
+#, fuzzy
+msgid "_Personal Information"
+msgstr "Osobní informace"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:16
+msgid "_Preferences"
+msgstr "_Nastavení"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:17
+#: ../libempathy-gtk/empathy-status-icon.glade.h:3
+msgid "_Quit"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:18
+#: ../libempathy-gtk/gossip-chat.glade.h:25
+#, fuzzy
+msgid "_Room"
+msgstr "_Místnost:"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:19
+#: ../libempathy-gtk/gossip-chat.glade.h:28
+#: ../libempathy-gtk/gossip-contact-list.c:326
+#, fuzzy
+msgid "_View Previous Conversations"
+msgstr "_Konverzace"
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:1
+msgid "Status"
+msgstr "Stav"
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:4
+msgid "_Show Contact List"
+msgstr "_Zobrazit seznam kontaktů"
+
+#: ../libempathy-gtk/gossip-about-dialog.c:63
+msgid ""
+"Empathy is free software; you can redistribute it and/or modify it under the "
+"terms of the GNU General Public License as published by the Free Software "
+"Foundation; either version 2 of the License, or (at your option) any later "
+"version."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-about-dialog.c:67
+msgid ""
+"Empathy is distributed in the hope that it will be useful, but WITHOUT ANY "
+"WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS "
+"FOR A PARTICULAR PURPOSE. See the GNU General Public License for more "
+"details."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-about-dialog.c:71
+msgid ""
+"You should have received a copy of the GNU General Public License along with "
+"Empathy; if not, write to the Free Software Foundation, Inc., 51 Franklin "
+"Street, Fifth Floor, Boston, MA 02110-130159 USA"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-about-dialog.c:99
+#, fuzzy
+msgid "An Instant Messaging client for GNOME"
+msgstr "Gossip, Klient Instant Messaging"
+
+#: ../libempathy-gtk/gossip-about-dialog.c:105
+#, fuzzy
+msgid "translator-credits"
+msgstr "Miloslav Trmač"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:224
+#, fuzzy
+msgid "Disable"
+msgstr "K dispozici"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:227
+msgid "Enable"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:261
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:3
+#, fuzzy
+msgid "<b>No Account Selected</b>"
+msgstr "<b>Nastavení účtu</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:263
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to start configuring.\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want "
+"to configure in the list on the left."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:272
+#, fuzzy
+msgid "<b>No Accounts Configured</b>"
+msgstr "<b>Nastavení účtu</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:274
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to start configuring."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:362
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:6
+#, fuzzy
+msgid "Accounts"
+msgstr "Účet Jabberu"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:857
+#, c-format
+msgid ""
+"You are about to remove your %s account!\n"
+"Are you sure you want to proceed?"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:863
+msgid ""
+"Any associated conversations and chat rooms will NOT be removed if you "
+"decide to proceed.\n"
+"\n"
+"Should you decide to add the account back at a later time, they will still "
+"be available."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:1
+#, fuzzy
+msgid "<b>Account</b>"
+msgstr "<b>Oblíbené:</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:2
+#, fuzzy
+msgid "<b>New Account</b>"
+msgstr "<b>Oblíbené:</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:4
+#, fuzzy
+msgid "<b>Settings</b>"
+msgstr "<b>Nastavení účtu</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:5
+msgid "A unique name for this account to identify it personally to you."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:7
+#, fuzzy
+msgid "Cr_eate"
+msgstr "Diskuse"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:8
+#, fuzzy
+msgid "Imendio "
+msgstr "Imendio Gossip"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:9
+msgid "Jabber"
+msgstr "Jabber"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:10
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to started configuring.\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want "
+"to configure in the list on the left."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:13
+#, fuzzy
+msgid "_Name:"
+msgstr "Jméno:"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:14
+#, fuzzy
+msgid "_Type:"
+msgstr "_Téma:"
+
+#: ../libempathy-gtk/gossip-account-widget-generic.c:144
+#: ../libempathy-gtk/gossip-account-widget-generic.c:186
+#, c-format
+msgid "%s:"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:1
+#, fuzzy
+msgid ""
+"<small><b><span foreground=\"#555\">Example: user@jabber.org</span></b></"
+"small>"
+msgstr "<span size=\"smaller\">Příklad: uživatel@jabber.org</span>"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:2
+msgid "Forget password and clear the entry."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:3
+msgid "Login I_D:"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:4
+#, fuzzy
+msgid "Pass_word:"
+msgstr "Heslo:"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:5
+#, fuzzy
+msgid "Reso_urce:"
+msgstr "Z_droj:"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:6
+#, fuzzy
+msgid "Use encryption (SS_L)"
+msgstr "Používat _šifrování (SSL)"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:7
+#, fuzzy
+msgid "_Port:"
+msgstr "_Port:"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:8
+msgid "_Server:"
+msgstr "_Server:"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:9
+#, fuzzy
+msgid "jabber account settings"
+msgstr "<b>Nastavení účtu</b>"
+
+#: ../libempathy-gtk/gossip-chat.c:314
+msgid "Disconnected"
+msgstr "Odpojen"
+
+#: ../libempathy-gtk/gossip-chat.c:858
+msgid "Insert Smiley"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.c:906
+msgid "_Check Word Spelling..."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.c:1244
+msgid "Connected"
+msgstr "Připojen"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:1
+msgid "C_lear"
+msgstr "_Vymazat"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:2
+msgid "Change _Topic..."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:3
+msgid "Chat"
+msgstr "Diskuse"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:4
+#, fuzzy
+msgid "Contact Infor_mation"
+msgstr "_Informace o kontaktu"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:5
+#, fuzzy
+msgid "Cu_t"
+msgstr "Diskuse"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:6
+#, fuzzy
+msgid "In_vite..."
+msgstr "Za_registrovat..."
+
+#: ../libempathy-gtk/gossip-chat.glade.h:7
+msgid "Insert _Smiley"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:8
+#, fuzzy
+msgid "Invitation _message:"
+msgstr "Zadejte zprávu o stavu:"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:9
+msgid "Invite"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:11
+msgid "Move Tab _Left"
+msgstr "Přesunout záložku do_leva"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:12
+msgid "Move Tab _Right"
+msgstr "Přesunout záložku do_prava"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:13
+msgid "Select who would you like to invite:"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:14
+msgid "You have been invited to join a chat conference."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:16
+#, fuzzy
+msgid "_Add To Favorites"
+msgstr "_Upravit oblíbené..."
+
+#: ../libempathy-gtk/gossip-chat.glade.h:17
+msgid "_Close"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:18
+msgid "_Conversation"
+msgstr "_Konverzace"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:19
+msgid "_Copy"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:20
+msgid "_Detach Tab"
+msgstr "_Odpojit záložku"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:22
+msgid "_Next Tab"
+msgstr "_Následující záložka"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:23
+msgid "_Paste"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:24
+msgid "_Previous Tab"
+msgstr "_Předchozí záložka"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:26
+#, fuzzy
+msgid "_Show Contacts"
+msgstr "_Zobrazit seznam kontaktů"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:27
+msgid "_Tabs"
+msgstr "_Záložky"
+
+#: ../libempathy-gtk/gossip-chat-view.c:544
+msgid "_Copy Link Address"
+msgstr "_Kopírovat adresu odkazu"
+
+#: ../libempathy-gtk/gossip-chat-view.c:552
+msgid "_Open Link"
+msgstr "_Otevřít odkaz"
+
+#: ../libempathy-gtk/gossip-chat-view.c:889
+msgid "%A %d %B %Y"
+msgstr "%A %d. %B %Y"
+
+#: ../libempathy-gtk/gossip-chat-window.c:685
+#: ../libempathy-gtk/gossip-chat-window.c:715
+#, fuzzy
+msgid "New Message"
+msgid_plural "New Messages"
+msgstr[0] "_Nová zpráva..."
+msgstr[1] "_Nová zpráva..."
+
+#: ../libempathy-gtk/gossip-chat-window.c:691
+#, fuzzy
+msgid "Chat Room"
+msgstr "Gossip - Diskuse"
+
+#: ../libempathy-gtk/gossip-chat-window.c:696
+#: ../libempathy-gtk/gossip-chat-window.c:719
+#, fuzzy, c-format
+msgid "Conversation"
+msgid_plural "Conversations (%d)"
+msgstr[0] "_Konverzace"
+msgstr[1] "_Konverzace"
+
+#: ../libempathy-gtk/gossip-chat-window.c:1295
+msgid "Typing a message."
+msgstr "Píše zprávu."
+
+#: ../libempathy-gtk/gossip-contact-list.c:290
+#, fuzzy
+msgid "_Contact"
+msgstr "_Přidat kontakt..."
+
+#: ../libempathy-gtk/gossip-contact-list.c:294
+#, fuzzy
+msgid "_Group"
+msgstr "Skupina"
+
+#: ../libempathy-gtk/gossip-contact-list.c:298
+#, fuzzy
+msgid "Chat with contact"
+msgstr "Přidat kontakt"
+
+#: ../libempathy-gtk/gossip-contact-list.c:302
+#, fuzzy
+msgid "Infor_mation"
+msgstr "_Informace o kontaktu"
+
+#: ../libempathy-gtk/gossip-contact-list.c:302
+#, fuzzy
+msgid "View contact information"
+msgstr "Informace o kontaktu"
+
+#: ../libempathy-gtk/gossip-contact-list.c:306
+#, fuzzy
+msgid "Re_name"
+msgstr "/_Přejmenovat skupinu"
+
+#: ../libempathy-gtk/gossip-contact-list.c:306
+#, fuzzy
+msgid "Rename"
+msgstr "Jméno uživatele:"
+
+#: ../libempathy-gtk/gossip-contact-list.c:310
+#, fuzzy
+msgid "Edit the groups and name for this contact"
+msgstr ""
+"Zadejte prosím novou přezdívku pro kontakt\n"
+"%s"
+
+#: ../libempathy-gtk/gossip-contact-list.c:314
+msgid "_Remove"
+msgstr "_Odstranit"
+
+#: ../libempathy-gtk/gossip-contact-list.c:314
+#, fuzzy
+msgid "Remove contact"
+msgstr "/_Odstranit kontakt"
+
+#: ../libempathy-gtk/gossip-contact-list.c:318
+#, fuzzy
+msgid "_Invite to Chat Room"
+msgstr "Gossip - Upravit skupinové diskuse"
+
+#: ../libempathy-gtk/gossip-contact-list.c:318
+msgid "Invite to a currently open chat room"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-contact-list.c:322
+msgid "_Send File..."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-contact-list.c:322
+#, fuzzy
+msgid "Send a file"
+msgstr "Vybrat"
+
+#: ../libempathy-gtk/gossip-contact-list.c:326
+#, fuzzy
+msgid "View previous conversations with this contact"
+msgstr "_Konverzace"
+
+#: ../libempathy-gtk/gossip-preferences.c:250
+msgid "Language"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:1
+#, fuzzy
+msgid "<b>Appearance</b>"
+msgstr "Vzhled"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:2
+#, fuzzy
+msgid "<b>Audio</b>"
+msgstr "<b>Oblíbené:</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:3
+#, fuzzy
+msgid "<b>Behaviour</b>"
+msgstr "<b>Oblíbené:</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:4
+#, fuzzy
+msgid "<b>Contact List</b>"
+msgstr "Stav"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:5
+msgid "<b>Languages</b>"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:6
+#, fuzzy
+msgid "<b>Options</b>"
+msgstr "Připojit"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:7
+#, fuzzy
+msgid "<b>Visual</b>"
+msgstr "<b>Popis</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:8
+msgid ""
+"<small>The list of languages reflects only the languages for which you have "
+"a dictionary installed.</small>"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:9
+msgid "Avatars are user chosen images shown in the contact list"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:10
+#, fuzzy
+msgid "Chat Th_eme:"
+msgstr "_Název diskuse:"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:11
+msgid "Display notifications when contacts come _online"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:12
+#, fuzzy
+msgid "Enable sounds when _away"
+msgstr "Zakázat zvuky, když jsem _pryč"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:13
+#, fuzzy
+msgid "Enable sounds when _busy"
+msgstr "Zakázat zvuky, když jsem _zaneprázdněn"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:14
+msgid "General"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:15
+#, fuzzy
+msgid "Notifications"
+msgstr "Používat zvuky upozornění"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:16
+#, fuzzy
+msgid "Preferences"
+msgstr "_Nastavení"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:17
+msgid "Show _avatars"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:18
+#, fuzzy
+msgid "Show _smileys as images"
+msgstr "Převádět _smajlíky na grafické obrázky"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:19
+#, fuzzy
+msgid "Show co_mpact contact list"
+msgstr "_Zobrazit seznam kontaktů"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:20
+msgid "Sort by _name"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:21
+msgid "Sort by s_tate"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:22
+msgid "Spell Checking"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:23
+msgid "Themes"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:24
+msgid "_Enable spell checking"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:25
+msgid "_Open new chats in separate windows"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:26
+#, fuzzy
+msgid "_Play sound when messages arrive"
+msgstr "Přehrávat zvuk, když přijdou zprávy"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:27
+#, fuzzy
+msgid "_Use for chat rooms"
+msgstr "Gossip - Upravit skupinové diskuse"
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:702
+#, fuzzy
+msgid "Custom message..."
+msgstr "Zpráva požadavku"
+
+#. Clear list
+#: ../libempathy-gtk/gossip-presence-chooser.c:724
+#, fuzzy
+msgid "Clear List..."
+msgstr "_Vymazat"
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:803
+#, fuzzy
+msgid "Are you sure you want to clear the list?"
+msgstr "Chcete přijmout tento požadavek?"
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:807
+msgid ""
+"This will remove any custom messages you have added to the list of preset "
+"status messages."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:812
+#, fuzzy
+msgid "Clear List"
+msgstr "_Vymazat"
+
+#: ../libempathy-gtk/gossip-presence-chooser.glade.h:1
+msgid "Enter status message:"
+msgstr "Zadejte zprávu o stavu:"
+
+#: ../libempathy-gtk/gossip-presence-chooser.glade.h:2
+#, fuzzy
+msgid "Status Message Presets"
+msgstr "Zprávy o stavu"
+
+#: ../libempathy-gtk/gossip-presence-chooser.glade.h:3
+#, fuzzy
+msgid "_Add to status message list"
+msgstr "Přednastavené zprávy o stavu"
+
+#: ../libempathy-gtk/gossip-private-chat.c:198
+#, c-format
+msgid "%s went offline"
+msgstr "%s se odpojil"
+
+#: ../libempathy-gtk/gossip-private-chat.c:212
+#, fuzzy, c-format
+msgid "%s has come online"
+msgstr "%s se připojil"
+
+#: ../libempathy-gtk/gossip-theme-manager.c:87
+msgid "Classic"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-theme-manager.c:88
+msgid "Simple"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-theme-manager.c:89
+#, fuzzy
+msgid "Clean"
+msgstr "_Vymazat"
+
+#: ../libempathy-gtk/gossip-theme-manager.c:90
+msgid "Blue"
+msgstr ""
+
+#: ../src/empathy-main.c:145
+msgid "Don't connect on startup"
+msgstr "Nepřipojovat se při startu"
+
+#: ../src/empathy-main.c:155
+#, fuzzy
+msgid "- Empathy Instant Messenger"
+msgstr "Instant Messenger"
+
+#, fuzzy
+#~ msgid "Gossip Instant Messenger"
+#~ msgstr "Instant Messenger"
+
+#, fuzzy
+#~ msgid "Joining"
+#~ msgstr "_Připojit"
+
+#, fuzzy
+#~ msgid "Unknown"
+#~ msgstr "Neznámá chyba"
+
+#, fuzzy
+#~ msgid "No affiliation"
+#~ msgstr "Používat zvuky upozornění"
+
+#, fuzzy
+#~ msgid "An unknown error occurred, check your details are correct."
+#~ msgstr "Neznámá chyba"
+
+#, fuzzy
+#~ msgid "Unavailable"
+#~ msgstr "K dispozici"
+
+#, fuzzy
+#~ msgid "An unknown error occurred."
+#~ msgstr "Neznámá chyba"
+
+#, fuzzy
+#~ msgid "Connection refused."
+#~ msgstr "Připojen"
+
+#, fuzzy
+#~ msgid "Connection timed out."
+#~ msgstr "Připojen"
+
+#, fuzzy
+#~ msgid "new account"
+#~ msgstr "Účet Jabberu"
+
+#~ msgid "Home"
+#~ msgstr "Domů"
+
+#, fuzzy
+#~ msgid "Registration is required"
+#~ msgstr "Registruji účet"
+
+#, fuzzy
+#~ msgid "Disconnect"
+#~ msgstr "_Odpojit"
+
+#~ msgid "Connect"
+#~ msgstr "Připojit"
+
+#, fuzzy
+#~ msgid "Successfully registered your new account settings."
+#~ msgstr "Účet úspěšně zaregistrován"
+
+#, fuzzy
+#~ msgid "Failed to register your new account settings."
+#~ msgstr "Nemohu zaregistrovat účet"
+
+#, fuzzy
+#~ msgid "Successfully changed your account password."
+#~ msgstr "Zadejte prosím své heslo."
+
+#, fuzzy
+#~ msgid "Failed to change your account password."
+#~ msgstr "Zadejte prosím své heslo."
+
+#, fuzzy
+#~ msgid ""
+#~ "Please enter a new password for this account:\n"
+#~ "%s"
+#~ msgstr ""
+#~ "Zadejte prosím nový název pro skupinu\n"
+#~ "%s"
+
+#, fuzzy
+#~ msgid "Information requested, please wait..."
+#~ msgstr "<b>Požádal jsem o informace, čekejte prosím...</b>"
+
+#~ msgid "I would like to add you to my contact list."
+#~ msgstr "Rád bych vás přidal do svého seznamu kontaktů."
+
+#, fuzzy
+#~ msgid "%d new message"
+#~ msgid_plural "%d new messages"
+#~ msgstr[0] "_Nová zpráva..."
+#~ msgstr[1] "_Nová zpráva..."
+
+#, fuzzy
+#~ msgid "%d subscription request"
+#~ msgid_plural "%d subscription requests"
+#~ msgstr[0] "Požadavek na přihlášení"
+#~ msgstr[1] "Požadavek na přihlášení"
+
+#, fuzzy
+#~ msgid "Edit Account _Details"
+#~ msgstr "Upravit informace o účtu"
+
+#~ msgid "New message from %s"
+#~ msgstr "Nová zpráva od %s"
+
+#, fuzzy
+#~ msgid "Accept"
+#~ msgstr "_Přijmout"
+
+#, fuzzy
+#~ msgid "Name"
+#~ msgstr "Jméno:"
+
+#, fuzzy
+#~ msgid "Room"
+#~ msgstr "_Místnost:"
+
+#, fuzzy
+#~ msgid "Auto Connect"
+#~ msgstr "Připojit"
+
+#, fuzzy
+#~ msgid "Information requested..."
+#~ msgstr "<b>Požádal jsem o informace, čekejte prosím...</b>"
+
+#, fuzzy
+#~ msgid "Do you want to remove this contact from your roster?"
+#~ msgstr ""
+#~ "Chcete odstranit kontakt\n"
+#~ "%s\n"
+#~ "ze svého seznamu kontaktů?"
+
+#, fuzzy
+#~ msgid ""
+#~ "Please enter a new name for the group:\n"
+#~ "%s"
+#~ msgstr ""
+#~ "Zadejte prosím nový název pro skupinu\n"
+#~ "%s"
+
+#~ msgid "Select"
+#~ msgstr "Vybrat"
+
+#~ msgid "Unsorted"
+#~ msgstr "Nesetříděno"
+
+#, fuzzy
+#~ msgid "Unknown error occurred during file transfer."
+#~ msgstr "Neznámá chyba"
+
+#, fuzzy
+#~ msgid "%s would like to send you a file."
+#~ msgstr "Rád bych vás přidal do svého seznamu kontaktů."
+
+#, fuzzy
+#~ msgid "Someone would like to send you a file."
+#~ msgstr "Rád bych vás přidal do svého seznamu kontaktů."
+
+#, fuzzy
+#~ msgid "Select a file"
+#~ msgstr "Vybrat"
+
+#, fuzzy
+#~ msgid "Connecting..."
+#~ msgstr "_Připojit..."
+
+#, fuzzy
+#~ msgid "Retry connection"
+#~ msgstr "Připojit"
+
+#, fuzzy
+#~ msgid "Enter the new topic you want to set for this room:"
+#~ msgstr "Jakou přezdívku chcete používat pro tento kontakt?"
+
+#, fuzzy
+#~ msgid "Topic: %s"
+#~ msgstr "_Téma:"
+
+#, fuzzy
+#~ msgid "Account"
+#~ msgstr "Účet Jabberu"
+
+#, fuzzy
+#~ msgid "Conversation With"
+#~ msgstr "_Konverzace"
+
+#~ msgid "List the available accounts"
+#~ msgstr "Vypsat dostupné účty"
+
+#~ msgid "Which account to connect to on startup"
+#~ msgstr "Ke kterému účtu se připojit při startu"
+
+#~ msgid "ACCOUNT-NAME"
+#~ msgstr "NÁZEV-ÚČTU"
+
+#~ msgid "Available accounts:"
+#~ msgstr "Dostupné účty:"
+
+#~ msgid "[default]"
+#~ msgstr "[implicitní]"
+
+#~ msgid "There is no account with the name '%s'."
+#~ msgstr "Neexistuje účet s názvem '%s'."
+
+#, fuzzy
+#~ msgid "Join"
+#~ msgstr "_Připojit"
+
+#, fuzzy
+#~ msgid "Create"
+#~ msgstr "Diskuse"
+
+#, fuzzy
+#~ msgid "Chat Rooms"
+#~ msgstr "Gossip - Diskuse"
+
+#, fuzzy
+#~ msgid "Browsing for conference rooms, please wait..."
+#~ msgstr "<b>Čekám na odpověď serveru...</b>"
+
+#, fuzzy
+#~ msgid "Default"
+#~ msgstr "[implicitní]"
+
+#, fuzzy
+#~ msgid "Chat!"
+#~ msgstr "Diskuse"
+
+#, fuzzy
+#~ msgid "%s wants to be added to your contact list."
+#~ msgstr "%s bude přidán do vašeho seznamu kontaktů."
+
+#, fuzzy
+#~ msgid "Someone wants to be added to your contact list."
+#~ msgstr "%s bude přidán do vašeho seznamu kontaktů."
+
+#, fuzzy
+#~ msgid "Subscription request"
+#~ msgstr "Požadavek na přihlášení"
+
+#, fuzzy
+#~ msgid "Contact Information"
+#~ msgstr "_Informace o kontaktu"
+
+#, fuzzy
+#~ msgid "New subscription request from %s"
+#~ msgstr "Požadavek na přihlášení"
+
+#, fuzzy
+#~ msgid "Do you want to add this person to your contact list?"
+#~ msgstr ""
+#~ "Chcete odstranit kontakt\n"
+#~ "%s\n"
+#~ "ze svého seznamu kontaktů?"
+
+#, fuzzy
+#~ msgid "Do you want to add %s to your contact list?"
+#~ msgstr ""
+#~ "Chcete odstranit kontakt\n"
+#~ "%s\n"
+#~ "ze svého seznamu kontaktů?"
+
+#, fuzzy
+#~ msgid "Please enter your %s account password"
+#~ msgstr "Zadejte prosím své heslo."
+
+#~ msgid "Remember Password?"
+#~ msgstr "Zapamatovat si heslo?"
+
+#, fuzzy
+#~ msgid "Change"
+#~ msgstr "Diskuse"
+
+#, fuzzy
+#~ msgid "Contact goes online"
+#~ msgstr "%s se odpojil"
+
+#, fuzzy
+#~ msgid "Do you want to accept this file?"
+#~ msgstr "Chcete přijmout tento požadavek?"
+
+#, fuzzy
+#~ msgid "File name:"
+#~ msgstr "Jméno uživatele:"
+
+#, fuzzy
+#~ msgid "File size:"
+#~ msgstr "WWW stránka:"
+
+#~ msgid "Web site:"
+#~ msgstr "WWW stránka:"
+
+#~ msgid "_Accept"
+#~ msgstr "_Přijmout"
+
+#~ msgid "_Deny"
+#~ msgstr "_Odmítnout"
+
+#, fuzzy
+#~ msgid "<b>Topic:</b>"
+#~ msgstr "<b>Oblíbené:</b>"
+
+#, fuzzy
+#~ msgid "Account:"
+#~ msgstr "Účet Jabberu"
+
+#, fuzzy
+#~ msgid "Edit Favorite Room"
+#~ msgstr "Gossip - Upravit skupinové diskuse"
+
+#, fuzzy
+#~ msgid "Group Chat"
+#~ msgstr "Gossip - Diskuse"
+
+#, fuzzy
+#~ msgid "Join New"
+#~ msgstr "_Připojit"
+
+#, fuzzy
+#~ msgid "Join room on start_up"
+#~ msgstr "Nepřipojovat se při startu"
+
+#, fuzzy
+#~ msgid "N_ame:"
+#~ msgstr "Jméno:"
+
+#, fuzzy
+#~ msgid "S_erver:"
+#~ msgstr "Server:"
+
+#~ msgid "_Nickname:"
+#~ msgstr "_Přezdívka:"
+
+#~ msgid "_Room:"
+#~ msgstr "_Místnost:"
+
+#, fuzzy
+#~ msgid "<b>About</b>"
+#~ msgstr "<b>Oblíbené:</b>"
+
+#, fuzzy
+#~ msgid "<b>Client Information</b>"
+#~ msgstr "Informace o klientovi"
+
+#, fuzzy
+#~ msgid "<b>Groups</b>"
+#~ msgstr "<b>Oblíbené:</b>"
+
+#, fuzzy
+#~ msgid "<b>Name</b>"
+#~ msgstr "Stav"
+
+#, fuzzy
+#~ msgid "<b>Personal Details</b>"
+#~ msgstr "Osobní detaily"
+
+#, fuzzy
+#~ msgid "<b>Subscription</b>"
+#~ msgstr "Přihlášení"
+
+#, fuzzy
+#~ msgid "<span size=\"smaller\">Example: Mikael or user@server.org</span>"
+#~ msgstr "<span size=\"smaller\">Příklad: uživatel@jabber.org</span>"
+
+#, fuzzy
+#~ msgid "Accou_nt:"
+#~ msgstr "Účet Jabberu"
+
+#, fuzzy
+#~ msgid "Add Contact"
+#~ msgstr "_Přidat kontakt..."
+
+#, fuzzy
+#~ msgid "Ch_at"
+#~ msgstr "Diskuse"
+
+#~ msgid "Client:"
+#~ msgstr "Klient:"
+
+#, fuzzy
+#~ msgid "Con_tact:"
+#~ msgstr "_Přidat kontakt..."
+
+#, fuzzy
+#~ msgid "Connect on S_tartup"
+#~ msgstr "Nepřipojovat se při startu"
+
+#, fuzzy
+#~ msgid "Contacts"
+#~ msgstr "_Přidat kontakt..."
+
+#~ msgid "Country:"
+#~ msgstr "Země:"
+
+#~ msgid "Decide _Later"
+#~ msgstr "_Rozhodnout se později"
+
+#, fuzzy
+#~ msgid "Edit Contact"
+#~ msgstr "_Přidat kontakt..."
+
+#~ msgid "Edit Groups"
+#~ msgstr "Upravit skupiny"
+
+#~ msgid "Email:"
+#~ msgstr "E-mail"
+
+#, fuzzy
+#~ msgid "ID:"
+#~ msgstr "JID"
+
+#~ msgid "Name:"
+#~ msgstr "Jméno:"
+
+#~ msgid "OS:"
+#~ msgstr "OS:"
+
+#, fuzzy
+#~ msgid "Personal Details"
+#~ msgstr "_Osobní detaily"
+
+#, fuzzy
+#~ msgid "R_egister"
+#~ msgstr "Za_registrovat..."
+
+#, fuzzy
+#~ msgid "Search"
+#~ msgstr "_Hledat..."
+
+#, fuzzy
+#~ msgid "Spell Checker"
+#~ msgstr "Gossip - Odeslat zprávu"
+
+#, fuzzy
+#~ msgid "Subscription Request"
+#~ msgstr "Požadavek na přihlášení"
+
+#, fuzzy
+#~ msgid "This is the name that will be used on your roster for this contact"
+#~ msgstr "Jakou přezdívku chcete používat pro tento kontakt?"
+
+#, fuzzy
+#~ msgid "This name will be used to identify you in chat windows"
+#~ msgstr "Toto jméno se bude používat pro vaši identifikaci v oknech diskusí."
+
+#, fuzzy
+#~ msgid ""
+#~ "This name will be used to identify you when new contacts lookup your "
+#~ "details"
+#~ msgstr "Toto jméno se bude používat pro vaši identifikaci v oknech diskusí."
+
+#~ msgid "Use system pro_xy"
+#~ msgstr "Používat systémovou _proxy"
+
+#~ msgid "Version:"
+#~ msgstr "Verze:"
+
+#, fuzzy
+#~ msgid "View Previous Conversations"
+#~ msgstr "_Konverzace"
+
+#, fuzzy
+#~ msgid "Which account do you want to use?"
+#~ msgstr "Jaké jméno uživatele chcete používat?"
+
+#, fuzzy
+#~ msgid "You are not subscribed to this contact."
+#~ msgstr ""
+#~ "Nejste přihlášeni ke stavu tohoto kontaktu. Jejich stav získejte "
+#~ "kliknutím na Přihlásit."
+
+#, fuzzy
+#~ msgid "_Connect"
+#~ msgstr "Připojit"
+
+#, fuzzy
+#~ msgid "_Description:"
+#~ msgstr "Popis"
+
+#~ msgid "_Disconnect"
+#~ msgstr "_Odpojit"
+
+#, fuzzy
+#~ msgid "_Email:"
+#~ msgstr "E-mail"
+
+#, fuzzy
+#~ msgid ""
+#~ "_Enter the name or contact ID of the person you want to chat to below:"
+#~ msgstr "Zadejte ID uživatele, kterému chcete odeslat zprávu."
+
+#, fuzzy
+#~ msgid "_For:"
+#~ msgstr "_Port:"
+
+#, fuzzy
+#~ msgid "_Full Name:"
+#~ msgstr "Jméno:"
+
+#, fuzzy
+#~ msgid "_Group:"
+#~ msgstr "Skupina"
+
+#, fuzzy
+#~ msgid "_Nick Name:"
+#~ msgstr "_Přezdívka:"
+
+#~ msgid "_Password:"
+#~ msgstr "_Heslo:"
+
+#, fuzzy
+#~ msgid "_Quit Message:"
+#~ msgstr "_Zprávy o stavu"
+
+#, fuzzy
+#~ msgid "_Retrieve"
+#~ msgstr "_Odstranit"
+
+#~ msgid "_Subscribe"
+#~ msgstr "_Přihlásit"
+
+#, fuzzy
+#~ msgid "_Web site:"
+#~ msgstr "WWW stránka:"
+
+#, fuzzy
+#~ msgid "irc account settings"
+#~ msgstr "<b>Nastavení účtu</b>"
+
+#, fuzzy
+#~ msgid "msn account settings"
+#~ msgstr "<b>Nastavení účtu</b>"
+
+#~ msgid "Preset status messages"
+#~ msgstr "Přednastavené zprávy o stavu"
+
+#~ msgid "Preset status messages."
+#~ msgstr "Přednastavené zprávy o stavu."
+
+#, fuzzy
+#~ msgid "Connecting"
+#~ msgstr "Připojit"
+
+#~ msgid "%s will be added to your contact list."
+#~ msgstr "%s bude přidán do vašeho seznamu kontaktů."
+
+#, fuzzy
+#~ msgid "%s ID of new contact:"
+#~ msgstr "ID _Jabberu nového kontaktu:"
+
+#, fuzzy
+#~ msgid ""
+#~ "Please enter your invitation message to:\n"
+#~ "%s"
+#~ msgstr "Zadejte prosím své heslo."
+
+#~ msgid "Contact Information for %s"
+#~ msgstr "Informace o kontaktu %s"
+
+#, fuzzy
+#~ msgid "/Contact Infor_mation"
+#~ msgstr "/_Informace o kontaktu"
+
+#, fuzzy
+#~ msgid "/Re_name Contact"
+#~ msgstr "/_Přejmenovat kontakt"
+
+#, fuzzy
+#~ msgid "/_Edit Groups"
+#~ msgstr "/_Upravit skupiny"
+
+#, fuzzy
+#~ msgid "/_View Previous Conversations"
+#~ msgstr "_Konverzace"
+
+#~ msgid ""
+#~ "Please enter a new nickname for the contact\n"
+#~ "%s"
+#~ msgstr ""
+#~ "Zadejte prosím novou přezdívku pro kontakt\n"
+#~ "%s"
+
+#~ msgid "Edit groups for %s"
+#~ msgstr "Upravit skupiny pro %s"
+
+#~ msgid "Conversation Log"
+#~ msgstr "Záznam konverzace"
+
+#~ msgid "Registering account"
+#~ msgstr "Registruji účet"
+
+#, fuzzy
+#~ msgid "Respond"
+#~ msgstr "Důvod:"
+
+#, fuzzy
+#~ msgid "Add to _favourites"
+#~ msgstr "_Upravit oblíbené..."
+
+#, fuzzy
+#~ msgid "Na_me:"
+#~ msgstr "Jméno:"
+
+#, fuzzy
+#~ msgid "New Chat Room"
+#~ msgstr "Gossip - Diskuse"
+
+#~ msgid " "
+#~ msgstr " "
+
+#, fuzzy
+#~ msgid "<b>Information requested, please wait...</b>"
+#~ msgstr "<b>Požádal jsem o informace, čekejte prosím...</b>"
+
+#, fuzzy
+#~ msgid "<span size=\"smaller\">Example:</span>"
+#~ msgstr "<span size=\"smaller\">Příklad: uživatel@jabber.org</span>"
+
+#, fuzzy
+#~ msgid "Chat Rooms..."
+#~ msgstr "Gossip - Diskuse"
+
+#, fuzzy
+#~ msgid "Connection Details"
+#~ msgstr "Podrobnosti o nastavení"
+
+#, fuzzy
+#~ msgid "Do you already have an account set up on a server?"
+#~ msgstr "Máte již účet na serveru Jabberu?"
+
+#, fuzzy
+#~ msgid "Enter the port used in the connection for this account"
+#~ msgstr ""
+#~ "Zadejte prosím novou přezdívku pro kontakt\n"
+#~ "%s"
+
+#, fuzzy
+#~ msgid "Enter the server used in the connection for this account"
+#~ msgstr ""
+#~ "Zadejte prosím novou přezdívku pro kontakt\n"
+#~ "%s"
+
+#, fuzzy
+#~ msgid "Finished"
+#~ msgstr "Nastavení dokončeno"
+
+#~ msgid "Gossip"
+#~ msgstr "Gossip"
+
+#~ msgid ""
+#~ "Gossip is a modern client for the Jabber Instant Messaging system.\n"
+#~ "\n"
+#~ "This assistant will help you configure Gossip and connect you to your "
+#~ "favorite Jabber server.\n"
+#~ "\n"
+#~ "To get started, just click \"Forward\"."
+#~ msgstr ""
+#~ "Gossip je moderní klient pro systém instant message Jabber.\n"
+#~ "\n"
+#~ "Tento asistent vám pomůže nastavit Gossip a připojit vás k vašemu "
+#~ "oblíbenému serveru Jabberu.\n"
+#~ "\n"
+#~ "Začněte kliknutím na \"Vpřed\"."
+
+#~ msgid ""
+#~ "In order to subscribe to presence notifications from the user, a request "
+#~ "will be sent. Until this request is approved, the user will always be "
+#~ "shown as \"Offline\" in your contact list."
+#~ msgstr ""
+#~ "Abyste se přihlásili k upozornění o přítomnosti uživatele, bude poslán "
+#~ "požadavek. Dokud tento požadavek není potvrzen, uživatel bude ve vašem "
+#~ "seznamu kontaktů vždy zobrazen jako \"Odpojen\"."
+
+#~ msgid "In which group do you want to place this contact?"
+#~ msgstr "Do které skupiny chcete umístit tento kontakt?"
+
+#~ msgid "Jabber ID:"
+#~ msgstr "ID Jabberu:"
+
+#~ msgid "Nickname:"
+#~ msgstr "Přezdívka:"
+
+#, fuzzy
+#~ msgid "Port:"
+#~ msgstr "_Port:"
+
+#, fuzzy
+#~ msgid "Press Subscribe to request to receive their status"
+#~ msgstr ""
+#~ "Nejste přihlášeni ke stavu tohoto kontaktu. Jejich stav získejte "
+#~ "kliknutím na Přihlásit."
+
+#, fuzzy
+#~ msgid "Registering Account"
+#~ msgstr "Registruji účet"
+
+#, fuzzy
+#~ msgid "Resource:"
+#~ msgstr "Z_droj:"
+
+#~ msgid "Sending request"
+#~ msgstr "Odesílám požadavek"
+
+#~ msgid "Server:"
+#~ msgstr "Server:"
+
+#, fuzzy
+#~ msgid "Web Site:"
+#~ msgstr "WWW stránka:"
+
+#~ msgid "Welcome to Gossip"
+#~ msgstr "Vítejte v Gossipu"
+
+#~ msgid "What instant messaging system does the contact use?"
+#~ msgstr "Který systém instant message kontakt používá?"
+
+#~ msgid "What is your name?"
+#~ msgstr "Jaké je vaše jméno?"
+
+#, fuzzy
+#~ msgid "What password do you want to use?"
+#~ msgstr "Který server chcete používat?"
+
+#~ msgid "What username do you use?"
+#~ msgstr "Jaké jméno uživatele používáte?"
+
+#~ msgid "What username do you want to use?"
+#~ msgstr "Jaké jméno uživatele chcete používat?"
+
+#, fuzzy
+#~ msgid "Which account do you want to add this contact to?"
+#~ msgstr "Do které skupiny chcete umístit tento kontakt?"
+
+#, fuzzy
+#~ msgid ""
+#~ "You can change your account settings later by selecting the Edit-"
+#~ ">Accounts menu item."
+#~ msgstr ""
+#~ "Gossip je nyní správně nastaven pro váš systém.\n"
+#~ "Nastavení svého účtu můžete později změnit vybráním položky menu Diskuse-"
+#~ ">Připojit..."
+
+#, fuzzy
+#~ msgid "Your Account"
+#~ msgstr "Účet Jabberu"
+
+#~ msgid "Your Identity"
+#~ msgstr "Vaše identita"
+
+#, fuzzy
+#~ msgid "_Group Chat"
+#~ msgstr "Gossip - Diskuse"
+
+#, fuzzy
+#~ msgid "_No"
+#~ msgstr "Ne"
+
+#~ msgid "_Search..."
+#~ msgstr "_Hledat..."
+
+#, fuzzy
+#~ msgid "_Yes"
+#~ msgstr "Ano"
+
+#~ msgid "Be silent when away"
+#~ msgstr "Být tichý, když jsem pryč"
+
+#~ msgid "Be silent when busy"
+#~ msgstr "Být tichý, když jsem zaneprázdněn"
+
+#~ msgid "Height of main window"
+#~ msgstr "Výška hlavního okna"
+
+#~ msgid "The X position of the main window."
+#~ msgstr "Pozice X hlavního okna."
+
+#~ msgid "The Y position of the main window."
+#~ msgstr "Pozice Y hlavního okna."
+
+#~ msgid "The width of the main window."
+#~ msgstr "Šířka hlavního okna."
+
+#~ msgid "Width of the main window"
+#~ msgstr "Šířka hlavního okna"
+
+#~ msgid "X position of main window"
+#~ msgstr "Pozice X hlavního okna"
+
+#~ msgid "Y position of main window"
+#~ msgstr "Pozice Y hlavního okna"
+
+#~ msgid "Gossip, Instant Messaging Client"
+#~ msgstr "Gossip, Klient Instant Messaging"
+
+#, fuzzy
+#~ msgid "Close this chat window"
+#~ msgstr "Skrýt hlavní okno."
+
+#, fuzzy
+#~ msgid "Requested Information"
+#~ msgstr "_Informace o účtu"
+
+#, fuzzy
+#~ msgid "Send Message"
+#~ msgstr "Zpráva o stavu"
+
+#, fuzzy
+#~ msgid "%s has gone offline"
+#~ msgstr "%s se odpojil"
+
+#~ msgid "Available..."
+#~ msgstr "K dispozici..."
+
+#~ msgid "Busy..."
+#~ msgstr "Zaneprázdněn..."
+
+#~ msgid "Away..."
+#~ msgstr "Pryč..."
+
+#~ msgid "Contact _Information"
+#~ msgstr "_Informace o kontaktu"
+
+#, fuzzy
+#~ msgid "<b>Sound</b>"
+#~ msgstr "<b>Popis</b>"
+
+#, fuzzy
+#~ msgid "Gossip - Accounts"
+#~ msgstr "Gossip - Diskuse"
+
+#, fuzzy
+#~ msgid "Join _Group Chat..."
+#~ msgstr "_Připojit se ke skupinové diskusi..."
+
+#, fuzzy
+#~ msgid "Por_t:"
+#~ msgstr "_Port:"
+
+#, fuzzy
+#~ msgid "Requested information."
+#~ msgstr "Informace o klientovi"
+
+#, fuzzy
+#~ msgid "Requesting contact information, please wait..."
+#~ msgstr "Žádám o osobní detaily, čekejte prosím..."
+
+#, fuzzy
+#~ msgid "Could not open connection"
+#~ msgstr "Nemohu se připojit"
+
+#, fuzzy
+#~ msgid "Could not find the server you wanted to use"
+#~ msgstr "Který server chcete používat?"
+
+#, fuzzy
+#~ msgid "Connection to the server failed."
+#~ msgstr "<b>Připojit se k serveru</b>"
+
+#~ msgid "Written by:"
+#~ msgstr "Napsali:"
+
+#~ msgid "Artwork by:"
+#~ msgstr "Grafika od:"
+
+#~ msgid "Translated by:"
+#~ msgstr "Přeložili:"
+
+#, fuzzy
+#~ msgid "Account ID"
+#~ msgstr "_Informace o účtu"
+
+#~ msgid "%sChat - %s"
+#~ msgstr "%sDiskuse - %s"
+
+#~ msgid "/Show _Log"
+#~ msgstr "/Zobrazit záz_nam"
+
+#, fuzzy
+#~ msgid "Persian"
+#~ msgstr "Verze:"
+
+#~ msgid "View Lo_g"
+#~ msgstr "Zobrazit záz_nam"
+
+#, fuzzy
+#~ msgid "Gossip - Group Chat"
+#~ msgstr "Gossip - Připojit se ke skupinové diskusi"
+
+#, fuzzy
+#~ msgid "Gossip - Add contact"
+#~ msgstr "Přidat kontakt"
+
+#, fuzzy
+#~ msgid "Gossip - Contact Information"
+#~ msgstr "_Informace o kontaktu"
+
+#, fuzzy
+#~ msgid "Gossip - Edit Groups"
+#~ msgstr "Gossip - Upravit skupinové diskuse"
+
+#, fuzzy
+#~ msgid "Gossip - New Account"
+#~ msgstr "Gossip - Diskuse"
+
+#, fuzzy
+#~ msgid "Gossip - New Message"
+#~ msgstr "Gossip - Odeslat zprávu"
+
+#, fuzzy
+#~ msgid "Gossip - Personal Details"
+#~ msgstr "Osobní detaily"
+
+#, fuzzy
+#~ msgid "Gossip - Preferences"
+#~ msgstr "Nastavení"
+
+#, fuzzy
+#~ msgid "Gossip - Status Message"
+#~ msgstr "Gossip - Odeslat zprávu"
+
+#, fuzzy
+#~ msgid "Personal Details Saved!"
+#~ msgstr "Osobní detaily"
+
+#~ msgid "What request message do you want to send to %s?"
+#~ msgstr "Jakou zprávu požadavku chcete odeslat %s?"
+
+#~ msgid "Make sure that your account information is correct."
+#~ msgstr "Zkontrolujte, že vaše informace o účtu jsou správné."
+
+#~ msgid "%s wants to be notified of your status."
+#~ msgstr "%s chce být upozorňován na váš stav."
+
+#~ msgid "You were disconnected from the server. Do you want to reconnect?"
+#~ msgstr "Byli jste odpojeni od serveru. Chcete se znovu připojit?"
+
+#~ msgid ""
+#~ "Make sure that your account information is correct. The server may also "
+#~ "currently be unavailable."
+#~ msgstr ""
+#~ "Zkontrolujte, že vaše informace o účtu jsou správné. Možná server "
+#~ "momentálně není dostupný."
+
+#~ msgid "Edit List..."
+#~ msgstr "Upravit seznam..."
+
+#~ msgid "An error occurred when chatting in the group chat %s."
+#~ msgstr "Při skupinové diskusi %s došlo k chybě."
+
+#~ msgid "Details:"
+#~ msgstr "Detaily:"
+
+#~ msgid "Unable to enter the group chat %s."
+#~ msgstr "Nemohu vstoupit do skupinové diskuse %s."
+
+#~ msgid "An error occurred when chatting with %s."
+#~ msgstr "Při diskusi s %s došlo k chybě."
+
+#~ msgid "Gossip will now try to use your account:"
+#~ msgstr "Gossip se nyní pokusí použít váš účet:"
+
+#~ msgid "Gossip will now try to register the account:"
+#~ msgstr "Gossip se nyní pokusí zaregistrovat účet:"
+
+#~ msgid "Saving personal details, please wait..."
+#~ msgstr "Ukládám osobní detaily, čekejte prosím..."
+
+#~ msgid "*"
+#~ msgstr "*"
+
+#~ msgid "From:"
+#~ msgstr "Od:"
+
+#~ msgid "Gossip - Received Message"
+#~ msgstr "Gossip - Přijatá zpráva"
+
+#~ msgid "In reply to:"
+#~ msgstr "Odpověď na:"
+
+#~ msgid "To:"
+#~ msgstr "Komu:"
+
+#~ msgid "_Reply..."
+#~ msgstr "_Odpovědět..."
+
+#~ msgid "_Send"
+#~ msgstr "_Odeslat"
+
+#~ msgid "C_onnect"
+#~ msgstr "_Připojit"
+
+#~ msgid "Connect _Server:"
+#~ msgstr "Připojit se k _serveru:"
+
+#~ msgid "_Jabber ID:"
+#~ msgstr "ID _Jabberu:"
+
+#~ msgid " "
+#~ msgstr " "
+
+#~ msgid "<b>Available chat rooms</b>"
+#~ msgstr "<b>Dostupné diskusní místnosti</b>"
+
+#~ msgid "<b>Chat room information</b>"
+#~ msgstr "<b>Informace o diskusní místnosti</b>"
+
+#~ msgid "Imendio Gossip - Group Chat"
+#~ msgstr "Imendio Gossip - Skupinová diskuse"
+
+#~ msgid "N_ickname:"
+#~ msgstr "_Přezdívka:"
+
+#~ msgid ""
+#~ "Pick a favorite, or enter nickname, server name, and the name of the chat "
+#~ "room to enter."
+#~ msgstr ""
+#~ "Vstupte výběrem oblíbeného nebo zadejte přezdívku, název serveru a název "
+#~ "diskusní místnosti."
+
+#~ msgid "R_emove"
+#~ msgstr "_Odstranit"
+
+#~ msgid "_Add"
+#~ msgstr "_Přidat"
+
+#~ msgid " "
+#~ msgstr " "
+
+#~ msgid ""
+#~ "<b>Finding the best server...</b>\n"
+#~ "This will take a few moments, please wait."
+#~ msgstr ""
+#~ "<b>Hledám nejlepší server...</b>\n"
+#~ "To bude chvilku trvat, počkejte prosím."
+
+#~ msgid "<b>Personal information</b>"
+#~ msgstr "<b>Osobní informace</b>"
+
+#~ msgid "<b>Preset status messages</b>"
+#~ msgstr "<b>Přednastavené zprávy o stavu</b>"
+
+#~ msgid "<i>Information not available</i>"
+#~ msgstr "<i>Informace nejsou k dispozici</i>"
+
+#~ msgid "Add Another Account"
+#~ msgstr "Přidat další účet"
+
+#~ msgid "Choose a Server"
+#~ msgstr "Vyberte server"
+
+#~ msgid "Choose from list:"
+#~ msgstr "Vyberte ze seznamu:"
+
+#~ msgid "Configuring Service"
+#~ msgstr "Nastavuji službu"
+
+#~ msgid "Discover Services"
+#~ msgstr "Vyhledat služby"
+
+#~ msgid "Information about ..."
+#~ msgstr "Informace o ..."
+
+#~ msgid "Jabber.com"
+#~ msgstr "Jabber.com"
+
+#~ msgid "Jabber.org"
+#~ msgstr "Jabber.org"
+
+#~ msgid "Nick name:"
+#~ msgstr "Přezdívka:"
+
+#~ msgid "On what server do you have a Jabber account?"
+#~ msgstr "Na kterém serveru máte účet Jabberu?"
+
+#~ msgid ""
+#~ "Please enter your user name, password and all other required details "
+#~ "below to set up your account. "
+#~ msgstr ""
+#~ "Nastavte prosím váš účet zadáním vašeho jména uživatele, hesla a jiných "
+#~ "vyžadovaných podrobností níže. "
+
+#~ msgid "Server Details"
+#~ msgstr "Podrobnosti o serveru"
+
+#~ msgid "Sound"
+#~ msgstr "Zvuk"
+
+#~ msgid ""
+#~ "This wizard will allow you to configure your account settings for another "
+#~ "protocol. "
+#~ msgstr "Tento průvodce vám umožní nastavit váš účet pro jiný protokol. "
+
+#~ msgid "Use a different server"
+#~ msgstr "Použít jiný server"
+
+#~ msgid "What request message do you want to send to ...?"
+#~ msgstr "Jakou zprávu požadavku chcete odeslat ...?"
+
+#~ msgid "Which protocol would you like to set up? "
+#~ msgstr "Který protokol chcete nastavit? "
diff --git a/gnome-2-22/po/cy.po b/gnome-2-22/po/cy.po
new file mode 100644
index 000000000..047756960
--- /dev/null
+++ b/gnome-2-22/po/cy.po
@@ -0,0 +1,2235 @@
+# Gossip yn Gymraeg.
+# This file is distributed under the same license as the gossip package.
+# Dafydd Harries <daf@muse.19inch.net>, 2003 2004.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gossip\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-05-15 23:46+0200\n"
+"PO-Revision-Date: 2004-07-05 16:41+0100\n"
+"Last-Translator: Dafydd Harries <daf@muse.19inch.net>\n"
+"Language-Team: Cymraeg <gnome-cy@www.linux.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../data/empathy.desktop.in.h:1
+#, fuzzy
+msgid "Empathy Instant Messenger"
+msgstr "Negesydd Parod"
+
+#: ../data/empathy.desktop.in.h:2
+msgid "Instant Messenger"
+msgstr "Negesydd Parod"
+
+#: ../data/empathy.schemas.in.h:1
+msgid "Always open a separate chat window for new chats."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:2
+msgid "Chat window theme"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:3
+msgid ""
+"Comma separated list of spell checker languages to use (e.g. en, fr, nl)."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:4
+#, fuzzy
+msgid "Compact contact list"
+msgstr "Ychwanegu i'ch rhestr cysylltion"
+
+#: ../data/empathy.schemas.in.h:5
+msgid "Contact list sort criterium"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:6
+msgid "Default directory to select an avatar image from"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:7
+msgid "Enable popup when contact is available"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:8
+#, fuzzy
+msgid "Enable sound when away"
+msgstr "Analluogi synau wrth fod _ymaith"
+
+#: ../data/empathy.schemas.in.h:9
+#, fuzzy
+msgid "Enable sound when busy"
+msgstr "Analluogi synau wrth fod yn _brysur"
+
+#: ../data/empathy.schemas.in.h:10
+#, fuzzy
+msgid "Enable spell checker"
+msgstr "Gossip - Danfon Neges"
+
+#: ../data/empathy.schemas.in.h:11
+msgid "Hide main window"
+msgstr "Cuddio'r prif ffenest"
+
+#: ../data/empathy.schemas.in.h:12
+msgid "Hide the main window."
+msgstr "Cuddio'r prif ffenest"
+
+#: ../data/empathy.schemas.in.h:13
+msgid "Open new chats in separate windows"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:14
+#, fuzzy
+msgid "Show avatars"
+msgstr "_Dangos y Rhestr Cysylltion"
+
+#: ../data/empathy.schemas.in.h:15
+#, fuzzy
+msgid "Show hint about closing the main window"
+msgstr "Safle X y prif ffenest."
+
+#: ../data/empathy.schemas.in.h:16
+msgid "Show offline contacts"
+msgstr "Dangos cysylltion all-lein"
+
+#: ../data/empathy.schemas.in.h:17
+msgid "Spell checking languages"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:18
+msgid "The last directory that an avatar image was chosen from."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:19
+#, fuzzy
+msgid "The theme that is used to display the conversation in chat windows."
+msgstr "Defnyddir yr enw hwn i'ch adnabod chi mewn ffenestri sgwrs."
+
+#: ../data/empathy.schemas.in.h:20
+msgid "Use graphical smileys"
+msgstr "Defnyddio gwynebau graffigol"
+
+#: ../data/empathy.schemas.in.h:21
+msgid "Use notification sounds"
+msgstr "Defnyddio synau hysbysu"
+
+#: ../data/empathy.schemas.in.h:22
+msgid "Use theme for chat rooms"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:23
+msgid ""
+"Whether or not to check words typed against the languages you want to check "
+"with."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:24
+msgid ""
+"Whether or not to convert smileys into graphical images in conversations."
+msgstr "A ddylid trosi gwynebau i ddelweddau graffigol mewn sgyrsiau."
+
+#: ../data/empathy.schemas.in.h:25
+msgid "Whether or not to play a sound when messages arrive."
+msgstr "A ddylid chwarae cain pan mae negeseuon yn cyrraedd."
+
+#: ../data/empathy.schemas.in.h:26
+msgid "Whether or not to play sounds when away."
+msgstr "A ddylid chwarae synau wrth fod ymaith."
+
+#: ../data/empathy.schemas.in.h:27
+msgid "Whether or not to play sounds when busy."
+msgstr "A ddylid chwarae synau wrth fod yn brysur."
+
+#: ../data/empathy.schemas.in.h:28
+#, fuzzy
+msgid "Whether or not to show a popup when a contact becomes available."
+msgstr "A ddylid chwarae cain pan mae negeseuon yn cyrraedd."
+
+#: ../data/empathy.schemas.in.h:29
+#, fuzzy
+msgid ""
+"Whether or not to show avatars for contacts in the contact list and chat "
+"windows."
+msgstr "A ddylid dangos cysylltion sydd all-lein yn y rhestr cysylltion."
+
+#: ../data/empathy.schemas.in.h:30
+msgid "Whether or not to show contacts that are offline in the contact list."
+msgstr "A ddylid dangos cysylltion sydd all-lein yn y rhestr cysylltion."
+
+#: ../data/empathy.schemas.in.h:31
+msgid ""
+"Whether or not to show the message dialog about closing the main window with "
+"the 'x' button in the title bar."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:32
+#, fuzzy
+msgid "Whether to show the contact list in compact mode or not."
+msgstr "A ddylid dangos cysylltion sydd all-lein yn y rhestr cysylltion."
+
+#: ../data/empathy.schemas.in.h:33
+msgid "Whether to use the theme for chat rooms or not."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:34
+msgid ""
+"Which criterium to use when sorting the contact list. Default is to use sort "
+"by the contact's name with the value \"name\". A value of \"state\" will "
+"sort the contact list by state."
+msgstr ""
+
+#: ../libempathy/gossip-contact.c:654 ../libempathy/gossip-presence.c:184
+#: ../libempathy/gossip-presence.c:283
+msgid "Offline"
+msgstr "All-lein"
+
+#: ../libempathy/gossip-presence.c:274
+msgid "Available"
+msgstr "Ar Gael"
+
+#: ../libempathy/gossip-presence.c:276
+msgid "Busy"
+msgstr "Prysur"
+
+#: ../libempathy/gossip-presence.c:279
+msgid "Away"
+msgstr "Ymaith"
+
+#: ../libempathy-gtk/empathy-main-window.c:254
+#, fuzzy
+msgid "Show and edit accounts"
+msgstr "_Dangos y Rhestr Cysylltion"
+
+#: ../libempathy-gtk/empathy-main-window.c:456
+msgid "Group"
+msgstr "Grŵp"
+
+#: ../libempathy-gtk/empathy-main-window.c:477
+#, fuzzy
+msgid "Contact"
+msgstr "Ychwanegu cyswllt"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:1
+#, fuzzy
+msgid "Contact List - Empathy"
+msgstr "_Cuddio y Rhestr Cysylltion"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:2
+#, fuzzy
+msgid "Context"
+msgstr "_Cysylltu"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:3
+#, fuzzy
+msgid "Join _Favorites"
+msgstr "_Golygu ffefrynnau..."
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:4
+#: ../libempathy-gtk/gossip-chat.glade.h:10
+msgid "Join _New..."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:5
+msgid "Manage Favorites..."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:6
+msgid "Show _Offline Contacts"
+msgstr "Dangos Cysylltion All-lein"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:7
+#, fuzzy
+msgid "_About"
+msgstr "_Gweithredion"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:8
+#, fuzzy
+msgid "_Accounts"
+msgstr "_Gweithredion"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:9
+#: ../libempathy-gtk/gossip-chat.glade.h:15
+msgid "_Add Contact..."
+msgstr "_Ychwanegu Cyswllt..."
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:10
+#: ../libempathy-gtk/gossip-contact-list.c:298
+msgid "_Chat"
+msgstr "_Sgwrs"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:11
+#, fuzzy
+msgid "_Contents"
+msgstr "_Cysylltu"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:12
+#: ../libempathy-gtk/gossip-chat.glade.h:21
+#: ../libempathy-gtk/gossip-contact-list.c:310
+#, fuzzy
+msgid "_Edit"
+msgstr "_Gadael"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:13
+msgid "_Help"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:14
+#: ../libempathy-gtk/empathy-status-icon.glade.h:2
+msgid "_New Message..."
+msgstr "Neges _Newydd..."
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:15
+#, fuzzy
+msgid "_Personal Information"
+msgstr "Manylion personol"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:16
+msgid "_Preferences"
+msgstr "_Hoffterau"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:17
+#: ../libempathy-gtk/empathy-status-icon.glade.h:3
+msgid "_Quit"
+msgstr "_Gadael"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:18
+#: ../libempathy-gtk/gossip-chat.glade.h:25
+#, fuzzy
+msgid "_Room"
+msgstr "_Ystafell:"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:19
+#: ../libempathy-gtk/gossip-chat.glade.h:28
+#: ../libempathy-gtk/gossip-contact-list.c:326
+#, fuzzy
+msgid "_View Previous Conversations"
+msgstr "_Sgwrs"
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:1
+msgid "Status"
+msgstr "Cyflwr"
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:4
+msgid "_Show Contact List"
+msgstr "_Dangos y Rhestr Cysylltion"
+
+#: ../libempathy-gtk/gossip-about-dialog.c:63
+msgid ""
+"Empathy is free software; you can redistribute it and/or modify it under the "
+"terms of the GNU General Public License as published by the Free Software "
+"Foundation; either version 2 of the License, or (at your option) any later "
+"version."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-about-dialog.c:67
+msgid ""
+"Empathy is distributed in the hope that it will be useful, but WITHOUT ANY "
+"WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS "
+"FOR A PARTICULAR PURPOSE. See the GNU General Public License for more "
+"details."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-about-dialog.c:71
+msgid ""
+"You should have received a copy of the GNU General Public License along with "
+"Empathy; if not, write to the Free Software Foundation, Inc., 51 Franklin "
+"Street, Fifth Floor, Boston, MA 02110-130159 USA"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-about-dialog.c:99
+#, fuzzy
+msgid "An Instant Messaging client for GNOME"
+msgstr "Gossip, Cleient Negeseuo Cyflym"
+
+#: ../libempathy-gtk/gossip-about-dialog.c:105
+#, fuzzy
+msgid "translator-credits"
+msgstr "Dafydd Harries"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:224
+#, fuzzy
+msgid "Disable"
+msgstr "Ar Gael"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:227
+msgid "Enable"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:261
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:3
+#, fuzzy
+msgid "<b>No Account Selected</b>"
+msgstr "<b>Gosodiadau Cyfrif</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:263
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to start configuring.\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want "
+"to configure in the list on the left."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:272
+#, fuzzy
+msgid "<b>No Accounts Configured</b>"
+msgstr "<b>Gosodiadau Cyfrif</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:274
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to start configuring."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:362
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:6
+#, fuzzy
+msgid "Accounts"
+msgstr "_Enw cyfrif:"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:857
+#, c-format
+msgid ""
+"You are about to remove your %s account!\n"
+"Are you sure you want to proceed?"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:863
+msgid ""
+"Any associated conversations and chat rooms will NOT be removed if you "
+"decide to proceed.\n"
+"\n"
+"Should you decide to add the account back at a later time, they will still "
+"be available."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:1
+#, fuzzy
+msgid "<b>Account</b>"
+msgstr "<b>C_yfrif:</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:2
+#, fuzzy
+msgid "<b>New Account</b>"
+msgstr "<b>C_yfrif:</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:4
+#, fuzzy
+msgid "<b>Settings</b>"
+msgstr "<b>Gosodiadau Cyfrif</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:5
+msgid "A unique name for this account to identify it personally to you."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:7
+#, fuzzy
+msgid "Cr_eate"
+msgstr "Sgwrs"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:8
+msgid "Imendio "
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:9
+msgid "Jabber"
+msgstr "Jabber"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:10
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to started configuring.\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want "
+"to configure in the list on the left."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:13
+#, fuzzy
+msgid "_Name:"
+msgstr "Enw:"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:14
+#, fuzzy
+msgid "_Type:"
+msgstr "_Testun:"
+
+#: ../libempathy-gtk/gossip-account-widget-generic.c:144
+#: ../libempathy-gtk/gossip-account-widget-generic.c:186
+#, c-format
+msgid "%s:"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:1
+#, fuzzy
+msgid ""
+"<small><b><span foreground=\"#555\">Example: user@jabber.org</span></b></"
+"small>"
+msgstr "<span size=\"smaller\">Enghraifft: cyfrif@jabber.org</span>"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:2
+msgid "Forget password and clear the entry."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:3
+msgid "Login I_D:"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:4
+#, fuzzy
+msgid "Pass_word:"
+msgstr "_Cyfrinair:"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:5
+#, fuzzy
+msgid "Reso_urce:"
+msgstr "_Adnodd:"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:6
+#, fuzzy
+msgid "Use encryption (SS_L)"
+msgstr "Defnyddio _amgryptio (SSL)"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:7
+#, fuzzy
+msgid "_Port:"
+msgstr "_Porth:"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:8
+msgid "_Server:"
+msgstr "_Gweinydd:"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:9
+#, fuzzy
+msgid "jabber account settings"
+msgstr "<b>Gosodiadau Cyfrif</b>"
+
+#: ../libempathy-gtk/gossip-chat.c:314
+msgid "Disconnected"
+msgstr "Wedi Datgysylltu"
+
+#: ../libempathy-gtk/gossip-chat.c:858
+msgid "Insert Smiley"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.c:906
+msgid "_Check Word Spelling..."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.c:1244
+msgid "Connected"
+msgstr "Wedi Cysylltu"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:1
+msgid "C_lear"
+msgstr "C_lirio"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:2
+msgid "Change _Topic..."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:3
+msgid "Chat"
+msgstr "Sgwrs"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:4
+#, fuzzy
+msgid "Contact Infor_mation"
+msgstr "/_Gwybodaeth Cyswllt"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:5
+#, fuzzy
+msgid "Cu_t"
+msgstr "Sgwrs"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:6
+#, fuzzy
+msgid "In_vite..."
+msgstr "_Cofrestri..."
+
+#: ../libempathy-gtk/gossip-chat.glade.h:7
+msgid "Insert _Smiley"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:8
+#, fuzzy
+msgid "Invitation _message:"
+msgstr "Rhowch neges cyflwr:"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:9
+msgid "Invite"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:11
+msgid "Move Tab _Left"
+msgstr "Symud y Tab i'r _Chwith"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:12
+msgid "Move Tab _Right"
+msgstr "Symud y Tab i'r _Dde"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:13
+msgid "Select who would you like to invite:"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:14
+msgid "You have been invited to join a chat conference."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:16
+#, fuzzy
+msgid "_Add To Favorites"
+msgstr "_Golygu ffefrynnau..."
+
+#: ../libempathy-gtk/gossip-chat.glade.h:17
+msgid "_Close"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:18
+msgid "_Conversation"
+msgstr "_Sgwrs"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:19
+msgid "_Copy"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:20
+msgid "_Detach Tab"
+msgstr "_Datgysylltu'r Tab"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:22
+msgid "_Next Tab"
+msgstr "Tab _Nesaf"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:23
+msgid "_Paste"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:24
+msgid "_Previous Tab"
+msgstr "Tab _Cynt"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:26
+#, fuzzy
+msgid "_Show Contacts"
+msgstr "_Dangos y Rhestr Cysylltion"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:27
+msgid "_Tabs"
+msgstr "_Tabiau"
+
+#: ../libempathy-gtk/gossip-chat-view.c:544
+msgid "_Copy Link Address"
+msgstr "_Copïo Cyfeiriad y Cyswllt"
+
+#: ../libempathy-gtk/gossip-chat-view.c:552
+msgid "_Open Link"
+msgstr "_Agor y Cyswllt"
+
+#: ../libempathy-gtk/gossip-chat-view.c:889
+msgid "%A %d %B %Y"
+msgstr "%A %d %B %Y"
+
+#: ../libempathy-gtk/gossip-chat-window.c:685
+#: ../libempathy-gtk/gossip-chat-window.c:715
+#, fuzzy
+msgid "New Message"
+msgid_plural "New Messages"
+msgstr[0] "Neges _Newydd..."
+msgstr[1] "Neges _Newydd..."
+
+#: ../libempathy-gtk/gossip-chat-window.c:691
+#, fuzzy
+msgid "Chat Room"
+msgstr "Gossip - Sgwrs"
+
+#: ../libempathy-gtk/gossip-chat-window.c:696
+#: ../libempathy-gtk/gossip-chat-window.c:719
+#, fuzzy, c-format
+msgid "Conversation"
+msgid_plural "Conversations (%d)"
+msgstr[0] "_Sgwrs"
+msgstr[1] "_Sgwrs"
+
+#: ../libempathy-gtk/gossip-chat-window.c:1295
+msgid "Typing a message."
+msgstr "Yn teipio neges."
+
+#: ../libempathy-gtk/gossip-contact-list.c:290
+#, fuzzy
+msgid "_Contact"
+msgstr "Ychwanegu cyswllt"
+
+#: ../libempathy-gtk/gossip-contact-list.c:294
+#, fuzzy
+msgid "_Group"
+msgstr "Grŵp"
+
+#: ../libempathy-gtk/gossip-contact-list.c:298
+#, fuzzy
+msgid "Chat with contact"
+msgstr "Ychwanegu cyswllt"
+
+#: ../libempathy-gtk/gossip-contact-list.c:302
+#, fuzzy
+msgid "Infor_mation"
+msgstr "/_Gwybodaeth Cyswllt"
+
+#: ../libempathy-gtk/gossip-contact-list.c:302
+#, fuzzy
+msgid "View contact information"
+msgstr "Manylion cyswllt"
+
+#: ../libempathy-gtk/gossip-contact-list.c:306
+#, fuzzy
+msgid "Re_name"
+msgstr "/_Ailenwi'r grŵp"
+
+#: ../libempathy-gtk/gossip-contact-list.c:306
+#, fuzzy
+msgid "Rename"
+msgstr "Enw _defnyddiwr:"
+
+#: ../libempathy-gtk/gossip-contact-list.c:310
+#, fuzzy
+msgid "Edit the groups and name for this contact"
+msgstr ""
+"Os gwelwch yn dda, rhowch llysenw newydd ar gyfer y cyswllt\n"
+"%s"
+
+#: ../libempathy-gtk/gossip-contact-list.c:314
+msgid "_Remove"
+msgstr "_Tynnu"
+
+#: ../libempathy-gtk/gossip-contact-list.c:314
+#, fuzzy
+msgid "Remove contact"
+msgstr "/_Tynnu'r cyswllt"
+
+#: ../libempathy-gtk/gossip-contact-list.c:318
+#, fuzzy
+msgid "_Invite to Chat Room"
+msgstr "Gossip - Golygu Sgyrsiau Grŵp"
+
+#: ../libempathy-gtk/gossip-contact-list.c:318
+msgid "Invite to a currently open chat room"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-contact-list.c:322
+msgid "_Send File..."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-contact-list.c:322
+#, fuzzy
+msgid "Send a file"
+msgstr "Dewis"
+
+#: ../libempathy-gtk/gossip-contact-list.c:326
+#, fuzzy
+msgid "View previous conversations with this contact"
+msgstr "_Sgwrs"
+
+#: ../libempathy-gtk/gossip-preferences.c:250
+msgid "Language"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:1
+#, fuzzy
+msgid "<b>Appearance</b>"
+msgstr "Ymddangosiad"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:2
+#, fuzzy
+msgid "<b>Audio</b>"
+msgstr "<b>C_yfrif:</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:3
+#, fuzzy
+msgid "<b>Behaviour</b>"
+msgstr "<b>Ffefryn:</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:4
+#, fuzzy
+msgid "<b>Contact List</b>"
+msgstr "_Cysylltu"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:5
+#, fuzzy
+msgid "<b>Languages</b>"
+msgstr "<b>Enw:</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:6
+#, fuzzy
+msgid "<b>Options</b>"
+msgstr "<b>Disgrifiad</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:7
+#, fuzzy
+msgid "<b>Visual</b>"
+msgstr "<b>Ebost:</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:8
+msgid ""
+"<small>The list of languages reflects only the languages for which you have "
+"a dictionary installed.</small>"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:9
+msgid "Avatars are user chosen images shown in the contact list"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:10
+#, fuzzy
+msgid "Chat Th_eme:"
+msgstr "Enw _sgwrs:"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:11
+msgid "Display notifications when contacts come _online"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:12
+#, fuzzy
+msgid "Enable sounds when _away"
+msgstr "Analluogi synau wrth fod _ymaith"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:13
+#, fuzzy
+msgid "Enable sounds when _busy"
+msgstr "Analluogi synau wrth fod yn _brysur"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:14
+msgid "General"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:15
+#, fuzzy
+msgid "Notifications"
+msgstr "Hysbysu"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:16
+#, fuzzy
+msgid "Preferences"
+msgstr "_Hoffterau"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:17
+msgid "Show _avatars"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:18
+#, fuzzy
+msgid "Show _smileys as images"
+msgstr "Trosi _gwynebau i ddelweddau graffigol"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:19
+#, fuzzy
+msgid "Show co_mpact contact list"
+msgstr "_Dangos y Rhestr Cysylltion"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:20
+msgid "Sort by _name"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:21
+#, fuzzy
+msgid "Sort by s_tate"
+msgstr "Gosodwch eich cyflwr:"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:22
+msgid "Spell Checking"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:23
+msgid "Themes"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:24
+msgid "_Enable spell checking"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:25
+msgid "_Open new chats in separate windows"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:26
+#, fuzzy
+msgid "_Play sound when messages arrive"
+msgstr "Chwarae sain pan mae negeseuon yn cyrraedd"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:27
+#, fuzzy
+msgid "_Use for chat rooms"
+msgstr "Gossip - Golygu Sgyrsiau Grŵp"
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:702
+#, fuzzy
+msgid "Custom message..."
+msgstr "Neges Addasiedig..."
+
+#. Clear list
+#: ../libempathy-gtk/gossip-presence-chooser.c:724
+#, fuzzy
+msgid "Clear List..."
+msgstr "C_lirio"
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:803
+#, fuzzy
+msgid "Are you sure you want to clear the list?"
+msgstr "Ydych chi eisiau derbyn yr ymgais?"
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:807
+msgid ""
+"This will remove any custom messages you have added to the list of preset "
+"status messages."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:812
+#, fuzzy
+msgid "Clear List"
+msgstr "C_lirio"
+
+#: ../libempathy-gtk/gossip-presence-chooser.glade.h:1
+msgid "Enter status message:"
+msgstr "Rhowch neges cyflwr:"
+
+#: ../libempathy-gtk/gossip-presence-chooser.glade.h:2
+#, fuzzy
+msgid "Status Message Presets"
+msgstr "Negeseuon Cyflwr"
+
+#: ../libempathy-gtk/gossip-presence-chooser.glade.h:3
+#, fuzzy
+msgid "_Add to status message list"
+msgstr "Negeseuon cyflwr rhagosod"
+
+#: ../libempathy-gtk/gossip-private-chat.c:198
+#, c-format
+msgid "%s went offline"
+msgstr "Aeth %s all-lein"
+
+#: ../libempathy-gtk/gossip-private-chat.c:212
+#, fuzzy, c-format
+msgid "%s has come online"
+msgstr "Mae %s yn dod arlein"
+
+#: ../libempathy-gtk/gossip-theme-manager.c:87
+msgid "Classic"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-theme-manager.c:88
+msgid "Simple"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-theme-manager.c:89
+#, fuzzy
+msgid "Clean"
+msgstr "C_lirio"
+
+#: ../libempathy-gtk/gossip-theme-manager.c:90
+msgid "Blue"
+msgstr ""
+
+#: ../src/empathy-main.c:145
+msgid "Don't connect on startup"
+msgstr "Peidio a chysylltu wrth gychwyn"
+
+#: ../src/empathy-main.c:155
+#, fuzzy
+msgid "- Empathy Instant Messenger"
+msgstr "Negesydd Parod"
+
+#, fuzzy
+#~ msgid "Gossip Instant Messenger"
+#~ msgstr "Negesydd Parod"
+
+#, fuzzy
+#~ msgid "Joining"
+#~ msgstr "_Ymuno"
+
+#, fuzzy
+#~ msgid "Active"
+#~ msgstr "_Gweithredion"
+
+#, fuzzy
+#~ msgid "Unknown"
+#~ msgstr "Gwall anhysbys"
+
+#, fuzzy
+#~ msgid "No affiliation"
+#~ msgstr "Hysbysu"
+
+#, fuzzy
+#~ msgid "An unknown error occurred, check your details are correct."
+#~ msgstr "Gwall anhysbys"
+
+#, fuzzy
+#~ msgid "Unavailable"
+#~ msgstr "Ar Gael"
+
+#, fuzzy
+#~ msgid "An unknown error occurred."
+#~ msgstr "Gwall anhysbys"
+
+#, fuzzy
+#~ msgid "Connection refused."
+#~ msgstr "Wedi Cysylltu"
+
+#, fuzzy
+#~ msgid "Connection timed out."
+#~ msgstr "Wedi Cysylltu"
+
+#, fuzzy
+#~ msgid "This feature is unavailable."
+#~ msgstr "Efallai nid yw'r gweinydd ar gael ar hyn o bryd."
+
+#, fuzzy
+#~ msgid "new account"
+#~ msgstr "Cyfrif newydd"
+
+#~ msgid "Home"
+#~ msgstr "Adref"
+
+#, fuzzy
+#~ msgid "This service is unavailable or not found"
+#~ msgstr "Efallai nid yw'r gweinydd ar gael ar hyn o bryd."
+
+#, fuzzy
+#~ msgid "Registration is required"
+#~ msgstr "Yn cofrestru cyfrif"
+
+#, fuzzy
+#~ msgid "This feature is not implemented"
+#~ msgstr "Efallai nid yw'r gweinydd ar gael ar hyn o bryd."
+
+#, fuzzy
+#~ msgid "Disconnect"
+#~ msgstr "_Datgysylltu"
+
+#~ msgid "Connect"
+#~ msgstr "_Cysylltu"
+
+#, fuzzy
+#~ msgid "Successfully registered your new account settings."
+#~ msgstr "Cofrestrwyd cyfrif yn llwyddianus"
+
+#, fuzzy
+#~ msgid "Failed to register your new account settings."
+#~ msgstr "Methwyd cofrestru cyfrif"
+
+#, fuzzy
+#~ msgid "Successfully changed your account password."
+#~ msgstr "Rhowch eich cyfrinair os gwelwch yn dda:"
+
+#, fuzzy
+#~ msgid "Failed to change your account password."
+#~ msgstr "Rhowch eich cyfrinair os gwelwch yn dda:"
+
+#, fuzzy
+#~ msgid ""
+#~ "Please enter a new password for this account:\n"
+#~ "%s"
+#~ msgstr ""
+#~ "Os gwelwch yn dda, rhowch enw newydd ar gyfer y grŵp\n"
+#~ "%s"
+
+#, fuzzy
+#~ msgid "No information is available for this contact."
+#~ msgstr "Cyrchu gwybodaeth ynghylch y cyswllt hwn"
+
+#, fuzzy
+#~ msgid "Information requested, please wait..."
+#~ msgstr "<b>Gofynnwyd gwybodaeth, arhoswch os gwelwch yn dda...</b>"
+
+#~ msgid "I would like to add you to my contact list."
+#~ msgstr "Hoffwn eich ychwanegu at fy rhestr cysylltion."
+
+#, fuzzy
+#~ msgid "%d new message"
+#~ msgid_plural "%d new messages"
+#~ msgstr[0] "Neges _Newydd..."
+#~ msgstr[1] "Neges _Newydd..."
+
+#, fuzzy
+#~ msgid "%d subscription request"
+#~ msgid_plural "%d subscription requests"
+#~ msgstr[0] "Cais Tanysgrifiad"
+#~ msgstr[1] "Cais Tanysgrifiad"
+
+#, fuzzy
+#~ msgid "%d server message"
+#~ msgid_plural "%d server messages"
+#~ msgstr[0] "Neges cais"
+#~ msgstr[1] "Neges cais"
+
+#, fuzzy
+#~ msgid "Edit Account _Details"
+#~ msgstr "Golygu Manylion Cyfrif"
+
+#~ msgid "New message from %s"
+#~ msgstr "Neges newydd o %s"
+
+#, fuzzy
+#~ msgid "Accept"
+#~ msgstr "_Derbyn"
+
+#, fuzzy
+#~ msgid "Decline"
+#~ msgstr "Swper"
+
+#, fuzzy
+#~ msgid "Name"
+#~ msgstr "Enw:"
+
+#, fuzzy
+#~ msgid "Room"
+#~ msgstr "_Ystafell:"
+
+#, fuzzy
+#~ msgid "Auto Connect"
+#~ msgstr "Gossip - Cysylltu"
+
+#, fuzzy
+#~ msgid "Information requested..."
+#~ msgstr "<b>Gofynnwyd gwybodaeth, arhoswch os gwelwch yn dda...</b>"
+
+#, fuzzy
+#~ msgid "Do you want to remove this contact from your roster?"
+#~ msgstr ""
+#~ "Ydych chi eisiau tynnu'r cyswllt\n"
+#~ "%s\n"
+#~ "o'ch rhestr cyswllt?"
+
+#, fuzzy
+#~ msgid ""
+#~ "Please enter a new name for the group:\n"
+#~ "%s"
+#~ msgstr ""
+#~ "Os gwelwch yn dda, rhowch enw newydd ar gyfer y grŵp\n"
+#~ "%s"
+
+#~ msgid "Select"
+#~ msgstr "Dewis"
+
+#~ msgid "Unsorted"
+#~ msgstr "Heb eu trefnu"
+
+#, fuzzy
+#~ msgid "Unknown error occurred during file transfer."
+#~ msgstr "Gwall anhysbys"
+
+#, fuzzy
+#~ msgid "%s would like to send you a file."
+#~ msgstr "Hoffwn eich ychwanegu at fy rhestr cysylltion."
+
+#, fuzzy
+#~ msgid "Someone would like to send you a file."
+#~ msgstr "Hoffwn eich ychwanegu at fy rhestr cysylltion."
+
+#, fuzzy
+#~ msgid "Select a file"
+#~ msgstr "Dewis"
+
+#, fuzzy
+#~ msgid "Connecting..."
+#~ msgstr "_Cysylltu..."
+
+#, fuzzy
+#~ msgid "Retry connection"
+#~ msgstr "Gossip - Cysylltu"
+
+#, fuzzy
+#~ msgid "Enter the new topic you want to set for this room:"
+#~ msgstr "Pa llysenw hoffwch ddefnyddio ar gyfer y cyswllt hwn?"
+
+#, fuzzy
+#~ msgid "Topic: %s"
+#~ msgstr "_Testun:"
+
+#, fuzzy
+#~ msgid "Account"
+#~ msgstr "_Enw cyfrif:"
+
+#, fuzzy
+#~ msgid "Conversation With"
+#~ msgstr "_Sgwrs"
+
+#~ msgid "List the available accounts"
+#~ msgstr "Rhestru'r cyfrifon sydd ar gael"
+
+#~ msgid "Which account to connect to on startup"
+#~ msgstr "Pa gyfrif i gysylltu iddo wrth gychwyn"
+
+#~ msgid "ACCOUNT-NAME"
+#~ msgstr "ENW-CYFRIF"
+
+#~ msgid "Available accounts:"
+#~ msgstr "Cyfrifon sydd ar gael:"
+
+#~ msgid "[default]"
+#~ msgstr "[rhagosodiad]"
+
+#~ msgid "There is no account with the name '%s'."
+#~ msgstr "Does dim cyfrif gyda'r enw '%s'."
+
+#, fuzzy
+#~ msgid "Join"
+#~ msgstr "_Ymuno"
+
+#, fuzzy
+#~ msgid "Create"
+#~ msgstr "Sgwrs"
+
+#, fuzzy
+#~ msgid "Chat Rooms"
+#~ msgstr "Gossip - Sgwrs"
+
+#, fuzzy
+#~ msgid "Browsing for conference rooms, please wait..."
+#~ msgstr "Arbed manylion personol..."
+
+#, fuzzy
+#~ msgid "Default"
+#~ msgstr "[rhagosodiad]"
+
+#, fuzzy
+#~ msgid "Chat!"
+#~ msgstr "Sgwrs"
+
+#, fuzzy
+#~ msgid "%s wants to be added to your contact list."
+#~ msgstr "Caiff %s ei ychwanegu i'ch restr cyswllt."
+
+#, fuzzy
+#~ msgid "Someone wants to be added to your contact list."
+#~ msgstr "Caiff y cyswllt ei ychwanegu i'ch rhestr cyswllt"
+
+#, fuzzy
+#~ msgid "Subscription request"
+#~ msgstr "Cais Tanysgrifiad"
+
+#, fuzzy
+#~ msgid "Contact Information"
+#~ msgstr "/_Gwybodaeth Cyswllt"
+
+#, fuzzy
+#~ msgid "New subscription request from %s"
+#~ msgstr "Cais Tanysgrifiad"
+
+#, fuzzy
+#~ msgid "Do you want to add this person to your contact list?"
+#~ msgstr ""
+#~ "Ydych chi eisiau tynnu'r cyswllt\n"
+#~ "%s\n"
+#~ "o'ch rhestr cyswllt?"
+
+#, fuzzy
+#~ msgid "Do you want to add %s to your contact list?"
+#~ msgstr ""
+#~ "Ydych chi eisiau tynnu'r cyswllt\n"
+#~ "%s\n"
+#~ "o'ch rhestr cyswllt?"
+
+#, fuzzy
+#~ msgid "Please enter your %s account password"
+#~ msgstr "Rhowch eich cyfrinair os gwelwch yn dda:"
+
+#~ msgid "Remember Password?"
+#~ msgstr "Cofio'r Cyfrinair?"
+
+#, fuzzy
+#~ msgid "Change"
+#~ msgstr "Sgwrs"
+
+#, fuzzy
+#~ msgid "Contact goes online"
+#~ msgstr "Mae %s yn dod arlein"
+
+#, fuzzy
+#~ msgid "Do you want to accept this file?"
+#~ msgstr "Ydych chi eisiau derbyn yr ymgais?"
+
+#, fuzzy
+#~ msgid "File name:"
+#~ msgstr "Enw _defnyddiwr:"
+
+#, fuzzy
+#~ msgid "File size:"
+#~ msgstr "Safle gwe:"
+
+#~ msgid "Web site:"
+#~ msgstr "Safle gwe:"
+
+#~ msgid "_Accept"
+#~ msgstr "_Derbyn"
+
+#~ msgid "_Deny"
+#~ msgstr "_Gwrthod"
+
+#, fuzzy
+#~ msgid "<b>Topic:</b>"
+#~ msgstr "<b>Disgrifiad</b>"
+
+#, fuzzy
+#~ msgid "Account:"
+#~ msgstr "_Enw cyfrif:"
+
+#, fuzzy
+#~ msgid "Edit Favorite Room"
+#~ msgstr "Gossip - Golygu Sgyrsiau Grŵp"
+
+#, fuzzy
+#~ msgid "Group Chat"
+#~ msgstr "Gossip - Sgwrs"
+
+#, fuzzy
+#~ msgid "Join New"
+#~ msgstr "_Ymuno"
+
+#, fuzzy
+#~ msgid "Join room on start_up"
+#~ msgstr "Peidio a chysylltu wrth gychwyn"
+
+#, fuzzy
+#~ msgid "N_ame:"
+#~ msgstr "Enw:"
+
+#, fuzzy
+#~ msgid "S_erver:"
+#~ msgstr "Gweinydd:"
+
+#~ msgid "_Nickname:"
+#~ msgstr "_Llysenw:"
+
+#~ msgid "_Room:"
+#~ msgstr "_Ystafell:"
+
+#, fuzzy
+#~ msgid "<b>About</b>"
+#~ msgstr "<b>C_yfrif:</b>"
+
+#, fuzzy
+#~ msgid "<b>Client Information</b>"
+#~ msgstr "Manylion cleient"
+
+#, fuzzy
+#~ msgid "<b>Groups</b>"
+#~ msgstr "<b>C_yfrif:</b>"
+
+#, fuzzy
+#~ msgid "<b>Name</b>"
+#~ msgstr "<b>Enw:</b>"
+
+#, fuzzy
+#~ msgid "<b>Personal Details</b>"
+#~ msgstr "Manylion Personol"
+
+#, fuzzy
+#~ msgid "<b>Status</b>"
+#~ msgstr "<b>Sain</b>"
+
+#, fuzzy
+#~ msgid "<b>Subscription</b>"
+#~ msgstr "Tanysgrifiad"
+
+#, fuzzy
+#~ msgid "<span size=\"smaller\">Example: Mikael or user@server.org</span>"
+#~ msgstr "<span size=\"smaller\">Enghraifft: cyfrif@jabber.org</span>"
+
+#, fuzzy
+#~ msgid "Accou_nt:"
+#~ msgstr "_Enw cyfrif:"
+
+#, fuzzy
+#~ msgid "Add Contact"
+#~ msgstr "Ychwanegu cyswllt"
+
+#, fuzzy
+#~ msgid "Ch_at"
+#~ msgstr "Sgwrs"
+
+#~ msgid "Client:"
+#~ msgstr "Cleient:"
+
+#, fuzzy
+#~ msgid "Con_tact:"
+#~ msgstr "Ychwanegu cyswllt"
+
+#, fuzzy
+#~ msgid "Connect on S_tartup"
+#~ msgstr "Peidio a chysylltu wrth gychwyn"
+
+#, fuzzy
+#~ msgid "Contacts"
+#~ msgstr "Ychwanegu cyswllt"
+
+#~ msgid "Country:"
+#~ msgstr "Gwlad:"
+
+#~ msgid "Decide _Later"
+#~ msgstr "Penderfynu _Wedyn"
+
+#, fuzzy
+#~ msgid "Edit Contact"
+#~ msgstr "Ychwanegu cyswllt"
+
+#~ msgid "Edit Groups"
+#~ msgstr "Golygu Grŵpiau"
+
+#~ msgid "Email:"
+#~ msgstr "Ebost:"
+
+#, fuzzy
+#~ msgid "ID:"
+#~ msgstr "JID"
+
+#~ msgid "Name:"
+#~ msgstr "Enw:"
+
+#~ msgid "OS:"
+#~ msgstr "System Weithredu:"
+
+#, fuzzy
+#~ msgid "Personal Details"
+#~ msgstr "Manylion _Personol"
+
+#, fuzzy
+#~ msgid "R_egister"
+#~ msgstr "_Cofrestri..."
+
+#, fuzzy
+#~ msgid "Search"
+#~ msgstr "_Chwilio..."
+
+#, fuzzy
+#~ msgid "Spell Checker"
+#~ msgstr "Gossip - Danfon Neges"
+
+#, fuzzy
+#~ msgid "Subscription Request"
+#~ msgstr "Cais Tanysgrifiad"
+
+#, fuzzy
+#~ msgid "This is the name that will be used on your roster for this contact"
+#~ msgstr "Pa llysenw hoffwch ddefnyddio ar gyfer y cyswllt hwn?"
+
+#, fuzzy
+#~ msgid "This name will be used to identify you in chat windows"
+#~ msgstr "Defnyddir yr enw hwn i'ch adnabod chi mewn ffenestri sgwrs."
+
+#, fuzzy
+#~ msgid ""
+#~ "This name will be used to identify you when new contacts lookup your "
+#~ "details"
+#~ msgstr "Defnyddir yr enw hwn i'ch adnabod chi mewn ffenestri sgwrs."
+
+#~ msgid "Version:"
+#~ msgstr "Fersiwn:"
+
+#, fuzzy
+#~ msgid "View Previous Conversations"
+#~ msgstr "_Sgwrs"
+
+#, fuzzy
+#~ msgid "Which account do you want to use?"
+#~ msgstr "Pa enw cyfrif hoffech chi ddefnyddio?"
+
+#, fuzzy
+#~ msgid "You are not subscribed to this contact."
+#~ msgstr ""
+#~ "Nid ydych wedi tanysgrifio at gyflwr y cyswllt hwn. Gwasgwch Tanysgrifio "
+#~ "er mwyn derbyn eu cyflwr."
+
+#, fuzzy
+#~ msgid "_Birthday:"
+#~ msgstr "_Blaenoriaeth:"
+
+#, fuzzy
+#~ msgid "_Connect"
+#~ msgstr "_Cysylltu"
+
+#, fuzzy
+#~ msgid "_Description:"
+#~ msgstr "Disgrifiad"
+
+#~ msgid "_Disconnect"
+#~ msgstr "_Datgysylltu"
+
+#, fuzzy
+#~ msgid "_Email:"
+#~ msgstr "Ebost:"
+
+#, fuzzy
+#~ msgid ""
+#~ "_Enter the name or contact ID of the person you want to chat to below:"
+#~ msgstr "Rhowch ID defnyddiwr y person hoffwch anfon neges sgwrs atynt."
+
+#, fuzzy
+#~ msgid "_For:"
+#~ msgstr "_Porth:"
+
+#, fuzzy
+#~ msgid "_Full Name:"
+#~ msgstr "Enw:"
+
+#, fuzzy
+#~ msgid "_Group:"
+#~ msgstr "Grŵp"
+
+#, fuzzy
+#~ msgid "_Nick Name:"
+#~ msgstr "_Llysenw:"
+
+#, fuzzy
+#~ msgid "_Password:"
+#~ msgstr "_Cyfrinair:"
+
+#, fuzzy
+#~ msgid "_Quit Message:"
+#~ msgstr "Negeseuon _Cyflwr"
+
+#, fuzzy
+#~ msgid "_Retrieve"
+#~ msgstr "_Tynnu"
+
+#~ msgid "_Subscribe"
+#~ msgstr "_Tanysgrifio"
+
+#, fuzzy
+#~ msgid "_Web site:"
+#~ msgstr "Safle gwe:"
+
+#, fuzzy
+#~ msgid "irc account settings"
+#~ msgstr "<b>Gosodiadau Cyfrif</b>"
+
+#, fuzzy
+#~ msgid "msn account settings"
+#~ msgstr "<b>Gosodiadau Cyfrif</b>"
+
+#~ msgid "Preset status messages"
+#~ msgstr "Negeseuon cyflwr rhagosod"
+
+#~ msgid "Preset status messages."
+#~ msgstr "Negeseuon cyflwr rhagosod."
+
+#, fuzzy
+#~ msgid "Connecting"
+#~ msgstr "_Cysylltu"
+
+#~ msgid "%s will be added to your contact list."
+#~ msgstr "Caiff %s ei ychwanegu i'ch restr cyswllt."
+
+#, fuzzy
+#~ msgid "%s ID of new contact:"
+#~ msgstr "ID _Jabber y cyswllt newydd:"
+
+#, fuzzy
+#~ msgid ""
+#~ "Please enter your invitation message to:\n"
+#~ "%s"
+#~ msgstr "Rhowch eich cyfrinair os gwelwch yn dda:"
+
+#, fuzzy
+#~ msgid "Favourite"
+#~ msgstr "<b>Ffefryn:</b>"
+
+#~ msgid "Contact Information for %s"
+#~ msgstr "Gwybodaeth Cyswllt ar gyfer %s"
+
+#, fuzzy
+#~ msgid "/Contact Infor_mation"
+#~ msgstr "/_Gwybodaeth Cyswllt"
+
+#, fuzzy
+#~ msgid "/Re_name Contact"
+#~ msgstr "/_Ailenwi'r cyswllt"
+
+#, fuzzy
+#~ msgid "/_Edit Groups"
+#~ msgstr "/_Golygu grŵpiau"
+
+#, fuzzy
+#~ msgid "/_View Previous Conversations"
+#~ msgstr "_Sgwrs"
+
+#~ msgid ""
+#~ "Please enter a new nickname for the contact\n"
+#~ "%s"
+#~ msgstr ""
+#~ "Os gwelwch yn dda, rhowch llysenw newydd ar gyfer y cyswllt\n"
+#~ "%s"
+
+#~ msgid "Edit groups for %s"
+#~ msgstr "Golygu grŵpiau ar gyfer %s"
+
+#~ msgid "Conversation Log"
+#~ msgstr "Cofnod Sgwrs"
+
+#~ msgid "Registering account"
+#~ msgstr "Yn cofrestru cyfrif"
+
+#, fuzzy
+#~ msgid "Respond"
+#~ msgstr "Rheswm:"
+
+#, fuzzy
+#~ msgid "Add to _favourites"
+#~ msgstr "_Golygu ffefrynnau..."
+
+#, fuzzy
+#~ msgid "Na_me:"
+#~ msgstr "Enw:"
+
+#, fuzzy
+#~ msgid "New Chat Room"
+#~ msgstr "Gossip - Sgwrs"
+
+#~ msgid " "
+#~ msgstr " "
+
+#, fuzzy
+#~ msgid "<b>Information requested, please wait...</b>"
+#~ msgstr "<b>Gofynnwyd gwybodaeth, arhoswch os gwelwch yn dda...</b>"
+
+#, fuzzy
+#~ msgid "<span size=\"smaller\">Example:</span>"
+#~ msgstr "<span size=\"smaller\">Enghraifft: cyfrif@jabber.org</span>"
+
+#, fuzzy
+#~ msgid "Account Name"
+#~ msgstr "_Enw cyfrif:"
+
+#, fuzzy
+#~ msgid "Chat Rooms..."
+#~ msgstr "Gossip - Sgwrs"
+
+#, fuzzy
+#~ msgid "Connection Details"
+#~ msgstr "Manylion Personol"
+
+#, fuzzy
+#~ msgid "Do you already have an account set up on a server?"
+#~ msgstr "A oes cyfrif ar weinydd Jabber gennych eisioes?"
+
+#, fuzzy
+#~ msgid "Enter the port used in the connection for this account"
+#~ msgstr ""
+#~ "Os gwelwch yn dda, rhowch llysenw newydd ar gyfer y cyswllt\n"
+#~ "%s"
+
+#, fuzzy
+#~ msgid "Enter the server used in the connection for this account"
+#~ msgstr ""
+#~ "Os gwelwch yn dda, rhowch llysenw newydd ar gyfer y cyswllt\n"
+#~ "%s"
+
+#, fuzzy
+#~ msgid "Enter the user's contact ID:"
+#~ msgstr "Cliciwch er mwyn gweld manylion cyswllt y defnyddiwr"
+
+#, fuzzy
+#~ msgid "Finished"
+#~ msgstr "Gorffenwyd Cyflunio"
+
+#~ msgid "Gossip"
+#~ msgstr "Gossip"
+
+#~ msgid ""
+#~ "Gossip is a modern client for the Jabber Instant Messaging system.\n"
+#~ "\n"
+#~ "This assistant will help you configure Gossip and connect you to your "
+#~ "favorite Jabber server.\n"
+#~ "\n"
+#~ "To get started, just click \"Forward\"."
+#~ msgstr ""
+#~ "Mae Gossip yn gleient modern ar gyfer y system Negeseuo Cyflym Jabber.\n"
+#~ "\n"
+#~ "Fe fydd y cynorthwywr yma yn eich arwain drwy'r broses o gyflunio Gossip "
+#~ "a'ch cysylltu i'ch hoff weinydd Jabber.\n"
+#~ "\n"
+#~ "Er mwyn cychwyn, cliciwch \"Ymlaen\"."
+
+#~ msgid ""
+#~ "In order to subscribe to presence notifications from the user, a request "
+#~ "will be sent. Until this request is approved, the user will always be "
+#~ "shown as \"Offline\" in your contact list."
+#~ msgstr ""
+#~ "Er mwyn tanysgrifio at hysbysiadau presenolder o'r defnyddiwr, rhaid i "
+#~ "chi anfon cais. Tan i'r cais yma gael ei dderbyn, fe gaiff y defnyddiwr "
+#~ "ei ddangos fel \"All-lein\" wastad yn eich rhestr cysylltion."
+
+#~ msgid "In which group do you want to place this contact?"
+#~ msgstr "Ym mha grŵp hoffech roi'r cyswllt hwn?"
+
+#~ msgid "Jabber ID:"
+#~ msgstr "ID Jabber:"
+
+#~ msgid "Nickname:"
+#~ msgstr "Llysenw:"
+
+#, fuzzy
+#~ msgid "Port:"
+#~ msgstr "_Porth:"
+
+#, fuzzy
+#~ msgid "Press Subscribe to request to receive their status"
+#~ msgstr ""
+#~ "Nid ydych wedi tanysgrifio at gyflwr y cyswllt hwn. Gwasgwch Tanysgrifio "
+#~ "er mwyn derbyn eu cyflwr."
+
+#, fuzzy
+#~ msgid "Registering Account"
+#~ msgstr "Yn cofrestru cyfrif"
+
+#, fuzzy
+#~ msgid "Resource:"
+#~ msgstr "_Adnodd:"
+
+#~ msgid "Sending request"
+#~ msgstr "Yn anfon cais"
+
+#~ msgid "Server:"
+#~ msgstr "Gweinydd:"
+
+#, fuzzy
+#~ msgid "Web Site:"
+#~ msgstr "Safle gwe:"
+
+#~ msgid "Welcome to Gossip"
+#~ msgstr "Croeso i Gossip"
+
+#~ msgid "What instant messaging system does the contact use?"
+#~ msgstr "Pa system negeseuo parod yw'r cyswllt yn ei ddefnyddio?"
+
+#~ msgid "What is your name?"
+#~ msgstr "Beth yw eich enw?"
+
+#, fuzzy
+#~ msgid "What password do you want to use?"
+#~ msgstr "Pa weinydd hoffech ddefnyddio?"
+
+#~ msgid "What username do you use?"
+#~ msgstr "Pa enw cyfrif ydych chi'n ei ddefnyddio?"
+
+#~ msgid "What username do you want to use?"
+#~ msgstr "Pa enw cyfrif hoffech chi ddefnyddio?"
+
+#, fuzzy
+#~ msgid "Which account do you want to add this contact to?"
+#~ msgstr "Ym mha grŵp hoffech roi'r cyswllt hwn?"
+
+#, fuzzy
+#~ msgid ""
+#~ "You can change your account settings later by selecting the Edit-"
+#~ ">Accounts menu item."
+#~ msgstr ""
+#~ "Mae Gossip yn awr wedi ei gyflunio yn gywir ar gyfer eich system.\n"
+#~ "Fe allwch newid eich gosodiadau cyfrif yn hwyrach, gan ddewis yr eitem "
+#~ "dewislen Sgwrs->Cysylltu..."
+
+#, fuzzy
+#~ msgid "Your Account"
+#~ msgstr "Cyfrif Jabber"
+
+#~ msgid "Your Identity"
+#~ msgstr "Eich Hunaniaeth"
+
+#, fuzzy
+#~ msgid "_Group Chat"
+#~ msgstr "Gossip - Sgwrs"
+
+#, fuzzy
+#~ msgid "_No"
+#~ msgstr "Na"
+
+#~ msgid "_Search..."
+#~ msgstr "_Chwilio..."
+
+#, fuzzy
+#~ msgid "_Yes"
+#~ msgstr "Ie"
+
+#~ msgid "Be silent when away"
+#~ msgstr "Bod yn dawel wrth fod ymaith"
+
+#~ msgid "Be silent when busy"
+#~ msgstr "Bod yn dawel wrth fod yn brysur"
+
+#~ msgid "Height of main window"
+#~ msgstr "Uchder y prif ffenest"
+
+#~ msgid "The X position of the main window."
+#~ msgstr "Safle X y prif ffenest."
+
+#~ msgid "The Y position of the main window."
+#~ msgstr "Safle Y y prif ffenest."
+
+#~ msgid "The width of the main window."
+#~ msgstr "Lled y prif ffenest."
+
+#~ msgid "Width of the main window"
+#~ msgstr "Lled y prif ffenest"
+
+#~ msgid "X position of main window"
+#~ msgstr "Safle X y prif ffenest"
+
+#~ msgid "Y position of main window"
+#~ msgstr "Safle Y y prif ffenest"
+
+#~ msgid "Gossip, Instant Messaging Client"
+#~ msgstr "Gossip, Cleient Negeseuo Cyflym"
+
+#, fuzzy
+#~ msgid "Close this chat window"
+#~ msgstr "Cuddio'r prif ffenest"
+
+#, fuzzy
+#~ msgid "Requested Information"
+#~ msgstr "Manylion _Cyfrif"
+
+#, fuzzy
+#~ msgid "Send Message"
+#~ msgstr "Danfon Neges _Sgwrs..."
+
+#, fuzzy
+#~ msgid "%s has gone offline"
+#~ msgstr "Aeth %s all-lein"
+
+#~ msgid "Available..."
+#~ msgstr "Ar Gael..."
+
+#~ msgid "Busy..."
+#~ msgstr "Prysur..."
+
+#~ msgid "Away..."
+#~ msgstr "Ymaith..."
+
+#~ msgid "Contact _Information"
+#~ msgstr "/_Gwybodaeth Cyswllt"
+
+#~ msgid "<b>Sound</b>"
+#~ msgstr "<b>Sain</b>"
+
+#, fuzzy
+#~ msgid "Gossip - Accounts"
+#~ msgstr "Gossip - Golygu Cyfrifon"
+
+#, fuzzy
+#~ msgid "Join _Group Chat..."
+#~ msgstr "_Ymuno â Sgwrs Grŵp..."
+
+#, fuzzy
+#~ msgid "Por_t:"
+#~ msgstr "_Porth:"
+
+#, fuzzy
+#~ msgid "Requested information."
+#~ msgstr "Manylion cleient"
+
+#, fuzzy
+#~ msgid "Requesting contact information, please wait..."
+#~ msgstr "Gofyn am fanylion personol..."
+
+#, fuzzy
+#~ msgid "Could not open connection"
+#~ msgstr "Methwyd cysylltu"
+
+#, fuzzy
+#~ msgid "Could not find the server you wanted to use"
+#~ msgstr "Pa weinydd hoffech ddefnyddio?"
+
+#, fuzzy
+#~ msgid "Connection to the server failed."
+#~ msgstr "<b>Cysylltu i'r gweinydd</b>"
+
+#~ msgid "Written by:"
+#~ msgstr "Ysgrifennwyd gan:"
+
+#~ msgid "Artwork by:"
+#~ msgstr "Arlunio gan:"
+
+#~ msgid "Translated by:"
+#~ msgstr "Cyfieithwyd gan:"
+
+#, fuzzy
+#~ msgid "Account ID"
+#~ msgstr "_Enw cyfrif:"
+
+#~ msgid "%sChat - %s"
+#~ msgstr "%sSgwrs - %s"
+
+#~ msgid "/Show _Log"
+#~ msgstr "/Dangos _Cofnod"
+
+#, fuzzy
+#~ msgid "Persian"
+#~ msgstr "Fersiwn:"
+
+#, fuzzy
+#~ msgid "Latvian"
+#~ msgstr "Yn gadael:"
+
+#~ msgid "View Lo_g"
+#~ msgstr "Gweld y _Cofnod"
+
+#~ msgid "Gossip - Group Chat"
+#~ msgstr "Gossip - Sgwrs Grŵp"
+
+#, fuzzy
+#~ msgid "Gossip - Add contact"
+#~ msgstr "Gossip - Cysylltu"
+
+#, fuzzy
+#~ msgid "Gossip - Contact Information"
+#~ msgstr "/_Gwybodaeth Cyswllt"
+
+#, fuzzy
+#~ msgid "Gossip - Edit Groups"
+#~ msgstr "Gossip - Golygu Sgyrsiau Grŵp"
+
+#, fuzzy
+#~ msgid "Gossip - New Account"
+#~ msgstr "Gossip - Golygu Cyfrifon"
+
+#, fuzzy
+#~ msgid "Gossip - New Message"
+#~ msgstr "Gossip - Danfon Neges"
+
+#, fuzzy
+#~ msgid "Gossip - Personal Details"
+#~ msgstr "Manylion Personol"
+
+#, fuzzy
+#~ msgid "Gossip - Preferences"
+#~ msgstr "Hoffterau"
+
+#, fuzzy
+#~ msgid "Gossip - Status Message"
+#~ msgstr "Gossip - Danfon Neges"
+
+#, fuzzy
+#~ msgid "Personal Details Saved!"
+#~ msgstr "Manylion Personol"
+
+#~ msgid "What request message do you want to send to %s?"
+#~ msgstr "Pa neges cais hoffwch chi anfon at %s?"
+
+#~ msgid "Make sure that your account information is correct."
+#~ msgstr "Sicrhewch fod eich manylion cyfrif yn gywir."
+
+#~ msgid "%s wants to be notified of your status."
+#~ msgstr "Mae %s eisiau cael eu hysbysu o'ch cyflwr."
+
+#~ msgid "You were disconnected from the server. Do you want to reconnect?"
+#~ msgstr "Fe gafoch eich datgysylltu o'r gweinydd. A hoffech ailgysylltu?"
+
+#~ msgid ""
+#~ "Make sure that your account information is correct. The server may also "
+#~ "currently be unavailable."
+#~ msgstr ""
+#~ "Sicrhewch fod eich manylion cyfrif yn gywir. Hefyd, efallai nid yw'r "
+#~ "gweinydd ar gael."
+
+#~ msgid "Edit List..."
+#~ msgstr "Golygu'r Rhestr..."
+
+#~ msgid "An error occurred when chatting with %s."
+#~ msgstr "Digwyddod gwall wrth sgwrsio efo %s."
+
+#~ msgid "Details:"
+#~ msgstr "Manylion:"
+
+#~ msgid "An error occurred when chatting in the group chat %s."
+#~ msgstr "Digwyddod gwall wrth sgwrsio yn y sgwrs grŵp %s."
+
+#~ msgid "Unable to enter the group chat %s."
+#~ msgstr "Ni ellir cyrchu'r sgwrs grŵp %s."
+
+#~ msgid "Gossip will now try to use your account:"
+#~ msgstr "Fe fydd Gossip yn awr yn ceisio defnyddio eich cyfrif:"
+
+#~ msgid "Gossip will now try to register the account:"
+#~ msgstr "Fe fydd Gossip yn awr yn ceisio cofrestru'r cyfrif:"
+
+#~ msgid "*"
+#~ msgstr "*"
+
+#~ msgid "From:"
+#~ msgstr "O:"
+
+#~ msgid "Gossip - Received Message"
+#~ msgstr "Gossip - Derbyniwyd Neges"
+
+#~ msgid "In reply to:"
+#~ msgstr "Yn ateb i:"
+
+#~ msgid "To:"
+#~ msgstr "I:"
+
+#~ msgid "_Reply..."
+#~ msgstr "_Ateb..."
+
+#~ msgid "_Send"
+#~ msgstr "_Anfon"
+
+#~ msgid "C_onnect"
+#~ msgstr "_Cysylltu"
+
+#~ msgid "_Resource:"
+#~ msgstr "_Adnodd:"
+
+#~ msgid " "
+#~ msgstr " "
+
+#~ msgid "<b>Available chat rooms</b>"
+#~ msgstr "<b>Ystafelloedd sgwrs ar gael</b>"
+
+#~ msgid "<b>Chat room information</b>"
+#~ msgstr "<b>Manylion ystafell sgwrs</b>"
+
+#~ msgid "Gossip - Join Group Chat"
+#~ msgstr "Gossip - Ymuno a Sgwrs Grŵp"
+
+#~ msgid "N_ickname:"
+#~ msgstr "Llysenw:"
+
+#~ msgid ""
+#~ "Pick a favorite, or enter nickname, server name, and the name of the chat "
+#~ "room to enter."
+#~ msgstr ""
+#~ "Dewiswch ffefryn, neu rhowch llysenw, enw gweinydd, a enw yr ystafell "
+#~ "sgwrsio i'w ymuno ag ef."
+
+#~ msgid "R_emove"
+#~ msgstr "_Tynnu"
+
+#~ msgid "_Add"
+#~ msgstr "_Ychwanegu"
+
+#~ msgid " "
+#~ msgstr " "
+
+#~ msgid "<b>Personal information</b>"
+#~ msgstr "<b>Manylion personol</b>"
+
+#~ msgid "<b>Preset status messages</b>"
+#~ msgstr "<b>Negeseuon cyflwr rhagosod</b>"
+
+#~ msgid "<i>Information not available</i>"
+#~ msgstr "<i>Nid yw'r gwybodaeth ar gael</i>"
+
+#~ msgid "Choose a Server"
+#~ msgstr "Dewiswch Weinydd"
+
+#~ msgid "Choose from list:"
+#~ msgstr "Dewiswch o'r rhestr:"
+
+#~ msgid "Information about ..."
+#~ msgstr "Gwybodaeth ynghylch ..."
+
+#~ msgid "Jabber.com"
+#~ msgstr "Jabber.com"
+
+#~ msgid "Jabber.org"
+#~ msgstr "Jabber.org"
+
+#~ msgid "On what server do you have a Jabber account?"
+#~ msgstr "Ar ba weinydd oes cyfrif Jabber gennych?"
+
+#~ msgid "Sound"
+#~ msgstr "Sain"
+
+#~ msgid "Status Message"
+#~ msgstr "Neges Cyflwr"
+
+#~ msgid "Use a different server"
+#~ msgstr "Defnyddio gweinydd arall"
+
+#~ msgid "What request message do you want to send to ...?"
+#~ msgstr "Pa neges cais hoffwch chi anfon at ...?"
+
+#~ msgid "Gossip Website"
+#~ msgstr "Safle Gwe Gossip"
+
+#~ msgid "Gossip, Jabber Client"
+#~ msgstr "Gossip, Cleient Jabber"
+
+#~ msgid "Just about to leave..."
+#~ msgstr "Rydw I ar fin gadael..."
+
+#~ msgid "Custom Busy Message..."
+#~ msgstr "Neges Prysur Addasiedig..."
+
+#~ msgid "Leave"
+#~ msgstr "Gadael"
+
+#~ msgid "I'm here"
+#~ msgstr "Rydw I yma"
+
+#~ msgid "I'm not here right now"
+#~ msgstr "Dydw I ddim yma ar hyn o bryd"
+
+#~ msgid "Timestamp all messages"
+#~ msgstr "Amseru pob neges"
+
+#~ msgid "Whether or not to timestamp all messages in conversations."
+#~ msgstr "A ddylid rhoi amser ar bob neges mewn sgyrsiau."
+
+#~ msgid "%sChat"
+#~ msgstr "%sSgwrs"
+
+#~ msgid "Offline "
+#~ msgstr "All-lein "
+
+#~ msgid "Others"
+#~ msgstr "Eraill"
+
+#~ msgid "<b>Chat with:</b>"
+#~ msgstr "<b>Sgwrs efo:</b>"
+
+#~ msgid "Available:"
+#~ msgstr "Ar gael:"
+
+#~ msgid ""
+#~ "These messages are used to describe your status when you're available, "
+#~ "about to leave and away."
+#~ msgstr ""
+#~ "Defnyddir y negeseuon hyn er mwyn disgrifio eich cyflwr pan rydych chi o "
+#~ "gwmpas, ar fin gadael, ac ymaith."
+
+#~ msgid "Use com_pact conversation style"
+#~ msgstr "Defnyddio arddull sgwrsio _cryno"
+
+#~ msgid "Use sounds to _notify when new messages arrive"
+#~ msgstr ""
+#~ "Defnyddio synau er mwyn hysbysu pan mae negeseuon _newydd yn cyrraedd"
+
+#~ msgid "Use ta_bs instead of windows for conversations"
+#~ msgstr "Defnyddio ta_biau yn hytrach na ffenestri ar gyfer sgyrsdiau"
+
+#~ msgid "_Timestamp all messages"
+#~ msgstr "_Amseru pob neges"
+
+#~ msgid "Auto away enabled"
+#~ msgstr "Galluogwyd ymaith awtomatig"
+
+#~ msgid "Extended autoaway time"
+#~ msgstr "Amser ymaith estynedig awtomatig"
+
+#~ msgid ""
+#~ "The number of minutes of idle time before automatically going into \"away"
+#~ "\" mode."
+#~ msgstr ""
+#~ "Y nifer o funudau o amser segur cyn mynd i'r modd \"ymaith\" yn awtomtig."
+
+#~ msgid ""
+#~ "The number of minutes of idle time before automatically going into "
+#~ "\"extended away\" mode."
+#~ msgstr ""
+#~ "Y nifer o funudau o amser segur cyn mynd i'r modd \"ymaith estynedig\" yn "
+#~ "awtomtig."
+
+#~ msgid "Timestamp messages"
+#~ msgstr "Amseru negeseuon"
+
+#~ msgid ""
+#~ "Whether or not to go into \"away\" mode automatically when a certain time "
+#~ "of idling has passed."
+#~ msgstr ""
+#~ "A ddylid mynd i'r modd \"ymaith\" yn awtomatig ar ôl i gyfnod panodedig o "
+#~ "fod yn segur fynd heibio."
+
+#~ msgid "Free to chat"
+#~ msgstr "Yn rhydd i sgwrsio"
+
+#~ msgid "Extended away"
+#~ msgstr "Ymaith estynedig"
+
+#~ msgid "_Edit Account..."
+#~ msgstr "_Golygu'e Cyfrif..."
+
+#~ msgid ""
+#~ "<b>Welcome to Gossip</b>\n"
+#~ "\n"
+#~ "Gossip is a modern client for the Jabber Instant Message system.\n"
+#~ "\n"
+#~ "This assistant will help you configure Gossip and connect you to your "
+#~ "favorite Jabber server."
+#~ msgstr ""
+#~ "<b>Croeso i Gossip</b>\n"
+#~ "\n"
+#~ "Mae Gossip yn gleient modern ar gyfer y system Negeseuo Parod Jabber.\n"
+#~ "\n"
+#~ "Fe fydd y cynorthwywr yma yn eich arwain drwy'r broses o gyflunio Gossip "
+#~ "a'ch cysylltu i'ch hoff weinydd Jabber."
+
+#~ msgid "<b>Additional information</b>"
+#~ msgstr "<b>Gwybodaeth ychwanegol</b>"
+
+#~ msgid "<b>Address</b>"
+#~ msgstr "<b>Cyfeiriad</b>"
+
+#~ msgid "<b>Auto away</b>"
+#~ msgstr "<b>Ymaith awtomatig</b>"
+
+#~ msgid "Automatically enter away mode during inactivity"
+#~ msgstr "Mynd i'r cyflwr ymaith yn awtomatig tra'n segur"
+
+#~ msgid "Enter away mode after"
+#~ msgstr "Mynd i'r modd ymaith ar ôl "
+
+#~ msgid "I'm away eating dinner, bbiab..."
+#~ msgstr "Rydw i i fwrdd yn byta fy swper, yn ôl cyn hir..."
+
+#~ msgid "Presence:"
+#~ msgstr "Presenoldeb:"
+
+#~ msgid "Priority:"
+#~ msgstr "Blaenoriaeth:"
+
+#~ msgid "Set the status you want to use"
+#~ msgstr "Gosod y cyflwr hoffech ddefnyddio"
+
+#~ msgid "minutes"
+#~ msgstr "munudau"
+
+#~ msgid "<b>Jabber ID:</b>"
+#~ msgstr "<b>ID Jabber:</b>"
+
+#~ msgid "<b>Setup Finished</b>"
+#~ msgstr "<b>Gorffenwyd Gosod</b>"
+
+#~ msgid ""
+#~ "This user wants to subscribe to your presence.\n"
+#~ "Do you approve?"
+#~ msgstr ""
+#~ "Ma'r defnyddiwr eisiau tanysgrifio i'ch presenoldeb.\n"
+#~ "Ydych chi'n cymeradwyo?"
+
+#~ msgid "_Approve"
+#~ msgstr "_Derbyn"
+
+#~ msgid "_Defer"
+#~ msgstr "_Gohirio"
+
+#~ msgid "Default Account"
+#~ msgstr "Cyfrif Rhaogosodedig"
+
+#~ msgid "Could not open the address \"%s\": %s"
+#~ msgstr "Methwyd agor y cyfeiriad \"%s\": %s"
+
+#~ msgid "<b>Available accounts</b>"
+#~ msgstr "<b>Cyfrifon ar gael</b>"
+
+#~ msgid "<b>What account do you want to use for this connection?</b>"
+#~ msgstr "<b>Pa gyfrif hoffech ddefnyddio ar gyfer y cysylltiad hwn?</b>"
+
+#~ msgid "Use SS_L"
+#~ msgstr "Defnyddio SS_L"
+
+#~ msgid "_User:"
+#~ msgstr "_Defnyddiwr:"
+
+#~ msgid "What request message do you want to send to <b>micke</b>?"
+#~ msgstr "Pa neges cais hoffwch chi anfon i <b>micke</b>?"
diff --git a/gnome-2-22/po/da.po b/gnome-2-22/po/da.po
new file mode 100644
index 000000000..16767c67d
--- /dev/null
+++ b/gnome-2-22/po/da.po
@@ -0,0 +1,2578 @@
+# Danish translation of Gossip.
+# Copyright (C) 2003, 04, 06 Free Software Foundation, Inc.
+# Ole Laursen <olau@hardworking.dk>, 2003, 04, 06.
+# David Nielsen <dnielsen@breakmygentoo.net>, 2002, 06.
+#
+# Konventioner:
+#
+# instant messaging client -> samtaleklient
+# join -> deltag (om gruppesamtaler)
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gossip\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-05-15 23:46+0200\n"
+"PO-Revision-Date: 2006-04-23 17:32+0200\n"
+"Last-Translator: Ole Laursen <olau@hardworking.dk>\n"
+"Language-Team: Danish <dansk@klid.dk>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../data/empathy.desktop.in.h:1
+#, fuzzy
+msgid "Empathy Instant Messenger"
+msgstr "Samtaleklient"
+
+#: ../data/empathy.desktop.in.h:2
+msgid "Instant Messenger"
+msgstr "Samtaleklient"
+
+#: ../data/empathy.schemas.in.h:1
+msgid "Always open a separate chat window for new chats."
+msgstr "Åbn altid et særskilt samtalevindue for nye samtaler."
+
+#: ../data/empathy.schemas.in.h:2
+msgid "Chat window theme"
+msgstr "Tema for samtalevindue"
+
+#: ../data/empathy.schemas.in.h:3
+msgid ""
+"Comma separated list of spell checker languages to use (e.g. en, fr, nl)."
+msgstr ""
+"Komma-adskilt liste af sprog der skal bruges ved stavekontrol (f.eks. \"en, "
+"fr, nl\")."
+
+#: ../data/empathy.schemas.in.h:4
+#, fuzzy
+msgid "Compact contact list"
+msgstr "Tilføj til din kontaktliste"
+
+#: ../data/empathy.schemas.in.h:5
+msgid "Contact list sort criterium"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:6
+msgid "Default directory to select an avatar image from"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:7
+msgid "Enable popup when contact is available"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:8
+#, fuzzy
+msgid "Enable sound when away"
+msgstr "Deaktivér lyde når brugeren er _fraværende"
+
+#: ../data/empathy.schemas.in.h:9
+#, fuzzy
+msgid "Enable sound when busy"
+msgstr "Deaktivér lyde når brugeren er _optaget"
+
+#: ../data/empathy.schemas.in.h:10
+#, fuzzy
+msgid "Enable spell checker"
+msgstr "Slå stavekontrol til"
+
+#: ../data/empathy.schemas.in.h:11
+msgid "Hide main window"
+msgstr "Skjul hovedvindue"
+
+#: ../data/empathy.schemas.in.h:12
+msgid "Hide the main window."
+msgstr "Skjul hovedvinduet."
+
+#: ../data/empathy.schemas.in.h:13
+msgid "Open new chats in separate windows"
+msgstr "Åbn nye samtaler i adskilte vinduer"
+
+#: ../data/empathy.schemas.in.h:14
+#, fuzzy
+msgid "Show avatars"
+msgstr "_Vis kontaktliste"
+
+#: ../data/empathy.schemas.in.h:15
+#, fuzzy
+msgid "Show hint about closing the main window"
+msgstr "Hovedvinduets højde."
+
+#: ../data/empathy.schemas.in.h:16
+msgid "Show offline contacts"
+msgstr "Vis frakoblede kontakter"
+
+#: ../data/empathy.schemas.in.h:17
+msgid "Spell checking languages"
+msgstr "Stavekontrolleringssprog"
+
+#: ../data/empathy.schemas.in.h:18
+msgid "The last directory that an avatar image was chosen from."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:19
+msgid "The theme that is used to display the conversation in chat windows."
+msgstr "Det tema der bruges ved visning af samtalen i samtalevinduer."
+
+#: ../data/empathy.schemas.in.h:20
+msgid "Use graphical smileys"
+msgstr "Benyt grafiske tekstansigter"
+
+#: ../data/empathy.schemas.in.h:21
+msgid "Use notification sounds"
+msgstr "Benyt påmindelseslyde"
+
+#: ../data/empathy.schemas.in.h:22
+#, fuzzy
+msgid "Use theme for chat rooms"
+msgstr "Deltag i samtalerummet"
+
+#: ../data/empathy.schemas.in.h:23
+msgid ""
+"Whether or not to check words typed against the languages you want to check "
+"with."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:24
+msgid ""
+"Whether or not to convert smileys into graphical images in conversations."
+msgstr "Om tekstansigter skal konverteres til grafiske billeder i samtaler."
+
+#: ../data/empathy.schemas.in.h:25
+msgid "Whether or not to play a sound when messages arrive."
+msgstr "Om der skal afspilles en lyd når en besked ankommer."
+
+#: ../data/empathy.schemas.in.h:26
+msgid "Whether or not to play sounds when away."
+msgstr "Om der skal afspilles lyde når brugeren er fraværende."
+
+#: ../data/empathy.schemas.in.h:27
+msgid "Whether or not to play sounds when busy."
+msgstr "Om der skal afspilles lyde når brugeren er optaget."
+
+#: ../data/empathy.schemas.in.h:28
+#, fuzzy
+msgid "Whether or not to show a popup when a contact becomes available."
+msgstr "Om der skal afspilles en lyd når en besked ankommer."
+
+#: ../data/empathy.schemas.in.h:29
+#, fuzzy
+msgid ""
+"Whether or not to show avatars for contacts in the contact list and chat "
+"windows."
+msgstr "Om kontakter der ikke er tilsluttet, skal vises i kontaktlisten."
+
+#: ../data/empathy.schemas.in.h:30
+msgid "Whether or not to show contacts that are offline in the contact list."
+msgstr "Om kontakter der ikke er tilsluttet, skal vises i kontaktlisten."
+
+#: ../data/empathy.schemas.in.h:31
+msgid ""
+"Whether or not to show the message dialog about closing the main window with "
+"the 'x' button in the title bar."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:32
+#, fuzzy
+msgid "Whether to show the contact list in compact mode or not."
+msgstr "Om kontakter der ikke er tilsluttet, skal vises i kontaktlisten."
+
+#: ../data/empathy.schemas.in.h:33
+msgid "Whether to use the theme for chat rooms or not."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:34
+msgid ""
+"Which criterium to use when sorting the contact list. Default is to use sort "
+"by the contact's name with the value \"name\". A value of \"state\" will "
+"sort the contact list by state."
+msgstr ""
+
+#: ../libempathy/gossip-contact.c:654 ../libempathy/gossip-presence.c:184
+#: ../libempathy/gossip-presence.c:283
+msgid "Offline"
+msgstr "Frakoblet"
+
+#: ../libempathy/gossip-presence.c:274
+msgid "Available"
+msgstr "Tilgængelig"
+
+#: ../libempathy/gossip-presence.c:276
+msgid "Busy"
+msgstr "Optaget"
+
+#: ../libempathy/gossip-presence.c:279
+msgid "Away"
+msgstr "Fraværende"
+
+#: ../libempathy-gtk/empathy-main-window.c:254
+#, fuzzy
+msgid "Show and edit accounts"
+msgstr "_Vis kontaktliste"
+
+#: ../libempathy-gtk/empathy-main-window.c:456
+msgid "Group"
+msgstr "Gruppe"
+
+#: ../libempathy-gtk/empathy-main-window.c:477
+#, fuzzy
+msgid "Contact"
+msgstr "Kon_takt:"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:1
+#, fuzzy
+msgid "Contact List - Empathy"
+msgstr "_Skjul kontaktliste"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:2
+#, fuzzy
+msgid "Context"
+msgstr "_Indhold"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:3
+#, fuzzy
+msgid "Join _Favorites"
+msgstr "_Tilføj til favoritter"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:4
+#: ../libempathy-gtk/gossip-chat.glade.h:10
+msgid "Join _New..."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:5
+#, fuzzy
+msgid "Manage Favorites..."
+msgstr "_Tilføj til favoritter"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:6
+msgid "Show _Offline Contacts"
+msgstr "Vis _frakoblede kontakter"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:7
+#, fuzzy
+msgid "_About"
+msgstr "_Konti"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:8
+msgid "_Accounts"
+msgstr "_Konti"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:9
+#: ../libempathy-gtk/gossip-chat.glade.h:15
+msgid "_Add Contact..."
+msgstr "_Tilføj kontakt..."
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:10
+#: ../libempathy-gtk/gossip-contact-list.c:298
+msgid "_Chat"
+msgstr "_Samtale"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:11
+msgid "_Contents"
+msgstr "_Indhold"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:12
+#: ../libempathy-gtk/gossip-chat.glade.h:21
+#: ../libempathy-gtk/gossip-contact-list.c:310
+#, fuzzy
+msgid "_Edit"
+msgstr "Redigér"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:13
+msgid "_Help"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:14
+#: ../libempathy-gtk/empathy-status-icon.glade.h:2
+msgid "_New Message..."
+msgstr "_Ny besked..."
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:15
+msgid "_Personal Information"
+msgstr "_Personlige oplysninger"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:16
+msgid "_Preferences"
+msgstr "_Indstillinger"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:17
+#: ../libempathy-gtk/empathy-status-icon.glade.h:3
+msgid "_Quit"
+msgstr "_Afslut"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:18
+#: ../libempathy-gtk/gossip-chat.glade.h:25
+msgid "_Room"
+msgstr "_Rum"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:19
+#: ../libempathy-gtk/gossip-chat.glade.h:28
+#: ../libempathy-gtk/gossip-contact-list.c:326
+msgid "_View Previous Conversations"
+msgstr "_Vis foregående samtaler"
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:1
+msgid "Status"
+msgstr "Status"
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:4
+msgid "_Show Contact List"
+msgstr "_Vis kontaktliste"
+
+#: ../libempathy-gtk/gossip-about-dialog.c:63
+#, fuzzy
+msgid ""
+"Empathy is free software; you can redistribute it and/or modify it under the "
+"terms of the GNU General Public License as published by the Free Software "
+"Foundation; either version 2 of the License, or (at your option) any later "
+"version."
+msgstr ""
+"Gossip er frit programmel. Du kan redistribuere og/eller ændre programmet "
+"under betingelserne givet i GNU General Public License som udgives af Free "
+"Software Foundation; enten version 2 af licensen, eller (hvis du ønsker det) "
+"enhver senere version."
+
+#: ../libempathy-gtk/gossip-about-dialog.c:67
+#, fuzzy
+msgid ""
+"Empathy is distributed in the hope that it will be useful, but WITHOUT ANY "
+"WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS "
+"FOR A PARTICULAR PURPOSE. See the GNU General Public License for more "
+"details."
+msgstr ""
+"Gossip distribueres i håb om at programmet er nyttigt, men uden NOGEN "
+"GARANTI, ikke engang underforstået garanti om at det er SALGBART eller "
+"PASSER TIL ET BESTEMT FORMÅL. Se GNU General Public License for detaljer."
+
+#: ../libempathy-gtk/gossip-about-dialog.c:71
+#, fuzzy
+msgid ""
+"You should have received a copy of the GNU General Public License along with "
+"Empathy; if not, write to the Free Software Foundation, Inc., 51 Franklin "
+"Street, Fifth Floor, Boston, MA 02110-130159 USA"
+msgstr ""
+"Du burde have modtaget en kopi af GNU General Public License sammen med "
+"Gossip. Hvis du ikke har det, kan du skrive til Free Software Foundation, "
+"Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA."
+
+#: ../libempathy-gtk/gossip-about-dialog.c:99
+msgid "An Instant Messaging client for GNOME"
+msgstr "En samtaleklient til GNOME."
+
+#: ../libempathy-gtk/gossip-about-dialog.c:105
+msgid "translator-credits"
+msgstr ""
+"Ole Laursen\n"
+"David Nielsen\n"
+"\n"
+"Dansk-gruppen <dansk@dansk-gruppen.dk>\n"
+"Mere info: http://www.dansk-gruppen.dk"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:224
+#, fuzzy
+msgid "Disable"
+msgstr "Tilgængelig"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:227
+msgid "Enable"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:261
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:3
+#, fuzzy
+msgid "<b>No Account Selected</b>"
+msgstr "<b>Kontoindstillinger</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:263
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to start configuring.\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want "
+"to configure in the list on the left."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:272
+#, fuzzy
+msgid "<b>No Accounts Configured</b>"
+msgstr "<b>Kontoindstillinger</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:274
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to start configuring."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:362
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:6
+msgid "Accounts"
+msgstr "Konti"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:857
+#, c-format
+msgid ""
+"You are about to remove your %s account!\n"
+"Are you sure you want to proceed?"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:863
+msgid ""
+"Any associated conversations and chat rooms will NOT be removed if you "
+"decide to proceed.\n"
+"\n"
+"Should you decide to add the account back at a later time, they will still "
+"be available."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:1
+#, fuzzy
+msgid "<b>Account</b>"
+msgstr "<b>Om</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:2
+#, fuzzy
+msgid "<b>New Account</b>"
+msgstr "<b>Om</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:4
+#, fuzzy
+msgid "<b>Settings</b>"
+msgstr "<b>Kontoindstillinger</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:5
+msgid "A unique name for this account to identify it personally to you."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:7
+#, fuzzy
+msgid "Cr_eate"
+msgstr "Samtale!"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:8
+msgid "Imendio "
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:9
+msgid "Jabber"
+msgstr "Jabber"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:10
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to started configuring.\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want "
+"to configure in the list on the left."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:13
+msgid "_Name:"
+msgstr "_Navn:"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:14
+#, fuzzy
+msgid "_Type:"
+msgstr "_Emne:"
+
+#: ../libempathy-gtk/gossip-account-widget-generic.c:144
+#: ../libempathy-gtk/gossip-account-widget-generic.c:186
+#, c-format
+msgid "%s:"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:1
+#, fuzzy
+msgid ""
+"<small><b><span foreground=\"#555\">Example: user@jabber.org</span></b></"
+"small>"
+msgstr "<span size=\"smaller\">Eksempel: bruger@jabber.org</span>"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:2
+msgid "Forget password and clear the entry."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:3
+msgid "Login I_D:"
+msgstr "Login i_d"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:4
+#, fuzzy
+msgid "Pass_word:"
+msgstr "Adgangskode:"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:5
+#, fuzzy
+msgid "Reso_urce:"
+msgstr "Resurse:"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:6
+#, fuzzy
+msgid "Use encryption (SS_L)"
+msgstr "Anvend _kryptering (SSL)"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:7
+#, fuzzy
+msgid "_Port:"
+msgstr "Port:"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:8
+msgid "_Server:"
+msgstr "_Server:"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:9
+#, fuzzy
+msgid "jabber account settings"
+msgstr "<b>Kontoindstillinger</b>"
+
+#: ../libempathy-gtk/gossip-chat.c:314
+msgid "Disconnected"
+msgstr "Frakoblet"
+
+#: ../libempathy-gtk/gossip-chat.c:858
+msgid "Insert Smiley"
+msgstr "Indsæt tekstansigt"
+
+#: ../libempathy-gtk/gossip-chat.c:906
+msgid "_Check Word Spelling..."
+msgstr "_Kontrollér stavning af ord..."
+
+#: ../libempathy-gtk/gossip-chat.c:1244
+msgid "Connected"
+msgstr "Tilsluttet"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:1
+msgid "C_lear"
+msgstr "_Ryd"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:2
+msgid "Change _Topic..."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:3
+msgid "Chat"
+msgstr "Samtale"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:4
+#, fuzzy
+msgid "Contact Infor_mation"
+msgstr "Kontaktoplysninger"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:5
+#, fuzzy
+msgid "Cu_t"
+msgstr "S_amtale"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:6
+#, fuzzy
+msgid "In_vite..."
+msgstr "_Invitér"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:7
+msgid "Insert _Smiley"
+msgstr "Indsæt tekst_ansigt"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:8
+#, fuzzy
+msgid "Invitation _message:"
+msgstr "Indtast statusbesked:"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:9
+#, fuzzy
+msgid "Invite"
+msgstr "_Invitér"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:11
+msgid "Move Tab _Left"
+msgstr "Flyt til _venstre"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:12
+msgid "Move Tab _Right"
+msgstr "Flyt til _højre"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:13
+msgid "Select who would you like to invite:"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:14
+msgid "You have been invited to join a chat conference."
+msgstr "Du er blevet inviteret til at deltage i en konferencesamtale."
+
+#: ../libempathy-gtk/gossip-chat.glade.h:16
+msgid "_Add To Favorites"
+msgstr "_Tilføj til favoritter"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:17
+msgid "_Close"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:18
+msgid "_Conversation"
+msgstr "_Samtale"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:19
+msgid "_Copy"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:20
+msgid "_Detach Tab"
+msgstr "_Frigør faneblad"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:22
+msgid "_Next Tab"
+msgstr "_Næste faneblad"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:23
+#, fuzzy
+msgid "_Paste"
+msgstr "Dato"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:24
+msgid "_Previous Tab"
+msgstr "_Forrige faneblad"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:26
+msgid "_Show Contacts"
+msgstr "_Vis kontaktliste"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:27
+msgid "_Tabs"
+msgstr "_Faneblade"
+
+#: ../libempathy-gtk/gossip-chat-view.c:544
+msgid "_Copy Link Address"
+msgstr "_Kopiér adresse"
+
+#: ../libempathy-gtk/gossip-chat-view.c:552
+msgid "_Open Link"
+msgstr "_Åbn adresse"
+
+#: ../libempathy-gtk/gossip-chat-view.c:889
+msgid "%A %d %B %Y"
+msgstr "%A %d %B %Y"
+
+#: ../libempathy-gtk/gossip-chat-window.c:685
+#: ../libempathy-gtk/gossip-chat-window.c:715
+#, fuzzy
+msgid "New Message"
+msgid_plural "New Messages"
+msgstr[0] "Ny besked"
+msgstr[1] "Ny besked"
+
+#: ../libempathy-gtk/gossip-chat-window.c:691
+#, fuzzy
+msgid "Chat Room"
+msgstr "Samtalerum"
+
+#: ../libempathy-gtk/gossip-chat-window.c:696
+#: ../libempathy-gtk/gossip-chat-window.c:719
+#, fuzzy, c-format
+msgid "Conversation"
+msgid_plural "Conversations (%d)"
+msgstr[0] "_Samtale"
+msgstr[1] "_Samtale"
+
+#: ../libempathy-gtk/gossip-chat-window.c:1295
+msgid "Typing a message."
+msgstr "Skriver en besked."
+
+#: ../libempathy-gtk/gossip-contact-list.c:290
+#, fuzzy
+msgid "_Contact"
+msgstr "Kon_takt:"
+
+#: ../libempathy-gtk/gossip-contact-list.c:294
+#, fuzzy
+msgid "_Group"
+msgstr "Gruppe"
+
+#: ../libempathy-gtk/gossip-contact-list.c:298
+#, fuzzy
+msgid "Chat with contact"
+msgstr "Tilføj en kontakt"
+
+#: ../libempathy-gtk/gossip-contact-list.c:302
+#, fuzzy
+msgid "Infor_mation"
+msgstr "Kontaktoplysninger"
+
+#: ../libempathy-gtk/gossip-contact-list.c:302
+#, fuzzy
+msgid "View contact information"
+msgstr "Kontaktoplysninger"
+
+#: ../libempathy-gtk/gossip-contact-list.c:306
+#, fuzzy
+msgid "Re_name"
+msgstr "/Om_døb gruppe"
+
+#: ../libempathy-gtk/gossip-contact-list.c:306
+#, fuzzy
+msgid "Rename"
+msgstr "Filnavn:"
+
+#: ../libempathy-gtk/gossip-contact-list.c:310
+#, fuzzy
+msgid "Edit the groups and name for this contact"
+msgstr "Indtast et navn for konto."
+
+#: ../libempathy-gtk/gossip-contact-list.c:314
+msgid "_Remove"
+msgstr "_Fjern"
+
+#: ../libempathy-gtk/gossip-contact-list.c:314
+#, fuzzy
+msgid "Remove contact"
+msgstr "/_Fjern kontakt"
+
+#: ../libempathy-gtk/gossip-contact-list.c:318
+#, fuzzy
+msgid "_Invite to Chat Room"
+msgstr "/_Invitér til samtalerum"
+
+#: ../libempathy-gtk/gossip-contact-list.c:318
+msgid "Invite to a currently open chat room"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-contact-list.c:322
+#, fuzzy
+msgid "_Send File..."
+msgstr "/Send _fil..."
+
+#: ../libempathy-gtk/gossip-contact-list.c:322
+#, fuzzy
+msgid "Send a file"
+msgstr "Vælg en fil"
+
+#: ../libempathy-gtk/gossip-contact-list.c:326
+#, fuzzy
+msgid "View previous conversations with this contact"
+msgstr "Vis foregående samtaler"
+
+#: ../libempathy-gtk/gossip-preferences.c:250
+msgid "Language"
+msgstr "Sprog"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:1
+#, fuzzy
+msgid "<b>Appearance</b>"
+msgstr "Udseende"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:2
+#, fuzzy
+msgid "<b>Audio</b>"
+msgstr "<b>Om</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:3
+#, fuzzy
+msgid "<b>Behaviour</b>"
+msgstr "<b>Favorit:</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:4
+#, fuzzy
+msgid "<b>Contact List</b>"
+msgstr "Tilslutning"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:5
+msgid "<b>Languages</b>"
+msgstr "<b>Sprog</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:6
+msgid "<b>Options</b>"
+msgstr "<b>Indstillinger</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:7
+#, fuzzy
+msgid "<b>Visual</b>"
+msgstr "<b>E-post:</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:8
+#, fuzzy
+msgid ""
+"<small>The list of languages reflects only the languages for which you have "
+"a dictionary installed.</small>"
+msgstr ""
+"Denne liste af sprog reflekterer kun de sprog som du har en ordbog "
+"installeret for."
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:9
+msgid "Avatars are user chosen images shown in the contact list"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:10
+#, fuzzy
+msgid "Chat Th_eme:"
+msgstr "Samtale_tema:"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:11
+msgid "Display notifications when contacts come _online"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:12
+#, fuzzy
+msgid "Enable sounds when _away"
+msgstr "Deaktivér lyde når brugeren er _fraværende"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:13
+#, fuzzy
+msgid "Enable sounds when _busy"
+msgstr "Deaktivér lyde når brugeren er _optaget"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:14
+msgid "General"
+msgstr "Generelt"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:15
+#, fuzzy
+msgid "Notifications"
+msgstr "Bekendtgørelse"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:16
+msgid "Preferences"
+msgstr "Indstillinger"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:17
+msgid "Show _avatars"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:18
+#, fuzzy
+msgid "Show _smileys as images"
+msgstr "Konvertér _tekstansigter til små billeder"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:19
+#, fuzzy
+msgid "Show co_mpact contact list"
+msgstr "_Vis kontaktliste"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:20
+msgid "Sort by _name"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:21
+#, fuzzy
+msgid "Sort by s_tate"
+msgstr "Sæt din status:"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:22
+msgid "Spell Checking"
+msgstr "Stavekontrol"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:23
+msgid "Themes"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:24
+#, fuzzy
+msgid "_Enable spell checking"
+msgstr "Slå stavekontrol til"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:25
+msgid "_Open new chats in separate windows"
+msgstr "_Åbn nye samtaler i særskilte vinduer"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:26
+msgid "_Play sound when messages arrive"
+msgstr "_Afspil lyd når beskeder ankommer"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:27
+#, fuzzy
+msgid "_Use for chat rooms"
+msgstr "Gem _dette samtalerum"
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:702
+#, fuzzy
+msgid "Custom message..."
+msgstr "Egen besked..."
+
+#. Clear list
+#: ../libempathy-gtk/gossip-presence-chooser.c:724
+#, fuzzy
+msgid "Clear List..."
+msgstr "Ryd liste"
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:803
+#, fuzzy
+msgid "Are you sure you want to clear the list?"
+msgstr "Ønsker du at acceptere denne fil?"
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:807
+msgid ""
+"This will remove any custom messages you have added to the list of preset "
+"status messages."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:812
+msgid "Clear List"
+msgstr "Ryd liste"
+
+#: ../libempathy-gtk/gossip-presence-chooser.glade.h:1
+msgid "Enter status message:"
+msgstr "Indtast statusbesked:"
+
+#: ../libempathy-gtk/gossip-presence-chooser.glade.h:2
+msgid "Status Message Presets"
+msgstr "Foruddefinerede statusbeskeder"
+
+#: ../libempathy-gtk/gossip-presence-chooser.glade.h:3
+#, fuzzy
+msgid "_Add to status message list"
+msgstr "Tilføj til statusbeskedliste"
+
+#: ../libempathy-gtk/gossip-private-chat.c:198
+#, c-format
+msgid "%s went offline"
+msgstr "%s frakoblede sig"
+
+#: ../libempathy-gtk/gossip-private-chat.c:212
+#, c-format
+msgid "%s has come online"
+msgstr "%s har tilsluttet sig"
+
+#: ../libempathy-gtk/gossip-theme-manager.c:87
+msgid "Classic"
+msgstr "Klassisk"
+
+#: ../libempathy-gtk/gossip-theme-manager.c:88
+#, fuzzy
+msgid "Simple"
+msgstr "Eksempel"
+
+#: ../libempathy-gtk/gossip-theme-manager.c:89
+#, fuzzy
+msgid "Clean"
+msgstr "_Ryd"
+
+#: ../libempathy-gtk/gossip-theme-manager.c:90
+msgid "Blue"
+msgstr "Blå"
+
+#: ../src/empathy-main.c:145
+msgid "Don't connect on startup"
+msgstr "Tilslut ikke ved start"
+
+#: ../src/empathy-main.c:155
+#, fuzzy
+msgid "- Empathy Instant Messenger"
+msgstr "- Gossip - samtaleklient"
+
+#~ msgid "Gossip Instant Messenger"
+#~ msgstr "Gossip - samtaleklient"
+
+#~ msgid "Normal"
+#~ msgstr "Normal"
+
+#~ msgid "Joining"
+#~ msgstr "Tilslutter"
+
+#~ msgid "Active"
+#~ msgstr "Aktiv"
+
+#~ msgid "Inactive"
+#~ msgstr "Inaktiv"
+
+#~ msgid "Unknown"
+#~ msgstr "Ukendt"
+
+#~ msgid "Error"
+#~ msgstr "Fejl"
+
+#, fuzzy
+#~ msgid "No role"
+#~ msgstr "Normal"
+
+#, fuzzy
+#~ msgid "No affiliation"
+#~ msgstr "Bekendtgørelse"
+
+#~ msgid "The nickname you have chosen is already in use."
+#~ msgstr "Kælenavnet du har valgt, er allerede i brug."
+
+#~ msgid "The chat room you tried to join requires a password."
+#~ msgstr ""
+#~ "Samtalerummet du forsøgte at tilslutte dig til, kræver en adgangskode."
+
+#~ msgid "The remote conference server did not respond in a sensible time."
+#~ msgstr ""
+#~ "Fjernkonferenceserveren svarede ikke inden for en rimelig tidsfrist."
+
+#~ msgid "The conference server you tried to join could not be found."
+#~ msgstr "Konferenceserveren du forsøgte at tilslutte dig kunne ikke findes."
+
+#~ msgid "An unknown error occurred, check your details are correct."
+#~ msgstr ""
+#~ "En ukendt fejl opstod, kontrollér at dine indstillinger er korrekte."
+
+#, fuzzy
+#~ msgid "Joining the chatroom was canceled."
+#~ msgstr "Deltag i samtalerummet"
+
+#, fuzzy
+#~ msgid "Unavailable"
+#~ msgstr "Tilgængelig"
+
+#~ msgid "An unknown error occurred."
+#~ msgstr "Der opstod en ukendt fejl."
+
+#~ msgid "Connection refused."
+#~ msgstr "Tilslutning afvist"
+
+#~ msgid "Server address could not be resolved."
+#~ msgstr "Serveradressen kunne ikke findes."
+
+#~ msgid "Connection timed out."
+#~ msgstr "Tidsfrist for forbindelsen løb ud."
+
+#~ msgid "Authentication failed."
+#~ msgstr "Godkendelse mislykkedes."
+
+#~ msgid "The username you are trying already exists."
+#~ msgstr "Brugernavnet du forsøger at bruge, eksisterer allerede."
+
+#~ msgid "The username you are trying is not valid."
+#~ msgstr "Brugernavnet du forsøger at bruge, er ugyldigt."
+
+#~ msgid "This feature is unavailable."
+#~ msgstr "Denne funktion er ikke tilgængelig."
+
+#~ msgid "This feature is unauthorized."
+#~ msgstr "Denne funktion er ikke godkendt."
+
+#~ msgid "A specific protocol error occurred that was unexpected."
+#~ msgstr "En specifik protokolfejl opstod uventet."
+
+#, fuzzy
+#~ msgid "new account"
+#~ msgstr "Ny konto"
+
+#~ msgid "Home"
+#~ msgstr "Hjemme"
+
+#~ msgid "Couldn't send message!"
+#~ msgstr "Kunne ikke sende besked!"
+
+#~ msgid "Connection could not be opened"
+#~ msgstr "Forbindelsen kunne ikke åbnes"
+
+#, fuzzy
+#~ msgid "This service is unavailable or not found"
+#~ msgstr "Denne funktion er ikke tilgængelig."
+
+#, fuzzy
+#~ msgid "Registration is required"
+#~ msgstr "Registrering"
+
+#, fuzzy
+#~ msgid "This feature is not implemented"
+#~ msgstr "Denne funktion er ikke godkendt."
+
+#~ msgid "Disconnect"
+#~ msgstr "Frakobl"
+
+#~ msgid "Connect"
+#~ msgstr "Tilslut"
+
+#, fuzzy
+#~ msgid "Successfully registered your new account settings."
+#~ msgstr "Det lykkedes at registrere kontoen"
+
+#, fuzzy
+#~ msgid "You should now be able to connect to your new account."
+#~ msgstr "Du kan ikke bruge --no-connect sammen med --account"
+
+#, fuzzy
+#~ msgid "Failed to register your new account settings."
+#~ msgstr "Det mislykkedes at registrere de nye kontoindstillinger"
+
+#, fuzzy
+#~ msgid "Successfully changed your account password."
+#~ msgstr "Indtast din konto-adgangskode:"
+
+#, fuzzy
+#~ msgid "Failed to change your account password."
+#~ msgstr "Indtast din konto-adgangskode:"
+
+#, fuzzy
+#~ msgid ""
+#~ "Please enter a new password for this account:\n"
+#~ "%s"
+#~ msgstr ""
+#~ "Indtast et nyt navn til gruppen\n"
+#~ "%s"
+
+#~ msgid "No information is available for this contact."
+#~ msgstr "Ingen oplysninger tilgængelige om denne kontakt."
+
+#~ msgid "Information requested, please wait..."
+#~ msgstr "Oplysninger forespurgt, vent venligst..."
+
+#~ msgid "I would like to add you to my contact list."
+#~ msgstr "Jeg vil gerne tilføje dig til min kontaktliste."
+
+#~ msgid "To summarize:"
+#~ msgstr "For at opsummere:"
+
+#, fuzzy
+#~ msgid "%d new message"
+#~ msgid_plural "%d new messages"
+#~ msgstr[0] "Ny besked"
+#~ msgstr[1] "Ny besked"
+
+#, fuzzy
+#~ msgid "%d subscription request"
+#~ msgid_plural "%d subscription requests"
+#~ msgstr[0] "Abonneringsanmodning"
+#~ msgstr[1] "Abonneringsanmodning"
+
+#, fuzzy
+#~ msgid "%d file transfer request"
+#~ msgid_plural "%d file transfer requests"
+#~ msgstr[0] "Anmodning om filoverførsel"
+#~ msgstr[1] "Anmodning om filoverførsel"
+
+#, fuzzy
+#~ msgid "%d server message"
+#~ msgid_plural "%d server messages"
+#~ msgstr[0] "Anmodningsbesked"
+#~ msgstr[1] "Anmodningsbesked"
+
+#, fuzzy
+#~ msgid "%d error"
+#~ msgid_plural "%d errors"
+#~ msgstr[0] "Fejl"
+#~ msgstr[1] "Fejl"
+
+#~ msgid "If you quit, you will lose all unread information."
+#~ msgstr "Hvis du afslutter, vil alt ulæst information gå tabt."
+
+#, fuzzy
+#~ msgid "Edit Account _Details"
+#~ msgstr "Redigér kontooplysninger"
+
+#~ msgid "Word"
+#~ msgstr "Ord"
+
+#~ msgid "New message from %s"
+#~ msgstr "Ny besked fra %s"
+
+#, fuzzy
+#~ msgid "Your invitation has been declined"
+#~ msgstr "Dit filoverførselstilbud blev afvist."
+
+#~ msgid "Accept"
+#~ msgstr "Acceptér"
+
+#, fuzzy
+#~ msgid "Decline"
+#~ msgstr "Middag"
+
+#, fuzzy
+#~ msgid "Name"
+#~ msgstr "Navn:"
+
+#, fuzzy
+#~ msgid "Room"
+#~ msgstr "_Rum"
+
+#, fuzzy
+#~ msgid "Auto Connect"
+#~ msgstr "Stop tilslutning"
+
+#, fuzzy
+#~ msgid "Information requested..."
+#~ msgstr "Oplysninger forespurgt, vent venligst..."
+
+#~ msgid "Do you want to remove this contact from your roster?"
+#~ msgstr "Ønsker du at fjerne denne kontakt fra din kontaktliste?"
+
+#~ msgid ""
+#~ "Please enter a new name for the group:\n"
+#~ "%s"
+#~ msgstr ""
+#~ "Indtast et nyt navn til gruppen\n"
+#~ "%s"
+
+#~ msgid "Select"
+#~ msgstr "Vælg"
+
+#~ msgid "Unsorted"
+#~ msgstr "Usorteret"
+
+#~ msgid "New file transfer request from %s"
+#~ msgstr "Ny filoverførselsanmodning fra %s"
+
+#~ msgid "File transfer is not supported by both parties."
+#~ msgstr "Filoverførsel er ikke understøttet af begge parter."
+
+#~ msgid "Your file transfer offer declined."
+#~ msgstr "Dit filoverførselstilbud blev afvist."
+
+#~ msgid "The other user decided not to continue."
+#~ msgstr "Den anden bruger besluttede ikke at forsætte."
+
+#~ msgid "Unknown error occurred during file transfer."
+#~ msgstr "Ukendt fejl opstod under filoverførsel."
+
+#~ msgid "%s would like to send you a file."
+#~ msgstr "%s vil gerne sende dig en fil."
+
+#
+#~ msgid "Someone would like to send you a file."
+#~ msgstr "Nogen vil gerne sende dig en fil."
+
+#~ msgid "Select a file"
+#~ msgstr "Vælg en fil"
+
+#, fuzzy
+#~ msgid "Connecting..."
+#~ msgstr "Tilslutter"
+
+#, fuzzy
+#~ msgid "Retry connection"
+#~ msgstr "Stop tilslutning"
+
+#~ msgid "Invited %s to join this chat conference."
+#~ msgstr "Inviterede %s til at deltage i denne konferencesamtale."
+
+#, fuzzy
+#~ msgid "%s has set the topic: %s"
+#~ msgstr "%s har sat emnet"
+
+#, fuzzy
+#~ msgid "Enter the new topic you want to set for this room:"
+#~ msgstr "Hvilket kælenavn ønsker du at bruge til denne kontakt?"
+
+#, fuzzy
+#~ msgid "%s has joined the room"
+#~ msgstr "%s har sat emnet"
+
+#, fuzzy
+#~ msgid "%s has left the room"
+#~ msgstr "%s har sat emnet"
+
+#, fuzzy
+#~ msgid "Topic: %s"
+#~ msgstr "_Emne:"
+
+#~ msgid "Account"
+#~ msgstr "Konto"
+
+#~ msgid "Conversation With"
+#~ msgstr "Samtale med"
+
+#~ msgid "Date"
+#~ msgstr "Dato"
+
+#~ msgid "List the available accounts"
+#~ msgstr "Vis de tilgængelige konti"
+
+#~ msgid "Which account to connect to on startup"
+#~ msgstr "Hvilken konto skal benyttes ved start"
+
+#~ msgid "ACCOUNT-NAME"
+#~ msgstr "KONTONAVN"
+
+#~ msgid "You can not use --no-connect together with --account"
+#~ msgstr "Du kan ikke bruge --no-connect sammen med --account"
+
+#~ msgid "No accounts available."
+#~ msgstr "Ingen konti tilgængelige."
+
+#~ msgid "Available accounts:"
+#~ msgstr "Tilgængelige konti:"
+
+#~ msgid "[default]"
+#~ msgstr "[forvalgt]"
+
+#~ msgid "There is no account with the name '%s'."
+#~ msgstr "Der er ingen konto med navnet \"%s\"."
+
+#~ msgid "Join"
+#~ msgstr "Deltag"
+
+#, fuzzy
+#~ msgid "Create"
+#~ msgstr "Dato"
+
+#~ msgid "Chat Rooms"
+#~ msgstr "Samtalerum"
+
+#, fuzzy
+#~ msgid "Browsing for conference rooms, please wait..."
+#~ msgstr "Oplysninger forespurgt, vent venligst..."
+
+#~ msgid "Default"
+#~ msgstr "Forvalgt"
+
+#~ msgid "Chat!"
+#~ msgstr "Samtale!"
+
+#~ msgid "%s wants to be added to your contact list."
+#~ msgstr "%s ønsker at blive tilføjet til din kontaktliste."
+
+#~ msgid "Someone wants to be added to your contact list."
+#~ msgstr "Nogen ønsker at blive tilføjet til din kontaktliste."
+
+#, fuzzy
+#~ msgid "Subscription request"
+#~ msgstr "Abonneringsanmodning"
+
+#~ msgid "Contact Information"
+#~ msgstr "Kontaktoplysninger"
+
+#~ msgid "Subject: %s"
+#~ msgstr "Emne: %s"
+
+#~ msgid "Suggestions for the word"
+#~ msgstr "Forslag for ordet"
+
+#~ msgid "New subscription request from %s"
+#~ msgstr "Ny abonneringsanmodning fra %s"
+
+#~ msgid "Do you want to add this person to your contact list?"
+#~ msgstr "Ønsker du at tilføje denne person til din kontaktliste?"
+
+#~ msgid "Do you want to add %s to your contact list?"
+#~ msgstr "Ønsker du at tilføje %s til din kontaktliste?"
+
+#~ msgid "Please enter your %s account password"
+#~ msgstr "Indtast din adgangskode for kontoen %s"
+
+#, fuzzy
+#~ msgid "Logging in to account '%s'"
+#~ msgstr "Logger på med: %s"
+
+#~ msgid "Remember Password?"
+#~ msgstr "Husk adgangskode?"
+
+#~ msgid "Could not display the help contents."
+#~ msgstr "Kunne ikke vise hjælp."
+
+#~ msgid "The server does not seem to be responding."
+#~ msgstr "Serveren ser ikke ud til at svare."
+
+#~ msgid "Try again later."
+#~ msgstr "Prøv igen senere."
+
+#, fuzzy
+#~ msgid "Change"
+#~ msgstr "Samtale"
+
+#~ msgid "Contact goes offline"
+#~ msgstr "Kontakten frakobler sig"
+
+#~ msgid "Contact goes online"
+#~ msgstr "Kontakten tilslutter sig"
+
+#~ msgid "Contact ID:"
+#~ msgstr "Kontakt-id:"
+
+#~ msgid "Do you want to accept this file?"
+#~ msgstr "Ønsker du at acceptere denne fil?"
+
+#~ msgid "File Transfer Request"
+#~ msgstr "Anmodning om filoverførsel"
+
+#~ msgid "File name:"
+#~ msgstr "Filnavn:"
+
+#~ msgid "File size:"
+#~ msgstr "Filstørrelse:"
+
+#, fuzzy
+#~ msgid "Not supported yet"
+#~ msgstr "Ikke understøttet på nuværende tidspunkt."
+
+#~ msgid "This person wishes to send you this file:"
+#~ msgstr "Denne person ønsker at sende dig denne fil:"
+
+#~ msgid "Web site:"
+#~ msgstr "Hjemmeside:"
+
+#~ msgid "_Accept"
+#~ msgstr "_Acceptér"
+
+#~ msgid "_Deny"
+#~ msgstr "_Afvis"
+
+#, fuzzy
+#~ msgid "<b>Topic:</b>"
+#~ msgstr "<b>Indstillinger</b>"
+
+#~ msgid "Account:"
+#~ msgstr "Konto:"
+
+#, fuzzy
+#~ msgid "Browse:"
+#~ msgstr "Gennemse"
+
+#, fuzzy
+#~ msgid "Edit Favorite Room"
+#~ msgstr "Redigér samtalerum"
+
+#~ msgid "Group Chat"
+#~ msgstr "Gruppesamtale"
+
+#, fuzzy
+#~ msgid "Join New"
+#~ msgstr "Deltag"
+
+#~ msgid "Join room on start_up"
+#~ msgstr "Deltag i rum ved _start"
+
+#, fuzzy
+#~ msgid "Join this chat room when Gossip starts and you are connected"
+#~ msgstr "Deltag i dette samtalerum når Gossip starter og du er tilsluttet."
+
+#~ msgid "N_ame:"
+#~ msgstr "N_avn:"
+
+#~ msgid "S_erver:"
+#~ msgstr "S_erver:"
+
+#~ msgid "_Nickname:"
+#~ msgstr "Kæle_navn:"
+
+#~ msgid "_Room:"
+#~ msgstr "_Rum:"
+
+#~ msgid "-"
+#~ msgstr "-"
+
+#~ msgid "<b>About</b>"
+#~ msgstr "<b>Om</b>"
+
+#~ msgid "<b>Client Information</b>"
+#~ msgstr "<b>Klientoplysninger</b>"
+
+#, fuzzy
+#~ msgid "<b>Groups</b>"
+#~ msgstr "<b>Om</b>"
+
+#, fuzzy
+#~ msgid "<b>Name</b>"
+#~ msgstr "<b>Sprog</b>"
+
+#~ msgid "<b>Personal Details</b>"
+#~ msgstr "<b>Personlige detaljer</b>"
+
+#~ msgid "<b>Status</b>"
+#~ msgstr "<b>Status</b>"
+
+#, fuzzy
+#~ msgid "<b>Subscription</b>"
+#~ msgstr "Abonnering"
+
+#~ msgid "<span size=\"smaller\">Example: Mikael or user@server.org</span>"
+#~ msgstr ""
+#~ "<span size=\"smaller\">Eksempel: Mikael eller bruger@jabber.org</span>"
+
+#, fuzzy
+#~ msgid "Accou_nt:"
+#~ msgstr "Konto:"
+
+#~ msgid "Add Contact"
+#~ msgstr "Tilføj kontakt"
+
+#, fuzzy
+#~ msgid "Alia_s:"
+#~ msgstr "Alias"
+
+#~ msgid "Ch_at"
+#~ msgstr "S_amtale"
+
+#~ msgid "Client:"
+#~ msgstr "Klient:"
+
+#, fuzzy
+#~ msgid "Con_tact:"
+#~ msgstr "Kon_takt:"
+
+#, fuzzy
+#~ msgid "Connect on S_tartup"
+#~ msgstr "Tilslut ved _start"
+
+#, fuzzy
+#~ msgid "Contacts"
+#~ msgstr "Kon_takt:"
+
+#~ msgid "Country:"
+#~ msgstr "Land:"
+
+#~ msgid "Decide _Later"
+#~ msgstr "Beslut _senere"
+
+#, fuzzy
+#~ msgid "Edit Contact"
+#~ msgstr "Tilføj kontakt"
+
+#~ msgid "Edit Groups"
+#~ msgstr "Redigér grupper"
+
+#~ msgid "Email:"
+#~ msgstr "E-post:"
+
+#~ msgid "ID:"
+#~ msgstr "Id:"
+
+#~ msgid ""
+#~ "If you chose to decide later you will be asked the next time you log on."
+#~ msgstr ""
+#~ "Hvis du vælger at beslutte senere, vil du blive spurgt næste gang du "
+#~ "logger på."
+
+#~ msgid "Name:"
+#~ msgstr "Navn:"
+
+#~ msgid "OS:"
+#~ msgstr "Styresystem:"
+
+#~ msgid "Personal Details"
+#~ msgstr "Personlige detaljer"
+
+#, fuzzy
+#~ msgid "R_egister"
+#~ msgstr "Re_gistrér..."
+
+#~ msgid "Search"
+#~ msgstr "Søg"
+
+#~ msgid "Spell Checker"
+#~ msgstr "Stavekontrol"
+
+#~ msgid "Subscription Request"
+#~ msgstr "Abonneringsanmodning"
+
+#~ msgid "Suggestions for the word:"
+#~ msgstr "Forslag for ordet:"
+
+#, fuzzy
+#~ msgid ""
+#~ "This acts as a filter to the contact list below. You can use segments of "
+#~ "contact's name or ID, for example, \"jabber.org\" will list everyone "
+#~ "using that server"
+#~ msgstr ""
+#~ "Dette agerer som et filter for kontaktlisten nedenfor. Du kan bruge dele "
+#~ "af kontaktens navn eller id, f.eks. vil \"jabber.org\" liste alle der "
+#~ "bruger den server."
+
+#, fuzzy
+#~ msgid "This is the name that will be used on your roster for this contact"
+#~ msgstr "Dette navn bliver brugt i din kontaktliste for denne kontakt"
+
+#, fuzzy
+#~ msgid "This name will be used to identify you in chat windows"
+#~ msgstr "Dette navn bliver brugt til at identificere dig i samtalevinduer."
+
+#, fuzzy
+#~ msgid ""
+#~ "This name will be used to identify you when new contacts lookup your "
+#~ "details"
+#~ msgstr ""
+#~ "Dette navn bliver brugt til at identificere dig når nye kontakter laver "
+#~ "et opslag efter dine detaljer."
+
+#~ msgid "Use system pro_xy"
+#~ msgstr "Benyt systemets _mellemvært"
+
+#~ msgid "Version:"
+#~ msgstr "Version:"
+
+#~ msgid "View Previous Conversations"
+#~ msgstr "Vis foregående samtaler"
+
+#~ msgid "Which account do you want to use?"
+#~ msgstr "Hvilken konto ønsker du at benytte?"
+
+#~ msgid "You are not subscribed to this contact."
+#~ msgstr "Du abonnerer ikke på denne kontakt."
+
+#, fuzzy
+#~ msgid "_Birthday:"
+#~ msgstr "_Prioritet:"
+
+#~ msgid "_Connect"
+#~ msgstr "_Tilslut"
+
+#, fuzzy
+#~ msgid "_Description:"
+#~ msgstr "Beskrivelse:"
+
+#~ msgid "_Disconnect"
+#~ msgstr "_Frakobl"
+
+#, fuzzy
+#~ msgid "_Email:"
+#~ msgstr "E-post:"
+
+#, fuzzy
+#~ msgid ""
+#~ "_Enter the name or contact ID of the person you want to chat to below:"
+#~ msgstr ""
+#~ "Indtast navn eller kontakt-id på den person du ønsker at samtale med "
+#~ "nedenfor."
+
+#, fuzzy
+#~ msgid "_For:"
+#~ msgstr "Port:"
+
+#, fuzzy
+#~ msgid "_Full Name:"
+#~ msgstr "_Navn:"
+
+#, fuzzy
+#~ msgid "_Group:"
+#~ msgstr "Gruppe:"
+
+#, fuzzy
+#~ msgid "_Nick Name:"
+#~ msgstr "Kæle_navn:"
+
+#~ msgid "_Password:"
+#~ msgstr "_Adgangskode:"
+
+#, fuzzy
+#~ msgid "_Quit Message:"
+#~ msgstr "_Statusbeskeder"
+
+#, fuzzy
+#~ msgid "_Retrieve"
+#~ msgstr "_Fjern"
+
+#~ msgid "_Subscribe"
+#~ msgstr "_Abonnér"
+
+#, fuzzy
+#~ msgid "_Web site:"
+#~ msgstr "Hjemmeside:"
+
+#, fuzzy
+#~ msgid "irc account settings"
+#~ msgstr "<b>Kontoindstillinger</b>"
+
+#, fuzzy
+#~ msgid "msn account settings"
+#~ msgstr "<b>Kontoindstillinger</b>"
+
+#~ msgid "Preset status messages"
+#~ msgstr "Forvalgte statusbeskeder"
+
+#~ msgid "Preset status messages."
+#~ msgstr "Forvalgte statusbeskeder."
+
+#~ msgid "Perhaps you are trying to connect to the wrong port?"
+#~ msgstr "Måske forsøger du at tilslutte til den forkerte port?"
+
+#~ msgid "Perhaps the service is not currently running?"
+#~ msgstr "Måske kører tjenesten ikke på nuværende tidspunkt?"
+
+#~ msgid "Check your connection details."
+#~ msgstr "Kontrollér dine forbindelsesindstillinger."
+
+#~ msgid "Perhaps the server is not running this service."
+#~ msgstr "Måske kører serveren ikke denne tjeneste."
+
+#~ msgid "Check your username and password are correct."
+#~ msgstr "Kontrollér at brugernavn og adgangskode er korrekte."
+
+#~ msgid "%s will be added to your contact list."
+#~ msgstr "%s vil blive tilføjet til din kontaktliste."
+
+#~ msgid "%s ID of new contact:"
+#~ msgstr "%s-id for ny kontakt:"
+
+#~ msgid "Example: %s"
+#~ msgstr "Eksempel: %s"
+
+#~ msgid "You have no Instant Messaging accounts configured!"
+#~ msgstr "Du har ingen samtalekonti konfiguret!"
+
+#~ msgid ""
+#~ "Next you will be presented with the Account Information dialog to set "
+#~ "your details up."
+#~ msgstr ""
+#~ "Som det næste bliver du præsenteret for kontooplysningsvinduet for at "
+#~ "konfigurere dine detaljer."
+
+#~ msgid ""
+#~ "Please enter your invitation message to:\n"
+#~ "%s"
+#~ msgstr ""
+#~ "Indtast venligst din invitationsbesked to:\n"
+#~ "%s"
+
+#, fuzzy
+#~ msgid "Favourite"
+#~ msgstr "<b>Favorit:</b>"
+
+#~ msgid "Contact Information for %s"
+#~ msgstr "Kontaktoplysninger for %s"
+
+#, fuzzy
+#~ msgid "/Contact Infor_mation"
+#~ msgstr "/_Kontaktoplysninger"
+
+#~ msgid "/Re_name Contact"
+#~ msgstr "/Om_døb kontakt"
+
+#~ msgid "/_Edit Groups"
+#~ msgstr "/_Redigér grupper"
+
+#~ msgid "/_View Previous Conversations"
+#~ msgstr "/_Vis foregående samtaler"
+
+#~ msgid ""
+#~ "Please enter a new nickname for the contact\n"
+#~ "%s"
+#~ msgstr ""
+#~ "Indtast et nyt kælenavn til kontakten\n"
+#~ "%s"
+
+#~ msgid "Edit groups for %s"
+#~ msgstr "Redigér grupper for %s"
+
+#~ msgid "Conversation Log"
+#~ msgstr "Samtalelog"
+
+#~ msgid "Registering account"
+#~ msgstr "Registrering af konto"
+
+#~ msgid "Respond"
+#~ msgstr "Svar"
+
+#, fuzzy
+#~ msgid "Add to _favourites"
+#~ msgstr "_Tilføj til favoritter"
+
+#~ msgid ""
+#~ "Customize your own nickname, the server and chatroom which you wish to "
+#~ "join."
+#~ msgstr ""
+#~ "Tilpas dit kælenavn, den server og det samtalerum du ønsker at deltage i."
+
+#~ msgid "Edit your chat room details:"
+#~ msgstr "Redigér dine indstillinger for samtalerum:"
+
+#~ msgid "Na_me:"
+#~ msgstr "Na_vn:"
+
+#~ msgid "New Chat Room"
+#~ msgstr "Nyt samtalerum"
+
+#~ msgid ""
+#~ "Pick a saved chat room from the presets available below and click Join to "
+#~ "start chatting."
+#~ msgstr ""
+#~ "Vælg a gemt samtalerum fra de nedenstående forvalgte og klik på \"Deltag"
+#~ "\" for at påbegynde samtale."
+
+#~ msgid " "
+#~ msgstr " "
+
+#~ msgid "<b>Information requested, please wait...</b>"
+#~ msgstr "<b>Information forespurgt, vent venligst...</b>"
+
+#~ msgid "<span size=\"smaller\">Example:</span>"
+#~ msgstr "<span size=\"smaller\">Eksempel:</span>"
+
+#~ msgid "Account Name"
+#~ msgstr "Kontonavn"
+
+#, fuzzy
+#~ msgid "Chat Rooms..."
+#~ msgstr "Samtalerum"
+
+#~ msgid "Connection Details"
+#~ msgstr "Forbindelsesdetaljer"
+
+#~ msgid "Do you already have an account set up on a server?"
+#~ msgstr "Har du allerede en konto på en server?"
+
+#, fuzzy
+#~ msgid "Enter the port used in the connection for this account"
+#~ msgstr "Indtast den port der bliver brugt ved tilslutning for denne konto."
+
+#, fuzzy
+#~ msgid "Enter the server used in the connection for this account"
+#~ msgstr ""
+#~ "Indtast den server der bliver brugt ved tilslutning for denne konto."
+
+#~ msgid "Enter the user's contact ID:"
+#~ msgstr "Indtast brugerens kontakt-ID:"
+
+#, fuzzy
+#~ msgid "Enter your real name here"
+#~ msgstr "Indtast dit rigtige navn her."
+
+#~ msgid "Finished"
+#~ msgstr "Afsluttet"
+
+#, fuzzy
+#~ msgid "For increased security, enable this option"
+#~ msgstr "Slå denne indstilling til for øget sikkerhed."
+
+#~ msgid "Gossip"
+#~ msgstr "Gossip"
+
+#~ msgid ""
+#~ "Gossip is a modern client for the Jabber Instant Messaging system.\n"
+#~ "\n"
+#~ "This assistant will help you configure Gossip and connect you to your "
+#~ "favorite Jabber server.\n"
+#~ "\n"
+#~ "To get started, just click \"Forward\"."
+#~ msgstr ""
+#~ "Gossip er en moderne klient til samtalesystemet Jabber\n"
+#~ "\n"
+#~ "Denne assistent sætter dig i gang med at konfigurere Gossip og tilslutte "
+#~ "dig til din favorit Jabber-server.\n"
+#~ "\n"
+#~ "Klik på \"Fremad\" for at komme i gang."
+
+#, fuzzy
+#~ msgid ""
+#~ "If you have another machine on your network which 'proxies' the "
+#~ "connection to the internet and you want to use it, enable this option"
+#~ msgstr ""
+#~ "Hvis du har en anden maskine på dit netværk som fungerer som mellemvært "
+#~ "for forbindelsen til internettet og du ønsker at bruge den, så slå denne "
+#~ "indstilling til"
+
+#~ msgid ""
+#~ "If you need to set specific connection details, like a different server "
+#~ "or port, you can configure that here:"
+#~ msgstr ""
+#~ "Hvis du har brug for at angive specifikke forbindelsesdetaljer, såsom en "
+#~ "anden server eller port, kan du konfigurere det her:"
+
+#~ msgid ""
+#~ "In order to subscribe to presence notifications from the user, a request "
+#~ "will be sent. Until this request is approved, the user will always be "
+#~ "shown as \"Offline\" in your contact list."
+#~ msgstr ""
+#~ "For at kunne få at vide når brugeren kommer og går, vil en "
+#~ "tilstedeværelses-anmodning blive sendt. Før denne anmodning er "
+#~ "accepteret, vil brugeren altid blive vist som frakoblet i din "
+#~ "kontaktliste."
+
+#~ msgid "In which group do you want to place this contact?"
+#~ msgstr "Hvilken gruppe ønsker du at placere denne kontakt i?"
+
+#~ msgid "Jabber ID:"
+#~ msgstr "Jabber-id:"
+
+#, fuzzy
+#~ msgid ""
+#~ "Leave this blank if you don't want your password stored on a public "
+#~ "machine. If you decide to do this, you will be prompted each time you "
+#~ "connect for a password"
+#~ msgstr ""
+#~ "Du kan lade dette være tomt hvis du ikke ønsker at din adgangskode skal "
+#~ "være gemt på en offentlig maskine. Hvis du gør dette, vil du blive spurgt "
+#~ "efter adgangskoden hver gang du tilslutter."
+
+#~ msgid "Nickname:"
+#~ msgstr "Kælenavn:"
+
+#~ msgid "Port:"
+#~ msgstr "Port:"
+
+#, fuzzy
+#~ msgid "Press Subscribe to request to receive their status"
+#~ msgstr "Tryk på \"Abonnér\" for at modtage deres status."
+
+#~ msgid "Registering Account"
+#~ msgstr "Registrering af konto"
+
+#~ msgid "Resource:"
+#~ msgstr "Resurse:"
+
+#~ msgid "Sending request"
+#~ msgstr "Sender forespørgsel"
+
+#~ msgid "Server:"
+#~ msgstr "Server:"
+
+#~ msgid "Web Site:"
+#~ msgstr "Hjemmeside:"
+
+#~ msgid "Welcome to Gossip"
+#~ msgstr "Velkommen til Gossip"
+
+#~ msgid "What instant messaging system does the contact use?"
+#~ msgstr "Hvilket samtalesystem anvender kontakten?"
+
+#~ msgid "What is your name?"
+#~ msgstr "Hvad er dit navn?"
+
+#~ msgid ""
+#~ "What name do you want to use to identify this account?\n"
+#~ "\n"
+#~ "This name could be something associated with the service provider, for "
+#~ "example, <b>Google</b>."
+#~ msgstr ""
+#~ "Hvilket navn ønsker du at bruge til at identificere denne konto?\n"
+#~ "\n"
+#~ "Dette navn kunne være noget der er associeret med tjenesteudbyderen, f."
+#~ "eks. <b>Google</b>."
+
+#~ msgid "What password do you want to use?"
+#~ msgstr "Hvilken adgangskode ønsker du at anvende?"
+
+#~ msgid "What username do you use?"
+#~ msgstr "Hvilket brugernavn benytter du?"
+
+#~ msgid "What username do you want to use?"
+#~ msgstr "Hvilket brugernavn ønsker du at benytte?"
+
+#~ msgid "Which account do you want to add this contact to?"
+#~ msgstr "Hvilken konto ønsker du at tilføje denne kontakt til?"
+
+#~ msgid ""
+#~ "You can change your account settings later by selecting the Edit-"
+#~ ">Accounts menu item."
+#~ msgstr ""
+#~ "Du kan ændre dine kontoindstillinger senere ved at vælge menupunktet "
+#~ "Redigér->Konti."
+
+#~ msgid ""
+#~ "You need to set a name for the connection, for example, <b>Home</b> or "
+#~ "<b>Laptop</b>."
+#~ msgstr ""
+#~ "Du skal give forbindelsen et navn, f.eks. <b>Hjemme</b> eller <b>Bærbar</"
+#~ "b>."
+
+#~ msgid "Your Account"
+#~ msgstr "Din konto"
+
+#~ msgid "Your Identity"
+#~ msgstr "Din identitet"
+
+#~ msgid "Your new account has now been set up."
+#~ msgstr "Din nye konto er nu konfigureret."
+
+#~ msgid "_Forget"
+#~ msgstr "_Glem"
+
+#, fuzzy
+#~ msgid "_Group Chat"
+#~ msgstr "Gruppesamtale"
+
+#~ msgid "_No"
+#~ msgstr "_Nej"
+
+#~ msgid "_Search..."
+#~ msgstr "_Søg..."
+
+#~ msgid "_Yes"
+#~ msgstr "_Ja"
+
+#~ msgid "Be silent when away"
+#~ msgstr "Vær stille når brugeren er fraværende"
+
+#~ msgid "Be silent when busy"
+#~ msgstr "Vær stille når brugeren er optaget"
+
+#~ msgid "Height of main window"
+#~ msgstr "Hovedvinduets højde"
+
+#~ msgid "The X position of the main window."
+#~ msgstr "Vandret placering af hovedvinduet."
+
+#~ msgid "The Y position of the main window."
+#~ msgstr "Lodret placering af hovedvinduet."
+
+#~ msgid "The width of the main window."
+#~ msgstr "Bredden af hovedvinduet."
+
+#~ msgid "Whether spell checking should be turned on."
+#~ msgstr "Om stavekontrol skal være slået til."
+
+#~ msgid "Width of the main window"
+#~ msgstr "Hovedvinduets bredde"
+
+#~ msgid "X position of main window"
+#~ msgstr "Vandret placering af hovedvindue"
+
+#~ msgid "Y position of main window"
+#~ msgstr "Lodret placering af hovedvindue"
+
+#~ msgid "Gossip, Instant Messaging Client"
+#~ msgstr "Gossip, samtaleklient"
+
+#~ msgid "Close this chat window"
+#~ msgstr "Luk dette samtalerum"
+
+#~ msgid "Requested Information"
+#~ msgstr "Anmodede oplysninger"
+
+#~ msgid "Available..."
+#~ msgstr "Tilgængelig..."
+
+#~ msgid "Busy..."
+#~ msgstr "Optaget..."
+
+#~ msgid "Away..."
+#~ msgstr "Væk..."
+
+#~ msgid "Contact _Information"
+#~ msgstr "Kontakt_oplysninger"
+
+#~ msgid "<b>Appearance and Behavior</b>"
+#~ msgstr "<b>Udseende og opførsel</b>"
+
+#~ msgid "<b>Sound</b>"
+#~ msgstr "<b>Lyd</b>"
+
+#~ msgid "Check spelling while I _type"
+#~ msgstr "Kontrollér stavning mens jeg _skriver"
+
+#~ msgid "Gossip - Accounts"
+#~ msgstr "Gossip - konti"
+
+#~ msgid "Join _Group Chat..."
+#~ msgstr "Deltag i _gruppesamtale..."
+
+#~ msgid "Por_t:"
+#~ msgstr "Por_t:"
+
+#~ msgid "Requested information."
+#~ msgstr "Forespurgte oplysninger."
+
+#~ msgid "Requesting contact information, please wait..."
+#~ msgstr "Forespørger kontaktoplysninger, vent venligst..."
+
+#~ msgid "%s has gone offline"
+#~ msgstr "%s frakoblede sig"
+
+#~ msgid "%sChat - %s"
+#~ msgstr "%sSamtale - %s"
+
+#~ msgid "/Show _Log"
+#~ msgstr "/Vis _log"
+
+#~ msgid "View Lo_g"
+#~ msgstr "Vis lo_g"
+
+#~ msgid "Gossip - Group Chat"
+#~ msgstr "Gossip - gruppesamtale"
+
+#~ msgid "Gossip - New Chatroom"
+#~ msgstr "Gossip - nyt samtalerum"
+
+#~ msgid "Status:"
+#~ msgstr "Status:"
+
+#~ msgid "Conversation Hi_story"
+#~ msgstr "Samtale_historik"
+
+#~ msgid "Gossip - Add contact"
+#~ msgstr "Gossip - tilføj kontakt"
+
+#~ msgid "Gossip - Contact Information"
+#~ msgstr "Gossip - kontaktoplysninger"
+
+#~ msgid "Gossip - Edit Groups"
+#~ msgstr "Gossip - redigér grupper"
+
+#~ msgid "Gossip - Logs"
+#~ msgstr "Gossip - log"
+
+#~ msgid "Gossip - New Account"
+#~ msgstr "Gossip - ny konto"
+
+#~ msgid "Gossip - New Message"
+#~ msgstr "Gossip - ny besked"
+
+#~ msgid "Gossip - Personal Details"
+#~ msgstr "Gossip - personlige detaljer"
+
+#~ msgid "Gossip - Preferences"
+#~ msgstr "Gossip - indstillinger"
+
+#~ msgid "Gossip - Spell Checker"
+#~ msgstr "Gossip - stavekontrol"
+
+#~ msgid "Gossip - Status Message"
+#~ msgstr "Gossip - statusbesked"
+
+#~ msgid "_Find:"
+#~ msgstr "_Find:"
+
+#~ msgid "_Highlight"
+#~ msgstr "_Fremhæv"
+
+#~ msgid "Artwork by:"
+#~ msgstr "Grafik af:"
+
+#~ msgid "Translated by:"
+#~ msgstr "Oversat af:"
+
+#~ msgid "Danish"
+#~ msgstr "Dansk"
+
+#~ msgid "German"
+#~ msgstr "Tysk"
+
+#~ msgid "German (Germany)"
+#~ msgstr "Tysk (Tyskland)"
+
+#~ msgid "Greek"
+#~ msgstr "Græsk"
+
+#~ msgid "English"
+#~ msgstr "Engelsk"
+
+#~ msgid "English (Canadian)"
+#~ msgstr "Engelsk (Canadisk)"
+
+#~ msgid "English (British)"
+#~ msgstr "Engelsk (Britisk)"
+
+#~ msgid "English (American)"
+#~ msgstr "Engelsk (Amerikansk)"
+
+#~ msgid "Esperanto"
+#~ msgstr "Esperanto"
+
+#~ msgid "Spanish"
+#~ msgstr "Spansk"
+
+#~ msgid "Persian"
+#~ msgstr "Persisk"
+
+#~ msgid "Finnish"
+#~ msgstr "Finsk"
+
+#~ msgid "French"
+#~ msgstr "Fransk"
+
+#~ msgid "French (France)"
+#~ msgstr "Fransk (Frankrig)"
+
+#~ msgid "Hungarian"
+#~ msgstr "Hungarsk"
+
+#~ msgid "Icelandic"
+#~ msgstr "Islandsk"
+
+#~ msgid "Italian"
+#~ msgstr "Italiansk"
+
+#~ msgid "Japanese"
+#~ msgstr "Japansk"
+
+#~ msgid "Norwegian (Bokmal)"
+#~ msgstr "Norsk (Bokmål)"
+
+#~ msgid "Norwegian"
+#~ msgstr "Norsk"
+
+#~ msgid "Norwegian (Nynorsk)"
+#~ msgstr "Norsk (Nynorsk)"
+
+#~ msgid "Norwegian (Nyorsk)"
+#~ msgstr "Norsk (Nynorsk)"
+
+#~ msgid "Polish"
+#~ msgstr "Polsk"
+
+#~ msgid "Russian"
+#~ msgstr "Russisk"
+
+#~ msgid "Swedish"
+#~ msgstr "Svensk"
+
+#~ msgid "Idle"
+#~ msgstr "Inaktiv"
+
+#~ msgid "Progress:"
+#~ msgstr "Fremgang"
+
+#~ msgid "You were disconnected from the server. Do you want to reconnect?"
+#~ msgstr "Du blev koblet fra serveren. Ønsker du at tilslutte igen?"
+
+#~ msgid ""
+#~ "Make sure that your account information is correct. The server may also "
+#~ "currently be unavailable."
+#~ msgstr ""
+#~ "Sikr dig at dine kontooplysninger er korrekte. Det kan dog også være at "
+#~ "serveren ikke er tilgængelig i øjeblikket."
+
+#~ msgid "Edit List..."
+#~ msgstr "Redigér liste..."
+
+#~ msgid "An error occurred when chatting in the group chat %s."
+#~ msgstr "En fejl opstod i gruppesamtalen %s."
+
+#~ msgid "Details:"
+#~ msgstr "Detaljer:"
+
+#~ msgid "Unable to enter the group chat %s."
+#~ msgstr "Kunne ikke deltage i gruppesamtalen %s."
+
+#~ msgid "An error occurred when chatting with %s."
+#~ msgstr "En fejl opstod under samtale med %s."
+
+#~ msgid "Gossip will now try to use your account:"
+#~ msgstr "Gossip vil nu forsøge at anvende din konto:"
+
+#~ msgid "Gossip will now try to register the account:"
+#~ msgstr "Gossip vil nu forsøge at registrere kontoen:"
+
+#~ msgid "Saving personal details, please wait..."
+#~ msgstr "Gemmer personlige detaljer, vent venligst..."
+
+#~ msgid "*"
+#~ msgstr "*"
+
+#~ msgid "From:"
+#~ msgstr "Fra:"
+
+#~ msgid "Gossip - Received Message"
+#~ msgstr "Gossip - modtaget besked"
+
+#~ msgid "In reply to:"
+#~ msgstr "Svar på:"
+
+#~ msgid "To:"
+#~ msgstr "Til:"
+
+#~ msgid "_Reply..."
+#~ msgstr "_Besvar..."
+
+#~ msgid "_Send"
+#~ msgstr "_Send"
+
+#~ msgid "C_onnect"
+#~ msgstr "_Tilslut"
+
+#~ msgid "Connect _Server:"
+#~ msgstr "Tilslut til _server:"
+
+#~ msgid "_Jabber ID:"
+#~ msgstr "_Jabber-id:"
+
+#~ msgid " "
+#~ msgstr " "
+
+#~ msgid "<b>Available chat rooms</b>"
+#~ msgstr "<b>Tilgængelige samtalerum</b>"
+
+#~ msgid "<b>Chat room information</b>"
+#~ msgstr "<b>Oplysninger om samtalerum</b>"
+
+#~ msgid "Imendio Gossip - Group Chat"
+#~ msgstr "Gossip - gruppesamtale"
+
+#~ msgid "N_ickname:"
+#~ msgstr "_Kælenavn:"
+
+#~ msgid ""
+#~ "Pick a favorite, or enter nickname, server name, and the name of the chat "
+#~ "room to enter."
+#~ msgstr ""
+#~ "Vælg en favorit eller indtast kælenavn, servernavn og navnet på det "
+#~ "samtalerum der skal indtrædes i."
+
+#~ msgid "R_emove"
+#~ msgstr "_Fjern"
+
+#~ msgid "_Add"
+#~ msgstr "_Tilføj"
+
+#~ msgid " "
+#~ msgstr " "
+
+#~ msgid ""
+#~ "<b>Finding the best server...</b>\n"
+#~ "This will take a few moments, please wait."
+#~ msgstr ""
+#~ "<b>Finder den bedste server...</b>\n"
+#~ "Dette vil tage et øjeblik, vent venligst."
+
+#~ msgid "<b>Personal information</b>"
+#~ msgstr "<b>Personlige oplysninger</b>"
+
+#~ msgid "<b>Preset status messages</b>"
+#~ msgstr "<b>Forvalgte statusbeskeder</b>"
+
+#~ msgid "<i>Information not available</i>"
+#~ msgstr "<i>Information ikke tilgængelig</i>"
+
+#~ msgid "Add Another Account"
+#~ msgstr "Tilføj en anden konto"
+
+#~ msgid "Choose a Server"
+#~ msgstr "Vælg en server"
+
+#~ msgid "Choose from list:"
+#~ msgstr "Vælg fra liste:"
+
+#~ msgid "Configuring Service"
+#~ msgstr "Registeringstjeneste"
+
+#~ msgid "Discover Services"
+#~ msgstr "Opdagelsestjenester"
+
+#~ msgid "Information about ..."
+#~ msgstr "Information om..."
+
+#~ msgid "Jabber.com"
+#~ msgstr "Jabber.com"
+
+#~ msgid "Jabber.org"
+#~ msgstr "Jabber.org"
+
+#~ msgid "Nick name:"
+#~ msgstr "Kælenavn:"
+
+#~ msgid "On what server do you have a Jabber account?"
+#~ msgstr "På hvilken server har du en Jabber-konto?"
+
+#~ msgid ""
+#~ "Please enter your user name, password and all other required details "
+#~ "below to set up your account. "
+#~ msgstr ""
+#~ "Indtast venligst dit brugernavn, adgangskode og andre påkrævede detaljer "
+#~ "nedenforfor at opsætte din konto"
+
+#~ msgid "Server Details"
+#~ msgstr "Serverdetaljer"
+
+#~ msgid "Sound"
+#~ msgstr "Lyd"
+
+#~ msgid "Status Message"
+#~ msgstr "Statusbesked"
+
+#~ msgid ""
+#~ "This wizard will allow you to configure your account settings for another "
+#~ "protocol. "
+#~ msgstr ""
+#~ "Denne hjælper tillader dig at konfigurere dine kontoindstillinger til en "
+#~ "anden protokol."
+
+#~ msgid "Use a different server"
+#~ msgstr "Benyt en anden server"
+
+#~ msgid "What request message do you want to send to ...?"
+#~ msgstr "Hvilken forespørgselsbesked ønsker du at sende til ...?"
+
+#~ msgid "Which protocol would you like to set up? "
+#~ msgstr "Hvilken protokol ønsker du at opsætte? "
+
+#~ msgid "_AIM"
+#~ msgstr "_AIM"
+
+#~ msgid "_ICQ"
+#~ msgstr "_ICQ"
+
+#~ msgid "_MSN"
+#~ msgstr "_MSN"
+
+#~ msgid "_Yahoo!"
+#~ msgstr "_Yahoo!"
+
+#~ msgid "subscription_label"
+#~ msgstr "abonnerings_etiket"
+
+#~ msgid "Gossip Website"
+#~ msgstr "Gossips hjemmeside"
+
+#~ msgid "Gossip, Jabber Client"
+#~ msgstr "Gossip, Jabberklient"
+
+#~ msgid "About to leave..."
+#~ msgstr "Skal til at gå..."
+
+#~ msgid "Autoaway message"
+#~ msgstr "Automatisk fraværsbesked"
+
+#~ msgid "Away messages"
+#~ msgstr "Fraværsbeskeder"
+
+#~ msgid "Busy messages"
+#~ msgstr "Optaget-beskeder"
+
+#~ msgid "Message to show before going away"
+#~ msgstr "Besked som skal vises før maskinen forlades"
+
+#~ msgid "Not at the computer"
+#~ msgstr "Ikke ved maskinen"
+
+#~ msgid "Just about to leave..."
+#~ msgstr "Skal lige til at gå..."
+
+#~ msgid "Custom Busy Message..."
+#~ msgstr "Egen optaget-besked..."
+
+#~ msgid "Leave..."
+#~ msgstr "Forlad..."
+
+#~ msgid "New Busy Message"
+#~ msgstr "Ny optaget-besked"
+
+#~ msgid "New Away Message"
+#~ msgstr "Ny fraværsbesked"
+
+#~ msgid "Working"
+#~ msgstr "Arbejder"
+
+#~ msgid "Eating"
+#~ msgstr "Spiser"
+
+#~ msgid "Sleeping"
+#~ msgstr "Sover"
+
+#~ msgid "Enter the new message:"
+#~ msgstr "Indtast den nye besked:"
+
+#~ msgid "Leave"
+#~ msgstr "Forlad"
+
+#~ msgid "Preset messages for quickly setting away status."
+#~ msgstr "Foruddefinerede beskeder til hurtigt at sætte fraværs-status."
+
+#~ msgid "Preset messages for quickly setting busy status."
+#~ msgstr "Foruddefinerede beskeder til hurtigt at sætte optaget-status."
+
+#~ msgid "Reason for being busy:"
+#~ msgstr "Grund til at være optaget:"
+
+#~ msgid "Reason for leaving:"
+#~ msgstr "Grund til at forlade:"
+
+#~ msgid "As _Windows"
+#~ msgstr "Som _vinduer"
+
+#~ msgid "As a _List"
+#~ msgstr "Som en _liste"
+
+#~ msgid "_Go"
+#~ msgstr "_Navigér"
+
+#~ msgid "Open conversations in single window with list view"
+#~ msgstr "Åbn samtaler i et enkelt vindue med listevisning"
+
+#~ msgid "Whether or not to timestamp all messages in conversations."
+#~ msgstr "Om alle beskeder i samtaler skal tidsstemples."
+
+#~ msgid "[Eating,Sleeping]"
+#~ msgstr "[Spiser,Sover]"
+
+#~ msgid "[Working]"
+#~ msgstr "[Arbejder]"
+
+#~ msgid "Custom Away Message..."
+#~ msgstr "Egen fraværsbesked..."
+
+#~ msgid "Messages"
+#~ msgstr "Beskeder"
+
+#~ msgid "Open conversations in a single window with _list view"
+#~ msgstr "Åbn samtaler i et enkelt vindue med _listevisning"
+
+#~ msgid ""
+#~ "These messages are used to describe your status when you're about to "
+#~ "leave and when you're away."
+#~ msgstr ""
+#~ "Disse beskeder bruges til at beskrive din status når du skal til at gå og "
+#~ "når du er fraværende."
+
+#~ msgid "Use com_pact conversation style"
+#~ msgstr "Benyt _kompakt samtalestil"
+
+#~ msgid "Use sounds to _notify when new messages arrive"
+#~ msgstr "Udsend lyd for at _annoncere når nye beskeder ankommer"
+
+#~ msgid "_Timestamp all messages"
+#~ msgstr "_Tidsstempl alle beskeder"
+
+#~ msgid "Auto away enabled"
+#~ msgstr "Auto-fravær aktiveret"
+
+#~ msgid "Extended autoaway time"
+#~ msgstr "Udvidet-fraværstid"
+
+#~ msgid ""
+#~ "The number of minutes of idle time before automatically going into \"away"
+#~ "\" mode."
+#~ msgstr ""
+#~ "Antal minutters inaktivitet før der automatisk skiftes til \"fraværende\"."
+
+#~ msgid ""
+#~ "The number of minutes of idle time before automatically going into "
+#~ "\"extended away\" mode."
+#~ msgstr ""
+#~ "Antal minutters inaktivitet før der automatisk skiftes til \"udvidet "
+#~ "fravær\"."
+
+#~ msgid ""
+#~ "Whether or not to go into \"away\" mode automatically when a certain time "
+#~ "of idling has passed."
+#~ msgstr ""
+#~ "Om der skal skiftes til \"fraværende\" automatisk når et bestemt tidsrum "
+#~ "af inaktivitet er forløbet."
+
+#~ msgid "%sChat"
+#~ msgstr "%sSamtale"
+
+#~ msgid "Offline "
+#~ msgstr "Ikke tilkoblet"
+
+#~ msgid "Others"
+#~ msgstr "Andre"
+
+#~ msgid "Use ta_bs instead of windows for conversations"
+#~ msgstr "Benyt _faneblade i stedet for vinduer til samtaler"
+
+#~ msgid "Free to chat"
+#~ msgstr "Ledig til snak"
+
+#~ msgid "Extended away"
+#~ msgstr "Udvidet fravær"
+
+#~ msgid "_Edit Account..."
+#~ msgstr "_Redigér kontoen..."
+
+#~ msgid "<b>Additional information</b>"
+#~ msgstr "<b>Yderligere information</b>"
+
+#~ msgid "<b>Address</b>"
+#~ msgstr "<b>Adresse</b>"
+
+#~ msgid "<b>Auto away</b>"
+#~ msgstr "<b>Auto-forvær</b>"
+
+#~ msgid "<b>Jabber ID:</b>"
+#~ msgstr "<b>Jabber-id:</b>"
+
+#~ msgid "<b>Setup Finished</b>"
+#~ msgstr "<b>Konfiguration afsluttet</b>"
+
+#~ msgid "Automatically enter away mode during inactivity"
+#~ msgstr "Skift automatisk til \"fraværende\" hvis inaktiv"
+
+#~ msgid "Enter away mode after"
+#~ msgstr "Skift til \"fraværende\" efter"
+
+#~ msgid "I'm away eating dinner, bbiab..."
+#~ msgstr "Jeg spiser middag, kommer snart..."
+
+#~ msgid "Presence:"
+#~ msgstr "Tilstedeværelse:"
+
+#~ msgid "Priority:"
+#~ msgstr "Prioritet:"
+
+#~ msgid "Set the status you want to use"
+#~ msgstr "Sæt den status du ønsker at bruge"
+
+#~ msgid "_Approve"
+#~ msgstr "_Godkend"
+
+#~ msgid "_Defer"
+#~ msgstr "_Udskyd"
+
+#~ msgid "minutes"
+#~ msgstr "minutter"
diff --git a/gnome-2-22/po/de.po b/gnome-2-22/po/de.po
new file mode 100644
index 000000000..8b0e86e13
--- /dev/null
+++ b/gnome-2-22/po/de.po
@@ -0,0 +1,1371 @@
+# German translation of Empathy.
+# Copyright (C) 2003-2005, 2007 Free Software Foundation, Inc.
+# Hendrik Richter <naggeldak@gnome-de.org>, 2003.
+# Frank Arnold <frank@scirocco-5v-turbo.de>, 2005.
+# Andre Klapper <ak-47@gmx.net>, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Gossip\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-11-13 00:56+0100\n"
+"PO-Revision-Date: 2007-11-13 01:53+0100\n"
+"Last-Translator: Andre Klapper <ak-47@gmx.net>\n"
+"Language-Team: German <gnome-de@gnome.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../data/empathy.desktop.in.in.h:1
+msgid "Empathy Instant Messenger"
+msgstr "Instant-Messenger"
+
+#: ../data/empathy.desktop.in.in.h:2
+msgid "Send and receive instant messages"
+msgstr "Instant-Nachrichten senden und empfangen"
+
+#: ../data/empathy.schemas.in.h:1
+msgid "Always open a separate chat window for new chats."
+msgstr "Immer ein neues Chat-Fenster für neue Chats öffnen."
+
+#: ../data/empathy.schemas.in.h:2
+msgid "Chat window theme"
+msgstr "Chat-Fenster-Thema"
+
+#: ../data/empathy.schemas.in.h:3
+msgid "Checks if Salut account is created"
+msgstr "Prüft, ob ein Salut-Konto erzeugt wird"
+
+#: ../data/empathy.schemas.in.h:4
+msgid ""
+"Comma separated list of spell checker languages to use (e.g. en, fr, nl)."
+msgstr ""
+"Kommagetrennte Liste der Sprachen, für die die Rechtschreibprüfung genutzt "
+"wird (z.B. en, fr, nl)."
+
+#: ../data/empathy.schemas.in.h:5
+msgid "Compact contact list"
+msgstr "Kompakte Kontaktliste"
+
+#: ../data/empathy.schemas.in.h:6
+msgid "Contact list sort criterium"
+msgstr "Kontaktlisten-Sortierkriterium"
+
+#: ../data/empathy.schemas.in.h:7
+msgid "Default directory to select an avatar image from"
+msgstr "Vorgabeverzeichnis zum Auswählen eines Benutzerbildes"
+
+#: ../data/empathy.schemas.in.h:8
+msgid "Enable popup when contact is available"
+msgstr "Popup aktivieren, falls Kontakt verfügbar ist"
+
+#: ../data/empathy.schemas.in.h:9
+msgid "Enable sound when away"
+msgstr "Klänge bei Abwesenheit deaktivieren"
+
+#: ../data/empathy.schemas.in.h:10
+msgid "Enable sound when busy"
+msgstr "Klänge bei Beschäftigung aktivieren"
+
+#: ../data/empathy.schemas.in.h:11
+msgid "Enable spell checker"
+msgstr "Rechtschreibprüfung aktivieren"
+
+#: ../data/empathy.schemas.in.h:12
+msgid "Hide main window"
+msgstr "Hauptfenster verstecken"
+
+#: ../data/empathy.schemas.in.h:13
+msgid "Hide the main window."
+msgstr "Das Hauptfenster verstecken."
+
+#: ../data/empathy.schemas.in.h:14
+msgid "Open new chats in separate windows"
+msgstr "Neue Chats in eigenen Fenstern öffnen"
+
+#: ../data/empathy.schemas.in.h:15
+msgid "Show avatars"
+msgstr "Benutzerbilder anzeigen"
+
+#: ../data/empathy.schemas.in.h:16
+msgid "Show hint about closing the main window"
+msgstr "Hinweis über das Schließen des Hauptfensters anzeigen"
+
+#: ../data/empathy.schemas.in.h:17
+msgid "Show offline contacts"
+msgstr "Abgemeldete Kontakte anzeigen"
+
+#: ../data/empathy.schemas.in.h:18
+msgid "Spell checking languages"
+msgstr "Rechtschreibprüfungssprachen"
+
+#: ../data/empathy.schemas.in.h:19
+msgid "The last directory that an avatar image was chosen from."
+msgstr "Das letzte Verzeichnis, aus welchem ein Benutzerbild gewählt wurde."
+
+#: ../data/empathy.schemas.in.h:20
+msgid "The theme that is used to display the conversation in chat windows."
+msgstr ""
+"Das Thema, das für das Anzeigen von Unterhaltungen in Chat-Fenstern benutzt "
+"wird."
+
+#: ../data/empathy.schemas.in.h:21
+msgid "Use graphical smileys"
+msgstr "Grafische Smilies verwenden"
+
+#: ../data/empathy.schemas.in.h:22
+msgid "Use notification sounds"
+msgstr "Benachrichtigen mit Klängen"
+
+#: ../data/empathy.schemas.in.h:23
+msgid "Use theme for chat rooms"
+msgstr "Thema für Chaträume benutzen"
+
+#: ../data/empathy.schemas.in.h:24
+msgid ""
+"Whether or not the Salut account has been created on the first empathy run."
+msgstr ""
+"Stellt fest, ob ein Salut-Konto beim ersten Start von Empathy erzeugt wurde."
+
+#: ../data/empathy.schemas.in.h:25
+msgid ""
+"Whether or not to check words typed against the languages you want to check "
+"with."
+msgstr ""
+"Legt fest, ob für eingegebene Wörter die Rechtschreibung geprüft werden soll."
+
+#: ../data/empathy.schemas.in.h:26
+msgid ""
+"Whether or not to convert smileys into graphical images in conversations."
+msgstr ""
+"Legt fest, ob bei Unterhaltungen Smilies in grafische Bilder umgewandelt "
+"werden sollen."
+
+#: ../data/empathy.schemas.in.h:27
+msgid "Whether or not to play a sound when messages arrive."
+msgstr ""
+"Legt fest, ob bei eingehenden Nachrichten ein Klang abgespielt werden soll."
+
+#: ../data/empathy.schemas.in.h:28
+msgid "Whether or not to play sounds when away."
+msgstr "Bei Abwesenheit Klänge abspielen."
+
+#: ../data/empathy.schemas.in.h:29
+msgid "Whether or not to play sounds when busy."
+msgstr "Bei Beschäftigung Klänge abspielen."
+
+#: ../data/empathy.schemas.in.h:30
+msgid "Whether or not to show a popup when a contact becomes available."
+msgstr ""
+"Legt fest, ob ein Popup angezeigt werden soll, wenn ein Kontakt verfügbar "
+"wird."
+
+#: ../data/empathy.schemas.in.h:31
+msgid ""
+"Whether or not to show avatars for contacts in the contact list and chat "
+"windows."
+msgstr ""
+"Legt fest, ob Benutzerbilder für Kontakte in der Kontaktliste und den "
+"Chat-Fenstern angezeigt werden sollen."
+
+#: ../data/empathy.schemas.in.h:32
+msgid "Whether or not to show contacts that are offline in the contact list."
+msgstr "Abgemeldete Kontakte in der Kontaktliste anzeigen."
+
+#: ../data/empathy.schemas.in.h:33
+msgid ""
+"Whether or not to show the message dialog about closing the main window with "
+"the 'x' button in the title bar."
+msgstr ""
+"Legt fest, ob der Dialog über das Schließen des Hauptfensters durch den »x«-"
+"Knopf in der Titelleiste angezeigt werden soll."
+
+#: ../data/empathy.schemas.in.h:34
+msgid "Whether to show the contact list in compact mode or not."
+msgstr "Legt fest, ob die Kontaktliste im Kompaktmodus angezeigt werden soll."
+
+#: ../data/empathy.schemas.in.h:35
+msgid "Whether to use the theme for chat rooms or not."
+msgstr "Legt fest, ob das Thema für Chaträume genutzt werden soll."
+
+#: ../data/empathy.schemas.in.h:36
+msgid ""
+"Which criterium to use when sorting the contact list. Default is to use sort "
+"by the contact's name with the value \"name\". A value of \"state\" will "
+"sort the contact list by state."
+msgstr ""
+"Legt fest, welches Kriterium für das Sortieren der Kontaktliste genutzt "
+"werden soll. Standardmäßig wird bei »name« nach den Namen der Kontakte "
+"sortiert, bei »state« wird die Kontaktliste nach dem Status der Kontakte "
+"sortiert."
+
+#: ../libempathy/empathy-presence.c:185 ../libempathy/empathy-presence.c:285
+msgid "Offline"
+msgstr "Abgemeldet"
+
+#: ../libempathy/empathy-presence.c:275
+msgid "Available"
+msgstr "Verfügbar"
+
+#: ../libempathy/empathy-presence.c:277
+msgid "Busy"
+msgstr "Beschäftigt"
+
+#: ../libempathy/empathy-presence.c:280
+msgid "Away"
+msgstr "Abwesend"
+
+#: ../libempathy/empathy-presence.c:282
+msgid "Hidden"
+msgstr "Versteckt"
+
+#: ../libempathy/empathy-tp-contact-list.c:729 ../src/empathy.c:151
+msgid "People nearby"
+msgstr "Personen in der Nähe"
+
+#: ../libempathy-gtk/empathy-about-dialog.c:63
+msgid ""
+"Empathy is free software; you can redistribute it and/or modify it under the "
+"terms of the GNU General Public License as published by the Free Software "
+"Foundation; either version 2 of the License, or (at your option) any later "
+"version."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-about-dialog.c:67
+msgid ""
+"Empathy is distributed in the hope that it will be useful, but WITHOUT ANY "
+"WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS "
+"FOR A PARTICULAR PURPOSE. See the GNU General Public License for more "
+"details."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-about-dialog.c:71
+msgid ""
+"You should have received a copy of the GNU General Public License along with "
+"Empathy; if not, write to the Free Software Foundation, Inc., 51 Franklin "
+"Street, Fifth Floor, Boston, MA 02110-130159 USA"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-about-dialog.c:99
+msgid "An Instant Messaging client for GNOME"
+msgstr "Ein Instant-Messaging-Programm für GNOME"
+
+#: ../libempathy-gtk/empathy-about-dialog.c:105
+msgid "translator-credits"
+msgstr ""
+"Hendrik Richter\n"
+"Frank Arnold\n"
+"Andre Klapper"
+
+#: ../libempathy-gtk/empathy-account-chooser.c:337
+msgid "All"
+msgstr "Alle"
+
+#: ../libempathy-gtk/empathy-account-widget-generic.c:146
+#: ../libempathy-gtk/empathy-account-widget-generic.c:208
+#, c-format
+msgid "%s:"
+msgstr "%s:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:1
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:1
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:1
+msgid "<b>Advanced</b>"
+msgstr "<b>Fortgeschritten</b>"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:2
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:2
+msgid "Forget password and clear the entry."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:3
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:3
+msgid "Login I_D:"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:4
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:4
+msgid "Pass_word:"
+msgstr "Pass_wort:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:5
+msgid "Priority:"
+msgstr "P_riorität:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:6
+msgid "Reso_urce:"
+msgstr "_Ressource:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:7
+msgid "Use encryption (SS_L)"
+msgstr "Verschlüsselung verwenden (_SSL)"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:8
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:5
+msgid "_Port:"
+msgstr "P_ort:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:9
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:6
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:10
+msgid "_Server:"
+msgstr "_Server:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:10
+msgid "jabber account settings"
+msgstr "Jabber-Kontoeinstellungen"
+
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:7
+msgid "msn account settings"
+msgstr "MSN-Kontoeinstellungen"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:2
+msgid "_E-mail:"
+msgstr "_E-Mail:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:3
+msgid "_First Name: "
+msgstr "_Vorname:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:4
+msgid "_Jabber ID:"
+msgstr "_Jabber-Kennung:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:5
+msgid "_Last Name:"
+msgstr "_Nachname:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:6
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:8
+msgid "_Nickname:"
+msgstr "Spit_zname:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:7
+msgid "_Published Name:"
+msgstr "_Veröffentlichter Name:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:8
+msgid "salut account settings"
+msgstr "Salut-Kontoeinstellungen"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:218
+msgid "Disable"
+msgstr "Deaktivieren"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:221
+msgid "Enable"
+msgstr "Aktivieren"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:256
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to start configuring."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:260
+msgid ""
+"To add a new account, you first have to install a backend for each protocol "
+"you want to use."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:267
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:2
+msgid "<b>No Account Selected</b>"
+msgstr "<b>Kein Konto ausgewählt</b>"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:268
+msgid ""
+"\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want "
+"to configure in the list on the left."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:274
+msgid "<b>No Accounts Configured</b>"
+msgstr "<b>Keine Konten konfiguriert</b>"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:401
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:4
+msgid "Accounts"
+msgstr "Konten"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:898
+#, c-format
+msgid ""
+"You are about to remove your %s account!\n"
+"Are you sure you want to proceed?"
+msgstr ""
+"Sie sind dabei, Ihr %s-Konto zu entfernen!\n"
+"Möchten Sie fortfahren?"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:904
+msgid ""
+"Any associated conversations and chat rooms will NOT be removed if you "
+"decide to proceed.\n"
+"\n"
+"Should you decide to add the account back at a later time, they will still "
+"be available."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:1
+msgid "<b>New Account</b>"
+msgstr "<b>Neues Konto</b>"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:3
+msgid "<b>Settings</b>"
+msgstr "<b>Einstellungen</b>"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:5
+msgid "Cr_eate"
+msgstr "Er_stellen"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:6
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to started configuring.\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want "
+"to configure in the list on the left."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:9
+msgid "Type:"
+msgstr "_Typ:"
+
+#: ../libempathy-gtk/empathy-avatar-chooser.c:448
+msgid "Select Your Avatar Image"
+msgstr "Benutzerbild auswählen"
+
+#: ../libempathy-gtk/empathy-avatar-chooser.c:451
+msgid "No Image"
+msgstr "Kein Bild"
+
+#: ../libempathy-gtk/empathy-avatar-chooser.c:511
+msgid "Images"
+msgstr "Bilder"
+
+#: ../libempathy-gtk/empathy-avatar-chooser.c:515
+msgid "All Files"
+msgstr "Alle Dateien"
+
+#: ../libempathy-gtk/empathy-avatar-image.c:298
+msgid "Click to enlarge"
+msgstr "Zum Vergrößern klicken"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:1
+msgid "Call"
+msgstr "Anrufen"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:2
+msgid "Input"
+msgstr "Eingang"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:3
+msgid "Mute"
+msgstr "Stummschalten"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:4
+msgid "Output"
+msgstr "Ausgang"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:5
+msgid "Send Video"
+msgstr "Videobild senden"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:6
+msgid "Volume"
+msgstr "Lautstärke"
+
+#: ../libempathy-gtk/empathy-chat.c:329
+msgid "Disconnected"
+msgstr "Getrennt"
+
+#: ../libempathy-gtk/empathy-chat.c:449
+msgid "offline"
+msgstr "Abgemeldet"
+
+#: ../libempathy-gtk/empathy-chat.c:452
+msgid "invalid contact"
+msgstr "Ungültiger Kontakt"
+
+#: ../libempathy-gtk/empathy-chat.c:455
+msgid "permission denied"
+msgstr "Erlaubnis verweigert"
+
+#: ../libempathy-gtk/empathy-chat.c:458
+msgid "too long message"
+msgstr "Zu lange Nachricht"
+
+#: ../libempathy-gtk/empathy-chat.c:461
+msgid "not implemented"
+msgstr "Nicht implementiert"
+
+#: ../libempathy-gtk/empathy-chat.c:464
+msgid "unknown"
+msgstr "Unbekannt"
+
+#: ../libempathy-gtk/empathy-chat.c:468
+#, c-format
+msgid "Error sending message '%s': %s"
+msgstr "Fehler beim Senden der Nachricht »%s«: %s"
+
+#: ../libempathy-gtk/empathy-chat.c:923
+msgid "Insert Smiley"
+msgstr "Emoticon einfügen"
+
+#: ../libempathy-gtk/empathy-chat.c:970
+msgid "_Check Word Spelling..."
+msgstr "_Rechtschreibung prüfen …"
+
+#: ../libempathy-gtk/empathy-chat.c:1395
+msgid "Connected"
+msgstr "Verbunden"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:1
+msgid "C_lear"
+msgstr "_Leeren"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:2
+msgid "Ca_ll"
+msgstr "Anr_ufen"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:3
+msgid "Change _Topic..."
+msgstr "Thema _ändern …"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:4
+msgid "Chat"
+msgstr "Chat"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:5
+msgid "Contact Infor_mation"
+msgstr "Kontakt_informationen"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:6
+msgid "Cu_t"
+msgstr "_Ausschneiden"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:7
+msgid "In_vite..."
+msgstr "Einla_den …"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:8
+msgid "Insert _Smiley"
+msgstr "Emoticon einf_ügen"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:9
+msgid "Invitation _message:"
+msgstr "Einladungs_nachricht:"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:10
+msgid "Invite"
+msgstr "Einladen"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:11
+#: ../libempathy-gtk/empathy-main-window.glade.h:4
+msgid "Join _New..."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-chat.glade.h:12
+msgid "Move Tab _Left"
+msgstr "Reiter nach _links verschieben"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:13
+msgid "Move Tab _Right"
+msgstr "Reiter nach _rechts verschieben"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:14
+msgid "Select who would you like to invite:"
+msgstr "Auswählen, wen Sie einladen möchten:"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:15
+msgid "You have been invited to join a chat conference."
+msgstr "Sie wurden eingeladen, einer Chat-Konferenz beizutreten."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:16
+#: ../libempathy-gtk/empathy-main-window.glade.h:9
+msgid "_Add Contact..."
+msgstr "Kontakt _hinzufügen …"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:17
+msgid "_Add To Favorites"
+msgstr "Zu Favoriten hinzu_fügen"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:18
+msgid "_Close"
+msgstr "S_chließen"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:19
+msgid "_Conversation"
+msgstr "_Unterhaltung"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:20
+msgid "_Copy"
+msgstr "_Kopieren"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:21
+msgid "_Detach Tab"
+msgstr "Reiter ab_trennen"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:22
+#: ../libempathy-gtk/empathy-contact-list-view.c:218
+#: ../libempathy-gtk/empathy-main-window.glade.h:12
+msgid "_Edit"
+msgstr "_Bearbeiten"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:23
+msgid "_Next Tab"
+msgstr "_Nächster Reiter"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:24
+msgid "_Paste"
+msgstr "E_infügen"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:25
+msgid "_Previous Tab"
+msgstr "_Vorheriger Reiter"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:26
+#: ../libempathy-gtk/empathy-main-window.glade.h:18
+msgid "_Room"
+msgstr "_Raum"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:27
+msgid "_Show Contacts"
+msgstr "Kontakte an_zeigen"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:28
+msgid "_Tabs"
+msgstr "_Reiter"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:29
+#: ../libempathy-gtk/empathy-contact-list-view.c:234
+#: ../libempathy-gtk/empathy-main-window.glade.h:19
+msgid "_View Previous Conversations"
+msgstr "_Vorherige Unterhaltungen anschauen"
+
+#: ../libempathy-gtk/empathy-chat-view.c:468
+msgid "_Copy Link Address"
+msgstr "Link-Adresse _kopieren"
+
+#: ../libempathy-gtk/empathy-chat-view.c:476
+msgid "_Open Link"
+msgstr "Link _öffnen"
+
+#: ../libempathy-gtk/empathy-chat-view.c:754
+msgid "%A %d %B %Y"
+msgstr "%A, %d. %B %Y"
+
+#: ../libempathy-gtk/empathy-chat-window.c:695
+#, c-format
+msgid "Conversations (%d)"
+msgstr "Unterhaltungen (%d)"
+
+#: ../libempathy-gtk/empathy-chat-window.c:1281
+msgid "Typing a message."
+msgstr "Schreibt eine Nachricht."
+
+#: ../libempathy-gtk/empathy-chatrooms-window.c:258
+msgid "Name"
+msgstr "Name"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.c:276
+msgid "Room"
+msgstr "Raum"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.c:285
+msgid "Auto Connect"
+msgstr "Auto-Verbinden"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:1
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:5
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:1
+msgid "Account:"
+msgstr "Konto:"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:2
+msgid "Edit Favorite Room"
+msgstr "Raumfavoriten bearbeiten"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:3
+msgid "Join room on start_up"
+msgstr "Raum beim Start betreten"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:4
+msgid "Join this chat room when Empathy starts and you are connected"
+msgstr "Beim Start von Empathy und einer Verbindung diesen Chatraum betreten"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:5
+msgid "Manage Favorite Rooms"
+msgstr "Raumfavoriten verwalten"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:6
+msgid "N_ame:"
+msgstr "_Name:"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:7
+msgid "S_erver:"
+msgstr "S_erver:"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:9
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:9
+msgid "_Room:"
+msgstr "_Raum:"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:176
+msgid "Personal Information"
+msgstr "Persönliche Informationen"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:179
+msgid "Edit Contact Information"
+msgstr "Kontaktinformationen bearbeiten"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:182
+msgid "Contact Information"
+msgstr "Kontaktinformationen"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:277
+msgid "I would like to add you to my contact list."
+msgstr "Ich möchte Sie/Dich gerne zu meiner Kontaktliste hinzufügen."
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:301
+msgid "New Contact"
+msgstr "Neuer Kontakt"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.glade.h:1
+msgid "Decide _Later"
+msgstr "_Später entscheiden"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.glade.h:2
+#, fuzzy
+msgid "Subscription Request"
+msgstr "Anfrage nach Benachrichtigung"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:198
+msgid "_Contact"
+msgstr "_Kontakt"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:202
+msgid "_Group"
+msgstr "_Gruppe"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:206
+#: ../libempathy-gtk/empathy-main-window.glade.h:10
+msgid "_Chat"
+msgstr "_Chat"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:206
+msgid "Chat with contact"
+msgstr "Chat mit Kontakt"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:210
+msgid "Infor_mation"
+msgstr "Infor_mationen"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:210
+msgid "View contact information"
+msgstr "Kontaktinformationen anschauen"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:214
+msgid "Re_name"
+msgstr "Umbe_nennen"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:214
+msgid "Rename"
+msgstr "Umbenennen"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:218
+msgid "Edit the groups and name for this contact"
+msgstr "Gruppen und Namen für diesen Kontakt bearbeiten"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:222
+msgid "_Remove"
+msgstr "_Entfernen"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:222
+msgid "Remove contact"
+msgstr "Kontakt entfernen"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:226
+msgid "_Invite to Chat Room"
+msgstr "In Chatraum einla_den"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:226
+msgid "Invite to a currently open chat room"
+msgstr "In einen momentan geöffneten Chatraum einladen"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:230
+msgid "_Send File..."
+msgstr "_Datei senden …"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:230
+msgid "Send a file"
+msgstr "Eine Datei senden"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:234
+msgid "View previous conversations with this contact"
+msgstr "Vorherige Unterhaltungen mit diesem Kontakt anschauen"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:239
+msgid "_Call"
+msgstr "An_rufen"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:239
+msgid "Start a voice or video conversation with this contact"
+msgstr "Eine Sprach- oder Videobildunterhaltung mit diesem Kontakt beginnen"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:1423
+msgid "Sorry, I don't want you in my contact list anymore."
+msgstr "Sorry, ich möchte Sie/Dich nicht mehr in meiner Kontaktliste."
+
+#: ../libempathy-gtk/empathy-contact-widget.c:662
+msgid "Select"
+msgstr "Wählen"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:672
+#: ../libempathy-gtk/empathy-main-window.c:608
+msgid "Group"
+msgstr "Gruppe"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:1
+msgid "<b>Client Information</b>"
+msgstr "<b>Client-Informationen</b>"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:2
+msgid "<b>Contact Details</b>"
+msgstr "<b>Kontakt-Details</b>"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:3
+msgid "<b>Contact</b>"
+msgstr "<b>Kontakt</b>"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:4
+msgid "<b>Groups</b>"
+msgstr "<b>Gruppen</b>"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:6
+msgid "Alias:"
+msgstr "Alias:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:7
+msgid "Birthday:"
+msgstr "Geburtstag:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:8
+msgid "Client:"
+msgstr "Client:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:9
+msgid "Contact information"
+msgstr "Kontaktinformationen"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:10
+msgid "Email:"
+msgstr "E-Mail:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:11
+msgid "Fullname:"
+msgstr "Voller Name:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:12
+msgid "Identifier:"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:13
+msgid "Information requested..."
+msgstr "Informationen angefordert …"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:14
+msgid "OS:"
+msgstr "Betriebssystem:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:15
+msgid ""
+"Select the groups you want this contact to appear in, you can select more "
+"than one group or no groups."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:16
+msgid "Version:"
+msgstr "Version::"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:17
+msgid "Web site:"
+msgstr "Webseite:"
+
+#: ../libempathy-gtk/empathy-group-chat.c:253
+msgid "Enter the new topic you want to set for this room:"
+msgstr "Geben Sie das neue Thema ein, dass Sie für diesen Raum setzen möchten:"
+
+#: ../libempathy-gtk/empathy-group-chat.c:366
+#, c-format
+msgid "%s has joined the room"
+msgstr "%s hat den Raum betreten"
+
+#: ../libempathy-gtk/empathy-group-chat.c:369
+#, c-format
+msgid "%s has left the room"
+msgstr "%s hat den Raum verlassen"
+
+#: ../libempathy-gtk/empathy-group-chat.c:449
+#, c-format
+msgid "Topic: %s"
+msgstr "Thema: %s"
+
+#: ../libempathy-gtk/empathy-group-chat.c:571
+#, c-format
+msgid "Topic set to: %s"
+msgstr "Thema wurde gesetzt auf: %s"
+
+#: ../libempathy-gtk/empathy-group-chat.c:573
+msgid "No topic defined"
+msgstr "Kein Thema gesetzt"
+
+#: ../libempathy-gtk/empathy-group-chat.glade.h:1
+msgid "<b>Topic:</b>"
+msgstr "<b>Thema:</b>"
+
+#: ../libempathy-gtk/empathy-group-chat.glade.h:2
+msgid "Group Chat"
+msgstr "Gruppen-Chat"
+
+#: ../libempathy-gtk/empathy-log-window.c:497
+msgid "Account"
+msgstr "Konto"
+
+#: ../libempathy-gtk/empathy-log-window.c:504
+msgid "Conversation"
+msgstr "Unterhaltung"
+
+#: ../libempathy-gtk/empathy-log-window.c:514
+msgid "Date"
+msgstr "Datum"
+
+#: ../libempathy-gtk/empathy-log-window.glade.h:1
+msgid "Conversations"
+msgstr "Unterhaltungen"
+
+#: ../libempathy-gtk/empathy-log-window.glade.h:2
+msgid "Previous Conversations"
+msgstr "Vorherige Unterhaltungen"
+
+#: ../libempathy-gtk/empathy-log-window.glade.h:3
+msgid "Search"
+msgstr "Suchen"
+
+#: ../libempathy-gtk/empathy-log-window.glade.h:4
+#, fuzzy
+msgid "_For:"
+msgstr "_Für:"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.c:286
+msgid "Chat Rooms"
+msgstr "Chaträume"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:2
+msgid "Browse:"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:3
+msgid ""
+"Enter the room name to join here or click on one or more rooms in the list."
+msgstr ""
+"Geben Sie den Namen des Raumes hier ein oder klicken Sie auf einen oder "
+"mehrere Räume in der Liste."
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:4
+msgid ""
+"Enter the server which hosts the room, or leave it empty if the room is on "
+"the current account's server"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:5
+msgid "Join"
+msgstr "Betreten"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:6
+#, fuzzy
+msgid "Join New"
+msgstr "Betreten"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:7
+msgid "Re_fresh"
+msgstr "Auf_frischen"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:8
+msgid ""
+"This list represents all chat rooms hosted on the server you have entered."
+msgstr ""
+"Diese Liste zeigt alle Chaträume an, die auf dem von Ihnen betretenen Server "
+"vorhanden sind."
+
+#: ../libempathy-gtk/empathy-main-window.c:265
+msgid "Show and edit accounts"
+msgstr "Kontakte anzeigen und bearbeiten"
+
+#: ../libempathy-gtk/empathy-main-window.c:629
+msgid "Contact"
+msgstr "Kontakt"
+
+#: ../libempathy-gtk/empathy-main-window.c:812
+msgid "Edit Account _Details"
+msgstr "Konto_details bearbeiten"
+
+#: ../libempathy-gtk/empathy-main-window.c:895
+msgid "Network error"
+msgstr "Netzwerk-Fehler"
+
+#: ../libempathy-gtk/empathy-main-window.c:898
+msgid "Authentication failed"
+msgstr "Authentifizierung fehlgeschlagen"
+
+#: ../libempathy-gtk/empathy-main-window.c:901
+msgid "Encryption error"
+msgstr "Verschlüsselungsfehler"
+
+#: ../libempathy-gtk/empathy-main-window.c:904
+msgid "Name in use"
+msgstr "Name bereits in Benutzung"
+
+#: ../libempathy-gtk/empathy-main-window.c:907
+msgid "Certificate not provided"
+msgstr "Zertifikat wurde nicht bereitgestellt"
+
+#: ../libempathy-gtk/empathy-main-window.c:910
+msgid "Certificate untrusted"
+msgstr "Zertifikat nicht vertrauenswürdig"
+
+#: ../libempathy-gtk/empathy-main-window.c:913
+msgid "Certificate expired"
+msgstr "Zertifikat ausgelaufen"
+
+#: ../libempathy-gtk/empathy-main-window.c:916
+msgid "Certificate not activated"
+msgstr "Zertifikat nicht aktiviert"
+
+#: ../libempathy-gtk/empathy-main-window.c:919
+msgid "Certificate hostname mismatch"
+msgstr "Zertifikat und Hostname unterschiedlich"
+
+#: ../libempathy-gtk/empathy-main-window.c:922
+msgid "Certificate fingerprint mismatch"
+msgstr "Zertifikat und Fingerprint unterschiedlich"
+
+#: ../libempathy-gtk/empathy-main-window.c:925
+msgid "Certificate self signed"
+msgstr "Zertifikat selbst signiert"
+
+#: ../libempathy-gtk/empathy-main-window.c:928
+msgid "Certificate error"
+msgstr "Zertifikat-Fehler"
+
+#: ../libempathy-gtk/empathy-main-window.c:931
+msgid "Unknown error"
+msgstr "Unbekannter Fehler"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:1
+msgid "Contact List"
+msgstr "Kontaktliste"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:2
+msgid "Context"
+msgstr "Kontext"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:3
+#, fuzzy
+msgid "Join _Favorites"
+msgstr "Zu Favoriten hinzu_fügen"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:5
+msgid "Manage Favorites"
+msgstr "Favoriten verwalten"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:6
+msgid "Show _Offline Contacts"
+msgstr "Zeige _abgemeldete Kontakte"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:7
+#: ../megaphone/data/GNOME_Megaphone_Applet.xml.h:1
+#: ../nothere/data/GNOME_NotHere_Applet.xml.h:1
+msgid "_About"
+msgstr "_Info"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:8
+msgid "_Accounts"
+msgstr "_Konten"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:11
+msgid "_Contents"
+msgstr "I_nhalt"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:13
+msgid "_Help"
+msgstr "_Hilfe"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:14
+#: ../libempathy-gtk/empathy-status-icon.glade.h:2
+msgid "_New Message..."
+msgstr "_Neue Nachricht …"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:15
+msgid "_Personal Information"
+msgstr "_Persönliche Informationen"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:16
+#: ../megaphone/data/GNOME_Megaphone_Applet.xml.h:3
+msgid "_Preferences"
+msgstr "_Einstellungen"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:17
+#: ../libempathy-gtk/empathy-status-icon.glade.h:3
+msgid "_Quit"
+msgstr "_Beenden"
+
+#: ../libempathy-gtk/empathy-preferences.c:243
+msgid "Language"
+msgstr "Sprache"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:1
+msgid "<b>Appearance</b>"
+msgstr "<b>Erscheinungsbild</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:2
+msgid "<b>Audio</b>"
+msgstr "<b>Klang</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:3
+msgid "<b>Behaviour</b>"
+msgstr "<b>Verhalten</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:4
+msgid "<b>Contact List</b>"
+msgstr "<b>Kontaktliste</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:5
+msgid "<b>Enable spell checking for languages:</b>"
+msgstr "<b>Rechtschreibprüfung für Sprachen aktivieren:</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:6
+msgid "<b>Options</b>"
+msgstr "<b>Optionen</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:7
+#, fuzzy
+msgid "<b>Visual</b>"
+msgstr "<b>Beschreibung</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:8
+msgid ""
+"<small>The list of languages reflects only the languages for which you have "
+"a dictionary installed.</small>"
+msgstr ""
+"<small>Die Liste der Sprachen zeigt nur die Sprachen an, für die "
+"Wörterbücher installiert sind.</small>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:9
+msgid "Avatars are user chosen images shown in the contact list"
+msgstr ""
+"Benutzerbilder sind von den Benutzern ausgesuchte Bilder, die in der "
+"Kontaktliste angezeigt werden"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:10
+msgid "Chat Th_eme:"
+msgstr "Chat-_Thema:"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:11
+msgid "Display notifications when contacts come _online"
+msgstr "Benachrichtigungen anzeigen, wenn Kontakte _online gehen"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:12
+msgid "Enable sounds when _away"
+msgstr "Klänge bei _Abwesenheit aktivieren"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:13
+msgid "Enable sounds when _busy"
+msgstr "Klänge bei _Beschäftigung aktivieren"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:14
+msgid "General"
+msgstr "Allgemein"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:15
+msgid "Notifications"
+msgstr "Benachrichtigen"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:16
+msgid "Preferences"
+msgstr "Einstellungen"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:17
+msgid "Show _avatars"
+msgstr "_Benutzerbilder anzeigen"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:18
+msgid "Show _smileys as images"
+msgstr "_Emoticons in grafische Bilder umwandeln"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:19
+msgid "Show co_mpact contact list"
+msgstr "Ko_mpakte Kontaktliste anzeigen"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:20
+msgid "Sort by _name"
+msgstr "Nach _Name sortieren"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:21
+msgid "Sort by s_tate"
+msgstr "Nach _Status sortieren"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:22
+msgid "Spell Checking"
+msgstr "Rechtschreibprüfung"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:23
+msgid "Themes"
+msgstr "Themen"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:24
+msgid "_Open new chats in separate windows"
+msgstr "_Neue Chats in eigenen Fenstern öffnen"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:25
+msgid "_Play sound when messages arrive"
+msgstr "Bei neuen Nachrichten _Klang abspielen"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:26
+msgid "_Use for chat rooms"
+msgstr "Für Chaträume _benutzen"
+
+#. Custom messages
+#: ../libempathy-gtk/empathy-presence-chooser.c:691
+msgid "Custom messages..."
+msgstr "Benutzerdefinierte Nachrichten …"
+
+#: ../libempathy-gtk/empathy-presence-chooser.glade.h:1
+msgid "Custom message"
+msgstr "Benutzerdefinierte Nachricht"
+
+#: ../libempathy-gtk/empathy-presence-chooser.glade.h:2
+msgid "Message:"
+msgstr "Nachricht:"
+
+#: ../libempathy-gtk/empathy-presence-chooser.glade.h:3
+msgid "Save message"
+msgstr "Nachricht speichern"
+
+#: ../libempathy-gtk/empathy-presence-chooser.glade.h:4
+msgid "Status:"
+msgstr "Status:"
+
+#: ../libempathy-gtk/empathy-private-chat.c:188
+#, c-format
+msgid "%s went offline"
+msgstr "%s hat sich abgemeldet"
+
+#: ../libempathy-gtk/empathy-private-chat.c:202
+#, c-format
+msgid "%s has come online"
+msgstr "%s hat sich angemeldet"
+
+#: ../libempathy-gtk/empathy-spell-dialog.c:85
+msgid "Word"
+msgstr "Wort"
+
+#: ../libempathy-gtk/empathy-spell-dialog.c:258
+msgid "Suggestions for the word"
+msgstr "Vorschläge für das Wort"
+
+#: ../libempathy-gtk/empathy-spell-dialog.glade.h:1
+msgid "Spell Checker"
+msgstr "Rechtschreibprüfung"
+
+#: ../libempathy-gtk/empathy-spell-dialog.glade.h:2
+msgid "Suggestions for the word:"
+msgstr "Vorschläge für das Wort:"
+
+#: ../libempathy-gtk/empathy-status-icon.c:310
+#, c-format
+msgid ""
+"New message from %s:\n"
+"%s"
+msgstr ""
+"Neue Nachricht von %s\n"
+"%s"
+
+#: ../libempathy-gtk/empathy-status-icon.c:579
+#, fuzzy, c-format
+msgid "Subscription requested by %s"
+msgstr "Anfrage nach Benachrichtigung"
+
+#: ../libempathy-gtk/empathy-status-icon.c:582
+#, c-format
+msgid ""
+"\n"
+"Message: %s"
+msgstr ""
+"\n"
+"Nachricht: %s"
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:1
+msgid "Status"
+msgstr "Status"
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:4
+msgid "_Show Contact List"
+msgstr "Kontaktliste an_zeigen"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:87
+msgid "Classic"
+msgstr "Klassisch"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:88
+msgid "Simple"
+msgstr "Einfach"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:89
+msgid "Clean"
+msgstr "Sauber"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:90
+msgid "Blue"
+msgstr "Blau"
+
+#: ../megaphone/data/GNOME_Megaphone_Applet.schemas.in.h:1
+msgid ""
+"The contact to display in the applet. Empty means no contact is displayed."
+msgstr ""
+
+#: ../megaphone/data/GNOME_Megaphone_Applet.schemas.in.h:2
+msgid "The contact's avatar token. Empty means contact has no avatar."
+msgstr ""
+
+#: ../megaphone/data/GNOME_Megaphone_Applet.server.in.in.h:1
+msgid "Megaphone"
+msgstr "Megafon"
+
+#: ../megaphone/data/GNOME_Megaphone_Applet.server.in.in.h:2
+#: ../megaphone/src/megaphone-applet.c:419
+msgid "Talk!"
+msgstr "Sprich!"
+
+#: ../megaphone/data/GNOME_Megaphone_Applet.xml.h:2
+msgid "_Information"
+msgstr "_Information"
+
+#: ../nothere/data/GNOME_NotHere_Applet.server.in.in.h:1
+msgid "Presence"
+msgstr "Anwesenheit"
+
+#: ../nothere/data/GNOME_NotHere_Applet.server.in.in.h:2
+#: ../nothere/src/nothere-applet.c:89
+msgid "Set your own presence"
+msgstr "Setzen Sie Ihre Anwesenheit"
+
+#: ../src/empathy.c:210
+msgid "Don't connect on startup"
+msgstr "Nicht automatisch beim Start verbinden"
+
+#: ../src/empathy.c:222
+msgid "- Empathy Instant Messenger"
+msgstr "- Empathy Instant-Messenger"
diff --git a/gnome-2-22/po/dz.po b/gnome-2-22/po/dz.po
new file mode 100644
index 000000000..2e7690d9b
--- /dev/null
+++ b/gnome-2-22/po/dz.po
@@ -0,0 +1,1419 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gossip.HEAD.pot\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-05-15 19:33+0100\n"
+"PO-Revision-Date: 2007-06-14 16:43+0530\n"
+"Last-Translator: Dawa pemo <daws_403@hotmail.com>\n"
+"Language-Team: Dzongkha <pgeyleg@dit.gov.bt>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n!=1);\n"
+"X-Poedit-Language: Dzongkha\n"
+"X-Poedit-Country: BHUTAN\n"
+"X-Poedit-SourceCharset: utf-8\n"
+
+#: ../data/empathy.schemas.in.h:1
+msgid "Always open a separate chat window for new chats."
+msgstr "ཁ་སླབ་གསརཔ་གི་དོན་ལུ་ ཁ་སླབ་སྒོ་སྒྲིག་སོ་སོ་ཅིག་ཨ་རྟག་རང་ཁ་ཕྱེ།"
+
+#: ../data/empathy.schemas.in.h:2
+msgid "Chat window theme"
+msgstr "ཁ་སླབ་སྒོ་སྒྲིག་བརྗོད་དོན་"
+
+#: ../data/empathy.schemas.in.h:3
+msgid "Comma separated list of spell checker languages to use (e.g. en, fr, nl)."
+msgstr "ལག་ལེན་འཐབ་ནིའི་དོན་ལས་ སྡེབ་དཔྱོདཔ་སྐད་ཡིག་ཚུ་གི་ ལྷད་རྟགས་ཀྱིས་སོ་སོ་འཕྱལ་འཕྱལ་བའི་ཐོ་ཡིག་ (དཔེར་ན་ ཨི་ཨེན་ ཨེཕ་ཨར་ ཨེན་ཨེལ་)"
+
+#: ../data/empathy.schemas.in.h:4
+msgid "Compact contact list"
+msgstr "སྲབ་ཆུང་འབྲེལ་བ་འཐབ་ནིའི་ཐོ་ཡིག་"
+
+#: ../data/empathy.schemas.in.h:5
+msgid "Contact list sort criterium"
+msgstr "འབྲེལ་སའི་ཐོ་ཡིག་གིས་ ཀརའི་ཊི་རི་ཡམ་ དབྱེ་སེལ་འབད་འོང་"
+
+#: ../data/empathy.schemas.in.h:6
+msgid "Default directory to select an avatar image from"
+msgstr "ལས་ ཨེ་ཝ་ཊར་གཟུགས་བརྙན་ཅིག་སེལ་འཐུ་འབད་ནིའི་དོན་ལས་ སྔོན་སྒྲིག་སྣོད་ཐོ་"
+
+#: ../data/empathy.schemas.in.h:7
+msgid "Enable popup when contact is available"
+msgstr "འབྲེལ་བ་འཐབ་ས་འདི་འཐོབ་ཚུགསཔ་ཡོད་པའི་སྐབས་ པོཔ་ཨཔ་ལྕོགས་ཅན་བཟོ་"
+
+#: ../data/empathy.schemas.in.h:8
+msgid "Enable sound when away"
+msgstr "ཕྱི་ཁར་ཨིན་པའི་སྐབས་ སྒྲ་སྐད་ལྕོགས་ཅན་བཟོ་"
+
+#: ../data/empathy.schemas.in.h:9
+msgid "Enable sound when busy"
+msgstr "ཁོམ་མེད་ཨིན་པའི་སྐབས་ སྒྲ་སྐད་ལྕོགས་ཅན་བཟོ་"
+
+#: ../data/empathy.schemas.in.h:10
+msgid "Enable spell checker"
+msgstr "སྡེབ་དཔྱོདཔ་ལྕོགས་ཅན་བཟོ་"
+
+#: ../data/empathy.schemas.in.h:11
+msgid "Hide main window"
+msgstr "སྒོ་སྒྲིག་གཙོ་བོ་སྦ་བཞག་"
+
+#: ../data/empathy.schemas.in.h:12
+msgid "Hide the main window."
+msgstr "སྒོ་སྒྲིག་གཙོ་བོ་འདི་སྦ་བཞག་"
+
+#: ../data/empathy.schemas.in.h:13
+msgid "Open new chats in separate windows"
+msgstr "ཁ་སླབ་གསརཔ་ཚུ་ སྒོ་སྒྲིག་སོ་སོ་ཚུ་ནང་ཁ་ཕྱེ་"
+
+#: ../data/empathy.schemas.in.h:14
+msgid "Show avatars"
+msgstr "ཨེ་ཝ་ཊར་ཚུ་སྟོན་"
+
+#: ../data/empathy.schemas.in.h:15
+msgid "Show hint about closing the main window"
+msgstr "སྒོ་སྒྲིག་གཙོ་བོ་འདི་ཁ་བསྡམ་ནིའི་སྐོར་ལས་ བརྡ་མཚོན་ནི་སྟོན་"
+
+#: ../data/empathy.schemas.in.h:16
+msgid "Show offline contacts"
+msgstr "གློག་ལམ་མེད་པའི་འབྲེལ་བ་འཐབ་ཚུ་ས་སྟོན་"
+
+#: ../data/empathy.schemas.in.h:17
+msgid "Spell checking languages"
+msgstr "སྡེབ་དཔྱད་འབད་ནིའི་སྐད་ཡིག་ཚུ་"
+
+#: ../data/empathy.schemas.in.h:18
+msgid "The last directory that an avatar image was chosen from."
+msgstr "ལས་གདམ་ཁ་རྐྱབས་ཡོད་མི་ ཨེ་ཝ་ཊར་གཟུགས་བརྙན་ཅིག་གི་ མཇུག་གི་སྣོད་ཐོ།"
+
+#: ../data/empathy.schemas.in.h:19
+msgid "The theme that is used to display the conversation in chat windows."
+msgstr "ཁ་སླབ་སྒོ་སྒྲིག་ཚུ་ནང་ གྲོས་གླེང་འདི་བཀྲམ་སྟོན་འབད་ནིའི་དོན་ལས་ ལག་ལེན་འཐབ་ཡོད་མི་བརྗོད་དོན་འདི།"
+
+#: ../data/empathy.schemas.in.h:20
+msgid "Use graphical smileys"
+msgstr "ཚད་རིས་ཅན་གྱི་སི་མའི་ལི་ཚུ་ལག་ལེན་འཐབ་"
+
+#: ../data/empathy.schemas.in.h:21
+msgid "Use notification sounds"
+msgstr "བརྡ་བསྐུལ་སྒྲ་སྐད་ཚུ་ལག་ལེན་འཐབ་"
+
+#: ../data/empathy.schemas.in.h:22
+msgid "Use theme for chat rooms"
+msgstr "ཁ་སླབ་ཁང་མིག་ཚུ་གི་དོན་ལུ་བརྗོད་དོན་ལག་ལེན་འཐབ་"
+
+#: ../data/empathy.schemas.in.h:23
+msgid "Whether or not to check words typed against the languages you want to check with."
+msgstr "ཁྱོད་ཀྱིས་ཞིབ་དཔྱད་འབད་ནི་ཨིན་མི་ སྐད་ཡིག་ཚུ་གི་རྒྱབ་འགལ་དུ་ཡིག་དཔར་རྐྱབས་ཡོད་པའི་མིང་ཚིག་ཚུ་ ཞིབ་དཔྱད་འབད་ནི་ཨིན་ན་མེན་ན།"
+
+#: ../data/empathy.schemas.in.h:24
+msgid "Whether or not to convert smileys into graphical images in conversations."
+msgstr "སི་མའི་ལི་ཚུ་ གྲོས་གླེང་ནང་ ཚད་རིས་ཅན་གྱི་གཟུགས་བརྙན་ནང་ལུ་གཞི་བསྒྱུར་འབད་ནི་ཨིན་ན་མེན་ན།"
+
+#: ../data/empathy.schemas.in.h:25
+msgid "Whether or not to play a sound when messages arrive."
+msgstr "འཕྲིན་དོན་ཚུ་འབྱོར་བའི་སྐབས་ སྒྲ་སྐད་གཏང་ནི་ཨིན་ན་མེན་ན།"
+
+#: ../data/empathy.schemas.in.h:26
+msgid "Whether or not to play sounds when away."
+msgstr "ཕྱི་ཁར་ཨིན་པའི་སྐབས་ སྒྲ་སྐད་ཚུ་གཏང་ནི་ཨིན་ན་མེན་ན།"
+
+#: ../data/empathy.schemas.in.h:27
+msgid "Whether or not to play sounds when busy."
+msgstr "ཁོམ་མེད་པའི་སྐབས་ སྒྲ་སྐད་གཏང་ནི་ཨིན་ན་མེན་ན།"
+
+#: ../data/empathy.schemas.in.h:28
+msgid "Whether or not to show a popup when a contact becomes available."
+msgstr "འབྲེལ་བ་འཐབ་ས་ཅིག་འཐོབ་ཚུགསཔ་འགྱོཝ་ད་ པོཔ་ཨཔ་ཅིག་སྟོན་ནི་ཨིན་ན་མེན་ན།"
+
+#: ../data/empathy.schemas.in.h:29
+msgid "Whether or not to show avatars for contacts in the contact list and chat windows."
+msgstr "འབྲེལ་བ་འཐབ་སའི་ཐོ་ཡིག་དང་ཁ་སླབ་སྒོ་སྒྲིག་ཚུ་ནང་གི་ འབྲེལ་བ་འཐབ་ས་ཚུ་གི་དོན་ལུ་ ཨེ་ཝ་ཊར་ཚུ་སྟོན་ནི་ཨིན་ན་མེན་ན།"
+
+#: ../data/empathy.schemas.in.h:30
+msgid "Whether or not to show contacts that are offline in the contact list."
+msgstr "འབྲེལ་བ་འཐབ་སའི་ཐོ་ཡིག་ནང་ལུ་ གློག་ལམ་མེད་པའི་འབྲེལ་བ་འཐབ་ས་ཚུ་ སྟོན་ནི་ཨིན་ན་མེན་ན།"
+
+#: ../data/empathy.schemas.in.h:31
+msgid "Whether or not to show the message dialog about closing the main window with the 'x' button in the title bar."
+msgstr "མགོ་མིང་ཕྲ་རིང་ནང་ལུ་ 'x' ཨེབ་རྟ་དང་གཅིག་ཁར་ སྒོ་སྒྲིག་གཙོ་བོ་འདི་གི་ཁ་བསྡམ་ཐངས་ཀྱི་སྐོར་ལས་ འཕྲིན་དོན་ཌའི་ལོག་འདི་ སྟོན་ནི་ཨིན་ན་མེན་ན།"
+
+#: ../data/empathy.schemas.in.h:32
+msgid "Whether to show the contact list in compact mode or not."
+msgstr "སྲབ་ཆུང་ཐབས་ལམ་ནང་འབྲེལ་བ་འཐབ་སའི་ཐོ་ཡིག་འདི་སྟོན་ནི་ཨིན་ན་མེན་ན།"
+
+#: ../data/empathy.schemas.in.h:33
+msgid "Whether to use the theme for chat rooms or not."
+msgstr "ཁ་སླབ་ཁང་མིག་ཚུ་གི་དོན་ལུ་ བརྗོད་དོན་འདི་ལག་ལེན་འཐབ་ནི་ཨིན་ན་མེན།"
+
+#: ../data/empathy.schemas.in.h:34
+msgid "Which criterium to use when sorting the contact list. Default is to use sort by the contact's name with the value \"name\". A value of \"state\" will sort the contact list by state."
+msgstr "འབྲེལ་སའི་ཐོ་བཀོད་ དབྱེ་སེལ་འབད་བའི་སྐབས་ ཀརའི་ཊི་རི་ཡམ་ ག་དེ་ལག་ལེན་འཐབ་ནི? སྔོན་སྒྲིག་འདི་ value \"name\" དང་བཅས་ འབྲེལ་སའི་མིང་དང་བཅས་དབྱེ་སེལ་འབད་ནིའི་དོན་ལུ་ཨིན། \"state\" གི་བེ་ལུ་དེ་གིས་ འབྲེལ་སའི་ཐོ་ཡིག་ དེ་མངའ་སྡེའི་ཐོག་ལས་དབྱེ་སེལ་འབད་འོང་།"
+
+#: ../libempathy/gossip-contact.c:654
+#: ../libempathy/gossip-presence.c:184
+#: ../libempathy/gossip-presence.c:283
+msgid "Offline"
+msgstr "གློག་ལམ་མེད་པ་"
+
+#: ../libempathy/gossip-presence.c:274
+msgid "Available"
+msgstr "འཐོབ་ཚུགསཔ་"
+
+#: ../libempathy/gossip-presence.c:276
+msgid "Busy"
+msgstr "ཁོམ་མེདཔ་"
+
+#: ../libempathy/gossip-presence.c:279
+msgid "Away"
+msgstr "ཕྱི་ཁར་"
+
+#: ../libempathy-gtk/empathy-main-window.c:254
+msgid "Show and edit accounts"
+msgstr "རྩིས་ཐོ་ཚུ་སྟོན་ཞིནམ་ལས་ཟུན་དག་འབད་"
+
+#: ../libempathy-gtk/empathy-main-window.c:456
+msgid "Group"
+msgstr "སྡེ་ཚན་"
+
+#: ../libempathy-gtk/empathy-main-window.c:477
+msgid "Contact"
+msgstr "འབྲེལ་ས་"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:1
+msgid "Contact List - Empathy"
+msgstr "འབྲེལ་སའི་ཐོ་ཡིག་-ཨིམ་པེ་ཐི་"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:2
+msgid "Context"
+msgstr "སྐབས་དོན་"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:3
+msgid "Join _Favorites"
+msgstr "དགའ་མི་ཚུ་མཐུད་(_F)"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:4
+#: ../libempathy-gtk/gossip-chat.glade.h:10
+msgid "Join _New..."
+msgstr "གསརཔ་མཐུད་(_N)"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:5
+msgid "Manage Favorites..."
+msgstr "དགའ་མི་ཚུ་འཛིན་སྐྱོང་འཐབ་"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:6
+msgid "Show _Offline Contacts"
+msgstr "གློག་ལམ་མེད་པའི་འབྲེལ་ས་ཚུ་སྟོན་(_O)"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:7
+msgid "_About"
+msgstr "སྐོར་ལས་(_A)"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:8
+msgid "_Accounts"
+msgstr "རྩིས་ཐོ་ཚུ་(_A)"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:9
+#: ../libempathy-gtk/gossip-chat.glade.h:15
+msgid "_Add Contact..."
+msgstr "འབྲེལ་ས་ཁ་སྐོང་རྐྱབས་(_A)"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:10
+#: ../libempathy-gtk/gossip-contact-list.c:298
+msgid "_Chat"
+msgstr "ཁ་སླབ་(_C)"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:11
+msgid "_Contents"
+msgstr "ནང་དོན་ཚུ་(_C)"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:12
+#: ../libempathy-gtk/gossip-chat.glade.h:21
+#: ../libempathy-gtk/gossip-contact-list.c:310
+msgid "_Edit"
+msgstr "ཞུན་དག་(_E)"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:13
+msgid "_Help"
+msgstr "གྲོགས་རམ་(_H)"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:14
+#: ../libempathy-gtk/empathy-status-icon.glade.h:2
+msgid "_New Message..."
+msgstr "འཕྲིན་དོན་གསརཔ་(_N)"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:15
+msgid "_Personal Information"
+msgstr "རང་དོན་བརྡ་དོན་(_P)"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:16
+msgid "_Preferences"
+msgstr "དགའ་གདམ་ཚུ་(_P)"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:17
+#: ../libempathy-gtk/empathy-status-icon.glade.h:3
+msgid "_Quit"
+msgstr "སྤང་(_Q)"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:18
+#: ../libempathy-gtk/gossip-chat.glade.h:25
+msgid "_Room"
+msgstr "ཁང་མིག་(_R)"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:19
+#: ../libempathy-gtk/gossip-chat.glade.h:28
+#: ../libempathy-gtk/gossip-contact-list.c:326
+msgid "_View Previous Conversations"
+msgstr "ཧེ་མའི་གྲོས་གླེང་ཚུ་སྟོན་(_V)"
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:1
+msgid "Status"
+msgstr "གནས་ཚད་"
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:4
+msgid "_Show Contact List"
+msgstr "འབྲེལ་སའི་ཐོ་ཡིག་སྟོན་(_S)"
+
+#: ../libempathy-gtk/gossip-about-dialog.c:63
+msgid "Empathy is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version."
+msgstr "ཨིམ་པེ་ཐི་དེ་ ་རང་དབང་མཉེན་ཆས་ཅིག་ཨིན་ ཁྱོད་ཀྱིས་འདི་ལོག་བགོ་བཀྲམ་འབད་ཚུགས་ དེ་ལས་/ཡང་ན་ འདི་ རང་དབང་མཉེན་ཆས་གཞི་ཚོགས་གིས་ དཔེ་བསྐྲུན་འབད་དོ་བཟུམ་སྦེ་ ཇི་ཨེན་ཡུ་ ཡོངས་ཁྱབ་མི་མང་ཆོག་ཐམ་འདི་གི་ ཐ་སྙད་འོག་ལུ་ལེགས་བཅོས་འབད་ཚུགས་ ཡང་ཅིན་ཆོག་ཐམ་འདི་གི་ཐོན་རིམ་ ༢ ཡང་ན་ (ཁྱོད་རའི་གདམ་ཁ་ཐོག་) ཤུལ་ལས་ཀྱི་ཐོན་རིམ་ག་འབད་རུང་།"
+
+#: ../libempathy-gtk/gossip-about-dialog.c:67
+msgid "Empathy is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details."
+msgstr "ཨིམ་པེ་ཐི་དེ་ ཕན་ཐོག་ཅན་ཅིག་འོང་མནོ་བའི་ རེ་བ་བསྐྱེད་དེ་ བགོ་བཀྲམ་འབད་འབདཝ་ཨིན་ དེ་འབདཝ་ད་ ཉེན་ལེན་ག་ནི་ཡང་མེད་པར་ ཡང་ན་ཚོང་འབྲེལ་ཡང་ན་དམིགས་བསལ་དགོས་དོན་ཅིག་གི་དོན་ལུ་ཚུད་སྒྲིག་གི་ བསྟར་སྤྱོད་འབད་འབད་བའི་ཉེན་ལེན་ག་ནི་ཡང་མེད་པར། རྒྱས་བཤད་ཧེང་བཀལ་གྱི་དོན་ལུ་ ཇི་ཨེན་ཡུ་ཡོངས་ཁྱབ་མི་མང་ཆོག་ཐམ་བལྟ།"
+
+#: ../libempathy-gtk/gossip-about-dialog.c:71
+msgid "You should have received a copy of the GNU General Public License along with Empathy; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-130159 USA"
+msgstr "ཁྱོད་ཀྱིས་ ཨིམ་པེ་ཐི་དང་གཅིག་ཁར་ ཇི་ཨེན་ཡུ་ཡོངས་ཁྱབ་མི་མང་ཆོག་ཐམ་འདི་གི་ འདྲ་བཤུས་ཅིག་འཐོབ་འཐོབ་འོང་ མ་འཐོབ་པ་ཅིན་ Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-130159 USA ལུ་ཡི་གུ་གཏང་"
+
+#: ../libempathy-gtk/gossip-about-dialog.c:99
+msgid "An Instant Messaging client for GNOME"
+msgstr "ཇི་ནོམ་གི་དོན་ལུ་ འཕྲལ་མྱུར་འཕྲིན་གཏོང་ཞབས་ཏོག་སྤྱོད་མི་"
+
+#: ../libempathy-gtk/gossip-about-dialog.c:105
+msgid "translator-credits"
+msgstr "ཨའི་ཌི་ཨར་སི་གི་མ་དངུལ་རྒྱབ་སྐྱོར་ཐོག་ལས་་བརྡ་དོན་འཕྲུལ་རིག་ལས་ཁུངས་ནང་ སྐད་བསྒྱུར་འབད་ཡི། ཁ་གསལ་གྱི་དོན་ལུ་ འབྲེལ་བ་འཐབ་ས་: <pema_geyleg@druknet.bt>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:224
+msgid "Disable"
+msgstr "ལྕོགས་མིན་བཟོ་"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:227
+msgid "Enable"
+msgstr "ལྕོགས་ཅན་བཟོ་"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:261
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:3
+msgid "<b>No Account Selected</b>"
+msgstr "<b>རྩིས་ཐོ་གཅིག་ཡང་སེལ་འཐུ་མ་འབད་བས་</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:263
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will be created for you to start configuring.\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want to configure in the list on the left."
+msgstr ""
+"རྩིས་ཐོ་གསརཔ་ཅིག་ཁ་སྐོང་རྐྱབས་ནིའི་དོན་ལས་ ཁྱོད་ཀྱིས་ 'ཁ་སྐོང་' ཨེབ་གཏང་འབད་བཏུབ་ དེ་ལས་ ཁྱོད་ཀྱི་དོན་ལུ་ ཐོ་བཀོད་གསརཔ་ཅིག་ རིམ་སྲིག་འགོ་བཙུགས་ནིའི་དོན་ལས་ གསར་བསྐྲུན་འབད་འོང་།\n"
+"\n"
+"ཁྱོད་ཀྱིས་རྩིས་ཐོ་ཅིག་ཁ་སྐོང་མི་རྐྱབས་ནི་ཨིན་པ་ཅིན་ གཡོན་ཁ་ཐུག་ལུ་ ཐོ་ཡིག་ནང་ ཁྱོད་ཀྱིས་རིམ་སྒྲིག་འབད་དགོ་མནོ་མི་ རྩིས་ཐོ་འདི་གུ་ཨེབ་གཏང་འབད།"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:272
+msgid "<b>No Accounts Configured</b>"
+msgstr "<b>རྩིས་ཐོ་གཅིག་ཡང་རིམ་སྒྲིག་མ་འབད་བས་</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:274
+msgid "To add a new account, you can click on the 'Add' button and a new entry will be created for you to start configuring."
+msgstr "རྩིས་ཐོ་གསརཔ་ཅིག་ཁ་རྐྱབས་ནིའི་དཅན་ལས་ ཁྱོད་ཀྱིས་ 'ཁ་སྐོང་' ཨེབ་རྟ་འདི་གུ་ཨེབ་གཏང་འབད་བཏུབ་ དེ་ལས་ ཐོ་བཀོད་གསརཔ་ཅིག་ཁྱོད་ཀྱི་དོན་ལུ་ རིམ་སྒྲིག་འགོ་བཙུགས་ནིའི་དོན་ལས་ གསར་བསྐྲུན་འབད་འོང་།"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:362
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:6
+msgid "Accounts"
+msgstr "རྩིས་ཐོ་"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:857
+#, c-format
+msgid ""
+"You are about to remove your %s account!\n"
+"Are you sure you want to proceed?"
+msgstr ""
+"ཁྱོད་ཀྱིས་ཁྱོད་རའི་ %s རྩིས་ཐོ་རྩ་བསྐྲད་གཏང་ནི་འབད་དེས་!\n"
+"ཁྱོད་ཀྱིས་འཕྲོ་མཐུད་དེ་འབད་ནི་ངེས་ཐིག་ཨིན་ན?"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:863
+msgid ""
+"Any associated conversations and chat rooms will NOT be removed if you decide to proceed.\n"
+"\n"
+"Should you decide to add the account back at a later time, they will still be available."
+msgstr ""
+"འབྲེལ་ཡོད་གྲོས་གླེང་དང་ ཁ་སླབ་ཁང་མིག་ཚུ་ ཁྱོད་ཀྱིས་འཕྲོ་མཐུད་ནི་གི་གྲོས་ཐག་བཅད་པ་ཅིན་ རྩ་བསྐད་མི་གཏང་།\n"
+"\n"
+"ཁྱོད་ཀྱིས་ ཤུལ་ལས་ཀྱི་དུས་ཚོད་ཅིག་ལུ་ རྩིས་ཐོ་འདི་ལོག་ཁ་སྐོང་རྐྱབས་ནིའི་གྲོས་ཐག་བཅད་ནི་ཨིན་ན་ འདི་འཐོབ་ཚུགསཔ་འོང་།"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:1
+msgid "<b>Account</b>"
+msgstr "<b>རྩིས་ཐོ་</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:2
+msgid "<b>New Account</b>"
+msgstr "<b>རྩིས་ཐོ་གསརཔ་</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:4
+msgid "<b>Settings</b>"
+msgstr "<b>སྒྲིག་སྟངས་</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:5
+msgid "A unique name for this account to identify it personally to you."
+msgstr "ཁྱོད་ལུ་འདི་མི་ངོམ་ངོས་འཛིན་འབད་ནི་ལུ་རྩིས་ཐོ་འདིའི་དོན་ལུ་མཐུན་མོང་མ་ཡིན་པའི་མིང་ཅིག་"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:7
+msgid "Cr_eate"
+msgstr "གསར་བསྐྲུན་འབད་ (_E)"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:8
+msgid "Imendio "
+msgstr "ཨའི་མིན་ཌིའོ།"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:9
+msgid "Jabber"
+msgstr "ཇེབ་བར།"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:10
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will be created for you to started configuring.\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want to configure in the list on the left."
+msgstr ""
+"རྩིས་ཐོ་གསརཔ་ཁ་སྐོང་རྐྱབས་ནིའི་དོན་ལས་ ཁྱོད་ཀྱིས་ 'ཁ་སྐོང་' ཨེབ་རྟ་འདི་གུ་ཨེབ་གཏང་འབད་བཏུབ་ དེ་ལས་ ཐོ་བཀོད་གསརཔ་ཅིག་ ཁྱོད་ལུ་རིམ་སྒྲིག་འགོ་བཙུགས་ནིའི་དོན་ལུ་ གསར་བསྐྲུན་འབད་འོང་།\n"
+"\n"
+"ཁྱོད་ཀྱིས་རྩིས་ཐོ་ཅིག་ཁ་སྐོང་མི་རྐྱབས་ནི་ཨིན་པ་ཅིན་ གཡོན་ཁ་ཐུག་གི་ཐོ་ཡིག་འདི་ནང་ཁྱོད་ཀྱིས་རིམ་སྒྲིག་འབད་ནི་ཨིན་མི་ རྩིས་ཐོ་འདི་གུ་ཨེབ་གཏང་འབད།"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:13
+msgid "_Name:"
+msgstr "མིང་:(_N)"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:14
+msgid "_Type:"
+msgstr "དབྱེ་བ།(_T)"
+
+#: ../libempathy-gtk/gossip-account-widget-generic.c:144
+#: ../libempathy-gtk/gossip-account-widget-generic.c:186
+#, c-format
+msgid "%s:"
+msgstr "%s:"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:1
+msgid "<small><b><span foreground=\"#555\">Example: user@jabber.org</span></b></small>"
+msgstr "<small><b><span foreground=\"#555\">དཔེར་ན་: user@jabber.org</span></b></small>"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:2
+msgid "Forget password and clear the entry."
+msgstr "ཆོག་ཡིག་བརྗེད་བཞག་ནི་དང་ཐོ་བཀོད་འདི་བསལ།"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:3
+msgid "Login I_D:"
+msgstr "ནང་བསྐྱོད་ཨའི་ཌི་:(_D)"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:4
+msgid "Pass_word:"
+msgstr "ཆོག་ཡིག་:(_w)"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:5
+msgid "Reso_urce:"
+msgstr "ཐོན་ཁུངས་:(_u)"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:6
+msgid "Use encryption (SS_L)"
+msgstr "གསང་བཟོ་ལག་ལེན་འཐབ་ (ཨེསི་ཨེསི་ཨེལ་) (_L)"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:7
+msgid "_Port:"
+msgstr "འདྲེན་ལམ་:(_P)"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:8
+msgid "_Server:"
+msgstr "སར་བར་:(_S)"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:9
+msgid "jabber account settings"
+msgstr "ཇེབ་བར་རྩིས་ཐོ་སྒྲིག་སྟངས་"
+
+#: ../libempathy-gtk/gossip-chat.c:314
+msgid "Disconnected"
+msgstr "མཐུད་ལམ་བཏོག་ཡོདཔ་"
+
+#: ../libempathy-gtk/gossip-chat.c:858
+msgid "Insert Smiley"
+msgstr "སི་མའི་ལི་བཙུགས་"
+
+#: ../libempathy-gtk/gossip-chat.c:906
+msgid "_Check Word Spelling..."
+msgstr "མིང་ཚིག་ཡིག་སྡེབ་ཞིབ་དཔྱད་འབད་(_C)"
+
+#: ../libempathy-gtk/gossip-chat.c:1244
+msgid "Connected"
+msgstr "མཐུད་ཡོདཔ་"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:1
+msgid "C_lear"
+msgstr "བསལ་(_l)"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:2
+msgid "Change _Topic..."
+msgstr "གནད་དོན་བསྒྱུར་བཅོས་འབད་་་(_T)"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:3
+msgid "Chat"
+msgstr "ཁ་སླབ་"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:4
+msgid "Contact Infor_mation"
+msgstr "འབྲེལ་སའི་བརྡ་དོན་(_m)"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:5
+msgid "Cu_t"
+msgstr "བཏོག་(_t)"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:6
+msgid "In_vite..."
+msgstr "མགྲོན་བརྡ་འབད་་་(_v)"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:7
+msgid "Insert _Smiley"
+msgstr "སི་མའི་ལི་བཙུགས་(_S)"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:8
+msgid "Invitation _message:"
+msgstr "མགྲོན་བརྡའི་འཕྲིན་དོན་:(_m)"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:9
+msgid "Invite"
+msgstr "མགྲོན་བརྡ་འབད་"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:11
+msgid "Move Tab _Left"
+msgstr "མཆོང་ལྡེ་གཡོན་ཁ་ཐུག་བཤུད་(_L)"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:12
+msgid "Move Tab _Right"
+msgstr "མཇོང་ལྡེ་གཡས་ཁ་ཐུག་བཤུད་(_R)"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:13
+msgid "Select who would you like to invite:"
+msgstr "ཁྱོད་ཀྱིས་ག་མགྲོན་བརྡ་འབད་ནི་ཨིན་སེལ་འཐུ་འབད་:"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:14
+msgid "You have been invited to join a chat conference."
+msgstr "ཁྱོད་ལུ་ཁ་སླབ་ཞལ་འཛོམས་ཅིག་གི་གྲངསསུ་འཛུལ་ནི་གི་མགྲོན་བརྡ་འབད་ཡོད།"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:16
+msgid "_Add To Favorites"
+msgstr "དགའ་མི་ལུ་ཁ་སྐོང་རྐྱབས་(_A)"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:17
+msgid "_Close"
+msgstr "ཁ་བསྡམ་(_C)"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:18
+msgid "_Conversation"
+msgstr "གྲོས་གླེང་(_C)"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:19
+msgid "_Copy"
+msgstr "འདྲ་བཤུས་(_C)"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:20
+msgid "_Detach Tab"
+msgstr "མཆོང་ལྡེ་ཁ་འཕྱལ་(_D)"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:22
+msgid "_Next Tab"
+msgstr "ཤུལ་མའི་མཆོང་ལྡེ་(_N)"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:23
+msgid "_Paste"
+msgstr "སྦྱར་(_P)"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:24
+msgid "_Previous Tab"
+msgstr "ཧེ་མའི་མཆོང་ལྡེ་(_P)"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:26
+msgid "_Show Contacts"
+msgstr "འབྲེལ་ས་སྟོན་(_S)"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:27
+msgid "_Tabs"
+msgstr "མཆོང་ལྡེ་ཚུ་(_T)"
+
+#: ../libempathy-gtk/gossip-chat-view.c:544
+msgid "_Copy Link Address"
+msgstr "འབྲེལ་ལམ་ཁ་བྱང་འདྲ་བཤུས་རྐྱབས་(_C)"
+
+#: ../libempathy-gtk/gossip-chat-view.c:552
+msgid "_Open Link"
+msgstr "འབྲེལ་ལམ་ཁ་ཕྱེ་(_O)"
+
+#: ../libempathy-gtk/gossip-chat-view.c:889
+msgid "%A %d %B %Y"
+msgstr "%A %d %B %Y"
+
+#: ../libempathy-gtk/gossip-chat-window.c:685
+#: ../libempathy-gtk/gossip-chat-window.c:715
+msgid "New Message"
+msgid_plural "New Messages"
+msgstr[0] "འཕྲིན་དོན་གསརཔ།"
+msgstr[1] "འཕྲིན་དོན་གསརཔ་ཚུ།"
+
+#: ../libempathy-gtk/gossip-chat-window.c:691
+msgid "Chat Room"
+msgstr "ཁ་སླབ་ ཁང་མིག་"
+
+#: ../libempathy-gtk/gossip-chat-window.c:696
+#: ../libempathy-gtk/gossip-chat-window.c:719
+#, c-format
+msgid "Conversation"
+msgid_plural "Conversations (%d)"
+msgstr[0] "གྲོས་གླེང་"
+msgstr[1] "གྲོས་གླེང་ཚུ་(%d)"
+
+#: ../libempathy-gtk/gossip-chat-window.c:1295
+msgid "Typing a message."
+msgstr "འཕྲིན་དོན་ཅིག་ཡིག་དཔར་རྐྱབས་དོ།"
+
+#: ../libempathy-gtk/gossip-contact-list.c:290
+msgid "_Contact"
+msgstr "འབྲེལ་ས་(_C)"
+
+#: ../libempathy-gtk/gossip-contact-list.c:294
+msgid "_Group"
+msgstr "སྡེ་ཚན་(_G)"
+
+#: ../libempathy-gtk/gossip-contact-list.c:298
+msgid "Chat with contact"
+msgstr "འབྲེལ་ས་དང་གཅིག་ཁར་ཁ་སླབ་"
+
+#: ../libempathy-gtk/gossip-contact-list.c:302
+msgid "Infor_mation"
+msgstr "བརྡ་དོན་(_m)"
+
+#: ../libempathy-gtk/gossip-contact-list.c:302
+msgid "View contact information"
+msgstr "འབྲེལ་སའི་བརྡ་དོན་སྟོན་"
+
+#: ../libempathy-gtk/gossip-contact-list.c:306
+msgid "Re_name"
+msgstr "བསྐྱར་མིང་བཏགས་(_n)"
+
+#: ../libempathy-gtk/gossip-contact-list.c:306
+msgid "Rename"
+msgstr "བསྐྱར་མིང་བཏགས་"
+
+#: ../libempathy-gtk/gossip-contact-list.c:310
+msgid "Edit the groups and name for this contact"
+msgstr "འ་ནི་འབྲེལ་ས་འདི་གི་དོན་ལུ་ སྡེ་ཚན་དང་མིང་འདི་ཞུན་དག་འབད་"
+
+#: ../libempathy-gtk/gossip-contact-list.c:314
+msgid "_Remove"
+msgstr "རྩ་བསྐྲད་གཏང་(_R)"
+
+#: ../libempathy-gtk/gossip-contact-list.c:314
+msgid "Remove contact"
+msgstr "འབྲེལ་ས་རྩ་བསྐྲད་གཏང་"
+
+#: ../libempathy-gtk/gossip-contact-list.c:318
+msgid "_Invite to Chat Room"
+msgstr "ཁ་སླབ་ཁང་མིག་ལུ་མགྲོན་བརྡ་འབད་(_I)"
+
+#: ../libempathy-gtk/gossip-contact-list.c:318
+msgid "Invite to a currently open chat room"
+msgstr "ད་ལྟོ་ཁ་ཕྱེ་ཡོད་པའི་ཁ་སླབ་ཁང་མིག་ནང་ མགྲོན་བརྡ་འབད་"
+
+#: ../libempathy-gtk/gossip-contact-list.c:322
+msgid "_Send File..."
+msgstr "ཡིག་སྣོད་གཏང་(_S)"
+
+#: ../libempathy-gtk/gossip-contact-list.c:322
+msgid "Send a file"
+msgstr "ཡིག་སྣོད་ཅིག་གཏང་"
+
+#: ../libempathy-gtk/gossip-contact-list.c:326
+msgid "View previous conversations with this contact"
+msgstr "འ་ནི་འབྲེལ་ས་དང་གཅིག་ ཧེ་མའི་གྲོས་གླེང་ཚུ་སྟོན་"
+
+#: ../libempathy-gtk/gossip-preferences.c:250
+msgid "Language"
+msgstr "སྐད་ཡིག་"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:1
+msgid "<b>Appearance</b>"
+msgstr "<b>འབྱུང་སྣང་</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:2
+msgid "<b>Audio</b>"
+msgstr "<b>རྣར་ཉན་</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:3
+msgid "<b>Behaviour</b>"
+msgstr "<b>སྤྱོད་ལམ་</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:4
+msgid "<b>Contact List</b>"
+msgstr "<b>འབྲེལ་སའི་ ཐོ་ཡིག་</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:5
+msgid "<b>Languages</b>"
+msgstr "<b>སྐད་ཡིག་ཚུ་</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:6
+msgid "<b>Options</b>"
+msgstr "<b>གདམ་ཁ་ཚུ་</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:7
+msgid "<b>Visual</b>"
+msgstr "<b>མཐོང་བའི་</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:8
+msgid "<small>The list of languages reflects only the languages for which you have a dictionary installed.</small>"
+msgstr "<small>སྐད་ཡིག་ཚུ་གི་ཐོ་ཡིག་གིས་ ཁྱོད་ལུ་ཚིག་མཛོད་གཞི་བཙུགས་འབད་ཡོད་མི་གི་དོན་ལུ་ སྐད་ཡིག་ཚུ་རྐྱངམ་ཅིག་ བརྡ་མཚོནམ་ཨིན།</small>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:9
+msgid "Avatars are user chosen images shown in the contact list"
+msgstr "ཨེ་ཝ་ཊར་ཚུ་ ལག་ལེན་པ་གིས་གདམ་ཁ་རྐྱབས་ཡོད་པའི་ གཟུགས་བརྙན་ འབྲེལ་སའི་ཐོ་ཡིག་འདི་ནང་སྟོན་ཡོད་མི་འདི་ཨིན་"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:10
+msgid "Chat Th_eme:"
+msgstr "ཁ་སླབ་བརྗོད་དོན་:(_e)"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:11
+msgid "Display notifications when contacts come _online"
+msgstr "འབྲེལ་ས་འདི་གློག་ལམ་ཐོག་འོང་པའི་སྐབས་ བརྡ་བསྐུལ་བཀྲམ་སྟོན་འབད་ (_o)"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:12
+msgid "Enable sounds when _away"
+msgstr "ཕྱི་ཁར་ཨིན་པའི་སྐབས་སྒྲ་སྐད་ལྕོགས་ཅན་བཟོ་(_a)"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:13
+msgid "Enable sounds when _busy"
+msgstr "ཁོམ་མེད་པའི་སྐབས་སྒྲ་སྐད་ལྕོགས་ཅན་བཟོ་(_b)"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:14
+msgid "General"
+msgstr "ཡོངས་ཁྱབ་"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:15
+msgid "Notifications"
+msgstr "བརྡ་བསྐུལ་ཚུ་"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:16
+msgid "Preferences"
+msgstr "དགའ་གདམ་ཚུ་"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:17
+msgid "Show _avatars"
+msgstr "ཨེ་ཝ་ཊར་ཚུ་སྟོན་(_a)"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:18
+msgid "Show _smileys as images"
+msgstr "སི་མའི་ལི་ཚུ་ གཟུགས་བརྙན་སྦེ་སྟོན་(_s)"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:19
+msgid "Show co_mpact contact list"
+msgstr "སྲབ་ཆུང་འབྲེལ་སའི་ཐོ་ཡིག་སྟོན་(_m)"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:20
+msgid "Sort by _name"
+msgstr "མིང་གིས་ དབྱེ་སེལ་འབད་(_N)"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:21
+msgid "Sort by s_tate"
+msgstr "མངའ་སྡེ་གིས་ དབྱེ་སེལ་འབད་"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:22
+msgid "Spell Checking"
+msgstr "སྡེབ་དཔྱད་འབད་དོ་"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:23
+msgid "Themes"
+msgstr "བརྗོད་དོན་ཚུ་"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:24
+msgid "_Enable spell checking"
+msgstr "སྡེབ་དཔྱད་འབད་ནི་ལྕོགས་ཅན་བཟོ་(_E)"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:25
+msgid "_Open new chats in separate windows"
+msgstr "ཁ་སླབ་གསརཔ་ཚུ་ སྒོ་སྒྲིག་སོ་སོ་ནང་ཁ་ཕྱེ་(_O)"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:26
+msgid "_Play sound when messages arrive"
+msgstr "འཕྲིན་དོན་འབྱོར་བའི་སྐབས་ སྒྲ་སྐད་གཏང་(_P)"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:27
+msgid "_Use for chat rooms"
+msgstr "ཁ་སླབ་ཁང་མིག་ཚུ་གི་དོན་ལུ་ལག་ལེན་(_U)"
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:702
+msgid "Custom message..."
+msgstr "སྲོལ་སྒྲིག་འཕྲིན་དོན་"
+
+#. Clear list
+#: ../libempathy-gtk/gossip-presence-chooser.c:724
+msgid "Clear List..."
+msgstr "ཐོ་ཡིག་བསལ་"
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:803
+msgid "Are you sure you want to clear the list?"
+msgstr "ཁྱོད་ཀྱིས་འ་ནི་ཐོ་ཡིག་འདི་བསལ་ནི་ངེས་གཏན་ཨིན་ན?"
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:807
+msgid "This will remove any custom messages you have added to the list of preset status messages."
+msgstr "འ་ནི་འདི་གིས་ ཁྱོད་ཀྱིས་ སྔར་སྒྲིག་གནས་ཚད་འཕྲིན་དོན་ཚུ་གི་ཐོ་ཡིག་འདི་ལུ་ ཁ་སྐོང་རྐྱབས་ཡོད་མི་ སྲོལ་སྒྲིག་འཕྲིན་ག་ཅི་འབད་རུང་རྩ་བསྐྲད་གཏང་འོང་།"
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:812
+msgid "Clear List"
+msgstr "ཐོ་ཡིག་བསལ་"
+
+#: ../libempathy-gtk/gossip-presence-chooser.glade.h:1
+msgid "Enter status message:"
+msgstr "གནས་ཚད་འཕྲིན་དོན་ཐོ་བཀོདའབད་:"
+
+#: ../libempathy-gtk/gossip-presence-chooser.glade.h:2
+msgid "Status Message Presets"
+msgstr "གནས་ཚད་འཕྲིན་དོན་སྔར་སྒྲིག་འབདཝ་ཨིན་"
+
+#: ../libempathy-gtk/gossip-presence-chooser.glade.h:3
+msgid "_Add to status message list"
+msgstr "གནས་ཚད་འཕྲིན་དོན་ཐོ་ཡིག་ལུ་ཁ་སྐོང་རྐྱབས་(_A)"
+
+#: ../libempathy-gtk/gossip-private-chat.c:198
+#, c-format
+msgid "%s went offline"
+msgstr "%s འདི་གློག་ལམ་མེད་པར་ཡར་སོང་ནུག"
+
+#: ../libempathy-gtk/gossip-private-chat.c:212
+#, c-format
+msgid "%s has come online"
+msgstr "%s འདི་གློག་ལམ་ཐོག་ལུ་འོང་ཡོད་"
+
+#: ../libempathy-gtk/gossip-theme-manager.c:87
+msgid "Classic"
+msgstr "སྔོན་སྲོལ་"
+
+#: ../libempathy-gtk/gossip-theme-manager.c:88
+msgid "Simple"
+msgstr "འཇམ་སམ་"
+
+#: ../libempathy-gtk/gossip-theme-manager.c:89
+msgid "Clean"
+msgstr "གཙང་དག་བཟོ་"
+
+#: ../libempathy-gtk/gossip-theme-manager.c:90
+msgid "Blue"
+msgstr "ཧོནམ་"
+
+#: ../src/empathy-main.c:145
+msgid "Don't connect on startup"
+msgstr "འགོ་བཙུགས་ལུ་མ་མཐུད་"
+
+#: ../src/empathy-main.c:155
+msgid "- Empathy Instant Messenger"
+msgstr "- ཨིམ་པེ་ཐི་ འཕྲལ་མྱུར་ འཕྲིན་སྐྱེལ་པ་"
+
+#, fuzzy
+#~ msgid "Empathy Instant Messenger"
+#~ msgstr "འཕྲལ་མྱུར་འཕྲིན་བསྐྱེལ་པ་"
+#~ msgid "Instant Messenger"
+#~ msgstr "འཕྲལ་མྱུར་འཕྲིན་བསྐྱེལ་པ་"
+#~ msgid "Gossip Instant Messenger"
+#~ msgstr "གོ་སིཔ་འཕྲལ་མྱུར་འཕྲིན་བསྐྱེལ་པ་"
+#~ msgid "Normal"
+#~ msgstr "སྤྱིར་བཏང་"
+#~ msgid "Joining"
+#~ msgstr "མཐུད་དོ་"
+#~ msgid "Active"
+#~ msgstr "ཤུགས་ལྡན་"
+#~ msgid "Inactive"
+#~ msgstr "ཤུགས་མེད་"
+#~ msgid "Unknown"
+#~ msgstr "མ་ཤེསཔ་"
+#~ msgid "Error"
+#~ msgstr "འཛོལ་བ་"
+#~ msgid "Moderator"
+#~ msgid_plural "Moderators"
+#~ msgstr[0] "མཐུན་སྒྲིག་འབད་མི་"
+#~ msgstr[1] "མཐུན་སྒྲིག་འབད་མི་ཚུ་"
+#~ msgid "Participant"
+#~ msgid_plural "Participants"
+#~ msgstr[0] "བཅའ་མར་གཏོགས་མི་"
+#~ msgstr[1] "བཅའ་མར་གཏོགས་མི་ཚུ་"
+#~ msgid "Visitor"
+#~ msgid_plural "Visitors"
+#~ msgstr[0] "ལྟ་སྐོར་པ་"
+#~ msgstr[1] "ལྟ་སྐོར་པ་ཚུ་"
+#~ msgid "No role"
+#~ msgstr "ལས་འགན་མེད་"
+#~ msgid "Owner"
+#~ msgid_plural "Owners"
+#~ msgstr[0] "བདག་པོ་"
+#~ msgstr[1] "བདག་པོ་ཚུ་"
+#~ msgid "Administrator"
+#~ msgid_plural "Administrators"
+#~ msgstr[0] "བདག་སྐྱོང་པ་"
+#~ msgstr[1] "བདག་སྐྱོང་པ་ཚུ་"
+#~ msgid "Member"
+#~ msgid_plural "Members"
+#~ msgstr[0] "འཐུས་མི་"
+#~ msgstr[1] "འཐུས་མི་ཚུ་"
+#~ msgid "Outcast"
+#~ msgid_plural "Outcasts"
+#~ msgstr[0] "ཕྱིར་བཏོན་བཞག་མི་"
+#~ msgstr[1] "ཕྱིར་བཏོན་བཞག་མི་ཚུ་"
+#~ msgid "No affiliation"
+#~ msgstr "འབྲེལ་གཏོགས་མེད་"
+#~ msgid "The nickname you have chosen is already in use."
+#~ msgstr "ཁྱོད་ཀྱིས་གདམ་ཁ་རྐྱབས་མི་ སྐྱོན་མིང་འདི་ཧེ་མ་ལས་རང་ལག་ལེན་འཐབ་སྟེ་ཡོདཔ་ཨིན།"
+#~ msgid "The chat room you tried to join requires a password."
+#~ msgstr "ཁྱོད་ཀྱིས་མཐུད་ནི་འབད་རྩོལ་བསྐྱེད་མི་ཁ་སླབ་ཁང་མིག་འདི་ལུ་ ཆོག་ཡིག་ཅིག་དགོཔ་ཨིན།"
+#~ msgid "The remote conference server did not respond in a sensible time."
+#~ msgstr "ཐག་རིང་གི་ཞལ་འཛོམས་སར་བར་འདི་གིས་ དྲན་ཤེས་ལྡན་པའི་དུས་ཚོད་ལུ་ལན་བཀོད་མ་འབད།"
+#~ msgid "The conference server you tried to join could not be found."
+#~ msgstr "ཁྱོད་ཀྱིས་མཐུད་ནི་གི་འབད་རྩོལ་བསྐྱེད་མི་ཞལ་འཛོམས་སར་བར་འདི་ འཚོལ་མ་འཐོབ།"
+#~ msgid "An unknown error occurred, check your details are correct."
+#~ msgstr "མ་ཤེས་པའི་འཛོལ་བ་ཅིག་འབྱུང་ཡོད་ ཁྱོད་ཀྱི་རྒྱས་བཤད་ཚུ་ངེས་བདེན་ཨིནམ་ཞིབ་དཔྱད་འབད།"
+#~ msgid "Joining the chatroom was canceled."
+#~ msgstr "ཁ་སླབ་ཁང་མིག་མཐུད་ནི་འདི་ཆ་མེད་གཏང་ཡོད།"
+#~ msgid "Unavailable"
+#~ msgstr "འཐོབ་ཚུགསཔ་མེདཔ་"
+#~ msgid "An unknown error occurred."
+#~ msgstr "མ་ཤེས་པའི་འཛོལ་བ་ཅིག་འབྱུང་ཡོདཔ།"
+#~ msgid "Connection refused."
+#~ msgstr "མཐུད་ལམ་ངོས་ལེན་མ་འབད་བས།"
+#~ msgid "Server address could not be resolved."
+#~ msgstr "སར་བར་ཁ་བྱང་འདི་ མོས་མཐུན་འབད་མ་ཚུགས།"
+#~ msgid "Connection timed out."
+#~ msgstr "མཐུད་ལམ་ངལ་མཚམས་ལུས་ཡོདཔ།"
+#~ msgid "Authentication failed."
+#~ msgstr "བདེན་བཤད་འཐུས་ཤོར་འབྱུང་ཡོདཔ།"
+#~ msgid "The username you are trying already exists."
+#~ msgstr "ལག་ལེན་པའི་མིང་ ཁྱོད་ཀྱིས་འབད་རྩོལ་བསྐྱེད་མི་འདི་ ཧེ་མ་ལས་རང་ཡོདཔ་ཨིན།"
+#~ msgid "The username you are trying is not valid."
+#~ msgstr "ལག་ལེན་པའི་མིང་ ཁྱོད་ཀྱིས་འབད་རྩོལ་བསྐྱེད་མི་འདི་ ནུས་ལྡན་མེན།"
+#~ msgid "This feature is unavailable."
+#~ msgstr "ཁྱད་རྣམ་འདི་འཐོབ་མི་ཚུགས།"
+#~ msgid "This feature is unauthorized."
+#~ msgstr "ཁྱད་རྣམ་འདི་དབང་སྤྲོད་མ་འབད་བས།"
+#~ msgid "A specific protocol error occurred that was unexpected."
+#~ msgstr "རེ་བ་མ་བསྐྱེད་པའི་ དམིགས་བསལ་གྱི་གནད་སྤེལ་ལམ་ལུགས་འཛོལ་བ་ཅིག་འབྱུང་ཡོད།"
+#~ msgid "new account"
+#~ msgstr "རྩིས་ཐོ་གསརཔ་"
+#~ msgid "Home"
+#~ msgstr "ཁྱིམ་"
+#~ msgid "Couldn't send message!"
+#~ msgstr "འཕྲིན་དོན་གཏང་མ་ཚུགས་!"
+#~ msgid "Connection could not be opened"
+#~ msgstr "མཐུད་ལམ་འདི་ཁ་ཕྱེ་མ་ཚུགས་"
+#~ msgid "Service has gone and is no longer available"
+#~ msgstr "ཞབས་ཏོག་འདི་ཡར་སོངམ་དང་ད་ཐོབ་མ་ཚུགསཔ་མེདཔ།"
+#~ msgid "Bad or malformed request to this service"
+#~ msgstr "ཞབས་ཏོག་འདི་ལུ་བྱང་ཉེས་ཡང་ན་བཟོ་ཉེས་གྱུར་བའི་ཞུ་བ།"
+#~ msgid "Unauthorized request to this service"
+#~ msgstr "ཞབས་ཏོག་འདི་ལུ་བདེན་དབང་མེད་པའི་ཞུ་བ།"
+#~ msgid "Payment is required for this service"
+#~ msgstr "ཞབས་ཏོག་གི་དོན་ལུ་གླ་དངུལ་འདི་དགོས་མཁོ་ཡོདཔ།"
+#~ msgid "This service is forbidden"
+#~ msgstr "ཞབས་ཏོག་འདི་མ་ཆོགཔ་ཨིན།"
+#~ msgid "This service is unavailable or not found"
+#~ msgstr "ཞབས་ཏོག་འདི་ཐོབ་མ་ཚུགསཔ་ཡང་ན་ཐོབ་མ་ཚུགསཔ།"
+#~ msgid "Unacceptable request sent to this services"
+#~ msgstr "ཞབས་ཏོག་དེ་ཚུ་ལུ་དང་ལེན་འབད་མ་བཏུབ་པའི་ཞུ་བ་བཏང་ཡོདཔ།"
+#~ msgid "Registration is required"
+#~ msgstr "ཐོ་འགོད་འབད་ནི་འདི་དགོས་མཁོ་ཡོདཔ།"
+#~ msgid "There was a conflict of interest trying to use this service"
+#~ msgstr "ཐབས་འཕྲུལ་འདི་ལག་ལེན་འཐབ་ནི་ལུ་སྤྲོད་འབད་རྩོལ་བསྐྱེད་ནི་གི་མི་མཐུན་པ་ཅིག་ཡོདཔ།"
+#~ msgid "There was an internal service error"
+#~ msgstr "ནང་འཁོད་ཞབས་ཏོག་འཛོལ་བ་ཅིག་ཡོདཔ།"
+#~ msgid "This feature is not implemented"
+#~ msgstr "ཁྱད་རྣམ་འདི་བསྟར་སྤྱོད་འབད་མེདཔ།"
+#~ msgid "The remote service timed out"
+#~ msgstr "ཐག་རིང་གི་ཞབས་ཏོག་འདི་ངལ་མཚམས་ཨིནམ།"
+#~ msgid "Using the %s backend"
+#~ msgstr "རྒྱབ་མཐའ་འདི་ %s ལག་ལེན་འཐབ་དེ།"
+#~ msgid "Stop"
+#~ msgstr "བཀག"
+#~ msgid "Disconnect"
+#~ msgstr "མཐུད་ལམ་བཏོག་"
+#~ msgid "Connect"
+#~ msgstr "མཐུད་"
+#~ msgid "Bye bye"
+#~ msgstr "བཱའི་བཱའི།"
+#~ msgid "Successfully registered your new account settings."
+#~ msgstr "ཁྱོད་ཀྱི་རྩིས་ཐོའི་སྒྲིག་སྟངས་ མཐར་འཁྱོལ་སྦེ་ཐོ་བཀོད་འབད་ཡོད།"
+#~ msgid "You should now be able to connect to your new account."
+#~ msgstr "ཁྱོད་ད་ ཁྱོད་རའི་རྩིས་ཐོ་གསརཔ་མཐུད་ཚུགས་དགོ"
+#~ msgid "Failed to register your new account settings."
+#~ msgstr "ཁྱོད་ཀྱི་རྩིས་ཐོ་གསརཔ་གི་སྒྲིག་སྟངས་ཚུ་ཐོ་བཀོད་འབད་ནི་འཐུས་ཤོར་འབྱུང་ཡོད།"
+#~ msgid "Successfully changed your account password."
+#~ msgstr "ཁྱོད་ཀྱི་རྩིས་ཐོའི་ཆོག་ཡིག་བསྒྱུར་བཅོས་འབད་ནི་མཐར་འཁྱོལ་ཡོདཔ།"
+#~ msgid "You should now be able to connect with your new password."
+#~ msgstr "ཁྱོད་ད་ ཁྱོད་རའི་ཆོག་ཡིག་གསརཔ་དང་གཅིག་ཁར་མཐུད་ཚུགསཔ་དགོཔ།"
+#~ msgid "Failed to change your account password."
+#~ msgstr "ཁྱོད་ཀྱི་རྩིས་ཐོའི་ཆོག་ཡིག་བསྒྱུར་བཅོས་འབད་ནི་འཐུས་ཤོར་འབྱུང་ཡོདཔ།"
+#~ msgid ""
+#~ "Please enter a new password for this account:\n"
+#~ "%s"
+#~ msgstr ""
+#~ "རྩིས་ཐོ་འདིའི་དོན་ལུ་ཆོག་ཡིག་གསརཔ་ཅིག་བཙུགས་གནང་།\n"
+#~ "%s"
+#~ msgid "No information is available for this contact."
+#~ msgstr "འ་ནི་འབྲེལ་སའི་དོན་ལུ་ བརྡ་དོན་འཐོབ་ཚུགསཔ་མེད།"
+#~ msgid "Information requested, please wait..."
+#~ msgstr "བརྡ་དོན་དགོས་མཁོ་ཡོདཔ་ཨིན་ བསྒུག་གནང་"
+#~ msgid "I would like to add you to my contact list."
+#~ msgstr "ང་གིས་ཁྱོད་ ངེས་ཀྱི་འབྲེལ་སའི་ཐོ་ཡིག་ནང་ལུ་ཁ་སྐོང་རྐྱབས་ནི་ཨིན།"
+#~ msgid "To summarize:"
+#~ msgstr "བཅུད་བསྡུ་ནིའི་དོན་ལས་:"
+#~ msgid "%d new message"
+#~ msgid_plural "%d new messages"
+#~ msgstr[0] "%d འཕྲིན་དོན་གསརཔ་ཚུ་"
+#~ msgstr[1] "%d འཕྲིན་དོན་གསརཔ་"
+#~ msgid "%d subscription request"
+#~ msgid_plural "%d subscription requests"
+#~ msgstr[0] "%d མཁོ་མངགས་ཞུ་བ་"
+#~ msgstr[1] "%d མཁོ་མངགས་ཞུ་བ་ཚུ་"
+#~ msgid "%d file transfer request"
+#~ msgid_plural "%d file transfer requests"
+#~ msgstr[0] "%d ཡིག་སྣོད་གནས་སོར་ཞུ་བ་"
+#~ msgstr[1] "%d ཡིག་སྣོད་གནས་སོར་ཞུ་བ་ཚུ་"
+#~ msgid "%d server message"
+#~ msgid_plural "%d server messages"
+#~ msgstr[0] "%d སར་བར་འཕྲིན་དོན་"
+#~ msgstr[1] "%d སར་བར་འཕྲིན་དོན་ཚུ་"
+#~ msgid "%d error"
+#~ msgid_plural "%d errors"
+#~ msgstr[0] "%d འཛོལ་བ་"
+#~ msgstr[1] "%d འཛོལ་བ་ཚུ་"
+#~ msgid "If you quit, you will lose all unread information."
+#~ msgstr "ཁྱོད་ཀྱིས་སྤང་པ་ཅིན་ མ་ལྷག་པའི་བརྡ་དོན་ཚུ་ཆ་མཉམ་བརླག་སྟོར་ཞུགས་འོང་།"
+#~ msgid "Gossip is still running, it is just hidden."
+#~ msgstr "གོ་སིཔ་འདི་ད་ལྟོ་ཡང་གཡོག་བཀོལ་དེས་ འདི་སྦ་བཞག་ནུག"
+#~ msgid "Click on the notification area icon to show Gossip."
+#~ msgstr "གོ་སིཔ་སྟོན་ནིའི་དོན་ལས་ བརྡ་བསྐུལ་མངའ་ཁོངས་ངོས་དཔར་འདི་གུ་ཨེབ་གཏང་འབད།"
+#~ msgid "You were about to quit!"
+#~ msgstr "ཁྱོད་སྤང་ནི་འབད་དེས་!"
+#~ msgid ""
+#~ "Since no system or notification tray has been found, this action would "
+#~ "normally quit Gossip.\n"
+#~ "\n"
+#~ "This is just a reminder, from now on, Gossip will quit when performing "
+#~ "this action unless you uncheck the option below."
+#~ msgstr ""
+#~ "རིམ་ལུགས་དང་བརྡ་བསྐུལ་ཤོག་སྣོད་མ་འཐོབ་ལས་རྟེན་ འ་ནི་བྱ་བ་འདི་གིས་ སྤྱིར་བཏང་ལུ་ གོ་སིཔ་སྤང་འོང་"
+#~ "།\n"
+#~ "\n"
+#~ "འ་ནི་འདི་དྲན་བསྐུལ་ཙམ་ཅིག་ཨིན་ ད་ལས་ཕར་ གོ་སིཔ་གིས་ ཁྱོད་ཀྱིས་འོག་གི་གདམ་ཁ་འདི་ཞིབ་དཔྱད་མ་"
+#~ "འབད་ཚུན་ འ་ནི་བྱ་བ་འདི་ལཱ་འགན་གྲུབ་པའི་སྐབས་ སྤང་འོང་།"
+#~ msgid "Edit Account _Details"
+#~ msgstr "རྩིས་ཐོའི་རྒྱས་བཤད་ཚུ་ཞུན་དག་འབད་(_D)"
+#~ msgid "Click to enlarge"
+#~ msgstr "ཆེར་བསྐྱེད་འབད་ནིའི་དོན་ལས་ཨེབ་གཏང་འབད་"
+#~ msgid "Word"
+#~ msgstr "མིང་ཚིག་"
+#~ msgid "Select who would you like to invite to room:"
+#~ msgstr "ཁྱོད་ཀྱིས་ཁང་མིག་ནང་ག་མགྲོན་བརྡ་འབད་ནི་ཨིན་ན་ སེལ་འཐུ་འབད་:"
+#~ msgid "Select which room you would like to invite:"
+#~ msgstr "ཁྱོད་ཀྱིས་ཁང་མིག་ག་འདི་མགྲོན་བརྡ་འབད་ནི་ཨིན་ན་ སེལའ་ཐུ་འབད་:"
+#~ msgid "New message from %s"
+#~ msgstr "%s ལས་འཕྲིན་དོན་གསརཔ་"
+#~ msgid "Your invitation has been declined"
+#~ msgstr "ཁྱོད་ཀྱི་མགྲོན་བརྡ་འདི་ཉམས་ཡོདཔ་"
+#~ msgid "Accept"
+#~ msgstr "དང་ལེན་"
+#~ msgid "Decline"
+#~ msgstr "ཁ་མི་བཟད་ནི་"
+#~ msgid "Name"
+#~ msgstr "མིང་"
+#~ msgid "Room"
+#~ msgstr "ཁང་མིག་"
+#~ msgid "Auto Connect"
+#~ msgstr "རང་བཞིན་མཐུད་ནི་"
+#~ msgid "Information requested..."
+#~ msgstr "བརྡ་དོན་ཞུ་བ་འབད་ཡོད་"
+#~ msgid "Do you want to remove this contact from your roster?"
+#~ msgstr "ཁྱོད་ཀྱིས་འ་ནི་འབྲེལ་ས་འདི་ཁྱོད་རའི་ལས་རིམ་རེའུ་མིག་ལས་ རྩ་བསྐྲད་གཏང་ནི་ཨིན་ན?"
+#~ msgid ""
+#~ "Please enter a new name for the group:\n"
+#~ "%s"
+#~ msgstr ""
+#~ "སྡེ་ཚན་འདི་གི་དོན་ལུ་ མིང་གསརཔ་ཅིག་ཐོ་བཀོད་འབད་གནང་:\n"
+#~ "%s"
+#~ msgid "Select"
+#~ msgstr "སེལ་འཐུ་འབད་"
+#~ msgid "Unsorted"
+#~ msgstr "དབྱེ་སེལ་མ་འབདཝ་"
+#~ msgid ""
+#~ "Set the alias you want to use for:\n"
+#~ "<b>%s</b>\n"
+#~ "\n"
+#~ "You can retrieve contact information from the server."
+#~ msgstr ""
+#~ "དོན་ལུ་ ཁྱོད་ཀྱིས་ལག་ལེན་འཐབ་ནི་ཨིན་མི་ མིང་གཞན་འདི་བལྟ་:\n"
+#~ "<b>%s</b>\n"
+#~ "\n"
+#~ "ཁྱོད་ཀྱིས་འབྲེལ་སའི་བརྡ་དོན་འདི་ སར་བར་ལས་སླར་འདྲེན་འབད་ཚུགས།"
+#~ msgid "New file transfer request from %s"
+#~ msgstr "%s ལས་ ཡིག་སྣོད་གསརཔ་གནས་སོར་ཞུ་བ་"
+#~ msgid "File transfer is not supported by both parties."
+#~ msgstr "ཡིག་སྣོད་གནས་སོར་འདི་ སྡེ་ཚོགས་གཉིས་ཆ་རང་གིས་རྒྱབ་སྐྱོར་མ་འབད་བས།"
+#~ msgid "Your file transfer offer declined."
+#~ msgstr "ཁྱོད་ཀྱི་ཡིག་སྣོད་གནས་སོར་བྱིན་མི་འདི་ཉམས་ཡོདཔ་"
+#~ msgid "The other user decided not to continue."
+#~ msgstr "གཞན་མི་ལག་ལེན་པ་འདི་གིས་ འཕྲོ་མི་མཐུད་ནིའི་གྲོས་ཐག་བཅད་ནུག"
+#~ msgid "Unknown error occurred during file transfer."
+#~ msgstr "ཡིག་སྣོད་གནས་སོར་སྐབས་ མ་ཤེས་པའི་འཛོལ་བ་ཅིག་འབྱུང་ཡོད།"
+#~ msgid "%s would like to send you a file."
+#~ msgstr "%s གིས་ཁྱོད་ལུ་ཡིག་སྣོད་ཅིག་གཏང་ནི་ཨིན་པས།"
+#~ msgid "Someone would like to send you a file."
+#~ msgstr "མི་ཅིག་གིས་ཁྱོད་ལུ་ཡིག་སྣོད་ཅིག་ཏང་ནི་ཨིན་པས།"
+#~ msgid "Select a file"
+#~ msgstr "ཡིག་སྣོད་ཅིག་སེལ་འཐུ་འབད་"
+#~ msgid "Connecting..."
+#~ msgstr "མཐུད་དོ་"
+#~ msgid "Retry connection"
+#~ msgstr "མཐུད་ལམ་སླར་འབད་རྩོལ་བསྐྱེད་"
+#~ msgid "Invited %s to join this chat conference."
+#~ msgstr "%s འདི་ འ་ནི་ཁ་སླབ་ཞལ་འཛོམས་གི་གྲངས་སུ་འཛུལ་ནིའི་དོན་ལས་ མགྲོན་བརྡ་འབད་ཡོདཔ།"
+#~ msgid "%s has set the topic: %s"
+#~ msgstr "%s གིས་ གནད་དོན་གཞི་སྒྲིག་འབད་ཡོད་%s"
+#~ msgid "Enter the new topic you want to set for this room:"
+#~ msgstr ""
+#~ "འ་ནི་ཁང་མིག་འདི་གི་དོན་ལུ་ ཁྱོད་ཀྱིས་གཞི་སྒྲིག་འབད་དགོ་མནོ་མི་གནད་དོན་གསརཔ་འདི་ཐོ་བཀོད་འབད་:"
+#~ msgid "%s has joined the room"
+#~ msgstr "%s གིས་ ཁང་མིག་ནང་འཛུལ་ཡོདཔ་"
+#~ msgid "%s has left the room"
+#~ msgstr "%s གིས་ཁང་མིག་བཞག་ཡོདཔ་"
+#~ msgid "Topic: %s"
+#~ msgstr "གནད་དོན། %s"
+#~ msgid "Account"
+#~ msgstr "རྩིས་ཐོ་"
+#~ msgid "Conversation With"
+#~ msgstr "དང་གཅིག་ཁར་གྲོས་གླེང་"
+#~ msgid "Date"
+#~ msgstr "ཚེས་གྲངས་"
+#~ msgid "Allow multiple instances of the application to run at the same time"
+#~ msgstr "གློག་རིམ་འདི་གི་སྣ་མང་འཕྲལ་མྱུར་འདི་ དུས་ཚོད་གཅིག་པ་ལུ་གཡོག་བཀོལ་བཅུག"
+#~ msgid "List the available accounts"
+#~ msgstr "འཐོབ་ཚུགས་པའི་རྩིས་ཐོའི་ཐོ་ཡིག་"
+#~ msgid "Which account to connect to on startup"
+#~ msgstr "འགོ་བཙུགས་ལུ་ རྩིས་ཐོ་ག་འདི་མཐུད་ནི་ཨིན་ན་"
+#~ msgid "ACCOUNT-NAME"
+#~ msgstr "རྩིས་ཐོ་-མིང་"
+#~ msgid "You can not use --no-connect together with --account"
+#~ msgstr "ཁྱོད་ཀྱིས་ --རྩིས་ཐོ་དང་གཅིག་ཁར་ --མཐུད་ལམ་མེད་ ལག་ལེན་འཐབ་མི་བཏུབ་"
+#~ msgid "No accounts available."
+#~ msgstr "རྩིས་ཐོ་གཅིག་ཡང་འཐོབ་ཚུགསཔ་མེད།"
+#~ msgid "Available accounts:"
+#~ msgstr "འཐོབ་ཚུགས་པའི་རྩིས་ཐོ་:"
+#~ msgid "[default]"
+#~ msgstr "[སྔོན་སྒྲིག་]"
+#~ msgid "There is no account with the name '%s'."
+#~ msgstr "མིང་ '%s' འབད་མི་རྩིས་ཐོ་གཅིག་ཡང་མིན་འདུག"
+#~ msgid "Join"
+#~ msgstr "མཐུད་"
+#~ msgid "Create"
+#~ msgstr "གསར་བསྐྲུན་འབད་"
+#~ msgid "Chat Rooms"
+#~ msgstr "ཁ་སླབ་ཁང་མིག་"
+#~ msgid "Found %d conference rooms"
+#~ msgstr "%d ཞལ་འཛོམས་ཁང་མིག་འཐོབ་ཡོད་"
+#~ msgid "Browsing for conference rooms, please wait..."
+#~ msgstr "ཞལ་འཛོམས་ཁང་མིག་ཚུ་གི་དོན་ལུ་བརྡ་འཚོལ་འབད་དོ་ བསྒུག་གནང་"
+#~ msgid "Browsing cancelled!"
+#~ msgstr "བརྡ་འཚོལ་འབད་ནི་ཆ་མེད་གཏང་ཡོདཔ་!"
+#~ msgid "Default"
+#~ msgstr "སྔོན་སྒྲིག་"
+#~ msgid "Chat!"
+#~ msgstr "ཁ་སླབ་!"
+#~ msgid "%s wants to be added to your contact list."
+#~ msgstr "%s འདི་ ཁྱོད་ཀྱི་འབྲེལ་སའི་ཐོ་ཡིག་ལུ་ཁ་སྐོང་རྐྱབས་དགོ་ནི་ཨིན་པས།"
+#~ msgid "Someone wants to be added to your contact list."
+#~ msgstr "མི་ཅིག་ ཁྱོད་ཀྱི་འབྲེལ་སའི་ཐོ་ཡིག་ལུ་ཁ་སྐོང་རྐྱབས་དགོ་ནི་ཨིན་པས།"
+#~ msgid "Subscription request"
+#~ msgstr "མཁོ་མངགས་ཞུ་བ་"
+#~ msgid "Show"
+#~ msgstr "སྟོན་"
+#~ msgid "Contact Information"
+#~ msgstr "འབྲེལ་སའི་བརྡ་དོན་"
+#~ msgid "Subject: %s"
+#~ msgstr "དོན་ཚན་: %s"
+#~ msgid "Suggestions for the word"
+#~ msgstr "མིང་ཚིག་འདི་གི་དོན་ལུ་བསམ་འཆར་"
+#~ msgid "New subscription request from %s"
+#~ msgstr "%s ལས་མཁོ་མངགས་ཞུ་བ་གསརཔ་"
+#~ msgid "Do you want to add this person to your contact list?"
+#~ msgstr "ཁྱོད་ཀྱིས་འ་ནི་གང་ཟག་འདི་ ཁྱོད་རའི་འབྲེལ་སའི་ཐོ་ཡིག་ལུ་ཁ་སྐོང་རྐྱབས་ནི་ཨིན་ན?"
+#~ msgid "Do you want to add %s to your contact list?"
+#~ msgstr "ཁྱོད་ཀྱིས་ %s འདི་ ཁྱོད་རའི་འབྲེལ་སའི་ཐོ་ཡིག་ལུ་ཁ་སྐོང་རྐྱབས་ནི་ཨིན་ན?"
+#~ msgid "Please enter your %s account password"
+#~ msgstr "ཁྱོད་རའི་ %s རྩིས་ཐོ་ཆོག་ཡིག་ཐོ་བཀོད་འབད་གནང་"
+#~ msgid "Logging in to account '%s'"
+#~ msgstr "རྩིས་ཐོ་ལུ་ནང་ན་ལུ་བསྐྱོད་འབད་དོ། %s "
+#~ msgid "Remember Password?"
+#~ msgstr "ཆོག་ཡིག་སེམས་ཁར་བཞག?"
+#~ msgid "Do not show this again"
+#~ msgstr "འ་ནི་ལོག་མ་སྟོན་"
+#~ msgid "Could not display the help contents."
+#~ msgstr "གྲོགས་རམ་ནང་དོན་འདི་བཀྲམ་སྟོན་འབད་མི་ཚུགས།"
+#~ msgid "Select Your Avatar Image"
+#~ msgstr "ཁྱོད་རའི་ཨེ་ཝ་ཊར་གཟུགས་བརྙན་སེལ་འཐུ་འབད་"
+#~ msgid "No Image"
+#~ msgstr "གཟུག་བརྙན་མེད་"
+#~ msgid "Cancel"
+#~ msgstr "ཆ་མེད་གཏང་ནི།"
+#~ msgid "OK"
+#~ msgstr "བཏུབ།"
+#~ msgid "The server does not seem to be responding."
+#~ msgstr "སར་བར་འདི་ལན་བཀོད་མི་འབད་དོ་བཟུམ་སྦེ་མཐོངམ་མས།"
+#~ msgid "Try again later."
+#~ msgstr "ལོག་ཤུལ་ལས་འབད་རྩོལ་བསྐྱེད།"
+#~ msgid "Change"
+#~ msgstr "བསྒྱུར་བཅོས།"
+#~ msgid "Contact goes offline"
+#~ msgstr "འབྲེལ་ས་འདི་གློག་ལམ་མེདཔ་འགྱོཝ་ཨིན་"
+#~ msgid "Contact goes online"
+#~ msgstr "འབྲེལ་ས་འདི་གློག་ལམ་ཐོག་འགྱོཝ་ཨིན་"
+#~ msgid "Contact ID:"
+#~ msgstr "འབྲེལ་སའི་ཨའི་ཌི་:"
+#~ msgid "Do you want to accept this file?"
+#~ msgstr "ཁྱོད་ཀྱིས་འ་ནི་ཡིག་སྣོད་འདི་དང་ལེན་འབད་ནི་ཨིན་ན?"
+#~ msgid "File Transfer Request"
+#~ msgstr "ཡིག་སྣོད་གནས་སོར་ཞུ་བ་"
+#~ msgid "File name:"
+#~ msgstr "ཡིག་སྣོད་མིང་:"
+#~ msgid "File size:"
+#~ msgstr "ཡིག་སྣོད་ཚད་:"
+#~ msgid "Not supported yet"
+#~ msgstr "ད་ཚུན་རྒྱབ་སྐྱོར་མ་འབད་བས་"
+#~ msgid "This person wishes to send you this file:"
+#~ msgstr "འ་ནི་གང་ཟག་གིས་ ཁྱོད་ལུ་ འ་ནི་ཡིག་སྣོན་གཏང་ནི་གི་རེ་སྨོན་བསྐྱེདཔ་ཨིན་པས་:"
+#~ msgid "Web site:"
+#~ msgstr "ཝེབ་ས་ཁོངས་:"
+#~ msgid "_Accept"
+#~ msgstr "དང་ལེན་(_A)"
+#~ msgid "_Deny"
+#~ msgstr "ཉན་མི་བཏུབ་པས་(_D)"
+#~ msgid "<b>Topic:</b>"
+#~ msgstr "<b>གནད་དོན་:</b>"
+#~ msgid "Account:"
+#~ msgstr "རྩིས་ཐོ་:"
+#~ msgid "Browse:"
+#~ msgstr "བརྡོ་འཚོལ་:"
+#~ msgid "Edit Favorite Room"
+#~ msgstr "དགའ་མི་ཁང་མིག་ཞུན་དག་འབད་"
+#~ msgid ""
+#~ "Enter the room name to join here or click on one or more rooms in the "
+#~ "list."
+#~ msgstr ""
+#~ "ན་ལུ་འཛུལ་ནིའི་དོན་ལས་ ཁང་མིག་མིང་འདི་ཐོ་བཀོད་འབད་ ཡང་ན་ ཐོ་ཡིག་ནང་གི་ཁང་མིག་གཅིག་ཡང་ན་དེ་"
+#~ "ལས་ལྷག་སྟེ་ཨེབ་གཏང་འབད།"
+#~ msgid "Group Chat"
+#~ msgstr "སྡེ་ཚན་ཁ་སླབ་"
+#~ msgid "Join New"
+#~ msgstr "གསརཔ་མཐུད་"
+#~ msgid "Join room on start_up"
+#~ msgstr "འགོ་བཙུགས་ལུ་ཁང་མིག་མཐུད་(_u)"
+#~ msgid "Join this chat room when Gossip starts and you are connected"
+#~ msgstr ""
+#~ "གོ་སིཔ་འདི་འགོ་བཙུགས་ནི་དང་ ཁྱོད་མཐུད་ཡོད་པའི་སྐབས་ འ་ནི་ཁ་སླབ་ཁང་མིག་འདི་གི་གྲངས་སུ་འཛུལ་"
+#~ msgid "Manage Favorite Rooms"
+#~ msgstr "དགའ་མི་ཁང་མིག་ཚུ་འཛིན་སྐྱོང་འཐབ་"
+#~ msgid "N_ame:"
+#~ msgstr "མིང་:(_a)"
+#~ msgid "Re_fresh"
+#~ msgstr "ཡང་སེལ་འབད་(_f)"
+#~ msgid "S_erver:"
+#~ msgstr "སར་བར་:(_e)"
+#~ msgid ""
+#~ "This list represents all chat rooms hosted on the server you have entered."
+#~ msgstr ""
+#~ "འ་ནི་ཐོ་ཡིག་འདི་གིས་ ཁྱོད་ཀྱིས་ཐོ་བཀོད་ཐོ་བཀོད་འབད་ཡོད་མི་ སར་བར་འདི་གུ་ ཧོསིཊི་འབད་ཡོད་མི་ ཁ་"
+#~ "སླབ་ཁང་མིག་ཆ་མཉམ་ ཁྱད་ཚབ་འབདཝ་ཨིན།"
+#~ msgid "_Nickname:"
+#~ msgstr "སྐྱོན་མིང་:(_N)"
+#~ msgid "_Room:"
+#~ msgstr "ཁང་མིག་:(_R)"
+#~ msgid "-"
+#~ msgstr "-"
+#~ msgid "<b>About</b>"
+#~ msgstr "<b>སྐོར་ལས་</b>"
+#~ msgid "<b>Client Information</b>"
+#~ msgstr "<b>ཞབས་ཐོག་སྤྱོད་མིའི་བརྡ་དོན་</b>"
+#~ msgid "<b>Groups</b>"
+#~ msgstr "<b>སྡེ་ཚན་ཚུ་</b>"
+#~ msgid "<b>Name</b>"
+#~ msgstr "<b>མིང་</b>"
+#~ msgid "<b>Personal Details</b>"
+#~ msgstr "<b>རང་དོན་རྒྱས་བཤད་ཚུ་</b>"
+#~ msgid "<b>Subscription</b>"
+#~ msgstr "<b>མཁོ་མངགས་</b>"
+#~ msgid "<span size=\"smaller\">Example: Mikael or user@server.org</span>"
+#~ msgstr ""
+#~ "<འཕར་ཚད་ལྗིད་ཚད་=\"smaller\">དཔེར་བརྗོད་: མའི་ཀེལ་ ཡང་ན་ user@server.org</span>"
+#~ msgid "Accou_nt:"
+#~ msgstr "རྩིས་ཐོ་:(_n)"
+#~ msgid "Add Contact"
+#~ msgstr "འབྲེལ་ས་ཁ་སྐོང་རྐྱབས།"
+#~ msgid "Alia_s:"
+#~ msgstr "མིང་གཞན་:(_s)"
+#~ msgid "Avatar:"
+#~ msgstr "ཨེ་ཝ་ཏར་:"
+#~ msgid "Birthday:"
+#~ msgstr "སྐྱེ་བའི་ཞིནམ་:"
+#~ msgid "C_hange"
+#~ msgstr "བསྒྱུར་བཅོས།(_h)"
+#~ msgid "Ch_at"
+#~ msgstr "ཁ་སླབ་(_a)"
+#~ msgid "Client:"
+#~ msgstr "ཞབས་ཏོག་སྤྱོད་མི་:"
+#~ msgid "Con_tact:"
+#~ msgstr "འབྲེལ་ས་:(_t)"
+#~ msgid "Connect on S_tartup"
+#~ msgstr "འགོ་བཙུགས་ལུ་མཐུད་(_t)"
+#~ msgid "Contacts"
+#~ msgstr "འབྲེལ་ས་ཚུ་"
+#~ msgid "Country:"
+#~ msgstr "རྒྱལ་ཁབ་:"
+#~ msgid "Decide _Later"
+#~ msgstr "ཤུལ་ལས་གྲོས་ཐག་བཅད་(_L)"
+#~ msgid "Edit Contact"
+#~ msgstr "འབྲེལ་ས་ཞུན་དག་འབད་"
+#~ msgid "Edit Groups"
+#~ msgstr "སྡེ་ཚན་ཚུ་ཞུན་དག་འབད་"
+#~ msgid "Email:"
+#~ msgstr "གློག་འཕྲིན་:"
+#~ msgid "ID:"
+#~ msgstr "ཨའི་ཌི་:"
+#~ msgid ""
+#~ "If you chose to decide later you will be asked the next time you log on."
+#~ msgstr ""
+#~ "ཁྱོད་ཀྱིས་ཤུལ་ལས་གྲོས་ཐག་བཅད་ནི་གདམ་ཁ་རྐྱབསཔ་ཅིན་ ཁྱོད་ཤུལ་མ་ནང་བསྐྱོད་འབདཝ་ད་འདྲི་འོང་།"
+#~ msgid "Name:"
+#~ msgstr "མིང་:"
+#~ msgid "OS:"
+#~ msgstr "ཨོ་ཨེསི་:"
+#~ msgid "Personal Details"
+#~ msgstr "རང་དོན་རྒྱས་བཤད་ཚུ་"
+#~ msgid "R_egister"
+#~ msgstr "ཐོ་འགོད་(_e)"
+#~ msgid "Search"
+#~ msgstr "འཚོལ་ཞིབ་"
+#~ msgid ""
+#~ "Select the groups you want this contact to appear in, you can select more "
+#~ "than one group or no groups."
+#~ msgstr ""
+#~ "ཁྱོད་ཀྱིས་འ་ནི་འབྲེལ་ས་ཚུ་འབྱུང་དགོ་མནོ་མི་ སྡེ་ཚན་འདི་ཚུ་སེལ་འཐུ་འབད་ ཁྱོད་ཀྱིས་ སྡེ་ཚན་གཅིག་ལས་"
+#~ "ལྷག་སྟེ་ཡང་ན་ སྡེ་ཚན་མེད་མི་སེལ་འཐུ་འབད་བཏུབ།"
+#~ msgid ""
+#~ "Set the alias you want to use for:\n"
+#~ "<b>foo@bar.baz</b>\n"
+#~ "\n"
+#~ "You can retrieve contact information from the server. "
+#~ msgstr ""
+#~ "དོན་ལུ་ ཁྱོད་ཀྱིས་ལག་ལེན་འཐབ་ནི་ཨིན་མི་ མིང་གཞན་འདིགཞི་སྒྲིག་འབད།\n"
+#~ "<b>foo@bar.baz</b>\n"
+#~ "\n"
+#~ "ཁྱོད་ཀྱིས་འབྲེལ་སའི་བརྡ་དོན་འདི་ སར་བར་ལས་སླར་འདྲེན་འབད་ཚུགས།"
+#~ msgid "Spell Checker"
+#~ msgstr "སྡེབ་དཔྱོདཔ་"
+#~ msgid "Subscription Request"
+#~ msgstr "མཁོ་མངགས་ཞུ་བ་"
+#~ msgid "Suggestions for the word:"
+#~ msgstr "མིང་ཚིག་འདི་གི་དོན་ལུ་བསམ་འཆར་:"
+#~ msgid ""
+#~ "This acts as a filter to the contact list below. You can use segments of "
+#~ "contact's name or ID, for example, \"jabber.org\" will list everyone "
+#~ "using that server"
+#~ msgstr ""
+#~ "འ་ནི་འདི་གིས་ འོག་གི་འབྲེལ་སའི་ཐོ་ཡིག་འདི་གི་དོན་ལུ་ ཚགས་མ་སྦེ་འབདཝ་ཨིན། ཁྱོད་ཀྱྀས་ འབྲེལ་སའི་མིང་"
+#~ "ཡང་ན་ ཨའི་ཌི་གི་ཆ་བགོས་ཚུ་ལག་ལེན་འཐབ་ དཔེར་ན་ \"jabber.org\" གིས་ འ་ནི་སར་བར་ལག་"
+#~ "ལེན་འཐབ་མི་ག་ར་ཐོ་བཀོད་འབད་འོང་"
+#~ msgid "This is the name that will be used on your roster for this contact"
+#~ msgstr ""
+#~ "འ་ནི་འདི་ འབྲེལ་ས་འདི་གི་དོན་ལུ་ ཁྱོད་རའི་ལས་རིམ་རེའུ་མིག་གུ་ ལག་ལེན་འཐབ་ནི་ཨིན་མི་ མིང་འདི་ཨིན་"
+#~ msgid "This name will be used to identify you in chat windows"
+#~ msgstr "འ་ནི་མིང་འདི་ ཁ་སླབ་སྒོ་སྒྲིག་ནང་ལུ་ཁྱོད་ངོས་འཛིན་འབད་ནིའི་དོན་ལས་ ལག་ལེན་འཐབ་འོང་"
+#~ msgid ""
+#~ "This name will be used to identify you when new contacts lookup your "
+#~ "details"
+#~ msgstr ""
+#~ "འ་ནི་མིང་འདི་ འབྲེལ་ས་གསརཔ་ཚུ་གིས་ ཁྱོད་ཀྱི་རྒྱས་བཤད་བལྟ་བའི་སྐབས་ ཁྱོད་ངོས་འཛིན་འབད་ནིའི་དོན་"
+#~ "ལས་ ལག་ལེན་འཐབ་འོང་"
+#~ msgid "Use default name here from the contact's VCard."
+#~ msgstr "འབྲེལ་སའི་ཝི་ཤོག་བྱང་འདི་ལས་ ནཱ་ལུ་སྔོན་སྒྲིག་མིང་ལག་ལེན་འཐབ།"
+#~ msgid "Use system pro_xy"
+#~ msgstr "རིམ་ལུགས་པོརོ་སི་ལག་ལེན་འཐབ་(_x)"
+#~ msgid "Version:"
+#~ msgstr "ཐོན་རིམ་:"
+#~ msgid "View Previous Conversations"
+#~ msgstr "ཧེ་མའི་གྲོས་གླེང་སྟོན་"
+#~ msgid "Which account do you want to use?"
+#~ msgstr "ཁྱོད་ཀྱིས་རྩིས་ཐོ་ག་འདི་ལག་ལེན་འཐབ་ནི་ཨིན་སྨོ?"
+#~ msgid "You are not subscribed to this contact."
+#~ msgstr "ཁྱོད་འ་ནི་འབྲེལ་ས་ལུ་མཁོ་མངགས་མ་འབད་བས།"
+#~ msgid "_Birthday:"
+#~ msgstr "སྐྱེ་བའི་ཉིནམ་:(_B)"
+#~ msgid "_Connect"
+#~ msgstr "མཐུད་(_C)"
+#~ msgid "_Description:"
+#~ msgstr "འགྲེལ་བཤད་:(_D)"
+#~ msgid "_Disconnect"
+#~ msgstr "མཐུད་ལམ་བཏོག་(_D)"
+#~ msgid "_Email:"
+#~ msgstr "གློག་འཕྲིན་:(_E)"
+#~ msgid ""
+#~ "_Enter the name or contact ID of the person you want to chat to below:"
+#~ msgstr ""
+#~ "ཁྱོད་ཀྱིས་འོག་ལུ་ ཁ་སླབ་ནི་ཨིན་མི་གང་ཟག་འདི་གི་ མིང་ཡང་ན་འབྲེལ་སའི་ཨའི་ཌི་འདི་ཐོ་བཀོད་འབད་:(_E)"
+#~ msgid "_For:"
+#~ msgstr "དོན་ལུ་:(_F)"
+#~ msgid "_Full Name:"
+#~ msgstr "མིང་གངམ་(_F)"
+#~ msgid "_Group:"
+#~ msgstr "སྡེ་ཚན་:(_G)"
+#~ msgid "_Nick Name:"
+#~ msgstr "སྐྱོན་མིང་(_N)"
+#~ msgid "_Password:"
+#~ msgstr "ཆོག་ཡིག་:(_P)"
+#~ msgid "_Quit Message:"
+#~ msgstr "འཕྲིན་དོན་སྤང།(_Q)"
+#~ msgid "_Retrieve"
+#~ msgstr "སླར་འདྲེན་(_R)"
+#~ msgid "_Subscribe"
+#~ msgstr "མཁོ་མངགས་འབད་ནི་(_S)"
+#~ msgid "_Web site:"
+#~ msgstr "ཝེབ་ས་ཁོངས་:(_W)"
+#~ msgid "irc account settings"
+#~ msgstr "ཨའི་ཨར་སི་་རྩིས་ཐོ་སྒྲིག་སྟངས་ཚུ།"
+#~ msgid "msn account settings"
+#~ msgstr "ཨེམ་ཨེསི་ཨེན་རྩིས་ཐོ་སྒྲིག་སྟངས་ཚུ།"
+#~ msgid "Gossip"
+#~ msgstr "གོ་སིཔ་"
+#~ msgid "Martyn Russell"
+#~ msgstr "མར་ཊིན་ རཱས་སེལ་"
+#~ msgid ""
+#~ "Set the alias you want to use for:\n"
+#~ "<b>martyn@imendio.com</b>\n"
+#~ "\n"
+#~ "You can retrieve contact information from the server. "
+#~ msgstr ""
+#~ "དོན་ལུ་ཁྱོད་ཀྱིས་ལག་ལེན་འཐབ་ནི་ཨིན་མི་ མིང་གཞན་འདི་གཞི་སྒྲིག་འབད་:\n"
+#~ "<b>martyn@imendio.com</b>\n"
+#~ "\n"
+#~ "ཁྱོད་ཀྱིས་ འབྲེལ་སའི་བརྡ་དོན་འདི་ སར་བར་ལས་སླར་འདྲེན་འབད་ཚུགས།"
+#~ msgid "_Forget"
+#~ msgstr "བརྗེད་ནི་(_F)"
+
diff --git a/gnome-2-22/po/el.po b/gnome-2-22/po/el.po
new file mode 100644
index 000000000..f5861aef6
--- /dev/null
+++ b/gnome-2-22/po/el.po
@@ -0,0 +1,1742 @@
+# translation of el.po to Greek
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+#
+# Dimitris Glezos <dimitris@glezos.com>, 2006.
+# Christos Trochalakis <yatiohi@ideopolis.gr>, 2006.
+msgid ""
+msgstr ""
+"Project-Id-Version: el\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-05-15 23:46+0200\n"
+"PO-Revision-Date: 2006-11-30 20:16+0000\n"
+"Last-Translator: Dimitris Glezos <dimitris@glezos.com>\n"
+"Language-Team: Greek <team@gnome.gr>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: ../data/empathy.desktop.in.h:1
+#, fuzzy
+msgid "Empathy Instant Messenger"
+msgstr "Instant Messenger"
+
+#: ../data/empathy.desktop.in.h:2
+msgid "Instant Messenger"
+msgstr "Instant Messenger"
+
+#: ../data/empathy.schemas.in.h:1
+msgid "Always open a separate chat window for new chats."
+msgstr "Να γίνεται πάντα άνοιγμα νέων συζητήσεων σε ξεχωριστό παράθυρο."
+
+#: ../data/empathy.schemas.in.h:2
+msgid "Chat window theme"
+msgstr "Θέμα εμφάνισης παραθύρου συζήτησης"
+
+#: ../data/empathy.schemas.in.h:3
+msgid ""
+"Comma separated list of spell checker languages to use (e.g. en, fr, nl)."
+msgstr ""
+"Λίστα γλωσσών για ορθογραφικό έλεγχο χωρισμένες με κόμματα (πχ. en, el, fr). "
+
+#: ../data/empathy.schemas.in.h:4
+msgid "Compact contact list"
+msgstr "Συμπυκνωμένη λίστα επαφών"
+
+#: ../data/empathy.schemas.in.h:5
+msgid "Contact list sort criterium"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:6
+msgid "Default directory to select an avatar image from"
+msgstr "Προεπιλεγμένος κατάλογος για επιλογή προσωπικής εικόνας"
+
+#: ../data/empathy.schemas.in.h:7
+msgid "Enable popup when contact is available"
+msgstr "Ενεργοποίηση αναδυόμενου παραθύρου όταν η επαφή είναι διαθέσιμη"
+
+#: ../data/empathy.schemas.in.h:8
+msgid "Enable sound when away"
+msgstr "Ενεργοποίηση ήχων όταν απουσιάζετε"
+
+#: ../data/empathy.schemas.in.h:9
+msgid "Enable sound when busy"
+msgstr "Ενεργοποίηση ήχων όταν είστε απασχολημένος"
+
+#: ../data/empathy.schemas.in.h:10
+msgid "Enable spell checker"
+msgstr "Ενεργοποίηση ορθογράφου"
+
+#: ../data/empathy.schemas.in.h:11
+msgid "Hide main window"
+msgstr "Απόκρυψη κυρίως παραθύρου"
+
+#: ../data/empathy.schemas.in.h:12
+msgid "Hide the main window."
+msgstr "Απόκρυψη του κυρίως παραθύρου."
+
+#: ../data/empathy.schemas.in.h:13
+msgid "Open new chats in separate windows"
+msgstr "Άνοιγμα νέων συζητήσεων σε ξεχωριστά παράθυρα"
+
+#: ../data/empathy.schemas.in.h:14
+msgid "Show avatars"
+msgstr "Εμφάνιση προσωπικών εικόνων"
+
+#: ../data/empathy.schemas.in.h:15
+msgid "Show hint about closing the main window"
+msgstr "Εμφάνιση υπόδειξης για κλείσιμο κυρίως παραθύρου"
+
+#: ../data/empathy.schemas.in.h:16
+msgid "Show offline contacts"
+msgstr "Εμφάνιση επαφών εκτός σύνδεσης"
+
+#: ../data/empathy.schemas.in.h:17
+msgid "Spell checking languages"
+msgstr "Γλώσσες υπό ορθογραφικό έλεγχο"
+
+#: ../data/empathy.schemas.in.h:18
+msgid "The last directory that an avatar image was chosen from."
+msgstr "Τελευταίος κατάλογος από τον οποίο επιλέχθηκε προσωπική εικόνα."
+
+#: ../data/empathy.schemas.in.h:19
+msgid "The theme that is used to display the conversation in chat windows."
+msgstr ""
+"Το θέμα που χρησιμοποιείται για την εμφάνιση της συζήτησης στα παράθυρα."
+
+#: ../data/empathy.schemas.in.h:20
+msgid "Use graphical smileys"
+msgstr "Χρήση γραφικών χαμόγελων"
+
+#: ../data/empathy.schemas.in.h:21
+msgid "Use notification sounds"
+msgstr "Χρήση ήχων ειδοποίησης"
+
+#: ../data/empathy.schemas.in.h:22
+msgid "Use theme for chat rooms"
+msgstr "Χρήση θέματος για τα δωμάτια συζήτησης"
+
+#: ../data/empathy.schemas.in.h:23
+msgid ""
+"Whether or not to check words typed against the languages you want to check "
+"with."
+msgstr ""
+"Κατά πόσο ή όχι να γίνεται έλεγχος σε λέξεις γλωσσών που επιλέξατε για "
+"έλεγχο."
+
+#: ../data/empathy.schemas.in.h:24
+msgid ""
+"Whether or not to convert smileys into graphical images in conversations."
+msgstr ""
+"Κατά πόσο ή όχι να μετατρέπονται τα χαμόγελα σε εικονίδια στις συζητήσεις."
+
+#: ../data/empathy.schemas.in.h:25
+msgid "Whether or not to play a sound when messages arrive."
+msgstr "Κατά πόσο ή όχι να όταν φτάνουν μηνύματα."
+
+#: ../data/empathy.schemas.in.h:26
+msgid "Whether or not to play sounds when away."
+msgstr "Κατά πόσο ή όχι να αναπαράγεται ένας ήχος σε κατάσταση απουσίας."
+
+#: ../data/empathy.schemas.in.h:27
+msgid "Whether or not to play sounds when busy."
+msgstr "Κατά πόσο ή όχι να αναπαράγεται ένας ήχος σε κατάσταση απασχολημένος."
+
+#: ../data/empathy.schemas.in.h:28
+msgid "Whether or not to show a popup when a contact becomes available."
+msgstr ""
+"Κατά πόσο ή όχι να εμφανίζεται αναδυόμενο παράθυρο όταν μία επαφή γίνεται "
+"διαθέσιμη."
+
+#: ../data/empathy.schemas.in.h:29
+msgid ""
+"Whether or not to show avatars for contacts in the contact list and chat "
+"windows."
+msgstr ""
+"Κατά πόσο ή όχι να εμφανίζονται προσωπικές εικόνες των επαφών στην λίστα "
+"επαφών και τα παράθυρα συζήτησης."
+
+#: ../data/empathy.schemas.in.h:30
+msgid "Whether or not to show contacts that are offline in the contact list."
+msgstr ""
+"Κατά πόσο ή όχι να εμφανίζονται επαφές εκτός σύνδεσης στην λίστα επαφών."
+
+#: ../data/empathy.schemas.in.h:31
+msgid ""
+"Whether or not to show the message dialog about closing the main window with "
+"the 'x' button in the title bar."
+msgstr ""
+"Κατά πόσο ή όχι να εμφανίζεται επιβεβαίωση για κλείσιμο του κυρίως παραθύρου "
+"πατώντας το κουμπί 'x' στην γραμμή τίτλου."
+
+#: ../data/empathy.schemas.in.h:32
+msgid "Whether to show the contact list in compact mode or not."
+msgstr "Κατά πόσο η λίστα επαφών να εμφανίζεται σε συμπυκνωμένη μορφή ή όχι."
+
+#: ../data/empathy.schemas.in.h:33
+msgid "Whether to use the theme for chat rooms or not."
+msgstr "Κατά πόσο να χρησιμοποιείται το θέμα για δωμάτια συζήτησης ή όχι."
+
+#: ../data/empathy.schemas.in.h:34
+msgid ""
+"Which criterium to use when sorting the contact list. Default is to use sort "
+"by the contact's name with the value \"name\". A value of \"state\" will "
+"sort the contact list by state."
+msgstr ""
+
+#: ../libempathy/gossip-contact.c:654 ../libempathy/gossip-presence.c:184
+#: ../libempathy/gossip-presence.c:283
+msgid "Offline"
+msgstr "Εκτός σύνδεσης"
+
+#: ../libempathy/gossip-presence.c:274
+msgid "Available"
+msgstr "Διαθέσιμος"
+
+#: ../libempathy/gossip-presence.c:276
+msgid "Busy"
+msgstr "Απασχολημένος"
+
+#: ../libempathy/gossip-presence.c:279
+msgid "Away"
+msgstr "Απών"
+
+#: ../libempathy-gtk/empathy-main-window.c:254
+msgid "Show and edit accounts"
+msgstr "Εμφάνιση και επεξεργασία λογαριασμών"
+
+#: ../libempathy-gtk/empathy-main-window.c:456
+msgid "Group"
+msgstr "Ομάδα"
+
+#: ../libempathy-gtk/empathy-main-window.c:477
+msgid "Contact"
+msgstr "Επαφή"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:1
+#, fuzzy
+msgid "Contact List - Empathy"
+msgstr "Εμφάνιση _λίστας επαφών"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:2
+msgid "Context"
+msgstr "Περιεχόμενο"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:3
+msgid "Join _Favorites"
+msgstr "Σύνδεση στα α_γαπημένα"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:4
+#: ../libempathy-gtk/gossip-chat.glade.h:10
+msgid "Join _New..."
+msgstr "Σύνδεση σε _νέο..."
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:5
+msgid "Manage Favorites..."
+msgstr "Διαχείριση αγαπημένων..."
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:6
+msgid "Show _Offline Contacts"
+msgstr "Εμφάνιση επαφών ε_κτός σύνδεσης"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:7
+msgid "_About"
+msgstr "Πε_ρί"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:8
+msgid "_Accounts"
+msgstr "_Λογαριασμοί"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:9
+#: ../libempathy-gtk/gossip-chat.glade.h:15
+msgid "_Add Contact..."
+msgstr "Πρόσ_θεση επαφής..."
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:10
+#: ../libempathy-gtk/gossip-contact-list.c:298
+msgid "_Chat"
+msgstr "_Συζήτηση"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:11
+msgid "_Contents"
+msgstr "_Περιεχόμενα"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:12
+#: ../libempathy-gtk/gossip-chat.glade.h:21
+#: ../libempathy-gtk/gossip-contact-list.c:310
+msgid "_Edit"
+msgstr "_Επεξεργασία"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:13
+msgid "_Help"
+msgstr "_Βοήθεια"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:14
+#: ../libempathy-gtk/empathy-status-icon.glade.h:2
+msgid "_New Message..."
+msgstr "_Νέο Μήνυμα..."
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:15
+msgid "_Personal Information"
+msgstr "Π_ροσωπικές πληροφορίες"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:16
+msgid "_Preferences"
+msgstr "_Προτιμήσεις"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:17
+#: ../libempathy-gtk/empathy-status-icon.glade.h:3
+msgid "_Quit"
+msgstr "Έ_ξοδος"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:18
+#: ../libempathy-gtk/gossip-chat.glade.h:25
+msgid "_Room"
+msgstr "_Δωμάτιο"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:19
+#: ../libempathy-gtk/gossip-chat.glade.h:28
+#: ../libempathy-gtk/gossip-contact-list.c:326
+msgid "_View Previous Conversations"
+msgstr "Π_ροηγούμενες συζητήσεις"
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:1
+msgid "Status"
+msgstr "Κατάσταση"
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:4
+msgid "_Show Contact List"
+msgstr "Εμφάνιση _λίστας επαφών"
+
+#: ../libempathy-gtk/gossip-about-dialog.c:63
+#, fuzzy
+msgid ""
+"Empathy is free software; you can redistribute it and/or modify it under the "
+"terms of the GNU General Public License as published by the Free Software "
+"Foundation; either version 2 of the License, or (at your option) any later "
+"version."
+msgstr ""
+"Το Gossip είναι ελεύθερο λογισμικό: Μπορείτε να το διανείμετε εκ νέου και/ή "
+"να το τροποποιήσετε κάτω από τους όρους της GNU Γενικής Δημόσιας Άδειας "
+"Χρήσης (GPL) όπως είναι δημοσιευμένη από το Free Software Foundation: είτε "
+"με την έκδοση 2 της Άδειας, είτε (κατά την επιλογή σας) με οποιαδήποτε "
+"νεότερη έκδοση."
+
+#: ../libempathy-gtk/gossip-about-dialog.c:67
+#, fuzzy
+msgid ""
+"Empathy is distributed in the hope that it will be useful, but WITHOUT ANY "
+"WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS "
+"FOR A PARTICULAR PURPOSE. See the GNU General Public License for more "
+"details."
+msgstr ""
+"Το Gossip διανέμεται με την ελπίδα ότι θα είναι χρήσιμο, αλλά χωρίς καμία "
+"εγγύηση: ούτε καν της υπονοούμενης εγγύησης εμπορικότητας και καταλληλότητας "
+"για ένα συγκεκριμένο σκοπό. Ανατρέξτε στη GNU Γενική Δημόσια Άδεια Χρήσης "
+"(GPL) για περισσότερες πληροφορίες."
+
+#: ../libempathy-gtk/gossip-about-dialog.c:71
+#, fuzzy
+msgid ""
+"You should have received a copy of the GNU General Public License along with "
+"Empathy; if not, write to the Free Software Foundation, Inc., 51 Franklin "
+"Street, Fifth Floor, Boston, MA 02110-130159 USA"
+msgstr ""
+"Θα πρέπει να έχετε λάβει ένα αντίγραφο της GNU Γενικής Δημόσιας Άδειας "
+"Χρήσης (GPL) μαζί με το Gossip. Αν όχι γράψτε στο Free Software Foundation, "
+"Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-130159 USA"
+
+#: ../libempathy-gtk/gossip-about-dialog.c:99
+msgid "An Instant Messaging client for GNOME"
+msgstr "Ένας στιγμιαίος αποστολέας μηνυμάτων για το GNOME"
+
+#: ../libempathy-gtk/gossip-about-dialog.c:105
+msgid "translator-credits"
+msgstr ""
+"Χρήστος Τροχαλάκης <yatiohi@ideopolis.gr>\n"
+"Δημήτρης Γλέζος <dimitris@glezos.com>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:224
+#, fuzzy
+msgid "Disable"
+msgstr "Διαθέσιμος"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:227
+msgid "Enable"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:261
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:3
+msgid "<b>No Account Selected</b>"
+msgstr "<b>Δεν επιλέχθηκε λογαριασμός</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:263
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to start configuring.\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want "
+"to configure in the list on the left."
+msgstr ""
+"Για να προσθέσετε ένα νέο λογαριασμό μπορείτε να κάνετε κλικ στο κουμπί "
+"'Προσθήκη' και ένας νέος λογαριασμός θα δημιουργηθεί για να τον ρυθμίσετε.\n"
+"\n"
+"Αν δεν θέλετε να προσθέσετε λογαριασμό, απλά επιλέξτε το λογαριασμό που "
+"θέλετε να ρυθμίσετε από την αριστερή στήλη."
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:272
+msgid "<b>No Accounts Configured</b>"
+msgstr "<b>Κανένας ρυθμισμένος Λογαριασμός</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:274
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to start configuring."
+msgstr ""
+"Για να προσθέσετε έναν νέο λογαριασμό μπορείτε να κάνετε κλικ στο κουμπί "
+"'Προσθήκη' και ένας νέος λογαριασμός θα δημιουργηθεί για να τον ρυθμίσετε."
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:362
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:6
+msgid "Accounts"
+msgstr "Λογαριασμοί"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:857
+#, c-format
+msgid ""
+"You are about to remove your %s account!\n"
+"Are you sure you want to proceed?"
+msgstr ""
+"Ετοιμάζεστε να διαγράψετε το λογαριασμό %s!\n"
+"Είστε σίγουρος πώς θέλετε να συνεχίσετε;"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:863
+msgid ""
+"Any associated conversations and chat rooms will NOT be removed if you "
+"decide to proceed.\n"
+"\n"
+"Should you decide to add the account back at a later time, they will still "
+"be available."
+msgstr ""
+"Όλες οι σχετικές συζητήσεις και τα δωμάτια συζητήσεων ΔΕ θα διαγραφούν αν "
+"αποφασίσετε να συνεχίσετε.\n"
+"\n"
+"Αν αποφασίσετε να προσθέσετε και πάλι τον λογαριασμό αργότερα, θα είναι "
+"ακόμα διαθέσιμα."
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:1
+msgid "<b>Account</b>"
+msgstr "<b>Λογαριασμός</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:2
+#, fuzzy
+msgid "<b>New Account</b>"
+msgstr "<b>Λογαριασμός</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:4
+msgid "<b>Settings</b>"
+msgstr "<b>Ρυθμίσεις</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:5
+msgid "A unique name for this account to identify it personally to you."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:7
+#, fuzzy
+msgid "Cr_eate"
+msgstr "Δημιουργία"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:8
+msgid "Imendio "
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:9
+msgid "Jabber"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:10
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to started configuring.\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want "
+"to configure in the list on the left."
+msgstr ""
+"Για να προσθέσετε ένα νέο λογαριασμό μπορείτε να επιλέξετε 'Προσθήκη' και "
+"ένας νέος λογαριασμός θα δημιουργηθεί για να τον ρυθμίσετε.\n"
+"\n"
+"Αν δεν θέλετε να προσθέσετε λογαριασμό, απλά κάντε κλικ στον λογαριασμό που "
+"θέλετε να ρυθμίσετε από την αριστερή στήλη. "
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:13
+msgid "_Name:"
+msgstr "Ό_νομα:"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:14
+#, fuzzy
+msgid "_Type:"
+msgstr "_Θέμα:"
+
+#: ../libempathy-gtk/gossip-account-widget-generic.c:144
+#: ../libempathy-gtk/gossip-account-widget-generic.c:186
+#, c-format
+msgid "%s:"
+msgstr "%s:"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:1
+msgid ""
+"<small><b><span foreground=\"#555\">Example: user@jabber.org</span></b></"
+"small>"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:2
+msgid "Forget password and clear the entry."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:3
+msgid "Login I_D:"
+msgstr "ΙD ει_σόδου:"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:4
+msgid "Pass_word:"
+msgstr "_Συνθηματικό:"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:5
+msgid "Reso_urce:"
+msgstr "_Πόρος:"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:6
+msgid "Use encryption (SS_L)"
+msgstr "Χρήση κω_δικοποίησης (SSL)"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:7
+msgid "_Port:"
+msgstr "_Θύρα:"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:8
+msgid "_Server:"
+msgstr "_Εξυπηρετητής:"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:9
+msgid "jabber account settings"
+msgstr "Ρυθμίσεις λογαριασμού Jabber"
+
+#: ../libempathy-gtk/gossip-chat.c:314
+msgid "Disconnected"
+msgstr "Αποσυνδέθηκε"
+
+#: ../libempathy-gtk/gossip-chat.c:858
+msgid "Insert Smiley"
+msgstr "Εισαγωγή χαμόγελου"
+
+#: ../libempathy-gtk/gossip-chat.c:906
+msgid "_Check Word Spelling..."
+msgstr "Έ_λεγχος ορθογραφίας..."
+
+#: ../libempathy-gtk/gossip-chat.c:1244
+msgid "Connected"
+msgstr "Συνδεδεμένος"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:1
+msgid "C_lear"
+msgstr "Ε_κκαθάριση"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:2
+msgid "Change _Topic..."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:3
+msgid "Chat"
+msgstr "Συζήτηση"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:4
+msgid "Contact Infor_mation"
+msgstr "_Πληροφορίες επαφής"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:5
+msgid "Cu_t"
+msgstr "Απο_κοπή"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:6
+#, fuzzy
+msgid "In_vite..."
+msgstr "_Πρόσκληση"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:7
+msgid "Insert _Smiley"
+msgstr "_Εισαγωγή χαμόγελου"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:8
+#, fuzzy
+msgid "Invitation _message:"
+msgstr "Μήνυμα πρόσκλησης:"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:9
+msgid "Invite"
+msgstr "Πρόσκληση"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:11
+msgid "Move Tab _Left"
+msgstr "Μετακίνηση καρτέλας _αριστερά"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:12
+msgid "Move Tab _Right"
+msgstr "Μετακίνηση καρτέλας _δεξιά"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:13
+msgid "Select who would you like to invite:"
+msgstr "Επιλέξτε ποιόν θέλετε να καλέσετε:"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:14
+msgid "You have been invited to join a chat conference."
+msgstr "Έχετε λάβει πρόσκληση να συμμετάσχετε σε μια ομαδική συζήτηση."
+
+#: ../libempathy-gtk/gossip-chat.glade.h:16
+msgid "_Add To Favorites"
+msgstr "Προσθήκη στα α_γαπημένα"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:17
+msgid "_Close"
+msgstr "_Κλείσιμο"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:18
+msgid "_Conversation"
+msgstr "_Συζήτηση"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:19
+msgid "_Copy"
+msgstr "Αντι_γραφή"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:20
+msgid "_Detach Tab"
+msgstr "Από_σπαση καρτέλας"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:22
+msgid "_Next Tab"
+msgstr "_Επόμενη καρτέλα"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:23
+msgid "_Paste"
+msgstr "_Επικόλληση"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:24
+msgid "_Previous Tab"
+msgstr "_Προηγούμενη καρτέλα"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:26
+msgid "_Show Contacts"
+msgstr "Εμφάνιση _επαφών"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:27
+msgid "_Tabs"
+msgstr "_Καρτέλες"
+
+#: ../libempathy-gtk/gossip-chat-view.c:544
+msgid "_Copy Link Address"
+msgstr "Αντιγρα_φή διεύθυνσης συνδέσμου"
+
+#: ../libempathy-gtk/gossip-chat-view.c:552
+msgid "_Open Link"
+msgstr "Ά_νοιγμα συνδέσμου"
+
+#: ../libempathy-gtk/gossip-chat-view.c:889
+msgid "%A %d %B %Y"
+msgstr "%A %d %B %Y"
+
+#: ../libempathy-gtk/gossip-chat-window.c:685
+#: ../libempathy-gtk/gossip-chat-window.c:715
+#, fuzzy
+msgid "New Message"
+msgid_plural "New Messages"
+msgstr[0] "Νέο μήνυμα"
+msgstr[1] "Νέο μήνυμα"
+
+#: ../libempathy-gtk/gossip-chat-window.c:691
+#, fuzzy
+msgid "Chat Room"
+msgstr "Δωμάτια συζήτησης"
+
+#: ../libempathy-gtk/gossip-chat-window.c:696
+#: ../libempathy-gtk/gossip-chat-window.c:719
+#, fuzzy, c-format
+msgid "Conversation"
+msgid_plural "Conversations (%d)"
+msgstr[0] "_Συζήτηση"
+msgstr[1] "_Συζήτηση"
+
+#: ../libempathy-gtk/gossip-chat-window.c:1295
+msgid "Typing a message."
+msgstr "Γράφει ένα μήνυμα."
+
+#: ../libempathy-gtk/gossip-contact-list.c:290
+msgid "_Contact"
+msgstr "_Επαφή"
+
+#: ../libempathy-gtk/gossip-contact-list.c:294
+msgid "_Group"
+msgstr "_Ομάδα"
+
+#: ../libempathy-gtk/gossip-contact-list.c:298
+msgid "Chat with contact"
+msgstr "Συζητήστε με την επαφή"
+
+#: ../libempathy-gtk/gossip-contact-list.c:302
+msgid "Infor_mation"
+msgstr "Πληροφο_ρίες"
+
+#: ../libempathy-gtk/gossip-contact-list.c:302
+msgid "View contact information"
+msgstr "Προβολή πληροφοριών επαφής"
+
+#: ../libempathy-gtk/gossip-contact-list.c:306
+msgid "Re_name"
+msgstr "Μετο_νομασία"
+
+#: ../libempathy-gtk/gossip-contact-list.c:306
+msgid "Rename"
+msgstr "Μετονομασία"
+
+#: ../libempathy-gtk/gossip-contact-list.c:310
+msgid "Edit the groups and name for this contact"
+msgstr "Επεξεργασία ομάδων και ονόματος για αυτήν την επαφή"
+
+#: ../libempathy-gtk/gossip-contact-list.c:314
+msgid "_Remove"
+msgstr "_Απομάκρυνση"
+
+#: ../libempathy-gtk/gossip-contact-list.c:314
+msgid "Remove contact"
+msgstr "Αφαίρεση επαφής"
+
+#: ../libempathy-gtk/gossip-contact-list.c:318
+msgid "_Invite to Chat Room"
+msgstr "_Πρόσκληση στο δωμάτιο"
+
+#: ../libempathy-gtk/gossip-contact-list.c:318
+msgid "Invite to a currently open chat room"
+msgstr "Πρόσκληση σε ένα ανοιχτό δωμάτιο"
+
+#: ../libempathy-gtk/gossip-contact-list.c:322
+msgid "_Send File..."
+msgstr "Αποστολή α_ρχείου..."
+
+#: ../libempathy-gtk/gossip-contact-list.c:322
+msgid "Send a file"
+msgstr "Αποστολή αρχείου"
+
+#: ../libempathy-gtk/gossip-contact-list.c:326
+msgid "View previous conversations with this contact"
+msgstr "Προβολή προηγούμενων συζητήσεων με την επαφή"
+
+#: ../libempathy-gtk/gossip-preferences.c:250
+msgid "Language"
+msgstr "Γλώσσα"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:1
+msgid "<b>Appearance</b>"
+msgstr "<b>Εμφάνιση</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:2
+msgid "<b>Audio</b>"
+msgstr "<b>Ήχοι</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:3
+msgid "<b>Behaviour</b>"
+msgstr "<b>Συμπεριφορά</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:4
+#, fuzzy
+msgid "<b>Contact List</b>"
+msgstr "<b>Κατάσταση</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:5
+msgid "<b>Languages</b>"
+msgstr "<b>Γλώσσες</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:6
+msgid "<b>Options</b>"
+msgstr "<b>Επιλογές</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:7
+msgid "<b>Visual</b>"
+msgstr "<b>Εμφάνιση</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:8
+msgid ""
+"<small>The list of languages reflects only the languages for which you have "
+"a dictionary installed.</small>"
+msgstr ""
+"<small>Η λίστα γλωσσών περιέχει μόνο τις γλώσσες για τις οποίες υπάρχει "
+"εγκατεστημένο λεξικό.</small>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:9
+msgid "Avatars are user chosen images shown in the contact list"
+msgstr "Οι προσωπικές εικόνες είναι εικόνες που εμφανίζονται στην λίστα επαφών"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:10
+msgid "Chat Th_eme:"
+msgstr "_Θέμα:"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:11
+msgid "Display notifications when contacts come _online"
+msgstr "_Ειδοποιήσεις όταν οι επαφές συνδέονται"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:12
+msgid "Enable sounds when _away"
+msgstr "Ενεργοποίηση ήχων όταν α_πουσιάζετε"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:13
+msgid "Enable sounds when _busy"
+msgstr "Ενεργοποίηση ήχων όταν είστε απα_σχολημένος"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:14
+msgid "General"
+msgstr "Γενικά"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:15
+msgid "Notifications"
+msgstr "Ειδοποιήσεις"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:16
+msgid "Preferences"
+msgstr "Προτιμήσεις"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:17
+msgid "Show _avatars"
+msgstr "Εμφάνιση προσωπικών _εικόνων"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:18
+msgid "Show _smileys as images"
+msgstr "Εμφάνιση γραφικών _χαμόγελων"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:19
+msgid "Show co_mpact contact list"
+msgstr "Εμφάνιση συμπυκνωμένης λίστας"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:20
+msgid "Sort by _name"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:21
+msgid "Sort by s_tate"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:22
+msgid "Spell Checking"
+msgstr "Έλεγχος ορθογραφίας"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:23
+msgid "Themes"
+msgstr "Θέματα"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:24
+msgid "_Enable spell checking"
+msgstr "Ενεργοποίηση ορ_θογράφου"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:25
+msgid "_Open new chats in separate windows"
+msgstr "Ά_νοιγμα νέων συζητήσεων σε ξεχωριστά παράθυρα"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:26
+msgid "_Play sound when messages arrive"
+msgstr "Ή_χος για νέα μηνύματα"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:27
+msgid "_Use for chat rooms"
+msgstr "_Χρήση για δωμ. συζήτησης"
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:702
+msgid "Custom message..."
+msgstr "Προσαρμοσμένο μήνυμα..."
+
+#. Clear list
+#: ../libempathy-gtk/gossip-presence-chooser.c:724
+msgid "Clear List..."
+msgstr "Καθαρισμός..."
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:803
+msgid "Are you sure you want to clear the list?"
+msgstr "Είστε σίγουροι πως θέλετε να καθαρίσετε την λίστα;"
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:807
+msgid ""
+"This will remove any custom messages you have added to the list of preset "
+"status messages."
+msgstr ""
+"Αυτό θα αφαιρέσει όλα τα μηνύματα που προσθέσατε στην λίστα των "
+"προκαθορισμένων μηνυμάτων κατάστασης."
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:812
+msgid "Clear List"
+msgstr "Καθαρισμός"
+
+#: ../libempathy-gtk/gossip-presence-chooser.glade.h:1
+msgid "Enter status message:"
+msgstr "Εισάγετε μήνυμα κατάστασης:"
+
+#: ../libempathy-gtk/gossip-presence-chooser.glade.h:2
+msgid "Status Message Presets"
+msgstr "Προκαθορισμένα μηνύματα κατάστασης"
+
+#: ../libempathy-gtk/gossip-presence-chooser.glade.h:3
+msgid "_Add to status message list"
+msgstr "Προσθήκη στη _λίστα μηνυμάτων κατάστασης"
+
+#: ../libempathy-gtk/gossip-private-chat.c:198
+#, c-format
+msgid "%s went offline"
+msgstr "Ο χρήστης %s αποσυνδέθηκε"
+
+#: ../libempathy-gtk/gossip-private-chat.c:212
+#, c-format
+msgid "%s has come online"
+msgstr "Ο χρήστης %s συνδέθηκε"
+
+#: ../libempathy-gtk/gossip-theme-manager.c:87
+msgid "Classic"
+msgstr "Κλασσικό"
+
+#: ../libempathy-gtk/gossip-theme-manager.c:88
+msgid "Simple"
+msgstr "Απλό"
+
+#: ../libempathy-gtk/gossip-theme-manager.c:89
+msgid "Clean"
+msgstr "Καθαρισμός"
+
+#: ../libempathy-gtk/gossip-theme-manager.c:90
+msgid "Blue"
+msgstr "Μπλε"
+
+#: ../src/empathy-main.c:145
+msgid "Don't connect on startup"
+msgstr "Χωρίς σύνδεση κατά την εκκίνηση"
+
+#: ../src/empathy-main.c:155
+#, fuzzy
+msgid "- Empathy Instant Messenger"
+msgstr "- Gossip Instant Messenger"
+
+#~ msgid "Gossip Instant Messenger"
+#~ msgstr "Gossip Instant Messenger"
+
+#~ msgid "Normal"
+#~ msgstr "Κανονικό"
+
+#~ msgid "Joining"
+#~ msgstr "Σύνδεση"
+
+#~ msgid "Active"
+#~ msgstr "Ενεργό"
+
+#~ msgid "Inactive"
+#~ msgstr "Ανενεργό"
+
+#~ msgid "Unknown"
+#~ msgstr "Άγνωστο"
+
+#~ msgid "Error"
+#~ msgstr "Σφάλμα"
+
+#~ msgid "Moderator"
+#~ msgid_plural "Moderators"
+#~ msgstr[0] "Επιμελητής"
+#~ msgstr[1] "Επιμελητές"
+
+#~ msgid "Participant"
+#~ msgid_plural "Participants"
+#~ msgstr[0] "Συμμετέχων"
+#~ msgstr[1] "Συμμετέχοντες"
+
+#~ msgid "Visitor"
+#~ msgid_plural "Visitors"
+#~ msgstr[0] "Επισκέπτης"
+#~ msgstr[1] "Επισκέπτες"
+
+#~ msgid "No role"
+#~ msgstr "Χωρίς ρόλο"
+
+#~ msgid "Owner"
+#~ msgid_plural "Owners"
+#~ msgstr[0] "Ιδιοκτήτης"
+#~ msgstr[1] "Ιδιοκτήτες"
+
+#~ msgid "Administrator"
+#~ msgid_plural "Administrators"
+#~ msgstr[0] "Διαχειριστής"
+#~ msgstr[1] "Διαχειριστές"
+
+#~ msgid "Member"
+#~ msgid_plural "Members"
+#~ msgstr[0] "Μέλος"
+#~ msgstr[1] "Μέλη"
+
+#~ msgid "Outcast"
+#~ msgid_plural "Outcasts"
+#~ msgstr[0] "Εξόριστος"
+#~ msgstr[1] "Εξόριστοι"
+
+#~ msgid "No affiliation"
+#~ msgstr "Χωρίς σχέση"
+
+#~ msgid "The nickname you have chosen is already in use."
+#~ msgstr "Το ψευδώνυμο σας φαίνεται να χρησιμοποιείται ήδη."
+
+#~ msgid "The chat room you tried to join requires a password."
+#~ msgstr "Το δωμάτιο που προσπαθήσατε να συνδεθείτε απαιτεί κωδικό."
+
+#~ msgid "The remote conference server did not respond in a sensible time."
+#~ msgstr ""
+#~ "Ο απομακρυσμένος εξυπηρετητής συνεδριών δεν απάντησε σε λογικό πλαίσιο "
+#~ "χρόνου."
+
+#~ msgid "The conference server you tried to join could not be found."
+#~ msgstr ""
+#~ "Ο εξυπηρετητής συνεδριών που προσπαθήσατε να συνδεθείτε δεν βρέθηκε."
+
+#~ msgid "An unknown error occurred, check your details are correct."
+#~ msgstr ""
+#~ "Ένα άγνωστο σφάλμα συνέβη, επιβεβαιώστε ότι οι λεπτομέρειες είναι σωστές."
+
+#~ msgid "Unavailable"
+#~ msgstr "Μη διαθέσιμος"
+
+#~ msgid "An unknown error occurred."
+#~ msgstr "Ένα άγνωστο σφάλμα συνέβη."
+
+#~ msgid "Connection refused."
+#~ msgstr "Δεν επιτράπηκε η σύνδεση."
+
+#~ msgid "Server address could not be resolved."
+#~ msgstr "Η διεύθυνση του εξυπηρετητή δε μπόρεσε να επιλυθεί."
+
+#~ msgid "Connection timed out."
+#~ msgstr "Τέλος χρονικού ορίου σύνδεσης."
+
+#~ msgid "Authentication failed."
+#~ msgstr "Η πιστοποίηση απέτυχε."
+
+#~ msgid "The username you are trying already exists."
+#~ msgstr "Το ψευδώνυμο αυτό υπάρχει ήδη."
+
+#~ msgid "The username you are trying is not valid."
+#~ msgstr "Το ψευδώνυμο αυτό δεν είναι έγκυρο."
+
+#~ msgid "This feature is unavailable."
+#~ msgstr "Αυτή η δυνατότητα δεν είναι διαθέσιμη."
+
+#~ msgid "This feature is unauthorized."
+#~ msgstr "Δεν έχετε δικαιώματα γι' αυτή τη δυνατότητα."
+
+#~ msgid "A specific protocol error occurred that was unexpected."
+#~ msgstr "Παρουσιάστηκε μη αναμενόμενο σφάλμα πρωτοκόλλου."
+
+#~ msgid "new account"
+#~ msgstr "νέος λογαριασμός"
+
+#~ msgid "Home"
+#~ msgstr "Αρχικός κατάλογος"
+
+#~ msgid "Couldn't send message!"
+#~ msgstr "Το μήνυμα δεν μπόρεσε να σταλεί!"
+
+#~ msgid "Connection could not be opened"
+#~ msgstr "Δεν ήταν δυνατό να ανοιχθεί η σύνδεση"
+
+#, fuzzy
+#~ msgid "This service is unavailable or not found"
+#~ msgstr "Αυτή η δυνατότητα δεν είναι διαθέσιμη."
+
+#, fuzzy
+#~ msgid "This feature is not implemented"
+#~ msgstr "Δεν έχετε δικαιώματα γι' αυτή τη δυνατότητα."
+
+#~ msgid "Stop"
+#~ msgstr "Διακοπή"
+
+#~ msgid "Disconnect"
+#~ msgstr "Αποσύνδεση"
+
+#~ msgid "Connect"
+#~ msgstr "Σύνδεση"
+
+#~ msgid "Successfully registered your new account settings."
+#~ msgstr "Οι ρυθμίσεις του νέου λογαριασμού σας καταχωρήθηκαν με επιτυχία."
+
+#~ msgid "You should now be able to connect to your new account."
+#~ msgstr ""
+#~ "Θα πρέπει τώρα να είστε έτοιμος να συνδεθείτε στον νέο λογαριασμό σας."
+
+#~ msgid "Failed to register your new account settings."
+#~ msgstr "Οι ρυθμίσεις του νέου σας λογαριασμού απέτυχαν να καταχωρηθούν."
+
+#, fuzzy
+#~ msgid "Successfully changed your account password."
+#~ msgstr "Οι ρυθμίσεις του νέου λογαριασμού σας καταχωρήθηκαν με επιτυχία."
+
+#, fuzzy
+#~ msgid "You should now be able to connect with your new password."
+#~ msgstr ""
+#~ "Θα πρέπει τώρα να είστε έτοιμος να συνδεθείτε στον νέο λογαριασμό σας."
+
+#, fuzzy
+#~ msgid "Failed to change your account password."
+#~ msgstr "Εισάγετε τον κωδικό του λογαριασμού %s"
+
+#, fuzzy
+#~ msgid ""
+#~ "Please enter a new password for this account:\n"
+#~ "%s"
+#~ msgstr ""
+#~ "Παρακαλώ εισάγετε ένα νέο όνομα για την ομάδα:\n"
+#~ "%s"
+
+#~ msgid "No information is available for this contact."
+#~ msgstr "Δεν υπάρχουν διαθέσιμες πληροφορίες για αυτήν την επαφή."
+
+#~ msgid "Information requested, please wait..."
+#~ msgstr "Ζητούνται πληροφορίες, παρακαλώ περιμένετε..."
+
+#~ msgid "I would like to add you to my contact list."
+#~ msgstr "Θα ήθελα να σε προσθέσω στην λίστα επαφών μου."
+
+#~ msgid "To summarize:"
+#~ msgstr "Συνοψίζοντας:"
+
+#~ msgid "%d new message"
+#~ msgid_plural "%d new messages"
+#~ msgstr[0] "%d νέο μήνυμα"
+#~ msgstr[1] "%d νέα μηνύματα"
+
+#~ msgid "%d subscription request"
+#~ msgid_plural "%d subscription requests"
+#~ msgstr[0] "%d αίτηση εγγραφής"
+#~ msgstr[1] "%d αιτήσεις εγγραφών"
+
+#~ msgid "%d file transfer request"
+#~ msgid_plural "%d file transfer requests"
+#~ msgstr[0] "%d αίτηση μεταφοράς αρχείου"
+#~ msgstr[1] "%d αιτήσεις μεταφοράς αρχείων"
+
+#~ msgid "%d server message"
+#~ msgid_plural "%d server messages"
+#~ msgstr[0] "%d μήνυμα εξυπηρετητή"
+#~ msgstr[1] "%d μηνύματα εξυπηρετητή"
+
+#~ msgid "%d error"
+#~ msgid_plural "%d errors"
+#~ msgstr[0] "%d σφάλμα"
+#~ msgstr[1] "%d σφάλματα"
+
+#~ msgid "If you quit, you will lose all unread information."
+#~ msgstr "Αν κλείσετε, θα χάσετε όλες τις μη διαβασμένες πληροφορίες."
+
+#~ msgid "Gossip is still running, it is just hidden."
+#~ msgstr "Το Gossip εξακολουθεί να εκτελείται, απλά είναι κρυμμένο."
+
+#~ msgid "Click on the notification area icon to show Gossip."
+#~ msgstr ""
+#~ "Κάντε κλικ στο εικονίδιο της περιοχής ειδοποιήσεων για να εμφανίσετε το "
+#~ "Gossip."
+
+#~ msgid "You were about to quit!"
+#~ msgstr "Ετοιμάζεστε να εγκαταλήψετε!"
+
+#~ msgid ""
+#~ "Since no system or notification tray has been found, this action would "
+#~ "normally quit Gossip.\n"
+#~ "\n"
+#~ "This is just a reminder, from now on, Gossip will quit when performing "
+#~ "this action unless you uncheck the option below."
+#~ msgstr ""
+#~ "Εφόσον δεν βρέθηκε περιοχή ειδοποιήσεων αυτή η ενέργεια κανονικά θα "
+#~ "τερματίσει το Gossip.\n"
+#~ "\n"
+#~ "Αυτή είναι απλά μια υπενθύμιση, από εδώ και στο εξής, το Gossip θα "
+#~ "κλείνει με την εκτέλεση αυτής της ενέργειας εκτός αν αποεπιλέξετε την "
+#~ "παρακάτω επιλογή."
+
+#~ msgid "Edit Account _Details"
+#~ msgstr "Επεξεργασία _λεπτομερειών Λογαριασμού"
+
+#~ msgid "Click to enlarge"
+#~ msgstr "Κάντε κλικ για μεγέθυνση"
+
+#~ msgid "Word"
+#~ msgstr "Λέξη"
+
+#~ msgid "Select who would you like to invite to room:"
+#~ msgstr "Επιλέξτε ποιον θέλετε να καλέσετε στο δωμάτιο:"
+
+#~ msgid "Select which room you would like to invite:"
+#~ msgstr "Επιλέξτε ποιο δωμάτιο θέλετε να καλέσετε:"
+
+#~ msgid "New message from %s"
+#~ msgstr "Νέο μήνυμα από %s"
+
+#~ msgid "Your invitation has been declined"
+#~ msgstr "Η πρόσκληση σας απορρίφθηκε"
+
+#~ msgid "Accept"
+#~ msgstr "Αποδοχή"
+
+#~ msgid "Decline"
+#~ msgstr "Άρνηση"
+
+#~ msgid "Name"
+#~ msgstr "Όνομα"
+
+#~ msgid "Room"
+#~ msgstr "Δωμάτιο"
+
+#~ msgid "Auto Connect"
+#~ msgstr "Αυτόματη σύνδεση"
+
+#~ msgid "Information requested..."
+#~ msgstr "Αιτήθηκαν πληροφορίες..."
+
+#~ msgid "Do you want to remove this contact from your roster?"
+#~ msgstr "Θέλετε να αφαιρέσετε αυτήν την επαφή από την λίστα σας;"
+
+#~ msgid ""
+#~ "Please enter a new name for the group:\n"
+#~ "%s"
+#~ msgstr ""
+#~ "Παρακαλώ εισάγετε ένα νέο όνομα για την ομάδα:\n"
+#~ "%s"
+
+#~ msgid "Select"
+#~ msgstr "Επιλογή"
+
+#~ msgid "Unsorted"
+#~ msgstr "Μη ταξινομημένα"
+
+#~ msgid ""
+#~ "Set the alias you want to use for:\n"
+#~ "<b>%s</b>\n"
+#~ "\n"
+#~ "You can retrieve contact information from the server."
+#~ msgstr ""
+#~ "Ορίστε το ψευδώνυμο για τον/την:\n"
+#~ "<b>%s</b>\n"
+#~ "\n"
+#~ "Μπορείτε να ανακτήσετε τις πληροφορίες της επαφής από τον εξυπηρετητή."
+
+#~ msgid "New file transfer request from %s"
+#~ msgstr "Νέα αίτηση μεταφοράς αρχείου από %s"
+
+#~ msgid "File transfer is not supported by both parties."
+#~ msgstr "Οι μεταφορές αρχείων δεν υποστηρίζονται και από τις δύο πλευρές."
+
+#~ msgid "Your file transfer offer declined."
+#~ msgstr "Η αίτηση σας για μεταφορά αρχείου απορρίφθηκε."
+
+#~ msgid "The other user decided not to continue."
+#~ msgstr "Ο άλλος χρήστης αποφάσισε να διακόψει."
+
+#~ msgid "Unknown error occurred during file transfer."
+#~ msgstr "Συνέβηκε άγνωστο σφάλμα κατά την μεταφορά του αρχείου."
+
+#~ msgid "%s would like to send you a file."
+#~ msgstr "Ο χρήστης %s θέλει να σας στείλει ένα αρχείο."
+
+#~ msgid "Someone would like to send you a file."
+#~ msgstr "Κάποιος θέλει να σας στείλει ένα αρχείο."
+
+#~ msgid "Select a file"
+#~ msgstr "Επιλέξτε ένα αρχείο"
+
+#, fuzzy
+#~ msgid "Connecting..."
+#~ msgstr "Σύνδεση"
+
+#~ msgid "Invited %s to join this chat conference."
+#~ msgstr "Προκαλέσατε το χρήστης %s να συμμετάσχει στην ομαδική συζήτηση."
+
+#, fuzzy
+#~ msgid "%s has set the topic: %s"
+#~ msgstr "Το θέμα ορίστηκε από το χρήστη %s"
+
+#, fuzzy
+#~ msgid "%s has joined the room"
+#~ msgstr "Το θέμα ορίστηκε από το χρήστη %s"
+
+#, fuzzy
+#~ msgid "%s has left the room"
+#~ msgstr "Το θέμα ορίστηκε από το χρήστη %s"
+
+#, fuzzy
+#~ msgid "Topic: %s"
+#~ msgstr "_Θέμα:"
+
+#~ msgid "Account"
+#~ msgstr "Λογαριασμός"
+
+#~ msgid "Conversation With"
+#~ msgstr "Συζήτηση με"
+
+#~ msgid "Date"
+#~ msgstr "Ημερομηνία"
+
+#~ msgid "Allow multiple instances of the application to run at the same time"
+#~ msgstr "Να επιτρέπονται πολλαπλές ταυτόχρονες εκτελέσεις της εφαρμογής"
+
+#~ msgid "List the available accounts"
+#~ msgstr "Λίστα διαθέσιμων λογαριασμών"
+
+#~ msgid "Which account to connect to on startup"
+#~ msgstr "Ποιος λογαριασμός να συνδέεται κατά την εκκίνηση"
+
+#~ msgid "ACCOUNT-NAME"
+#~ msgstr "OΝΟΜΑ-ΛΟΓΑΡΙΑΣΜΟΥ"
+
+#~ msgid "You can not use --no-connect together with --account"
+#~ msgstr ""
+#~ "Δε μπορείτε να χρησιμοποιήσετε συγχρόνως τις παραμέτρους --no-connect και "
+#~ "--account"
+
+#~ msgid "No accounts available."
+#~ msgstr "Κανένας διαθέσιμος λογαριασμός."
+
+#~ msgid "Available accounts:"
+#~ msgstr "Διαθέσιμοι λογαριασμοί:"
+
+#~ msgid "[default]"
+#~ msgstr "[προεπιλογή]"
+
+#~ msgid "There is no account with the name '%s'."
+#~ msgstr "Δεν υπάρχει λογαριασμός με το όνομα '%s'."
+
+#~ msgid "Join"
+#~ msgstr "Σύνδεση"
+
+#~ msgid "Create"
+#~ msgstr "Δημιουργία"
+
+#~ msgid "Chat Rooms"
+#~ msgstr "Δωμάτια συζήτησης"
+
+#~ msgid "Found %d conference rooms"
+#~ msgstr "Βρέθηκαν %d δωμάτια συνεδριών"
+
+#~ msgid "Browsing for conference rooms, please wait..."
+#~ msgstr "Γίνεται πλοήγηση για δωμάτια συνεδριών, παρακαλώ περιμένετε..."
+
+#~ msgid "Browsing cancelled!"
+#~ msgstr "Η πλοήγηση ακυρώθηκε!"
+
+#~ msgid "Default"
+#~ msgstr "Προεπιλογή"
+
+#~ msgid "Chat!"
+#~ msgstr "Συζήτηση!"
+
+#~ msgid "%s wants to be added to your contact list."
+#~ msgstr "Ο χρήστης %s θέλει να προστεθεί στην λίστα επαφών σας."
+
+#~ msgid "Someone wants to be added to your contact list."
+#~ msgstr "Κάποιος θέλει να προστεθεί στην λίστα επαφών σας."
+
+#~ msgid "Subscription request"
+#~ msgstr "Αίτηση εγγραφής"
+
+#~ msgid "Show"
+#~ msgstr "Εμφάνιση"
+
+#~ msgid "Contact Information"
+#~ msgstr "Πληροφορίες επαφής"
+
+#~ msgid "Subject: %s"
+#~ msgstr "Θέμα: %s"
+
+#~ msgid "Suggestions for the word"
+#~ msgstr "Προτάσεις για τη λέξη"
+
+#~ msgid "New subscription request from %s"
+#~ msgstr "Νέα αίτηση εγγραφής από το χρήστη %s"
+
+#~ msgid "Do you want to add this person to your contact list?"
+#~ msgstr "Θέλετε να προσθέσετε αυτό το άτομο στη λίστα επαφών σας;"
+
+#~ msgid "Do you want to add %s to your contact list?"
+#~ msgstr "Θέλετε να προσθέσετε το χρήστη %s στη λίστα επαφών σας;"
+
+#~ msgid "Please enter your %s account password"
+#~ msgstr "Εισάγετε τον κωδικό του λογαριασμού %s"
+
+#, fuzzy
+#~ msgid "Logging in to account '%s'"
+#~ msgstr "Γίνεται σύνδεση με: %s"
+
+#~ msgid "Remember Password?"
+#~ msgstr "Απομνημόνευση κωδικού;"
+
+#~ msgid "Do not show this again"
+#~ msgstr "Να μην εμφανιστεί ξανά"
+
+#~ msgid "Could not display the help contents."
+#~ msgstr "Δεν ήταν δυνατό να εμφανιστούν τα περιεχόμενα βοήθειας."
+
+#~ msgid "Select Your Avatar Image"
+#~ msgstr "Επιλέξτε την προσωπική σας εικόνα"
+
+#~ msgid "No Image"
+#~ msgstr "Χωρίς εικόνα"
+
+#~ msgid "The server does not seem to be responding."
+#~ msgstr "Ο εξυπηρετητής δε φαίνεται να ανταποκρίνεται."
+
+#~ msgid "Try again later."
+#~ msgstr "Δοκιμάστε πάλι αργότερα."
+
+#, fuzzy
+#~ msgid "Change"
+#~ msgstr "Συζήτηση"
+
+#~ msgid "Contact goes offline"
+#~ msgstr "Η επαφή αποσυνδέεται"
+
+#~ msgid "Contact goes online"
+#~ msgstr "Η επαφή συνδέεται"
+
+#~ msgid "Contact ID:"
+#~ msgstr "ID επαφής:"
+
+#~ msgid "Do you want to accept this file?"
+#~ msgstr "Θέλετε να δεχτείτε αυτό το αρχείο;"
+
+#~ msgid "File Transfer Request"
+#~ msgstr "Αίτηση για μεταφορά αρχείου"
+
+#~ msgid "File name:"
+#~ msgstr "Όνομα αρχείου:"
+
+#~ msgid "File size:"
+#~ msgstr "Μέγεθος αρχείου:"
+
+#~ msgid "Not supported yet"
+#~ msgstr "Δεν υποστηρίζεται ακόμα"
+
+#~ msgid "This person wishes to send you this file:"
+#~ msgstr "Αυτό το άτομο επιθυμεί να σας στείλει αυτό το αρχείο:"
+
+#~ msgid "Web site:"
+#~ msgstr "Ιστότοπος:"
+
+#~ msgid "_Accept"
+#~ msgstr "_Αποδοχή"
+
+#~ msgid "_Deny"
+#~ msgstr "Άρ_νηση"
+
+#, fuzzy
+#~ msgid "<b>Topic:</b>"
+#~ msgstr "<b>Ομάδες</b>"
+
+#~ msgid "Account:"
+#~ msgstr "Λογαριασμός:"
+
+#~ msgid "Browse:"
+#~ msgstr "Πλοήγηση:"
+
+#~ msgid "Edit Favorite Room"
+#~ msgstr "Επεξεργασία αγαπημένου δωματίου"
+
+#~ msgid ""
+#~ "Enter the room name to join here or click on one or more rooms in the "
+#~ "list."
+#~ msgstr ""
+#~ "Εισάγετε εδώ το όνομα του δωματίου στο οποίο θέλετε να συνδεθείτε ή "
+#~ "επιλέξτε ένα ή περισσότερα δωμάτια από τη λίστα."
+
+#~ msgid "Group Chat"
+#~ msgstr "Ομαδική συζήτηση"
+
+#~ msgid "Join New"
+#~ msgstr "Σύνδεση σε νέο"
+
+#~ msgid "Join room on start_up"
+#~ msgstr "Σύνδεση στο δωμάτιο κατά την εκκίνηση"
+
+#~ msgid "Join this chat room when Gossip starts and you are connected"
+#~ msgstr ""
+#~ "Σύνδεση στο δωμάτιο κατά την εκκίνηση του Gossip και είστε συνδεδεμένοι"
+
+#~ msgid "Manage Favorite Rooms"
+#~ msgstr "Διαχείριση αγαπημένων δωματίων"
+
+#~ msgid "N_ame:"
+#~ msgstr "Όνο_μα:"
+
+#~ msgid "Re_fresh"
+#~ msgstr "Α_νανέωση"
+
+#~ msgid "S_erver:"
+#~ msgstr "Εξ_υπηρετητής:"
+
+#~ msgid ""
+#~ "This list represents all chat rooms hosted on the server you have entered."
+#~ msgstr ""
+#~ "Αυτή η λίστα περιέχει όλα τα δωμάτια συζητήσεων που φιλοξενούνται στον "
+#~ "εξυπηρετητή που έχετε εισάγει."
+
+#~ msgid "_Nickname:"
+#~ msgstr "_Ψευδώνυμο:"
+
+#~ msgid "_Room:"
+#~ msgstr "_Δωμάτιο:"
+
+#~ msgid "-"
+#~ msgstr "-"
+
+#~ msgid "<b>About</b>"
+#~ msgstr "<b>Περί</b>"
+
+#~ msgid "<b>Client Information</b>"
+#~ msgstr "<b>Πληροφορίες πελάτη</b>"
+
+#~ msgid "<b>Groups</b>"
+#~ msgstr "<b>Ομάδες</b>"
+
+#~ msgid "<b>Name</b>"
+#~ msgstr "<b>Όνομα</b>"
+
+#~ msgid "<b>Personal Details</b>"
+#~ msgstr "<b>Προσωπικές λεπτομέρειες</b>"
+
+#~ msgid "<b>Subscription</b>"
+#~ msgstr "<b>Εγγραφή</b>"
+
+#~ msgid "<span size=\"smaller\">Example: Mikael or user@server.org</span>"
+#~ msgstr ""
+#~ "<span size=\"smaller\"> Παράδειγμα: Γιώργος ή user@server.org</span>"
+
+#~ msgid "Accou_nt:"
+#~ msgstr "_Λογαριασμός:"
+
+#, fuzzy
+#~ msgid "Add Contact"
+#~ msgstr "Πρόσ_θεση επαφής..."
+
+#~ msgid "Alia_s:"
+#~ msgstr "_Ψευδώνυμο:"
+
+#~ msgid "Avatar:"
+#~ msgstr "Πρ. εικόνα:"
+
+#~ msgid "Ch_at"
+#~ msgstr "_Συζήτηση"
+
+#~ msgid "Client:"
+#~ msgstr "Πελάτης:"
+
+#~ msgid "Con_tact:"
+#~ msgstr "_Επαφή:"
+
+#~ msgid "Connect on S_tartup"
+#~ msgstr "Σύνδεση κατά την _εκκίνηση"
+
+#~ msgid "Contacts"
+#~ msgstr "Επαφές"
+
+#~ msgid "Country:"
+#~ msgstr "Χώρα:"
+
+#~ msgid "Decide _Later"
+#~ msgstr "Αποφασίστε αρ_γότερα"
+
+#~ msgid "Edit Contact"
+#~ msgstr "Επεξεργασία επαφής"
+
+#~ msgid "Edit Groups"
+#~ msgstr "Επεξεργασία ομάδων"
+
+#~ msgid "Email:"
+#~ msgstr "Email:"
+
+#~ msgid "ID:"
+#~ msgstr "ID:"
+
+#~ msgid ""
+#~ "If you chose to decide later you will be asked the next time you log on."
+#~ msgstr ""
+#~ "Αν επιλέξετε να αποφασίσετε αργότερα θα ερωτηθείτε στην επόμενη σύνδεση."
+
+#~ msgid "Name:"
+#~ msgstr "Όνομα:"
+
+#~ msgid "OS:"
+#~ msgstr "Λειτουργικό σύστημα:"
+
+#~ msgid "Personal Details"
+#~ msgstr "Προσωπικές λεπτομέρειες"
+
+#~ msgid "R_egister"
+#~ msgstr "Ε_γγραφή"
+
+#~ msgid "Search"
+#~ msgstr "Αναζήτηση"
+
+#~ msgid ""
+#~ "Select the groups you want this contact to appear in, you can select more "
+#~ "than one group or no groups."
+#~ msgstr ""
+#~ "Επιλέξτε τις ομάδες στις οποίες επιθυμείτε να εμφανίζεται η επαφή. "
+#~ "Μπορείτε να επιλέξετε καμία, μία ή παραπάνω ομάδες."
+
+#, fuzzy
+#~ msgid ""
+#~ "Set the alias you want to use for:\n"
+#~ "<b>foo@bar.baz</b>\n"
+#~ "\n"
+#~ "You can retrieve contact information from the server. "
+#~ msgstr ""
+#~ "Ορίστε το ψευδώνυμο για τον/την:\n"
+#~ "<b>%s</b>\n"
+#~ "\n"
+#~ "Μπορείτε να ανακτήσετε τις πληροφορίες της επαφής από τον εξυπηρετητή."
+
+#~ msgid "Spell Checker"
+#~ msgstr "Ελεγκτής ορθογραφίας"
+
+#~ msgid "Subscription Request"
+#~ msgstr "Αίτηση εγγραφής"
+
+#~ msgid "Suggestions for the word:"
+#~ msgstr "Προτάσεις για τη λέξη:"
+
+#~ msgid ""
+#~ "This acts as a filter to the contact list below. You can use segments of "
+#~ "contact's name or ID, for example, \"jabber.org\" will list everyone "
+#~ "using that server"
+#~ msgstr ""
+#~ "Αυτό συμπεριφέρεται σαν φίλτρο της παρακάτω λίστας επαφών. Μπορείτε να "
+#~ "χρησιμοποιήσετε τμήματα ονομάτων επαφών ή ID, για παράδειγμα, το \"jabber."
+#~ "org\" θα εμφανίσει όποιον χρησιμοποιεί αυτόν τον εξυπηρετητή"
+
+#~ msgid "This is the name that will be used on your roster for this contact"
+#~ msgstr ""
+#~ "Αυτό είναι το όνομα που θα χρησιμοποιείται στη λίστα σας γι' αυτήν την "
+#~ "επαφή"
+
+#~ msgid "This name will be used to identify you in chat windows"
+#~ msgstr "Αυτό το όνομα θα σας προσδιορίζει στα παράθυρα συζήτησης"
+
+#~ msgid ""
+#~ "This name will be used to identify you when new contacts lookup your "
+#~ "details"
+#~ msgstr ""
+#~ "Αυτό το όνομα θα σας προσδιορίζει όταν νέες επαφές αναζητούν τα στοιχεία "
+#~ "σας"
+
+#~ msgid "Use default name here from the contact's VCard."
+#~ msgstr "Χρήση προκαθορισμένου όνοματος από τη VCard της επαφής."
+
+#~ msgid "Use system pro_xy"
+#~ msgstr "Χρήση διαμεσολα_βητή συστήματος"
+
+#~ msgid "Version:"
+#~ msgstr "Έκδοση:"
+
+#~ msgid "View Previous Conversations"
+#~ msgstr "Προβολή προηγούμενων συζητήσεων"
+
+#~ msgid "Which account do you want to use?"
+#~ msgstr "Ποιο λογαριασμό θέλετε να χρησιμοποιήσετε;"
+
+#~ msgid "You are not subscribed to this contact."
+#~ msgstr "Δεν είστε γραμμένος σε αυτήν την επαφή."
+
+#~ msgid "_Connect"
+#~ msgstr "_Σύνδεση"
+
+#, fuzzy
+#~ msgid "_Description:"
+#~ msgstr "Περιγραφή:"
+
+#~ msgid "_Disconnect"
+#~ msgstr "_Αποσύνδεση"
+
+#, fuzzy
+#~ msgid "_Email:"
+#~ msgstr "Email:"
+
+#, fuzzy
+#~ msgid ""
+#~ "_Enter the name or contact ID of the person you want to chat to below:"
+#~ msgstr ""
+#~ "Εισάγετε το όνομα ή το ID του ατόμου με το οποίο θέλετε να συζητήσετε:"
+
+#~ msgid "_For:"
+#~ msgstr "_Για:"
+
+#, fuzzy
+#~ msgid "_Full Name:"
+#~ msgstr "Ό_νομα:"
+
+#~ msgid "_Group:"
+#~ msgstr "_Ομάδα:"
+
+#, fuzzy
+#~ msgid "_Nick Name:"
+#~ msgstr "_Ψευδώνυμο:"
+
+#, fuzzy
+#~ msgid "_Password:"
+#~ msgstr "_Συνθηματικό:"
+
+#, fuzzy
+#~ msgid "_Quit Message:"
+#~ msgstr "Νέο μήνυμα"
+
+#~ msgid "_Retrieve"
+#~ msgstr "Ανά_κτηση"
+
+#~ msgid "_Subscribe"
+#~ msgstr "Ε_γγραφή"
+
+#, fuzzy
+#~ msgid "_Web site:"
+#~ msgstr "Ιστότοπος:"
+
+#, fuzzy
+#~ msgid "irc account settings"
+#~ msgstr "Ρυθμίσεις λογαριασμού Jabber"
+
+#, fuzzy
+#~ msgid "msn account settings"
+#~ msgstr "Ρυθμίσεις λογαριασμού Jabber"
+
+#~ msgid "Server"
+#~ msgstr "Εξυπηρετητής"
+
+#~ msgid " "
+#~ msgstr " "
+
+#~ msgid "Gossip"
+#~ msgstr "Gossip"
+
+#~ msgid "Group:"
+#~ msgstr "Ομάδα:"
+
+#~ msgid "Nickname:"
+#~ msgstr "Ψευδώνυμο:"
+
+#~ msgid ""
+#~ "Set the alias you want to use for:\n"
+#~ "<b>martyn@imendio.com</b>\n"
+#~ "\n"
+#~ "You can retrieve contact information from the server. "
+#~ msgstr ""
+#~ "Ορίστε ψευδώνυμου για το χρήστη:\n"
+#~ "<b>martyn@imendio.com</b>\n"
+#~ "\n"
+#~ "Μπορείτε να ανακτήσετε τις πληροφορίες επαφής από τον εξυπηρετητή."
+
+#~ msgid "Web Site:"
+#~ msgstr "Ιστότοπος:"
+
+#~ msgid "_Forget"
+#~ msgstr "_Λησμόνηση"
diff --git a/gnome-2-22/po/en_CA.po b/gnome-2-22/po/en_CA.po
new file mode 100644
index 000000000..cea232b12
--- /dev/null
+++ b/gnome-2-22/po/en_CA.po
@@ -0,0 +1,2380 @@
+# Canadian English translation of gossip.
+# Copyright (C) 2004-2005 Adam Weinberger and the GNOME Foundation
+# This file is distributed under the same licence as the gossip package.
+# Adam Weinberger <adamw@gnome.org>, 2004, 2005.
+#
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gossip\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-05-15 23:46+0200\n"
+"PO-Revision-Date: 2005-08-27 20:31-0500\n"
+"Last-Translator: Adam Weinberger <adamw@gnome.org>\n"
+"Language-Team: Canadian English <adamw@gnome.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../data/empathy.desktop.in.h:1
+#, fuzzy
+msgid "Empathy Instant Messenger"
+msgstr "Instant Messenger"
+
+#: ../data/empathy.desktop.in.h:2
+msgid "Instant Messenger"
+msgstr "Instant Messenger"
+
+#: ../data/empathy.schemas.in.h:1
+msgid "Always open a separate chat window for new chats."
+msgstr "Always open a separate chat window for new chats."
+
+#: ../data/empathy.schemas.in.h:2
+msgid "Chat window theme"
+msgstr "Chat window theme"
+
+#: ../data/empathy.schemas.in.h:3
+msgid ""
+"Comma separated list of spell checker languages to use (e.g. en, fr, nl)."
+msgstr ""
+"Comma-separated list of spell checker languages to use (e.g. en, fr, nl)."
+
+#: ../data/empathy.schemas.in.h:4
+#, fuzzy
+msgid "Compact contact list"
+msgstr "_Show Contact List"
+
+#: ../data/empathy.schemas.in.h:5
+msgid "Contact list sort criterium"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:6
+msgid "Default directory to select an avatar image from"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:7
+msgid "Enable popup when contact is available"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:8
+#, fuzzy
+msgid "Enable sound when away"
+msgstr "Disable sounds when _away"
+
+#: ../data/empathy.schemas.in.h:9
+#, fuzzy
+msgid "Enable sound when busy"
+msgstr "Disable sounds when _busy"
+
+#: ../data/empathy.schemas.in.h:10
+#, fuzzy
+msgid "Enable spell checker"
+msgstr "Enable spell checking"
+
+#: ../data/empathy.schemas.in.h:11
+msgid "Hide main window"
+msgstr "Hide main window"
+
+#: ../data/empathy.schemas.in.h:12
+msgid "Hide the main window."
+msgstr "Hide the main window."
+
+#: ../data/empathy.schemas.in.h:13
+msgid "Open new chats in separate windows"
+msgstr "Open new chats in separate windows"
+
+#: ../data/empathy.schemas.in.h:14
+#, fuzzy
+msgid "Show avatars"
+msgstr "_Show Contacts"
+
+#: ../data/empathy.schemas.in.h:15
+#, fuzzy
+msgid "Show hint about closing the main window"
+msgstr "The height of the main window."
+
+#: ../data/empathy.schemas.in.h:16
+msgid "Show offline contacts"
+msgstr "Show offline contacts"
+
+#: ../data/empathy.schemas.in.h:17
+msgid "Spell checking languages"
+msgstr "Spell checking languages"
+
+#: ../data/empathy.schemas.in.h:18
+msgid "The last directory that an avatar image was chosen from."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:19
+msgid "The theme that is used to display the conversation in chat windows."
+msgstr "The theme that is used to display the conversation in chat windows."
+
+#: ../data/empathy.schemas.in.h:20
+msgid "Use graphical smileys"
+msgstr "Use graphical smileys"
+
+#: ../data/empathy.schemas.in.h:21
+msgid "Use notification sounds"
+msgstr "Use notification sounds"
+
+#: ../data/empathy.schemas.in.h:22
+#, fuzzy
+msgid "Use theme for chat rooms"
+msgstr "_Invite to Chat Room"
+
+#: ../data/empathy.schemas.in.h:23
+msgid ""
+"Whether or not to check words typed against the languages you want to check "
+"with."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:24
+msgid ""
+"Whether or not to convert smileys into graphical images in conversations."
+msgstr ""
+"Whether or not to convert smileys into graphical images in conversations."
+
+#: ../data/empathy.schemas.in.h:25
+msgid "Whether or not to play a sound when messages arrive."
+msgstr "Whether or not to play a sound when messages arrive."
+
+#: ../data/empathy.schemas.in.h:26
+msgid "Whether or not to play sounds when away."
+msgstr "Whether or not to play sounds when away."
+
+#: ../data/empathy.schemas.in.h:27
+msgid "Whether or not to play sounds when busy."
+msgstr "Whether or not to play sounds when busy."
+
+#: ../data/empathy.schemas.in.h:28
+#, fuzzy
+msgid "Whether or not to show a popup when a contact becomes available."
+msgstr "Whether or not to play a sound when messages arrive."
+
+#: ../data/empathy.schemas.in.h:29
+#, fuzzy
+msgid ""
+"Whether or not to show avatars for contacts in the contact list and chat "
+"windows."
+msgstr "Whether or not to show contacts that are offline in the contact list."
+
+#: ../data/empathy.schemas.in.h:30
+msgid "Whether or not to show contacts that are offline in the contact list."
+msgstr "Whether or not to show contacts that are offline in the contact list."
+
+#: ../data/empathy.schemas.in.h:31
+msgid ""
+"Whether or not to show the message dialog about closing the main window with "
+"the 'x' button in the title bar."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:32
+#, fuzzy
+msgid "Whether to show the contact list in compact mode or not."
+msgstr "Whether or not to show contacts that are offline in the contact list."
+
+#: ../data/empathy.schemas.in.h:33
+msgid "Whether to use the theme for chat rooms or not."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:34
+msgid ""
+"Which criterium to use when sorting the contact list. Default is to use sort "
+"by the contact's name with the value \"name\". A value of \"state\" will "
+"sort the contact list by state."
+msgstr ""
+
+#: ../libempathy/gossip-contact.c:654 ../libempathy/gossip-presence.c:184
+#: ../libempathy/gossip-presence.c:283
+msgid "Offline"
+msgstr "Offline"
+
+#: ../libempathy/gossip-presence.c:274
+#, fuzzy
+msgid "Available"
+msgstr "Available..."
+
+#: ../libempathy/gossip-presence.c:276
+#, fuzzy
+msgid "Busy"
+msgstr "Busy..."
+
+#: ../libempathy/gossip-presence.c:279
+#, fuzzy
+msgid "Away"
+msgstr "Away..."
+
+#: ../libempathy-gtk/empathy-main-window.c:254
+#, fuzzy
+msgid "Show and edit accounts"
+msgstr "_Show Contacts"
+
+#: ../libempathy-gtk/empathy-main-window.c:456
+msgid "Group"
+msgstr "Group"
+
+#: ../libempathy-gtk/empathy-main-window.c:477
+#, fuzzy
+msgid "Contact"
+msgstr "_Add Contact..."
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:1
+#, fuzzy
+msgid "Contact List - Empathy"
+msgstr "_Hide Contact List"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:2
+#, fuzzy
+msgid "Context"
+msgstr "_Contents"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:3
+#, fuzzy
+msgid "Join _Favorites"
+msgstr "_Add to Favourites"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:4
+#: ../libempathy-gtk/gossip-chat.glade.h:10
+msgid "Join _New..."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:5
+#, fuzzy
+msgid "Manage Favorites..."
+msgstr "_Add to Favourites"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:6
+msgid "Show _Offline Contacts"
+msgstr "Show _Offline Contacts"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:7
+#, fuzzy
+msgid "_About"
+msgstr "_Accounts"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:8
+msgid "_Accounts"
+msgstr "_Accounts"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:9
+#: ../libempathy-gtk/gossip-chat.glade.h:15
+msgid "_Add Contact..."
+msgstr "_Add Contact..."
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:10
+#: ../libempathy-gtk/gossip-contact-list.c:298
+msgid "_Chat"
+msgstr "_Chat"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:11
+msgid "_Contents"
+msgstr "_Contents"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:12
+#: ../libempathy-gtk/gossip-chat.glade.h:21
+#: ../libempathy-gtk/gossip-contact-list.c:310
+#, fuzzy
+msgid "_Edit"
+msgstr "Edit"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:13
+msgid "_Help"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:14
+#: ../libempathy-gtk/empathy-status-icon.glade.h:2
+msgid "_New Message..."
+msgstr "_New Message..."
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:15
+msgid "_Personal Information"
+msgstr "_Personal Information"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:16
+msgid "_Preferences"
+msgstr "_Preferences"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:17
+#: ../libempathy-gtk/empathy-status-icon.glade.h:3
+msgid "_Quit"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:18
+#: ../libempathy-gtk/gossip-chat.glade.h:25
+#, fuzzy
+msgid "_Room"
+msgstr "_Room:"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:19
+#: ../libempathy-gtk/gossip-chat.glade.h:28
+#: ../libempathy-gtk/gossip-contact-list.c:326
+#, fuzzy
+msgid "_View Previous Conversations"
+msgstr "_Conversation"
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:1
+msgid "Status"
+msgstr "Status"
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:4
+msgid "_Show Contact List"
+msgstr "_Show Contact List"
+
+#: ../libempathy-gtk/gossip-about-dialog.c:63
+msgid ""
+"Empathy is free software; you can redistribute it and/or modify it under the "
+"terms of the GNU General Public License as published by the Free Software "
+"Foundation; either version 2 of the License, or (at your option) any later "
+"version."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-about-dialog.c:67
+msgid ""
+"Empathy is distributed in the hope that it will be useful, but WITHOUT ANY "
+"WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS "
+"FOR A PARTICULAR PURPOSE. See the GNU General Public License for more "
+"details."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-about-dialog.c:71
+msgid ""
+"You should have received a copy of the GNU General Public License along with "
+"Empathy; if not, write to the Free Software Foundation, Inc., 51 Franklin "
+"Street, Fifth Floor, Boston, MA 02110-130159 USA"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-about-dialog.c:99
+#, fuzzy
+msgid "An Instant Messaging client for GNOME"
+msgstr "Gossip, Instant Messaging Client"
+
+#: ../libempathy-gtk/gossip-about-dialog.c:105
+#, fuzzy
+msgid "translator-credits"
+msgstr "Adam Weinberger"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:224
+#, fuzzy
+msgid "Disable"
+msgstr "Available..."
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:227
+msgid "Enable"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:261
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:3
+#, fuzzy
+msgid "<b>No Account Selected</b>"
+msgstr "<b>About</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:263
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to start configuring.\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want "
+"to configure in the list on the left."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:272
+#, fuzzy
+msgid "<b>No Accounts Configured</b>"
+msgstr "<b>About</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:274
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to start configuring."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:362
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:6
+msgid "Accounts"
+msgstr "Accounts"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:857
+#, c-format
+msgid ""
+"You are about to remove your %s account!\n"
+"Are you sure you want to proceed?"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:863
+msgid ""
+"Any associated conversations and chat rooms will NOT be removed if you "
+"decide to proceed.\n"
+"\n"
+"Should you decide to add the account back at a later time, they will still "
+"be available."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:1
+#, fuzzy
+msgid "<b>Account</b>"
+msgstr "<b>About</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:2
+#, fuzzy
+msgid "<b>New Account</b>"
+msgstr "<b>About</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:4
+#, fuzzy
+msgid "<b>Settings</b>"
+msgstr "<b>Status</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:5
+msgid "A unique name for this account to identify it personally to you."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:7
+#, fuzzy
+msgid "Cr_eate"
+msgstr "Chat"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:8
+msgid "Imendio "
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:9
+msgid "Jabber"
+msgstr "Jabber"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:10
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to started configuring.\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want "
+"to configure in the list on the left."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:13
+msgid "_Name:"
+msgstr "_Name:"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:14
+#, fuzzy
+msgid "_Type:"
+msgstr "_Topic:"
+
+#: ../libempathy-gtk/gossip-account-widget-generic.c:144
+#: ../libempathy-gtk/gossip-account-widget-generic.c:186
+#, c-format
+msgid "%s:"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:1
+#, fuzzy
+msgid ""
+"<small><b><span foreground=\"#555\">Example: user@jabber.org</span></b></"
+"small>"
+msgstr "<span size=\"smaller\">Example: user@jabber.org</span>"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:2
+msgid "Forget password and clear the entry."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:3
+msgid "Login I_D:"
+msgstr "Login I_D:"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:4
+#, fuzzy
+msgid "Pass_word:"
+msgstr "_Password:"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:5
+#, fuzzy
+msgid "Reso_urce:"
+msgstr "R_esource:"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:6
+#, fuzzy
+msgid "Use encryption (SS_L)"
+msgstr "Use _encryption (SSL)"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:7
+#, fuzzy
+msgid "_Port:"
+msgstr "Por_t:"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:8
+msgid "_Server:"
+msgstr "_Server:"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:9
+msgid "jabber account settings"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.c:314
+msgid "Disconnected"
+msgstr "Disconnected"
+
+#: ../libempathy-gtk/gossip-chat.c:858
+msgid "Insert Smiley"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.c:906
+msgid "_Check Word Spelling..."
+msgstr "_Check Word Spelling..."
+
+#: ../libempathy-gtk/gossip-chat.c:1244
+msgid "Connected"
+msgstr "Connected"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:1
+msgid "C_lear"
+msgstr "C_lear"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:2
+msgid "Change _Topic..."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:3
+msgid "Chat"
+msgstr "Chat"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:4
+#, fuzzy
+msgid "Contact Infor_mation"
+msgstr "Contact _Information"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:5
+#, fuzzy
+msgid "Cu_t"
+msgstr "Ch_at"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:6
+msgid "In_vite..."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:7
+msgid "Insert _Smiley"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:8
+#, fuzzy
+msgid "Invitation _message:"
+msgstr "Enter status message:"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:9
+msgid "Invite"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:11
+msgid "Move Tab _Left"
+msgstr "Move Tab _Left"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:12
+msgid "Move Tab _Right"
+msgstr "Move Tab _Right"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:13
+msgid "Select who would you like to invite:"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:14
+msgid "You have been invited to join a chat conference."
+msgstr "You have been invited to join a chat conference."
+
+#: ../libempathy-gtk/gossip-chat.glade.h:16
+#, fuzzy
+msgid "_Add To Favorites"
+msgstr "_Add to Favourites"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:17
+msgid "_Close"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:18
+msgid "_Conversation"
+msgstr "_Conversation"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:19
+msgid "_Copy"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:20
+msgid "_Detach Tab"
+msgstr "_Detach Tab"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:22
+msgid "_Next Tab"
+msgstr "_Next Tab"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:23
+msgid "_Paste"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:24
+msgid "_Previous Tab"
+msgstr "_Previous Tab"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:26
+msgid "_Show Contacts"
+msgstr "_Show Contacts"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:27
+msgid "_Tabs"
+msgstr "_Tabs"
+
+#: ../libempathy-gtk/gossip-chat-view.c:544
+msgid "_Copy Link Address"
+msgstr "_Copy Link Address"
+
+#: ../libempathy-gtk/gossip-chat-view.c:552
+msgid "_Open Link"
+msgstr "_Open Link"
+
+#: ../libempathy-gtk/gossip-chat-view.c:889
+msgid "%A %d %B %Y"
+msgstr "%A %d %B %Y"
+
+#: ../libempathy-gtk/gossip-chat-window.c:685
+#: ../libempathy-gtk/gossip-chat-window.c:715
+#, fuzzy
+msgid "New Message"
+msgid_plural "New Messages"
+msgstr[0] "_New Message..."
+msgstr[1] "_New Message..."
+
+#: ../libempathy-gtk/gossip-chat-window.c:691
+#, fuzzy
+msgid "Chat Room"
+msgstr "Chat Room:"
+
+#: ../libempathy-gtk/gossip-chat-window.c:696
+#: ../libempathy-gtk/gossip-chat-window.c:719
+#, fuzzy, c-format
+msgid "Conversation"
+msgid_plural "Conversations (%d)"
+msgstr[0] "_Conversation"
+msgstr[1] "_Conversation"
+
+#: ../libempathy-gtk/gossip-chat-window.c:1295
+msgid "Typing a message."
+msgstr "Typing a message."
+
+#: ../libempathy-gtk/gossip-contact-list.c:290
+#, fuzzy
+msgid "_Contact"
+msgstr "_Add Contact..."
+
+#: ../libempathy-gtk/gossip-contact-list.c:294
+#, fuzzy
+msgid "_Group"
+msgstr "Group"
+
+#: ../libempathy-gtk/gossip-contact-list.c:298
+#, fuzzy
+msgid "Chat with contact"
+msgstr "Add a contact"
+
+#: ../libempathy-gtk/gossip-contact-list.c:302
+#, fuzzy
+msgid "Infor_mation"
+msgstr "Contact _Information"
+
+#: ../libempathy-gtk/gossip-contact-list.c:302
+#, fuzzy
+msgid "View contact information"
+msgstr "Contact information"
+
+#: ../libempathy-gtk/gossip-contact-list.c:306
+#, fuzzy
+msgid "Re_name"
+msgstr "/Re_name group"
+
+#: ../libempathy-gtk/gossip-contact-list.c:306
+#, fuzzy
+msgid "Rename"
+msgstr "File name:"
+
+#: ../libempathy-gtk/gossip-contact-list.c:310
+#, fuzzy
+msgid "Edit the groups and name for this contact"
+msgstr ""
+"Please enter a new nickname for the contact\n"
+"%s"
+
+#: ../libempathy-gtk/gossip-contact-list.c:314
+#, fuzzy
+msgid "_Remove"
+msgstr "/_Remove Contact"
+
+#: ../libempathy-gtk/gossip-contact-list.c:314
+#, fuzzy
+msgid "Remove contact"
+msgstr "/_Remove Contact"
+
+#: ../libempathy-gtk/gossip-contact-list.c:318
+#, fuzzy
+msgid "_Invite to Chat Room"
+msgstr "_Invite to Chat Room"
+
+#: ../libempathy-gtk/gossip-contact-list.c:318
+msgid "Invite to a currently open chat room"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-contact-list.c:322
+#, fuzzy
+msgid "_Send File..."
+msgstr "/_Send File..."
+
+#: ../libempathy-gtk/gossip-contact-list.c:322
+#, fuzzy
+msgid "Send a file"
+msgstr "Select a file"
+
+#: ../libempathy-gtk/gossip-contact-list.c:326
+#, fuzzy
+msgid "View previous conversations with this contact"
+msgstr "_Conversation"
+
+#: ../libempathy-gtk/gossip-preferences.c:250
+msgid "Language"
+msgstr "Language"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:1
+#, fuzzy
+msgid "<b>Appearance</b>"
+msgstr "<b>Appearance and Behaviour</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:2
+#, fuzzy
+msgid "<b>Audio</b>"
+msgstr "<b>About</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:3
+#, fuzzy
+msgid "<b>Behaviour</b>"
+msgstr "<b>Appearance and Behaviour</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:4
+#, fuzzy
+msgid "<b>Contact List</b>"
+msgstr "<b>Status</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:5
+msgid "<b>Languages</b>"
+msgstr "<b>Languages</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:6
+#, fuzzy
+msgid "<b>Options</b>"
+msgstr "Connection"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:7
+#, fuzzy
+msgid "<b>Visual</b>"
+msgstr "<b>Options</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:8
+#, fuzzy
+msgid ""
+"<small>The list of languages reflects only the languages for which you have "
+"a dictionary installed.</small>"
+msgstr ""
+"The list of languages here reflects only the languages for which you have a "
+"dictionary installed."
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:9
+msgid "Avatars are user chosen images shown in the contact list"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:10
+#, fuzzy
+msgid "Chat Th_eme:"
+msgstr "Chat window theme"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:11
+msgid "Display notifications when contacts come _online"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:12
+#, fuzzy
+msgid "Enable sounds when _away"
+msgstr "Disable sounds when _away"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:13
+#, fuzzy
+msgid "Enable sounds when _busy"
+msgstr "Disable sounds when _busy"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:14
+msgid "General"
+msgstr "General"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:15
+#, fuzzy
+msgid "Notifications"
+msgstr "Use notification sounds"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:16
+#, fuzzy
+msgid "Preferences"
+msgstr "_Preferences"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:17
+msgid "Show _avatars"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:18
+#, fuzzy
+msgid "Show _smileys as images"
+msgstr "Convert _smileys to graphical images"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:19
+#, fuzzy
+msgid "Show co_mpact contact list"
+msgstr "_Show Contact List"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:20
+msgid "Sort by _name"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:21
+msgid "Sort by s_tate"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:22
+msgid "Spell Checking"
+msgstr "Spell Checking"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:23
+msgid "Themes"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:24
+#, fuzzy
+msgid "_Enable spell checking"
+msgstr "Enable spell checking"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:25
+msgid "_Open new chats in separate windows"
+msgstr "_Open new chats in separate windows"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:26
+msgid "_Play sound when messages arrive"
+msgstr "_Play sound when messages arrive"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:27
+#, fuzzy
+msgid "_Use for chat rooms"
+msgstr "_Invite to Chat Room"
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:702
+#, fuzzy
+msgid "Custom message..."
+msgstr "_New Message..."
+
+#. Clear list
+#: ../libempathy-gtk/gossip-presence-chooser.c:724
+#, fuzzy
+msgid "Clear List..."
+msgstr "Clear List"
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:803
+#, fuzzy
+msgid "Are you sure you want to clear the list?"
+msgstr "Do you want to accept this file?"
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:807
+msgid ""
+"This will remove any custom messages you have added to the list of preset "
+"status messages."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:812
+msgid "Clear List"
+msgstr "Clear List"
+
+#: ../libempathy-gtk/gossip-presence-chooser.glade.h:1
+msgid "Enter status message:"
+msgstr "Enter status message:"
+
+#: ../libempathy-gtk/gossip-presence-chooser.glade.h:2
+#, fuzzy
+msgid "Status Message Presets"
+msgstr "Add to status message list"
+
+#: ../libempathy-gtk/gossip-presence-chooser.glade.h:3
+#, fuzzy
+msgid "_Add to status message list"
+msgstr "Add to status message list"
+
+#: ../libempathy-gtk/gossip-private-chat.c:198
+#, c-format
+msgid "%s went offline"
+msgstr "%s went offline"
+
+#: ../libempathy-gtk/gossip-private-chat.c:212
+#, fuzzy, c-format
+msgid "%s has come online"
+msgstr "%s comes online"
+
+#: ../libempathy-gtk/gossip-theme-manager.c:87
+msgid "Classic"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-theme-manager.c:88
+#, fuzzy
+msgid "Simple"
+msgstr "Example: %s"
+
+#: ../libempathy-gtk/gossip-theme-manager.c:89
+#, fuzzy
+msgid "Clean"
+msgstr "C_lear"
+
+#: ../libempathy-gtk/gossip-theme-manager.c:90
+#, fuzzy
+msgid "Blue"
+msgstr "Basque"
+
+#: ../src/empathy-main.c:145
+msgid "Don't connect on startup"
+msgstr "Don't connect on startup"
+
+#: ../src/empathy-main.c:155
+#, fuzzy
+msgid "- Empathy Instant Messenger"
+msgstr "Gossip Instant Messenger"
+
+#~ msgid "Gossip Instant Messenger"
+#~ msgstr "Gossip Instant Messenger"
+
+#, fuzzy
+#~ msgid "Joining"
+#~ msgstr "_Join"
+
+#, fuzzy
+#~ msgid "Active"
+#~ msgstr "Actions"
+
+#~ msgid "Unknown"
+#~ msgstr "Unknown"
+
+#, fuzzy
+#~ msgid "Error"
+#~ msgstr "Last Error"
+
+#, fuzzy
+#~ msgid "Participant"
+#~ msgid_plural "Participants"
+#~ msgstr[0] "Galician"
+#~ msgstr[1] "Galician"
+
+#, fuzzy
+#~ msgid "No affiliation"
+#~ msgstr "Use notification sounds"
+
+#~ msgid "The nickname you have chosen is already in use."
+#~ msgstr "The nickname you have chosen is already in use."
+
+#~ msgid "The chat room you tried to join requires a password."
+#~ msgstr "The chat room you tried to join requires a password."
+
+#~ msgid "The remote conference server did not respond in a sensible time."
+#~ msgstr "The remote conference server did not respond in a sensible time."
+
+#~ msgid "The conference server you tried to join could not be found."
+#~ msgstr "The conference server you tried to join could not be found."
+
+#, fuzzy
+#~ msgid "An unknown error occurred, check your details are correct."
+#~ msgstr "Ensure that your details are correct."
+
+#, fuzzy
+#~ msgid "Unavailable"
+#~ msgstr "Service Unavailable"
+
+#, fuzzy
+#~ msgid "An unknown error occurred."
+#~ msgstr "An unknown error occurred."
+
+#~ msgid "Connection refused."
+#~ msgstr "Connection refused."
+
+#~ msgid "Server address could not be resolved."
+#~ msgstr "Server address could not be resolved."
+
+#~ msgid "Connection timed out."
+#~ msgstr "Connection timed out."
+
+#~ msgid "Authentication failed."
+#~ msgstr "Authentication failed."
+
+#, fuzzy
+#~ msgid "The username you are trying already exists."
+#~ msgstr "The nickname you have chosen is already in use."
+
+#, fuzzy
+#~ msgid "The username you are trying is not valid."
+#~ msgstr "The nickname you have chosen is already in use."
+
+#, fuzzy
+#~ msgid "This feature is unavailable."
+#~ msgstr "No accounts available."
+
+#, fuzzy
+#~ msgid "new account"
+#~ msgstr "Account"
+
+#~ msgid "Home"
+#~ msgstr "Home"
+
+#~ msgid "Couldn't send message!"
+#~ msgstr "Could not send message."
+
+#~ msgid "Connection could not be opened"
+#~ msgstr "Connection could not be opened"
+
+#, fuzzy
+#~ msgid "This service is unavailable or not found"
+#~ msgstr "No accounts available."
+
+#, fuzzy
+#~ msgid "Registration is required"
+#~ msgstr "Registration Required"
+
+#, fuzzy
+#~ msgid "There was an internal service error"
+#~ msgstr "Internal Server Error"
+
+#, fuzzy
+#~ msgid "This feature is not implemented"
+#~ msgstr "No accounts available."
+
+#, fuzzy
+#~ msgid "The remote service timed out"
+#~ msgstr "Remote Server Timeout"
+
+#~ msgid "Disconnect"
+#~ msgstr "Disconnect"
+
+#~ msgid "Connect"
+#~ msgstr "Connect"
+
+#, fuzzy
+#~ msgid "Successfully registered your new account settings."
+#~ msgstr "Successfully registered the account"
+
+#, fuzzy
+#~ msgid "Failed to register your new account settings."
+#~ msgstr "Failed registering the account"
+
+#, fuzzy
+#~ msgid "Successfully changed your account password."
+#~ msgstr "Please enter your password:"
+
+#, fuzzy
+#~ msgid "Failed to change your account password."
+#~ msgstr "Please enter your password:"
+
+#, fuzzy
+#~ msgid ""
+#~ "Please enter a new password for this account:\n"
+#~ "%s"
+#~ msgstr ""
+#~ "Please enter a new name for the group:\n"
+#~ "%s"
+
+#~ msgid "No information is available for this contact."
+#~ msgstr "No information is available for this contact."
+
+#~ msgid "Information requested, please wait..."
+#~ msgstr "Information requested, please wait..."
+
+#~ msgid "I would like to add you to my contact list."
+#~ msgstr "I would like to add you to my contact list."
+
+#~ msgid "To summarize:"
+#~ msgstr "To summarize:"
+
+#, fuzzy
+#~ msgid "%d new message"
+#~ msgid_plural "%d new messages"
+#~ msgstr[0] "_New Message..."
+#~ msgstr[1] "_New Message..."
+
+#, fuzzy
+#~ msgid "%d subscription request"
+#~ msgid_plural "%d subscription requests"
+#~ msgstr[0] "Gossip - Subscription Request"
+#~ msgstr[1] "Gossip - Subscription Request"
+
+#, fuzzy
+#~ msgid "%d file transfer request"
+#~ msgid_plural "%d file transfer requests"
+#~ msgstr[0] "Gossip - File Transfer Request"
+#~ msgstr[1] "Gossip - File Transfer Request"
+
+#, fuzzy
+#~ msgid "%d server message"
+#~ msgid_plural "%d server messages"
+#~ msgstr[0] "Could not send message."
+#~ msgstr[1] "Could not send message."
+
+#, fuzzy
+#~ msgid "%d error"
+#~ msgid_plural "%d errors"
+#~ msgstr[0] "Last Error"
+#~ msgstr[1] "Last Error"
+
+#, fuzzy
+#~ msgid "If you quit, you will lose all unread information."
+#~ msgstr "If you quit, you will loose all unread information."
+
+#, fuzzy
+#~ msgid "Edit Account _Details"
+#~ msgstr "Edit your chat room details:"
+
+#~ msgid "Word"
+#~ msgstr "Word"
+
+#~ msgid "New message from %s"
+#~ msgstr "New message from %s"
+
+#, fuzzy
+#~ msgid "Your invitation has been declined"
+#~ msgstr "Your file transfer offer was declined."
+
+#~ msgid "Accept"
+#~ msgstr "Accept"
+
+#, fuzzy
+#~ msgid "Name"
+#~ msgstr "Name:"
+
+#, fuzzy
+#~ msgid "Room"
+#~ msgstr "_Room:"
+
+#, fuzzy
+#~ msgid "Auto Connect"
+#~ msgstr "Stop Connecting"
+
+#, fuzzy
+#~ msgid "Information requested..."
+#~ msgstr "Information requested, please wait..."
+
+#, fuzzy
+#~ msgid "Do you want to remove this contact from your roster?"
+#~ msgstr ""
+#~ "Do you want to remove the contact\n"
+#~ "%s\n"
+#~ "from your contact list?"
+
+#~ msgid ""
+#~ "Please enter a new name for the group:\n"
+#~ "%s"
+#~ msgstr ""
+#~ "Please enter a new name for the group:\n"
+#~ "%s"
+
+#~ msgid "Select"
+#~ msgstr "Select"
+
+#~ msgid "Unsorted"
+#~ msgstr "Unsorted"
+
+#~ msgid "New file transfer request from %s"
+#~ msgstr "New file transfer request from %s"
+
+#~ msgid "File transfer is not supported by both parties."
+#~ msgstr "File transfer is not supported by both parties."
+
+#~ msgid "Your file transfer offer declined."
+#~ msgstr "Your file transfer offer was declined."
+
+#~ msgid "The other user decided not to continue."
+#~ msgstr "The other user decided not to continue."
+
+#, fuzzy
+#~ msgid "Unknown error occurred during file transfer."
+#~ msgstr "Unknown error occured during file transfer."
+
+#~ msgid "%s would like to send you a file."
+#~ msgstr "%s would like to send you a file."
+
+#~ msgid "Someone would like to send you a file."
+#~ msgstr "Someone would like to send you a file."
+
+#~ msgid "Select a file"
+#~ msgstr "Select a file"
+
+#, fuzzy
+#~ msgid "Connecting..."
+#~ msgstr "Connecting"
+
+#, fuzzy
+#~ msgid "Retry connection"
+#~ msgstr "Stop Connecting"
+
+#~ msgid "Invited %s to join this chat conference."
+#~ msgstr "Invited %s to join this chat conference."
+
+#, fuzzy
+#~ msgid "Enter the new topic you want to set for this room:"
+#~ msgstr "What nickname do you want to use for this contact?"
+
+#, fuzzy
+#~ msgid "Topic: %s"
+#~ msgstr "_Topic:"
+
+#~ msgid "Account"
+#~ msgstr "Account"
+
+#, fuzzy
+#~ msgid "Conversation With"
+#~ msgstr "_Conversation"
+
+#~ msgid "List the available accounts"
+#~ msgstr "List the available accounts"
+
+#~ msgid "Which account to connect to on startup"
+#~ msgstr "Which account to connect to on startup"
+
+#~ msgid "ACCOUNT-NAME"
+#~ msgstr "ACCOUNT-NAME"
+
+#~ msgid "No accounts available."
+#~ msgstr "No accounts available."
+
+#~ msgid "Available accounts:"
+#~ msgstr "Available accounts:"
+
+#~ msgid "[default]"
+#~ msgstr "[default]"
+
+#~ msgid "There is no account with the name '%s'."
+#~ msgstr "There is no account with the name '%s'."
+
+#, fuzzy
+#~ msgid "Join"
+#~ msgstr "_Join"
+
+#, fuzzy
+#~ msgid "Create"
+#~ msgstr "Chat"
+
+#, fuzzy
+#~ msgid "Chat Rooms"
+#~ msgstr "Chat Room:"
+
+#, fuzzy
+#~ msgid "Browsing for conference rooms, please wait..."
+#~ msgstr "Trying to join chat room, please wait..."
+
+#, fuzzy
+#~ msgid "Default"
+#~ msgstr "[default]"
+
+#, fuzzy
+#~ msgid "Chat!"
+#~ msgstr "Chat"
+
+#~ msgid "%s wants to be added to your contact list."
+#~ msgstr "%s wants to be added to your contact list."
+
+#~ msgid "Someone wants to be added to your contact list."
+#~ msgstr "Someone wants to be added to your contact list."
+
+#, fuzzy
+#~ msgid "Subscription request"
+#~ msgstr "Gossip - Subscription Request"
+
+#, fuzzy
+#~ msgid "Contact Information"
+#~ msgstr "Contact _Information"
+
+#~ msgid "Suggestions for the word"
+#~ msgstr "Suggestions for the word"
+
+#~ msgid "New subscription request from %s"
+#~ msgstr "New subscription request from %s"
+
+#~ msgid "Do you want to add this person to your contact list?"
+#~ msgstr "Do you want to add this person to your contact list?"
+
+#~ msgid "Do you want to add %s to your contact list?"
+#~ msgstr "Do you want to add %s to your contact list?"
+
+#, fuzzy
+#~ msgid "Please enter your %s account password"
+#~ msgstr "Please enter your password:"
+
+#~ msgid "Remember Password?"
+#~ msgstr "Remember Password?"
+
+#~ msgid "Could not display the help contents."
+#~ msgstr "Could not display the help contents."
+
+#, fuzzy
+#~ msgid "Select Your Avatar Image"
+#~ msgstr "Select another and try again"
+
+#~ msgid "The server does not seem to be responding."
+#~ msgstr "The server does not seem to be responding."
+
+#~ msgid "Try again later."
+#~ msgstr "Try again later."
+
+#, fuzzy
+#~ msgid "Change"
+#~ msgstr "Chat"
+
+#~ msgid "Contact goes offline"
+#~ msgstr "Contact goes offline"
+
+#~ msgid "Contact goes online"
+#~ msgstr "Contact goes online"
+
+#~ msgid "Contact ID:"
+#~ msgstr "Contact ID:"
+
+#~ msgid "Do you want to accept this file?"
+#~ msgstr "Do you want to accept this file?"
+
+#, fuzzy
+#~ msgid "File Transfer Request"
+#~ msgstr "Gossip - File Transfer Request"
+
+#~ msgid "File name:"
+#~ msgstr "File name:"
+
+#~ msgid "File size:"
+#~ msgstr "File size:"
+
+#, fuzzy
+#~ msgid "Not supported yet"
+#~ msgstr "Not supported yet."
+
+#~ msgid "This person wishes to send you this file:"
+#~ msgstr "This person wishes to send you this file:"
+
+#~ msgid "Web site:"
+#~ msgstr "Web site:"
+
+#~ msgid "_Accept"
+#~ msgstr "_Accept"
+
+#~ msgid "_Deny"
+#~ msgstr "_Deny"
+
+#, fuzzy
+#~ msgid "<b>Topic:</b>"
+#~ msgstr "<b>About</b>"
+
+#~ msgid "Account:"
+#~ msgstr "Account:"
+
+#, fuzzy
+#~ msgid "Browse:"
+#~ msgstr "Faroese"
+
+#, fuzzy
+#~ msgid "Edit Favorite Room"
+#~ msgstr "Gossip - Edit Chat Room"
+
+#, fuzzy
+#~ msgid "Group Chat"
+#~ msgstr "Gossip - Chat"
+
+#, fuzzy
+#~ msgid "Join New"
+#~ msgstr "_Join"
+
+#, fuzzy
+#~ msgid "Join room on start_up"
+#~ msgstr "Join Room on Start_up"
+
+#~ msgid "N_ame:"
+#~ msgstr "N_ame:"
+
+#~ msgid "S_erver:"
+#~ msgstr "S_erver:"
+
+#~ msgid "_Nickname:"
+#~ msgstr "_Nickname:"
+
+#~ msgid "_Room:"
+#~ msgstr "_Room:"
+
+#~ msgid "-"
+#~ msgstr "-"
+
+#~ msgid "<b>About</b>"
+#~ msgstr "<b>About</b>"
+
+#~ msgid "<b>Client Information</b>"
+#~ msgstr "<b>Client Information</b>"
+
+#, fuzzy
+#~ msgid "<b>Groups</b>"
+#~ msgstr "<b>About</b>"
+
+#, fuzzy
+#~ msgid "<b>Name</b>"
+#~ msgstr "<b>Languages</b>"
+
+#~ msgid "<b>Personal Details</b>"
+#~ msgstr "<b>Personal Details</b>"
+
+#, fuzzy
+#~ msgid "<b>Subscription</b>"
+#~ msgstr "Connection"
+
+#~ msgid "<span size=\"smaller\">Example: Mikael or user@server.org</span>"
+#~ msgstr "<span size=\"smaller\">Example: Mikael or user@server.org</span>"
+
+#, fuzzy
+#~ msgid "Accou_nt:"
+#~ msgstr "Account:"
+
+#, fuzzy
+#~ msgid "Add Contact"
+#~ msgstr "_Add Contact..."
+
+#, fuzzy
+#~ msgid "Alia_s:"
+#~ msgstr "Alias:"
+
+#~ msgid "Ch_at"
+#~ msgstr "Ch_at"
+
+#~ msgid "Client:"
+#~ msgstr "Client:"
+
+#, fuzzy
+#~ msgid "Con_tact:"
+#~ msgstr "_Add Contact..."
+
+#, fuzzy
+#~ msgid "Connect on S_tartup"
+#~ msgstr "Connect on Start_up"
+
+#, fuzzy
+#~ msgid "Contacts"
+#~ msgstr "_Add Contact..."
+
+#~ msgid "Country:"
+#~ msgstr "Country:"
+
+#~ msgid "Decide _Later"
+#~ msgstr "Decide _Later"
+
+#, fuzzy
+#~ msgid "Edit Contact"
+#~ msgstr "_Add Contact..."
+
+#, fuzzy
+#~ msgid "Edit Groups"
+#~ msgstr "/_Edit Groups"
+
+#~ msgid "Email:"
+#~ msgstr "Email:"
+
+#~ msgid "ID:"
+#~ msgstr "ID:"
+
+#~ msgid ""
+#~ "If you chose to decide later you will be asked the next time you log on."
+#~ msgstr ""
+#~ "If you chose to decide later you will be asked the next time you log on."
+
+#~ msgid "Name:"
+#~ msgstr "Name:"
+
+#~ msgid "OS:"
+#~ msgstr "OS:"
+
+#, fuzzy
+#~ msgid "Personal Details"
+#~ msgstr "Personal Details Saved!"
+
+#, fuzzy
+#~ msgid "R_egister"
+#~ msgstr "Registration Required"
+
+#, fuzzy
+#~ msgid "Search"
+#~ msgstr "_Search..."
+
+#, fuzzy
+#~ msgid "Spell Checker"
+#~ msgstr "Spell Checking"
+
+#, fuzzy
+#~ msgid "Subscription Request"
+#~ msgstr "Gossip - Subscription Request"
+
+#~ msgid "Suggestions for the word:"
+#~ msgstr "Suggestions for the word:"
+
+#, fuzzy
+#~ msgid ""
+#~ "This acts as a filter to the contact list below. You can use segments of "
+#~ "contact's name or ID, for example, \"jabber.org\" will list everyone "
+#~ "using that server"
+#~ msgstr ""
+#~ "This acts as a filter of the contact list below. You can use segments of "
+#~ "contact's name or ID; for example, \"jabber.org\" will list everyone "
+#~ "using that server. "
+
+#, fuzzy
+#~ msgid "This is the name that will be used on your roster for this contact"
+#~ msgstr "This is the name that will be used on your roster for this contact."
+
+#, fuzzy
+#~ msgid "This name will be used to identify you in chat windows"
+#~ msgstr "This name will be used to identify you in chat windows."
+
+#, fuzzy
+#~ msgid ""
+#~ "This name will be used to identify you when new contacts lookup your "
+#~ "details"
+#~ msgstr "This name will be used to identify you in chat windows."
+
+#~ msgid "Use system pro_xy"
+#~ msgstr "Use system pro_xy"
+
+#~ msgid "Version:"
+#~ msgstr "Version:"
+
+#, fuzzy
+#~ msgid "View Previous Conversations"
+#~ msgstr "_Conversation"
+
+#, fuzzy
+#~ msgid "Which account do you want to use?"
+#~ msgstr "Which username do you want to use?"
+
+#~ msgid "You are not subscribed to this contact."
+#~ msgstr "You are not subscribed to this contact."
+
+#~ msgid "_Connect"
+#~ msgstr "_Connect"
+
+#, fuzzy
+#~ msgid "_Description:"
+#~ msgstr "Description:"
+
+#~ msgid "_Disconnect"
+#~ msgstr "_Disconnect"
+
+#, fuzzy
+#~ msgid "_Email:"
+#~ msgstr "Email:"
+
+#, fuzzy
+#~ msgid ""
+#~ "_Enter the name or contact ID of the person you want to chat to below:"
+#~ msgstr ""
+#~ "Enter the name or contact ID of the person you want to chat with below:"
+
+#, fuzzy
+#~ msgid "_For:"
+#~ msgstr "Por_t:"
+
+#, fuzzy
+#~ msgid "_Full Name:"
+#~ msgstr "_Name:"
+
+#, fuzzy
+#~ msgid "_Group:"
+#~ msgstr "Group:"
+
+#, fuzzy
+#~ msgid "_Nick Name:"
+#~ msgstr "_Nickname:"
+
+#, fuzzy
+#~ msgid "_Password:"
+#~ msgstr "_Password:"
+
+#, fuzzy
+#~ msgid "_Quit Message:"
+#~ msgstr "_New Message..."
+
+#~ msgid "_Subscribe"
+#~ msgstr "_Subscribe"
+
+#, fuzzy
+#~ msgid "_Web site:"
+#~ msgstr "Web site:"
+
+#~ msgid "Preset status messages"
+#~ msgstr "Preset status messages"
+
+#~ msgid "Preset status messages."
+#~ msgstr "Preset status messages."
+
+#~ msgid "Connecting"
+#~ msgstr "Connecting"
+
+#~ msgid "Perhaps you are trying to connect to the wrong port?"
+#~ msgstr "Perhaps you are trying to connect to the wrong port?"
+
+#~ msgid "Perhaps the service is not currently running?"
+#~ msgstr "Perhaps the service is not currently running?"
+
+#~ msgid "Check your connection details."
+#~ msgstr "Check your connection details."
+
+#~ msgid "Perhaps the server is not running this service."
+#~ msgstr "Perhaps the server is not running this service."
+
+#~ msgid "Check your username and password are correct."
+#~ msgstr "Ensure that your username and password are correct."
+
+#~ msgid "%s will be added to your contact list."
+#~ msgstr "%s will be added to your contact list."
+
+#~ msgid "%s ID of new contact:"
+#~ msgstr "%s ID of new contact:"
+
+#~ msgid "Example: %s"
+#~ msgstr "Example: %s"
+
+#~ msgid "You have no Instant Messaging accounts configured!"
+#~ msgstr "You have no Instant Messaging accounts configured!"
+
+#~ msgid ""
+#~ "Next you will be presented with the Account Information dialog to set "
+#~ "your details up."
+#~ msgstr ""
+#~ "Next you will be presented with the Account Information dialogue to set "
+#~ "up your details."
+
+#~ msgid ""
+#~ "Please enter your invitation message to:\n"
+#~ "%s"
+#~ msgstr ""
+#~ "Please enter your invitation message to:\n"
+#~ "%s"
+
+#, fuzzy
+#~ msgid "Favourite"
+#~ msgstr "_Add to Favourites"
+
+#~ msgid "Contact Information for %s"
+#~ msgstr "Contact Information for %s"
+
+#, fuzzy
+#~ msgid "/Contact Infor_mation"
+#~ msgstr "/Contact _Information"
+
+#~ msgid "/Re_name Contact"
+#~ msgstr "/Re_name Contact"
+
+#~ msgid "/_Edit Groups"
+#~ msgstr "/_Edit Groups"
+
+#, fuzzy
+#~ msgid "/_View Previous Conversations"
+#~ msgstr "_Conversation"
+
+#~ msgid ""
+#~ "Please enter a new nickname for the contact\n"
+#~ "%s"
+#~ msgstr ""
+#~ "Please enter a new nickname for the contact\n"
+#~ "%s"
+
+#~ msgid "Edit groups for %s"
+#~ msgstr "Edit groups for %s"
+
+#~ msgid "Conversation Log"
+#~ msgstr "Conversation Log"
+
+#~ msgid "Registering account"
+#~ msgstr "Registering account"
+
+#, fuzzy
+#~ msgid "Respond"
+#~ msgstr "Reason:"
+
+#, fuzzy
+#~ msgid "Add to _favourites"
+#~ msgstr "_Add to Favourites"
+
+#, fuzzy
+#~ msgid ""
+#~ "Customize your own nickname, the server and chatroom which you wish to "
+#~ "join."
+#~ msgstr ""
+#~ "Pick a saved chat room or customize your own nickname, server and chat "
+#~ "room to join."
+
+#, fuzzy
+#~ msgid "Na_me:"
+#~ msgstr "Name:"
+
+#, fuzzy
+#~ msgid "New Chat Room"
+#~ msgstr "Chat Room:"
+
+#, fuzzy
+#~ msgid ""
+#~ "Pick a saved chat room from the presets available below and click Join to "
+#~ "start chatting."
+#~ msgstr ""
+#~ "Pick a saved chat room or customize your own nickname, server and chat "
+#~ "room to join."
+
+#~ msgid " "
+#~ msgstr " "
+
+#~ msgid "<b>Information requested, please wait...</b>"
+#~ msgstr "<b>Information requested, please wait...</b>"
+
+#, fuzzy
+#~ msgid "<span size=\"smaller\">Example:</span>"
+#~ msgstr "<span size=\"smaller\">Example: user@jabber.org</span>"
+
+#~ msgid "Account Name"
+#~ msgstr "Account Name"
+
+#, fuzzy
+#~ msgid "Chat Rooms..."
+#~ msgstr "Chat Room:"
+
+#, fuzzy
+#~ msgid "Connection Details"
+#~ msgstr "Connection"
+
+#~ msgid "Do you already have an account set up on a server?"
+#~ msgstr "Do you already have an account set up on a server?"
+
+#, fuzzy
+#~ msgid "Enter the port used in the connection for this account"
+#~ msgstr ""
+#~ "Please enter a new nickname for the contact\n"
+#~ "%s"
+
+#, fuzzy
+#~ msgid "Enter the server used in the connection for this account"
+#~ msgstr ""
+#~ "Please enter a new nickname for the contact\n"
+#~ "%s"
+
+#~ msgid "Enter the user's contact ID:"
+#~ msgstr "Enter the user's contact ID:"
+
+#~ msgid "Finished"
+#~ msgstr "Finished"
+
+#~ msgid "Gossip"
+#~ msgstr "Gossip"
+
+#~ msgid ""
+#~ "Gossip is a modern client for the Jabber Instant Messaging system.\n"
+#~ "\n"
+#~ "This assistant will help you configure Gossip and connect you to your "
+#~ "favorite Jabber server.\n"
+#~ "\n"
+#~ "To get started, just click \"Forward\"."
+#~ msgstr ""
+#~ "Gossip is a modern client for the Jabber Instant Messaging system.\n"
+#~ "\n"
+#~ "This assistant will help you configure Gossip and connect you to your "
+#~ "favourite Jabber server.\n"
+#~ "\n"
+#~ "To get started, just click \"Forward\"."
+
+#~ msgid ""
+#~ "In order to subscribe to presence notifications from the user, a request "
+#~ "will be sent. Until this request is approved, the user will always be "
+#~ "shown as \"Offline\" in your contact list."
+#~ msgstr ""
+#~ "In order to subscribe to presence notifications from the user, a request "
+#~ "will be sent. Until this request is approved, the user will always be "
+#~ "shown as \"Offline\" in your contact list."
+
+#~ msgid "In which group do you want to place this contact?"
+#~ msgstr "In which group do you want to place this contact?"
+
+#~ msgid "Jabber ID:"
+#~ msgstr "Jabber ID:"
+
+#~ msgid "Nickname:"
+#~ msgstr "Nickname:"
+
+#, fuzzy
+#~ msgid "Port:"
+#~ msgstr "Por_t:"
+
+#, fuzzy
+#~ msgid "Press Subscribe to request to receive their status"
+#~ msgstr "Press Subscribe to request to receive their status."
+
+#, fuzzy
+#~ msgid "Registering Account"
+#~ msgstr "Registering account"
+
+#, fuzzy
+#~ msgid "Resource:"
+#~ msgstr "R_esource:"
+
+#~ msgid "Sending request"
+#~ msgstr "Sending request"
+
+#, fuzzy
+#~ msgid "Server:"
+#~ msgstr "_Server:"
+
+#~ msgid "Web Site:"
+#~ msgstr "Web Site:"
+
+#~ msgid "Welcome to Gossip"
+#~ msgstr "Welcome to Gossip"
+
+#~ msgid "What instant messaging system does the contact use?"
+#~ msgstr "Which instant messaging system does the contact use?"
+
+#~ msgid "What is your name?"
+#~ msgstr "What is your name?"
+
+#, fuzzy
+#~ msgid "What password do you want to use?"
+#~ msgstr "What server do you want to use?"
+
+#~ msgid "What username do you use?"
+#~ msgstr "What username do you use?"
+
+#~ msgid "What username do you want to use?"
+#~ msgstr "Which username do you want to use?"
+
+#~ msgid "Which account do you want to add this contact to?"
+#~ msgstr "To which account do you want to add this contact?"
+
+#~ msgid ""
+#~ "You can change your account settings later by selecting the Edit-"
+#~ ">Accounts menu item."
+#~ msgstr ""
+#~ "You can change your account settings later by selecting the Edit-"
+#~ ">Accounts menu item."
+
+#~ msgid "Your Account"
+#~ msgstr "Your Account"
+
+#~ msgid "Your Identity"
+#~ msgstr "Your Identity"
+
+#~ msgid "Your new account has now been set up."
+#~ msgstr "Your new account has now been set up."
+
+#, fuzzy
+#~ msgid "_Group Chat"
+#~ msgstr "Gossip - Chat"
+
+#~ msgid "_No"
+#~ msgstr "_No"
+
+#~ msgid "_Search..."
+#~ msgstr "_Search..."
+
+#~ msgid "_Yes"
+#~ msgstr "_Yes"
+
+#~ msgid "Be silent when away"
+#~ msgstr "Be silent when away"
+
+#~ msgid "Be silent when busy"
+#~ msgstr "Be silent when busy"
+
+#~ msgid "Height of main window"
+#~ msgstr "Height of main window"
+
+#~ msgid "The X position of the main window."
+#~ msgstr "The X position of the main window."
+
+#~ msgid "The Y position of the main window."
+#~ msgstr "The Y position of the main window."
+
+#~ msgid "The width of the main window."
+#~ msgstr "The width of the main window."
+
+#~ msgid "Whether spell checking should be turned on."
+#~ msgstr "Whether spell checking should be enabled."
+
+#~ msgid "Width of the main window"
+#~ msgstr "Width of the main window"
+
+#~ msgid "X position of main window"
+#~ msgstr "X position of main window"
+
+#~ msgid "Y position of main window"
+#~ msgstr "Y position of main window"
+
+#~ msgid "Gossip, Instant Messaging Client"
+#~ msgstr "Gossip, Instant Messaging Client"
+
+#, fuzzy
+#~ msgid "Close this chat window"
+#~ msgstr "_Invite to Chat Room"
+
+#~ msgid "Requested Information"
+#~ msgstr "Requested Information"
+
+#~ msgid "/_Invite to Chat Conference"
+#~ msgstr "/_Invite to Chat Conference"
+
+#, fuzzy
+#~ msgid "Send Message"
+#~ msgstr "_New Message..."
+
+#, fuzzy
+#~ msgid "%s has gone offline"
+#~ msgstr "%s went offline"
+
+#~ msgid "Contact _Information"
+#~ msgstr "Contact _Information"
+
+#~ msgid "<b>Sound</b>"
+#~ msgstr "<b>Sound</b>"
+
+#~ msgid "Check spelling while I _type"
+#~ msgstr "Check spelling while I _type"
+
+#~ msgid "Gossip - Accounts"
+#~ msgstr "Gossip - Accounts"
+
+#, fuzzy
+#~ msgid "Join _Group Chat..."
+#~ msgstr "_Join Group Chat..."
+
+#~ msgid "Por_t:"
+#~ msgstr "Por_t:"
+
+#~ msgid "Requested information."
+#~ msgstr "Requested information."
+
+#~ msgid "Requesting contact information, please wait..."
+#~ msgstr "Requesting contact information, please wait..."
+
+#~ msgid "Could not open connection"
+#~ msgstr "Could not open connection"
+
+#~ msgid "Could not find the server you wanted to use"
+#~ msgstr "Could not find the server you wanted to use"
+
+#~ msgid "Connection to the server failed."
+#~ msgstr "Connection to the server failed."
+
+#~ msgid "Authentication failed"
+#~ msgstr "Authentication failed"
+
+#~ msgid "Written by:"
+#~ msgstr "Written by:"
+
+#~ msgid "Artwork by:"
+#~ msgstr "Artwork by:"
+
+#~ msgid "Translated by:"
+#~ msgstr "Translated by:"
+
+#~ msgid "Account ID"
+#~ msgstr "Account ID"
+
+#~ msgid "Last Error"
+#~ msgstr "Last Error"
+
+#~ msgid "%sChat - %s"
+#~ msgstr "%sChat - %s"
+
+#~ msgid "/Show _Log"
+#~ msgstr "/Show _Log"
+
+#~ msgid "Afrikaans"
+#~ msgstr "Afrikaans"
+
+#~ msgid "Amharic"
+#~ msgstr "Amharic"
+
+#~ msgid "Arabic"
+#~ msgstr "Arabic"
+
+#~ msgid "Azerbaijani"
+#~ msgstr "Azerbaijani"
+
+#~ msgid "Belarusian"
+#~ msgstr "Belarusian"
+
+#~ msgid "Bulgarian"
+#~ msgstr "Bulgarian"
+
+#~ msgid "Bengali"
+#~ msgstr "Bengali"
+
+#~ msgid "Breton"
+#~ msgstr "Breton"
+
+#~ msgid "Bosnian"
+#~ msgstr "Bosnian"
+
+#~ msgid "Catalan"
+#~ msgstr "Catalan"
+
+#~ msgid "Czech"
+#~ msgstr "Czech"
+
+#~ msgid "Welsh"
+#~ msgstr "Welsh"
+
+#~ msgid "Danish"
+#~ msgstr "Danish"
+
+#~ msgid "German"
+#~ msgstr "German"
+
+#~ msgid "German (Austria)"
+#~ msgstr "German (Austria)"
+
+#~ msgid "German (Germany)"
+#~ msgstr "German (Germany)"
+
+#~ msgid "German (Swiss)"
+#~ msgstr "German (Swiss)"
+
+#~ msgid "Greek"
+#~ msgstr "Greek"
+
+#~ msgid "English"
+#~ msgstr "English"
+
+#~ msgid "English (Canadian)"
+#~ msgstr "English (Canadian)"
+
+#~ msgid "English (British)"
+#~ msgstr "English (British)"
+
+#~ msgid "English (American)"
+#~ msgstr "English (American)"
+
+#~ msgid "Esperanto"
+#~ msgstr "Esperanto"
+
+#~ msgid "Spanish"
+#~ msgstr "Spanish"
+
+#~ msgid "Estonian"
+#~ msgstr "Estonian"
+
+#~ msgid "Persian"
+#~ msgstr "Persian"
+
+#~ msgid "Finnish"
+#~ msgstr "Finnish"
+
+#~ msgid "French"
+#~ msgstr "French"
+
+#~ msgid "French (France)"
+#~ msgstr "French (France)"
+
+#~ msgid "French (Swiss)"
+#~ msgstr "French (Swiss)"
+
+#~ msgid "Irish Gaelic"
+#~ msgstr "Irish Gaelic"
+
+#~ msgid "Scots Gaelic"
+#~ msgstr "Scots Gaelic"
+
+#~ msgid "Gujarati"
+#~ msgstr "Gujarati"
+
+#~ msgid "Manx Gaelic"
+#~ msgstr "Manx Gaelic"
+
+#~ msgid "Hebrew"
+#~ msgstr "Hebrew"
+
+#~ msgid "Hindi"
+#~ msgstr "Hindi"
+
+#~ msgid "Croatian"
+#~ msgstr "Croatian"
+
+#~ msgid "Hungarian"
+#~ msgstr "Hungarian"
+
+#~ msgid "Indonesian"
+#~ msgstr "Indonesian"
+
+#~ msgid "Icelandic"
+#~ msgstr "Icelandic"
+
+#~ msgid "Italian"
+#~ msgstr "Italian"
+
+#~ msgid "Japanese"
+#~ msgstr "Japanese"
+
+#~ msgid "Georgian"
+#~ msgstr "Georgian"
+
+#~ msgid "Kannada"
+#~ msgstr "Kannada"
+
+#~ msgid "Korean"
+#~ msgstr "Korean"
+
+#~ msgid "Kurdish"
+#~ msgstr "Kurdish"
+
+#~ msgid "Cornish"
+#~ msgstr "Cornish"
+
+#~ msgid "Limburgish"
+#~ msgstr "Limburgish"
+
+#~ msgid "Lithuanian"
+#~ msgstr "Lithuanian"
+
+#~ msgid "Latvian"
+#~ msgstr "Latvian"
+
+#~ msgid "Maori"
+#~ msgstr "Maori"
+
+#~ msgid "Macedonian"
+#~ msgstr "Macedonian"
+
+#~ msgid "Malayalam"
+#~ msgstr "Malayalam"
+
+#~ msgid "Mongolian"
+#~ msgstr "Mongolian"
+
+#~ msgid "Marathi"
+#~ msgstr "Marathi"
+
+#~ msgid "Malay"
+#~ msgstr "Malay"
+
+#~ msgid "Norwegian (Bokmal)"
+#~ msgstr "Norwegian (Bokmal)"
+
+#~ msgid "Nepali"
+#~ msgstr "Nepali"
+
+#~ msgid "Dutch"
+#~ msgstr "Dutch"
+
+#~ msgid "Norwegian"
+#~ msgstr "Norwegian"
+
+#~ msgid "Norwegian (Nynorsk)"
+#~ msgstr "Norwegian (Nynorsk)"
+
+#~ msgid "Norwegian (Nyorsk)"
+#~ msgstr "Norwegian (Nyorsk)"
+
+#~ msgid "Oriya"
+#~ msgstr "Oriya"
+
+#~ msgid "Punjabi"
+#~ msgstr "Punjabi"
+
+#~ msgid "Polish"
+#~ msgstr "Polish"
+
+#~ msgid "Portuguese"
+#~ msgstr "Portuguese"
+
+#~ msgid "Portuguese (Portugal)"
+#~ msgstr "Portuguese (Portugal)"
+
+#~ msgid "Portuguese (Brazil)"
+#~ msgstr "Portuguese (Brazil)"
+
+#~ msgid "Romanian"
+#~ msgstr "Romanian"
+
+#~ msgid "Russian"
+#~ msgstr "Russian"
+
+#~ msgid "Kinyarwanda"
+#~ msgstr "Kinyarwanda"
+
+#~ msgid "Slovak"
+#~ msgstr "Slovak"
+
+#~ msgid "Slovenian"
+#~ msgstr "Slovenian"
+
+#~ msgid "Albanian"
+#~ msgstr "Albanian"
+
+#~ msgid "Serbian"
+#~ msgstr "Serbian"
+
+#~ msgid "Swedish"
+#~ msgstr "Swedish"
+
+#~ msgid "Tamil"
+#~ msgstr "Tamil"
+
+#~ msgid "Telugu"
+#~ msgstr "Telugu"
+
+#~ msgid "Thai"
+#~ msgstr "Thai"
+
+#~ msgid "Turkmen"
+#~ msgstr "Turkmen"
+
+#~ msgid "Turkish"
+#~ msgstr "Turkish"
+
+#~ msgid "Ukrainian"
+#~ msgstr "Ukrainian"
+
+#~ msgid "Vietnamese"
+#~ msgstr "Vietnamese"
+
+#~ msgid "Wallon"
+#~ msgstr "Wallon"
+
+#~ msgid "Xhosa"
+#~ msgstr "Xhosa"
+
+#~ msgid "Yiddish"
+#~ msgstr "Yiddish"
+
+#~ msgid "Chinese Simplified"
+#~ msgstr "Chinese Simplified"
+
+#~ msgid "Chinese Traditional"
+#~ msgstr "Chinese Traditional"
+
+#~ msgid "View Lo_g"
+#~ msgstr "View Lo_g"
+
+#, fuzzy
+#~ msgid "Gossip - Chat Rooms"
+#~ msgstr "Gossip - Edit Chat Room"
+
+#~ msgid "Gossip - Group Chat"
+#~ msgstr "Gossip - Group Chat"
+
+#, fuzzy
+#~ msgid "Gossip - New Chatroom"
+#~ msgstr "Gossip - Edit Chat Room"
+
+#~ msgid "Gossip - Add contact"
+#~ msgstr "Gossip - Add contact"
+
+#~ msgid "Gossip - Contact Information"
+#~ msgstr "Gossip - Contact Information"
+
+#~ msgid "Gossip - Edit Groups"
+#~ msgstr "Gossip - Edit Groups"
+
+#~ msgid "Gossip - New Account"
+#~ msgstr "Gossip - New Account"
+
+#~ msgid "Gossip - New Message"
+#~ msgstr "Gossip - New Message"
+
+#~ msgid "Gossip - Personal Details"
+#~ msgstr "Gossip - Personal Details"
+
+#~ msgid "Gossip - Preferences"
+#~ msgstr "Gossip - Preferences"
+
+#~ msgid "Gossip - Spell Checker"
+#~ msgstr "Gossip - Spell Checker"
+
+#~ msgid "Gossip - Status Message"
+#~ msgstr "Gossip - Status Message"
+
+#~ msgid "Waiting for server to respond, please wait..."
+#~ msgstr "Waiting for server to respond; please wait..."
+
+#~ msgid "Connection could not be created"
+#~ msgstr "Connection could not be created"
+
+#~ msgid "Redirect"
+#~ msgstr "Redirect"
+
+#~ msgid "Bad Request"
+#~ msgstr "Bad Request"
+
+#~ msgid "Not Authorized"
+#~ msgstr "Not Authorized"
+
+#~ msgid "Payment Required"
+#~ msgstr "Payment Required"
+
+#~ msgid "Forbidden"
+#~ msgstr "Forbidden"
+
+#~ msgid "Not Found"
+#~ msgstr "Not Found"
+
+#~ msgid "Not Allowed"
+#~ msgstr "Not Allowed"
+
+#~ msgid "Not Acceptable"
+#~ msgstr "Not Acceptable"
+
+#~ msgid "Request Timeout"
+#~ msgstr "Request Timeout"
+
+#~ msgid "Conflict"
+#~ msgstr "Conflict"
+
+#~ msgid "Not Implemented"
+#~ msgstr "Not Implemented"
+
+#~ msgid "Remote Server Error"
+#~ msgstr "Remote Server Error"
+
+#~ msgid "Unknown error."
+#~ msgstr "Unknown error."
+
+#~ msgid "Custom"
+#~ msgstr "Custom"
+
+#~ msgid "The chat room you are trying is not responding."
+#~ msgstr "The chat room you are trying is not responding."
+
+#~ msgid "Check your details and try again."
+#~ msgstr "Check your details and try again."
+
+#~ msgid "This is currently unsupported."
+#~ msgstr "This is currently unsupported."
+
+#~ msgid "Perhaps the conference server is busy, try again later."
+#~ msgstr "Perhaps the conference server is busy; try again later."
+
+#~ msgid "Check the server host name is correct and is available."
+#~ msgstr "Check the server host name is correct and is available."
+
+#~ msgid "Gossip will now try to use your account:"
+#~ msgstr "Gossip will now try to use your account:"
+
+#~ msgid "Gossip will now try to register the account:"
+#~ msgstr "Gossip will now try to register the account:"
+
+#~ msgid "Cus_tomize"
+#~ msgstr "Cus_tomize"
+
+#~ msgid "Edit or Delete this favorite."
+#~ msgstr "Edit or Delete this favourite."
+
+#~ msgid "Gossip - Join Chat Room "
+#~ msgstr "Gossip - Join Chat Room "
+
+#~ msgid "Choose a Server"
+#~ msgstr "Choose a Server"
+
+#~ msgid "On what server do you have an account?"
+#~ msgstr "On what server do you have an account?"
diff --git a/gnome-2-22/po/en_GB.po b/gnome-2-22/po/en_GB.po
new file mode 100644
index 000000000..8bafc2afc
--- /dev/null
+++ b/gnome-2-22/po/en_GB.po
@@ -0,0 +1,1977 @@
+# Copyright (C) 2006 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same licence as the empathy package.
+# David Lodge <dave@cirt.net>, 2007
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: empathy\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-08 10:19+0000\n"
+"PO-Revision-Date: 2008-03-08 10:18+0000\n"
+"Last-Translator: David Lodge <dave@cirt.net>\n"
+"Language-Team: en_GB <en@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: ../data/empathy.desktop.in.in.h:1
+msgid "Empathy Instant Messenger"
+msgstr "Empathy Instant Messenger"
+
+#: ../data/empathy.desktop.in.in.h:2
+msgid "Send and receive instant messages"
+msgstr "Send and receive instant messages"
+
+#: ../data/empathy.schemas.in.h:1
+msgid "Always open a separate chat window for new chats."
+msgstr "Always open a separate chat window for new chats."
+
+#: ../data/empathy.schemas.in.h:2
+msgid ""
+"Character to add after nickname when using nick completion (tab) in group "
+"chat."
+msgstr ""
+"Character to add after nickname when using nick completion (tab) in group "
+"chat."
+
+#: ../data/empathy.schemas.in.h:3
+msgid "Chat window theme"
+msgstr "Chat window theme"
+
+#: ../data/empathy.schemas.in.h:4
+msgid "Checks if Empathy should autoconnect on startup"
+msgstr "Checks if Empathy should auto-connect on startup"
+
+#: ../data/empathy.schemas.in.h:5
+msgid "Checks if NetworkManager should be used"
+msgstr "Checks if NetworkManager should be used"
+
+#: ../data/empathy.schemas.in.h:6
+msgid "Checks if Salut account is created"
+msgstr "Checks if Salut account is created"
+
+#: ../data/empathy.schemas.in.h:7
+msgid ""
+"Comma separated list of spell checker languages to use (e.g. en, fr, nl)."
+msgstr ""
+"Comma separated list of spell checker languages to use (e.g. en, fr, nl)."
+
+#: ../data/empathy.schemas.in.h:8
+msgid "Compact contact list"
+msgstr "Compact contact list"
+
+#: ../data/empathy.schemas.in.h:9
+msgid "Contact list sort criterium"
+msgstr "Contact list sort criterium"
+
+#: ../data/empathy.schemas.in.h:10
+msgid "Default directory to select an avatar image from"
+msgstr "Default directory to select an avatar image from"
+
+#: ../data/empathy.schemas.in.h:11
+msgid "Enable popup when contact is available"
+msgstr "Enable popup when contact is available"
+
+#: ../data/empathy.schemas.in.h:12
+msgid "Enable sound when away"
+msgstr "Enable sound when away"
+
+#: ../data/empathy.schemas.in.h:13
+msgid "Enable sound when busy"
+msgstr "Enable sound when busy"
+
+#: ../data/empathy.schemas.in.h:14
+msgid "Enable spell checker"
+msgstr "Enable spell checker"
+
+#: ../data/empathy.schemas.in.h:15
+msgid "Hide main window"
+msgstr "Hide main window"
+
+#: ../data/empathy.schemas.in.h:16
+msgid "Hide the main window."
+msgstr "Hide the main window."
+
+#: ../data/empathy.schemas.in.h:17
+msgid "Nick completed character"
+msgstr "Nick completed character"
+
+#: ../data/empathy.schemas.in.h:18
+msgid "Open new chats in separate windows"
+msgstr "Open new chats in separate windows"
+
+#: ../data/empathy.schemas.in.h:19
+msgid "Show avatars"
+msgstr "Show avatars"
+
+#: ../data/empathy.schemas.in.h:20
+msgid "Show hint about closing the main window"
+msgstr "Show hint about closing the main window"
+
+#: ../data/empathy.schemas.in.h:21
+msgid "Show offline contacts"
+msgstr "Show offline contacts"
+
+#: ../data/empathy.schemas.in.h:22
+msgid "Spell checking languages"
+msgstr "Spell checking languages"
+
+#: ../data/empathy.schemas.in.h:23
+msgid "The last directory that an avatar image was chosen from."
+msgstr "The last directory that an avatar image was chosen from."
+
+#: ../data/empathy.schemas.in.h:24
+msgid "The theme that is used to display the conversation in chat windows."
+msgstr "The theme that is used to display the conversation in chat windows."
+
+#: ../data/empathy.schemas.in.h:25
+msgid "Use graphical smileys"
+msgstr "Use graphical smileys"
+
+#: ../data/empathy.schemas.in.h:26
+msgid "Use notification sounds"
+msgstr "Use notification sounds"
+
+#: ../data/empathy.schemas.in.h:27
+msgid "Use theme for chat rooms"
+msgstr "Use theme for chat rooms"
+
+#: ../data/empathy.schemas.in.h:28
+msgid ""
+"Whether or not Empathy should automatically login to your accounts on "
+"startup."
+msgstr ""
+"Whether or not Empathy should automatically log in to your accounts on "
+"startup."
+
+#: ../data/empathy.schemas.in.h:29
+msgid ""
+"Whether or not the Salut account has been created on the first empathy run."
+msgstr ""
+"Whether or not the Salut account has been created on the first Empathy run."
+
+#: ../data/empathy.schemas.in.h:30
+msgid ""
+"Whether or not the network manager should be used to automatically "
+"disconnect/reconnect."
+msgstr ""
+"Whether or not the network manager should be used to automatically "
+"disconnect/reconnect."
+
+#: ../data/empathy.schemas.in.h:31
+msgid ""
+"Whether or not to check words typed against the languages you want to check "
+"with."
+msgstr ""
+"Whether or not to check words typed against the languages you want to check "
+"with."
+
+#: ../data/empathy.schemas.in.h:32
+msgid ""
+"Whether or not to convert smileys into graphical images in conversations."
+msgstr ""
+"Whether or not to convert smileys into graphical images in conversations."
+
+#: ../data/empathy.schemas.in.h:33
+msgid "Whether or not to play a sound when messages arrive."
+msgstr "Whether or not to play a sound when messages arrive."
+
+#: ../data/empathy.schemas.in.h:34
+msgid "Whether or not to play sounds when away."
+msgstr "Whether or not to play sounds when away."
+
+#: ../data/empathy.schemas.in.h:35
+msgid "Whether or not to play sounds when busy."
+msgstr "Whether or not to play sounds when busy."
+
+#: ../data/empathy.schemas.in.h:36
+msgid "Whether or not to show a popup when a contact becomes available."
+msgstr "Whether or not to show a popup when a contact becomes available."
+
+#: ../data/empathy.schemas.in.h:37
+msgid ""
+"Whether or not to show avatars for contacts in the contact list and chat "
+"windows."
+msgstr ""
+"Whether or not to show avatars for contacts in the contact list and chat "
+"windows."
+
+#: ../data/empathy.schemas.in.h:38
+msgid "Whether or not to show contacts that are offline in the contact list."
+msgstr "Whether or not to show contacts that are offline in the contact list."
+
+#: ../data/empathy.schemas.in.h:39
+msgid ""
+"Whether or not to show the message dialog about closing the main window with "
+"the 'x' button in the title bar."
+msgstr ""
+"Whether or not to show the message dialogue about closing the main window "
+"with the 'x' button in the title bar."
+
+#: ../data/empathy.schemas.in.h:40
+msgid "Whether to show the contact list in compact mode or not."
+msgstr "Whether to show the contact list in compact mode or not."
+
+#: ../data/empathy.schemas.in.h:41
+msgid "Whether to use the theme for chat rooms or not."
+msgstr "Whether to use the theme for chat rooms or not."
+
+#: ../data/empathy.schemas.in.h:42
+msgid ""
+"Which criterium to use when sorting the contact list. Default is to use sort "
+"by the contact's name with the value \"name\". A value of \"state\" will "
+"sort the contact list by state."
+msgstr ""
+"Which criterium to use when sorting the contact list. Default is to use sort "
+"by the contact's name with the value \"name\". A value of \"state\" will "
+"sort the contact list by state."
+
+#: ../libempathy/empathy-tp-contact-list.c:724 ../src/empathy.c:149
+msgid "People nearby"
+msgstr "People nearby"
+
+#: ../libempathy/empathy-utils.c:541
+msgid "Available"
+msgstr "Available"
+
+#: ../libempathy/empathy-utils.c:543
+msgid "Busy"
+msgstr "Busy"
+
+#: ../libempathy/empathy-utils.c:546
+msgid "Away"
+msgstr "Away"
+
+#: ../libempathy/empathy-utils.c:548
+msgid "Hidden"
+msgstr "Hidden"
+
+#: ../libempathy/empathy-utils.c:551
+msgid "Offline"
+msgstr "Offline"
+
+#: ../libempathy-gtk/empathy-about-dialog.c:63
+msgid ""
+"Empathy is free software; you can redistribute it and/or modify it under the "
+"terms of the GNU General Public License as published by the Free Software "
+"Foundation; either version 2 of the License, or (at your option) any later "
+"version."
+msgstr ""
+"Empathy is free software; you can redistribute it and/or modify it under the "
+"terms of the GNU General Public Licence as published by the Free Software "
+"Foundation; either version 2 of the Licence, or (at your option) any later "
+"version."
+
+#: ../libempathy-gtk/empathy-about-dialog.c:67
+msgid ""
+"Empathy is distributed in the hope that it will be useful, but WITHOUT ANY "
+"WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS "
+"FOR A PARTICULAR PURPOSE. See the GNU General Public License for more "
+"details."
+msgstr ""
+"Empathy is distributed in the hope that it will be useful, but WITHOUT ANY "
+"WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS "
+"FOR A PARTICULAR PURPOSE. See the GNU General Public Licence for more "
+"details."
+
+#: ../libempathy-gtk/empathy-about-dialog.c:71
+msgid ""
+"You should have received a copy of the GNU General Public License along with "
+"Empathy; if not, write to the Free Software Foundation, Inc., 51 Franklin "
+"Street, Fifth Floor, Boston, MA 02110-130159 USA"
+msgstr ""
+"You should have received a copy of the GNU General Public Licence along with "
+"Empathy; if not, write to the Free Software Foundation, Inc., 51 Franklin "
+"Street, Fifth Floor, Boston, MA 02110-130159 USA"
+
+#: ../libempathy-gtk/empathy-about-dialog.c:99
+msgid "An Instant Messaging client for GNOME"
+msgstr "An Instant Messaging client for GNOME"
+
+#: ../libempathy-gtk/empathy-about-dialog.c:105
+msgid "translator-credits"
+msgstr "David Lodge <dave@cirt.net>"
+
+#: ../libempathy-gtk/empathy-account-chooser.c:337
+msgid "All"
+msgstr "All"
+
+#: ../libempathy-gtk/empathy-account-widget.c:276
+#: ../libempathy-gtk/empathy-account-widget.c:321
+#, c-format
+msgid "%s:"
+msgstr "%s:"
+
+#: ../libempathy-gtk/empathy-account-widget-icq.glade.h:1
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:1
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:1
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:1
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:1
+msgid "<b>Advanced</b>"
+msgstr "<b>Advanced</b>"
+
+#: ../libempathy-gtk/empathy-account-widget-icq.glade.h:2
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:3
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:2
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:2
+msgid "Forget password and clear the entry."
+msgstr "Forget password and clear the entry."
+
+#: ../libempathy-gtk/empathy-account-widget-icq.glade.h:3
+msgid "ICQ _UIN:"
+msgstr "ICQ _UIN:"
+
+#: ../libempathy-gtk/empathy-account-widget-icq.glade.h:4
+msgid "ICQ account settings"
+msgstr "ICQ account settings"
+
+#: ../libempathy-gtk/empathy-account-widget-icq.glade.h:5
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:5
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:4
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:5
+msgid "Pass_word:"
+msgstr "Pass_word:"
+
+#: ../libempathy-gtk/empathy-account-widget-icq.glade.h:6
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:8
+msgid "_Charset:"
+msgstr "_Charset:"
+
+#: ../libempathy-gtk/empathy-account-widget-icq.glade.h:7
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:11
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:5
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:10
+msgid "_Port:"
+msgstr "_Port:"
+
+#: ../libempathy-gtk/empathy-account-widget-icq.glade.h:8
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:12
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:6
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:12
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:10
+msgid "_Server:"
+msgstr "_Server:"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.c:246
+msgid "New Network"
+msgstr "New Network"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:1
+msgid "<b>Network</b>"
+msgstr "<b>Network</b>"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:2
+msgid "<b>Servers</b>"
+msgstr "<b>Servers</b>"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:3
+msgid "Charset:"
+msgstr "Charset:"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:4
+msgid "Create a new IRC network"
+msgstr "Create a new IRC network"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:5
+msgid "Edit the selected IRC network"
+msgstr "Edit the selected IRC network"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:6
+msgid "Network"
+msgstr "Network"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:7
+msgid "Network:"
+msgstr "Network:"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:8
+msgid "Nickname:"
+msgstr "Nickname:"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:9
+msgid "Password:"
+msgstr "Password:"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:10
+msgid "Quit message:"
+msgstr "Quit message:"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:11
+msgid "Real name:"
+msgstr "Real name:"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:12
+msgid "Remove the selected IRC network"
+msgstr "Remove the selected IRC network"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:13
+msgid "irc account settings"
+msgstr "irc account settings"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:2
+msgid "<b>Override server settings</b>"
+msgstr "<b>Override server settings</b>"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:4
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:3
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:4
+msgid "Login I_D:"
+msgstr "Login I_D:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:6
+msgid "Pri_ority:"
+msgstr "Pri_ority:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:7
+msgid "Reso_urce:"
+msgstr "Reso_urce:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:8
+msgid "Use old SS_L"
+msgstr "Use old SS_L"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:9
+msgid "_Encryption required (TLS/SSL)"
+msgstr "_Encryption required (TLS/SSL)"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:10
+msgid "_Ignore SSL certificate errors"
+msgstr "_Ignore SSL certificate errors"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:13
+msgid "jabber account settings"
+msgstr "jabber account settings"
+
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:7
+msgid "msn account settings"
+msgstr "msn account settings"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:2
+msgid "_E-mail:"
+msgstr "_E-mail:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:3
+msgid "_First Name: "
+msgstr "_First Name: "
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:4
+msgid "_Jabber ID:"
+msgstr "_Jabber ID:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:5
+msgid "_Last Name:"
+msgstr "_Last Name:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:6
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:8
+msgid "_Nickname:"
+msgstr "_Nickname:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:7
+msgid "_Published Name:"
+msgstr "_Published Name:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:8
+msgid "salut account settings"
+msgstr "Salut account settings"
+
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:3
+msgid "J_apan server:"
+msgstr "J_apan server:"
+
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:6
+msgid "Use _Yahoo Japan"
+msgstr "Use _Yahoo Japan"
+
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:7
+msgid "Yahoo! account settings"
+msgstr "Yahoo! account settings"
+
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:9
+msgid "_Ignore conference and chatroom invitations"
+msgstr "_Ignore conference and chat room invitations"
+
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:11
+msgid "_Room List locale:"
+msgstr "_Room List locale:"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:225
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to start configuring."
+msgstr ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to start configuring."
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:229
+msgid ""
+"To add a new account, you first have to install a backend for each protocol "
+"you want to use."
+msgstr ""
+"To add a new account, you first have to install a backend for each protocol "
+"you want to use."
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:236
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:2
+msgid "<b>No Account Selected</b>"
+msgstr "<b>No Account Selected</b>"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:237
+msgid ""
+"\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want "
+"to configure in the list on the left."
+msgstr ""
+"\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want "
+"to configure in the list on the left."
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:243
+msgid "<b>No Accounts Configured</b>"
+msgstr "<b>No Accounts Configured</b>"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:411
+msgid "Enabled"
+msgstr "Enabled"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:421
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:4
+msgid "Accounts"
+msgstr "Accounts"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:904
+#, c-format
+msgid ""
+"You are about to remove your %s account!\n"
+"Are you sure you want to proceed?"
+msgstr ""
+"You are about to remove your %s account!\n"
+"Are you sure you want to proceed?"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:910
+msgid ""
+"Any associated conversations and chat rooms will NOT be removed if you "
+"decide to proceed.\n"
+"\n"
+"Should you decide to add the account back at a later time, they will still "
+"be available."
+msgstr ""
+"Any associated conversations and chat rooms will NOT be removed if you "
+"decide to proceed.\n"
+"\n"
+"Should you decide to add the account back at a later time, they will still "
+"be available."
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:1
+msgid "<b>New Account</b>"
+msgstr "<b>New Account</b>"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:3
+msgid "<b>Settings</b>"
+msgstr "<b>Settings</b>"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:5
+msgid "Cr_eate"
+msgstr "Cr_eate"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:6
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to started configuring.\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want "
+"to configure in the list on the left."
+msgstr ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to started configuring.\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want "
+"to configure in the list on the left."
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:9
+msgid "Type:"
+msgstr "Type:"
+
+#: ../libempathy-gtk/empathy-avatar-chooser.c:449
+msgid "Select Your Avatar Image"
+msgstr "Select Your Avatar Image"
+
+#: ../libempathy-gtk/empathy-avatar-chooser.c:452
+msgid "No Image"
+msgstr "No Image"
+
+#: ../libempathy-gtk/empathy-avatar-chooser.c:512
+msgid "Images"
+msgstr "Images"
+
+#: ../libempathy-gtk/empathy-avatar-chooser.c:516
+msgid "All Files"
+msgstr "All Files"
+
+#: ../libempathy-gtk/empathy-avatar-image.c:298
+msgid "Click to enlarge"
+msgstr "Click to enlarge"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:1
+msgid "End Call"
+msgstr "End Call"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:2
+msgid "Input"
+msgstr "Input"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:3
+msgid "Mute"
+msgstr "Mute"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:4
+msgid "Output"
+msgstr "Output"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:5
+msgid "Send Video"
+msgstr "Send Video"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:6
+msgid "Start Call"
+msgstr "Start Call"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:7
+msgid "Volume"
+msgstr "Volume"
+
+#: ../libempathy-gtk/empathy-chat.c:445
+msgid "Disconnected"
+msgstr "Disconnected"
+
+#: ../libempathy-gtk/empathy-chat.c:580
+msgid "offline"
+msgstr "offline"
+
+#: ../libempathy-gtk/empathy-chat.c:583
+msgid "invalid contact"
+msgstr "invalid contact"
+
+#: ../libempathy-gtk/empathy-chat.c:586
+msgid "permission denied"
+msgstr "permission denied"
+
+#: ../libempathy-gtk/empathy-chat.c:589
+msgid "too long message"
+msgstr "too long message"
+
+#: ../libempathy-gtk/empathy-chat.c:592
+msgid "not implemented"
+msgstr "not implemented"
+
+#: ../libempathy-gtk/empathy-chat.c:595
+msgid "unknown"
+msgstr "unknown"
+
+#: ../libempathy-gtk/empathy-chat.c:599
+#, c-format
+msgid "Error sending message '%s': %s"
+msgstr "Error sending message '%s': %s"
+
+#: ../libempathy-gtk/empathy-chat.c:1056
+msgid "Insert Smiley"
+msgstr "Insert Smiley"
+
+#: ../libempathy-gtk/empathy-chat.c:1103
+msgid "_Check Word Spelling..."
+msgstr "_Check Word Spelling..."
+
+#: ../libempathy-gtk/empathy-chat.c:1558
+msgid "Connected"
+msgstr "Connected"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:1
+msgid "C_lear"
+msgstr "C_lear"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:2
+msgid "Ca_ll"
+msgstr "Ca_ll"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:3
+msgid "Change _Topic..."
+msgstr "Change _Topic..."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:4
+#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:3
+msgid "Chat"
+msgstr "Chat"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:5
+msgid "Contact Infor_mation"
+msgstr "Contact Infor_mation"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:6
+msgid "Cu_t"
+msgstr "Cu_t"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:7
+msgid "In_vite..."
+msgstr "In_vite..."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:8
+msgid "Insert _Smiley"
+msgstr "Insert _Smiley"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:9
+msgid "Invitation _message:"
+msgstr "Invitation _message:"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:10
+msgid "Invite"
+msgstr "Invite"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:11
+#: ../libempathy-gtk/empathy-main-window.glade.h:4
+msgid "Join _New..."
+msgstr "Join _New..."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:12
+msgid "Move Tab _Left"
+msgstr "Move Tab _Left"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:13
+msgid "Move Tab _Right"
+msgstr "Move Tab _Right"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:14
+msgid "Select who would you like to invite:"
+msgstr "Select who would you like to invite:"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:15
+msgid "You have been invited to join a chat conference."
+msgstr "You have been invited to join a chat conference."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:16
+#: ../libempathy-gtk/empathy-main-window.glade.h:9
+msgid "_Add Contact..."
+msgstr "_Add Contact..."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:17
+msgid "_Add To Favorites"
+msgstr "_Add To Favourites"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:18
+msgid "_Close"
+msgstr "_Close"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:19
+#: ../libempathy-gtk/empathy-main-window.glade.h:11
+msgid "_Contents"
+msgstr "_Contents"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:20
+msgid "_Conversation"
+msgstr "_Conversation"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:21
+msgid "_Copy"
+msgstr "_Copy"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:22
+msgid "_Detach Tab"
+msgstr "_Detach Tab"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:23
+#: ../libempathy-gtk/empathy-contact-list-view.c:217
+#: ../libempathy-gtk/empathy-main-window.glade.h:12
+msgid "_Edit"
+msgstr "_Edit"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:24
+#: ../libempathy-gtk/empathy-main-window.glade.h:13
+msgid "_Help"
+msgstr "_Help"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:25
+msgid "_Next Tab"
+msgstr "_Next Tab"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:26
+msgid "_Paste"
+msgstr "_Paste"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:27
+msgid "_Previous Tab"
+msgstr "_Previous Tab"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:28
+#: ../libempathy-gtk/empathy-main-window.glade.h:18
+msgid "_Room"
+msgstr "_Room"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:29
+msgid "_Show Contacts"
+msgstr "_Show Contacts"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:30
+msgid "_Tabs"
+msgstr "_Tabs"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:31
+#: ../libempathy-gtk/empathy-contact-list-view.c:233
+#: ../libempathy-gtk/empathy-main-window.glade.h:19
+msgid "_View Previous Conversations"
+msgstr "_View Previous Conversations"
+
+#: ../libempathy-gtk/empathy-chat-view.c:441
+msgid "_Copy Link Address"
+msgstr "_Copy Link Address"
+
+#: ../libempathy-gtk/empathy-chat-view.c:449
+msgid "_Open Link"
+msgstr "_Open Link"
+
+#: ../libempathy-gtk/empathy-chat-window.c:699
+#, c-format
+msgid "Conversations (%d)"
+msgstr "Conversations (%d)"
+
+#: ../libempathy-gtk/empathy-chat-window.c:1299
+msgid "Typing a message."
+msgstr "Typing a message."
+
+#: ../libempathy-gtk/empathy-chatrooms-window.c:258
+msgid "Name"
+msgstr "Name"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.c:276
+msgid "Room"
+msgstr "Room"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.c:285
+msgid "Auto Connect"
+msgstr "Auto-Connect"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:1
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:5
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:1
+#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:1
+msgid "Account:"
+msgstr "Account:"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:2
+msgid "Edit Favorite Room"
+msgstr "Edit Favourite Room"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:3
+msgid "Join room on start_up"
+msgstr "Join room on start_up"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:4
+msgid "Join this chat room when Empathy starts and you are connected"
+msgstr "Join this chat room when Empathy starts and you are connected"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:5
+msgid "Manage Favorite Rooms"
+msgstr "Manage Favourite Rooms"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:6
+msgid "N_ame:"
+msgstr "N_ame:"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:7
+msgid "S_erver:"
+msgstr "S_erver:"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:9
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:9
+msgid "_Room:"
+msgstr "_Room:"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:176
+msgid "Personal Information"
+msgstr "Personal Information"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:179
+msgid "Edit Contact Information"
+msgstr "Edit Contact Information"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:182
+msgid "Contact Information"
+msgstr "Contact Information"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:277
+msgid "I would like to add you to my contact list."
+msgstr "I would like to add you to my contact list."
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:301
+msgid "New Contact"
+msgstr "New Contact"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.glade.h:1
+msgid "Decide _Later"
+msgstr "Decide _Later"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.glade.h:2
+msgid "Subscription Request"
+msgstr "Subscription Request"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:197
+msgid "_Contact"
+msgstr "_Contact"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:201
+msgid "_Group"
+msgstr "_Group"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:205
+#: ../libempathy-gtk/empathy-main-window.glade.h:10
+msgid "_Chat"
+msgstr "_Chat"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:205
+msgid "Chat with contact"
+msgstr "Chat with contact"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:209
+msgid "Infor_mation"
+msgstr "Infor_mation"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:209
+msgid "View contact information"
+msgstr "View contact information"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:213
+msgid "Re_name"
+msgstr "Re_name"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:213
+msgid "Rename"
+msgstr "Rename"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:217
+msgid "Edit the groups and name for this contact"
+msgstr "Edit the groups and name for this contact"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:221
+msgid "_Remove"
+msgstr "_Remove"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:221
+msgid "Remove contact"
+msgstr "Remove contact"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:225
+msgid "_Invite to Chat Room"
+msgstr "_Invite to Chat Room"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:225
+msgid "Invite to a currently open chat room"
+msgstr "Invite to a currently open chat room"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:229
+msgid "_Send File..."
+msgstr "_Send File..."
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:229
+msgid "Send a file"
+msgstr "Send a file"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:233
+msgid "View previous conversations with this contact"
+msgstr "View previous conversations with this contact"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:238
+msgid "_Call"
+msgstr "_Call"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:238
+msgid "Start a voice or video conversation with this contact"
+msgstr "Start a voice or video conversation with this contact"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:1469
+msgid "Sorry, I don't want you in my contact list anymore."
+msgstr "Sorry, I don't want you in my contact list anymore."
+
+#: ../libempathy-gtk/empathy-contact-widget.c:688
+msgid "Select"
+msgstr "Select"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:698
+#: ../libempathy-gtk/empathy-main-window.c:609
+msgid "Group"
+msgstr "Group"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:1
+msgid "<b>Client Information</b>"
+msgstr "<b>Client Information</b>"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:2
+msgid "<b>Contact Details</b>"
+msgstr "<b>Contact Details</b>"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:3
+msgid "<b>Contact</b>"
+msgstr "<b>Contact</b>"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:4
+msgid "<b>Groups</b>"
+msgstr "<b>Groups</b>"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:6
+msgid "Alias:"
+msgstr "Alias:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:7
+msgid "Birthday:"
+msgstr "Birthday:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:8
+msgid "Client:"
+msgstr "Client:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:9
+msgid "Contact information"
+msgstr "Contact information"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:10
+msgid "Email:"
+msgstr "E-mail:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:11
+msgid "Fullname:"
+msgstr "Fullname:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:12
+msgid "Identifier:"
+msgstr "Identifier:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:13
+msgid "Information requested..."
+msgstr "Information requested..."
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:14
+msgid "OS:"
+msgstr "OS:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:15
+msgid ""
+"Select the groups you want this contact to appear in, you can select more "
+"than one group or no groups."
+msgstr ""
+"Select the groups you want this contact to appear in, you can select more "
+"than one group or no groups."
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:16
+msgid "Version:"
+msgstr "Version:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:17
+msgid "Web site:"
+msgstr "Web site:"
+
+#: ../libempathy-gtk/empathy-group-chat.c:251
+msgid "Enter the new topic you want to set for this room:"
+msgstr "Enter the new topic you want to set for this room:"
+
+#: ../libempathy-gtk/empathy-group-chat.c:361
+#, c-format
+msgid "%s has joined the room"
+msgstr "%s has joined the room"
+
+#: ../libempathy-gtk/empathy-group-chat.c:364
+#, c-format
+msgid "%s has left the room"
+msgstr "%s has left the room"
+
+#: ../libempathy-gtk/empathy-group-chat.c:445
+#, c-format
+msgid "Topic: %s"
+msgstr "Topic: %s"
+
+#: ../libempathy-gtk/empathy-group-chat.c:574
+#, c-format
+msgid "Topic set to: %s"
+msgstr "Topic set to: %s"
+
+#: ../libempathy-gtk/empathy-group-chat.c:576
+msgid "No topic defined"
+msgstr "No topic defined"
+
+#: ../libempathy-gtk/empathy-group-chat.glade.h:1
+msgid "<b>Topic:</b>"
+msgstr "<b>Topic:</b>"
+
+#: ../libempathy-gtk/empathy-group-chat.glade.h:2
+msgid "Group Chat"
+msgstr "Group Chat"
+
+#: ../libempathy-gtk/empathy-irc-network-dialog.c:287
+msgid "new server"
+msgstr "new server"
+
+#: ../libempathy-gtk/empathy-irc-network-dialog.c:512
+msgid "Server"
+msgstr "Server"
+
+#: ../libempathy-gtk/empathy-irc-network-dialog.c:527
+msgid "Port"
+msgstr "Port"
+
+#: ../libempathy-gtk/empathy-irc-network-dialog.c:540
+msgid "SSL"
+msgstr "SSL"
+
+#: ../libempathy-gtk/empathy-log-window.c:499
+msgid "Account"
+msgstr "Account"
+
+#: ../libempathy-gtk/empathy-log-window.c:506
+msgid "Conversation"
+msgstr "Conversation"
+
+#: ../libempathy-gtk/empathy-log-window.c:516
+msgid "Date"
+msgstr "Date"
+
+#: ../libempathy-gtk/empathy-log-window.glade.h:1
+msgid "Conversations"
+msgstr "Conversations"
+
+#: ../libempathy-gtk/empathy-log-window.glade.h:2
+msgid "Previous Conversations"
+msgstr "Previous Conversations"
+
+#: ../libempathy-gtk/empathy-log-window.glade.h:3
+msgid "Search"
+msgstr "Search"
+
+#: ../libempathy-gtk/empathy-log-window.glade.h:4
+msgid "_For:"
+msgstr "_For:"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.c:286
+msgid "Chat Rooms"
+msgstr "Chat Rooms"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:2
+msgid "Browse:"
+msgstr "Browse:"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:3
+msgid ""
+"Enter the room name to join here or click on one or more rooms in the list."
+msgstr ""
+"Enter the room name to join here or click on one or more rooms in the list."
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:4
+msgid ""
+"Enter the server which hosts the room, or leave it empty if the room is on "
+"the current account's server"
+msgstr ""
+"Enter the server which hosts the room, or leave it empty if the room is on "
+"the current account's server"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:5
+msgid "Join"
+msgstr "Join"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:6
+msgid "Join New"
+msgstr "Join New"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:7
+msgid "Re_fresh"
+msgstr "Re_fresh"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:8
+msgid ""
+"This list represents all chat rooms hosted on the server you have entered."
+msgstr ""
+"This list represents all chat rooms hosted on the server you have entered."
+
+#: ../libempathy-gtk/empathy-main-window.c:266
+msgid "Show and edit accounts"
+msgstr "Show and edit accounts"
+
+#: ../libempathy-gtk/empathy-main-window.c:630
+msgid "Contact"
+msgstr "Contact"
+
+#: ../libempathy-gtk/empathy-main-window.c:813
+msgid "_Edit account"
+msgstr "_Edit account"
+
+#: ../libempathy-gtk/empathy-main-window.c:896
+msgid "Network error"
+msgstr "Network error"
+
+#: ../libempathy-gtk/empathy-main-window.c:899
+msgid "Authentication failed"
+msgstr "Authentication failed"
+
+#: ../libempathy-gtk/empathy-main-window.c:902
+msgid "Encryption error"
+msgstr "Encryption error"
+
+#: ../libempathy-gtk/empathy-main-window.c:905
+msgid "Name in use"
+msgstr "Name in use"
+
+#: ../libempathy-gtk/empathy-main-window.c:908
+msgid "Certificate not provided"
+msgstr "Certificate not provided"
+
+#: ../libempathy-gtk/empathy-main-window.c:911
+msgid "Certificate untrusted"
+msgstr "Certificate untrusted"
+
+#: ../libempathy-gtk/empathy-main-window.c:914
+msgid "Certificate expired"
+msgstr "Certificate expired"
+
+#: ../libempathy-gtk/empathy-main-window.c:917
+msgid "Certificate not activated"
+msgstr "Certificate not activated"
+
+#: ../libempathy-gtk/empathy-main-window.c:920
+msgid "Certificate hostname mismatch"
+msgstr "Certificate hostname mismatch"
+
+#: ../libempathy-gtk/empathy-main-window.c:923
+msgid "Certificate fingerprint mismatch"
+msgstr "Certificate fingerprint mismatch"
+
+#: ../libempathy-gtk/empathy-main-window.c:926
+msgid "Certificate self signed"
+msgstr "Certificate self-signed"
+
+#: ../libempathy-gtk/empathy-main-window.c:929
+msgid "Certificate error"
+msgstr "Certificate error"
+
+#: ../libempathy-gtk/empathy-main-window.c:932
+msgid "Unknown error"
+msgstr "Unknown error"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:1
+msgid "Contact List"
+msgstr "Contact List"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:2
+msgid "Context"
+msgstr "Context"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:3
+msgid "Join _Favorites"
+msgstr "Join _Favourites"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:5
+msgid "Manage Favorites"
+msgstr "Manage Favourites"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:6
+msgid "Show _Offline Contacts"
+msgstr "Show _Offline Contacts"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:7
+#: ../megaphone/data/GNOME_Megaphone_Applet.xml.h:1
+#: ../nothere/data/GNOME_NotHere_Applet.xml.h:1
+msgid "_About"
+msgstr "_About"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:8
+msgid "_Accounts"
+msgstr "_Accounts"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:14
+#: ../libempathy-gtk/empathy-status-icon.glade.h:2
+msgid "_New Conversation..."
+msgstr "_New Conversation..."
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:15
+msgid "_Personal Information"
+msgstr "_Personal Information"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:16
+#: ../megaphone/data/GNOME_Megaphone_Applet.xml.h:3
+msgid "_Preferences"
+msgstr "_Preferences"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:17
+#: ../libempathy-gtk/empathy-status-icon.glade.h:3
+msgid "_Quit"
+msgstr "_Quit"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:2
+msgid "Call"
+msgstr "Call"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:4
+msgid "Contact ID:"
+msgstr "Contact ID:"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:5
+msgid "New Conversation"
+msgstr "New Conversation"
+
+#: ../libempathy-gtk/empathy-preferences.c:247
+msgid "Language"
+msgstr "Language"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:1
+msgid "<b>Appearance</b>"
+msgstr "<b>Appearance</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:2
+msgid "<b>Audio</b>"
+msgstr "<b>Audio</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:3
+msgid "<b>Behaviour</b>"
+msgstr "<b>Behaviour</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:4
+msgid "<b>Contact List</b>"
+msgstr "<b>Contact List</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:5
+msgid "<b>Enable spell checking for languages:</b>"
+msgstr "<b>Enable spell checking for languages:</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:6
+msgid "<b>Options</b>"
+msgstr "<b>Options</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:7
+msgid "<b>Visual</b>"
+msgstr "<b>Visual</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:8
+msgid ""
+"<small>The list of languages reflects only the languages for which you have "
+"a dictionary installed.</small>"
+msgstr ""
+"<small>The list of languages reflects only the languages for which you have "
+"a dictionary installed.</small>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:9
+msgid "Automatically _connect on startup "
+msgstr "Automatically _connect on startup "
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:10
+msgid "Avatars are user chosen images shown in the contact list"
+msgstr "Avatars are user chosen images shown in the contact list"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:11
+msgid "Chat Th_eme:"
+msgstr "Chat Th_eme:"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:12
+msgid "Display notifications when contacts come _online"
+msgstr "Display notifications when contacts come _online"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:13
+msgid "Enable sounds when _away"
+msgstr "Enable sounds when _away"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:14
+msgid "Enable sounds when _busy"
+msgstr "Enable sounds when _busy"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:15
+msgid "General"
+msgstr "General"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:16
+msgid "Notifications"
+msgstr "Notifications"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:17
+msgid "Preferences"
+msgstr "Preferences"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:18
+msgid "Show _avatars"
+msgstr "Show _avatars"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:19
+msgid "Show _smileys as images"
+msgstr "Show _smileys as images"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:20
+msgid "Show co_mpact contact list"
+msgstr "Show co_mpact contact list"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:21
+msgid "Sort by _name"
+msgstr "Sort by _name"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:22
+msgid "Sort by s_tate"
+msgstr "Sort by s_tate"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:23
+msgid "Spell Checking"
+msgstr "Spell Checking"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:24
+msgid "Themes"
+msgstr "Themes"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:25
+msgid "_Open new chats in separate windows"
+msgstr "_Open new chats in separate windows"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:26
+msgid "_Play sound when messages arrive"
+msgstr "_Play sound when messages arrive"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:27
+msgid "_Use for chat rooms"
+msgstr "_Use for chat rooms"
+
+#. Custom messages
+#: ../libempathy-gtk/empathy-presence-chooser.c:691
+msgid "Custom messages..."
+msgstr "Custom messages..."
+
+#: ../libempathy-gtk/empathy-presence-chooser.glade.h:1
+msgid "Custom message"
+msgstr "Custom message"
+
+#: ../libempathy-gtk/empathy-presence-chooser.glade.h:2
+msgid "Message:"
+msgstr "Message:"
+
+#: ../libempathy-gtk/empathy-presence-chooser.glade.h:3
+msgid "Save message"
+msgstr "Save message"
+
+#: ../libempathy-gtk/empathy-presence-chooser.glade.h:4
+msgid "Status:"
+msgstr "Status:"
+
+#: ../libempathy-gtk/empathy-private-chat.c:229
+#, c-format
+msgid "%s went offline"
+msgstr "%s went offline"
+
+#: ../libempathy-gtk/empathy-private-chat.c:243
+#, c-format
+msgid "%s has come online"
+msgstr "%s has come online"
+
+#: ../libempathy-gtk/empathy-spell-dialog.c:85
+msgid "Word"
+msgstr "Word"
+
+#: ../libempathy-gtk/empathy-spell-dialog.c:258
+msgid "Suggestions for the word"
+msgstr "Suggestions for the word"
+
+#: ../libempathy-gtk/empathy-spell-dialog.glade.h:1
+msgid "Spell Checker"
+msgstr "Spell Checker"
+
+#: ../libempathy-gtk/empathy-spell-dialog.glade.h:2
+msgid "Suggestions for the word:"
+msgstr "Suggestions for the word:"
+
+#: ../libempathy-gtk/empathy-status-icon.c:369
+#, c-format
+msgid ""
+"New message from %s:\n"
+"%s"
+msgstr ""
+"New message from %s:\n"
+"%s"
+
+#: ../libempathy-gtk/empathy-status-icon.c:434
+#, c-format
+msgid ""
+"Incoming call from %s:\n"
+"%s"
+msgstr ""
+"Incoming call from %s:\n"
+"%s"
+
+#: ../libempathy-gtk/empathy-status-icon.c:738
+#, c-format
+msgid "Subscription requested by %s"
+msgstr "Subscription requested by %s"
+
+#: ../libempathy-gtk/empathy-status-icon.c:741
+#, c-format
+msgid ""
+"\n"
+"Message: %s"
+msgstr ""
+"\n"
+"Message: %s"
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:1
+msgid "Status"
+msgstr "Status"
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:4
+msgid "_Show Contact List"
+msgstr "_Show Contact List"
+
+#: ../libempathy-gtk/empathy-theme-boxes.c:780
+#: ../libempathy-gtk/empathy-theme-irc.c:297
+msgid "%A %d %B %Y"
+msgstr "%A %d %B %Y"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:78
+msgid "Classic"
+msgstr "Classic"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:79
+msgid "Simple"
+msgstr "Simple"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:80
+msgid "Clean"
+msgstr "Clean"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:81
+msgid "Blue"
+msgstr "Blue"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:158
+msgid "Current Locale"
+msgstr "Current Locale"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:161
+#: ../libempathy-gtk/totem-subtitle-encoding.c:163
+#: ../libempathy-gtk/totem-subtitle-encoding.c:165
+#: ../libempathy-gtk/totem-subtitle-encoding.c:167
+msgid "Arabic"
+msgstr "Arabic"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:170
+msgid "Armenian"
+msgstr "Armenian"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:173
+#: ../libempathy-gtk/totem-subtitle-encoding.c:175
+#: ../libempathy-gtk/totem-subtitle-encoding.c:177
+msgid "Baltic"
+msgstr "Baltic"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:180
+msgid "Celtic"
+msgstr "Celtic"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:183
+#: ../libempathy-gtk/totem-subtitle-encoding.c:185
+#: ../libempathy-gtk/totem-subtitle-encoding.c:187
+#: ../libempathy-gtk/totem-subtitle-encoding.c:189
+msgid "Central European"
+msgstr "Central European"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:192
+#: ../libempathy-gtk/totem-subtitle-encoding.c:194
+#: ../libempathy-gtk/totem-subtitle-encoding.c:196
+#: ../libempathy-gtk/totem-subtitle-encoding.c:198
+msgid "Chinese Simplified"
+msgstr "Chinese Simplified"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:201
+#: ../libempathy-gtk/totem-subtitle-encoding.c:203
+#: ../libempathy-gtk/totem-subtitle-encoding.c:205
+msgid "Chinese Traditional"
+msgstr "Chinese Traditional"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:208
+msgid "Croatian"
+msgstr "Croatian"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:211
+#: ../libempathy-gtk/totem-subtitle-encoding.c:213
+#: ../libempathy-gtk/totem-subtitle-encoding.c:215
+#: ../libempathy-gtk/totem-subtitle-encoding.c:217
+#: ../libempathy-gtk/totem-subtitle-encoding.c:219
+#: ../libempathy-gtk/totem-subtitle-encoding.c:221
+msgid "Cyrillic"
+msgstr "Cyrillic"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:224
+msgid "Cyrillic/Russian"
+msgstr "Cyrillic/Russian"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:227
+#: ../libempathy-gtk/totem-subtitle-encoding.c:229
+msgid "Cyrillic/Ukrainian"
+msgstr "Cyrillic/Ukrainian"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:232
+msgid "Georgian"
+msgstr "Georgian"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:235
+#: ../libempathy-gtk/totem-subtitle-encoding.c:237
+#: ../libempathy-gtk/totem-subtitle-encoding.c:239
+msgid "Greek"
+msgstr "Greek"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:242
+msgid "Gujarati"
+msgstr "Gujarati"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:245
+msgid "Gurmukhi"
+msgstr "Gurmukhi"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:248
+#: ../libempathy-gtk/totem-subtitle-encoding.c:250
+#: ../libempathy-gtk/totem-subtitle-encoding.c:252
+#: ../libempathy-gtk/totem-subtitle-encoding.c:254
+msgid "Hebrew"
+msgstr "Hebrew"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:257
+msgid "Hebrew Visual"
+msgstr "Hebrew Visual"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:260
+msgid "Hindi"
+msgstr "Hindi"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:263
+msgid "Icelandic"
+msgstr "Icelandic"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:266
+#: ../libempathy-gtk/totem-subtitle-encoding.c:268
+#: ../libempathy-gtk/totem-subtitle-encoding.c:270
+msgid "Japanese"
+msgstr "Japanese"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:273
+#: ../libempathy-gtk/totem-subtitle-encoding.c:275
+#: ../libempathy-gtk/totem-subtitle-encoding.c:277
+#: ../libempathy-gtk/totem-subtitle-encoding.c:279
+msgid "Korean"
+msgstr "Korean"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:282
+msgid "Nordic"
+msgstr "Nordic"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:285
+msgid "Persian"
+msgstr "Persian"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:288
+#: ../libempathy-gtk/totem-subtitle-encoding.c:290
+msgid "Romanian"
+msgstr "Romanian"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:293
+msgid "South European"
+msgstr "South European"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:296
+msgid "Thai"
+msgstr "Thai"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:299
+#: ../libempathy-gtk/totem-subtitle-encoding.c:301
+#: ../libempathy-gtk/totem-subtitle-encoding.c:303
+#: ../libempathy-gtk/totem-subtitle-encoding.c:305
+msgid "Turkish"
+msgstr "Turkish"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:308
+#: ../libempathy-gtk/totem-subtitle-encoding.c:310
+#: ../libempathy-gtk/totem-subtitle-encoding.c:312
+#: ../libempathy-gtk/totem-subtitle-encoding.c:314
+#: ../libempathy-gtk/totem-subtitle-encoding.c:316
+msgid "Unicode"
+msgstr "Unicode"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:319
+#: ../libempathy-gtk/totem-subtitle-encoding.c:321
+#: ../libempathy-gtk/totem-subtitle-encoding.c:323
+#: ../libempathy-gtk/totem-subtitle-encoding.c:325
+#: ../libempathy-gtk/totem-subtitle-encoding.c:327
+msgid "Western"
+msgstr "Western"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:330
+#: ../libempathy-gtk/totem-subtitle-encoding.c:332
+#: ../libempathy-gtk/totem-subtitle-encoding.c:334
+msgid "Vietnamese"
+msgstr "Vietnamese"
+
+#.
+#. * vim: sw=2 ts=8 cindent noai bs=2
+#.
+#: ../megaphone/data/GNOME_Megaphone_Applet.schemas.in.h:1
+msgid ""
+"The contact to display in the applet. Empty means no contact is displayed."
+msgstr ""
+"The contact to display in the applet. Empty means no contact is displayed."
+
+#: ../megaphone/data/GNOME_Megaphone_Applet.schemas.in.h:2
+msgid "The contact's avatar token. Empty means contact has no avatar."
+msgstr "The contact's avatar token. Empty means contact has no avatar."
+
+#: ../megaphone/data/GNOME_Megaphone_Applet.server.in.in.h:1
+msgid "Megaphone"
+msgstr "Megaphone"
+
+#: ../megaphone/data/GNOME_Megaphone_Applet.server.in.in.h:2
+#: ../megaphone/src/megaphone-applet.c:419
+msgid "Talk!"
+msgstr "Talk!"
+
+#: ../megaphone/data/GNOME_Megaphone_Applet.xml.h:2
+msgid "_Information"
+msgstr "_Information"
+
+#: ../nothere/data/GNOME_NotHere_Applet.server.in.in.h:1
+msgid "Presence"
+msgstr "Presence"
+
+#: ../nothere/data/GNOME_NotHere_Applet.server.in.in.h:2
+#: ../nothere/src/nothere-applet.c:89
+msgid "Set your own presence"
+msgstr "Set your own presence"
+
+#: ../src/empathy.c:205
+msgid "- Empathy Instant Messenger"
+msgstr "- Empathy Instant Messenger"
+
+#, fuzzy
+#~ msgid "Instant Messenger"
+#~ msgstr "- Empathy Instant Messenger"
+
+#~ msgid "Contact List - Empathy"
+#~ msgstr "Contact List - Empathy"
+
+#~ msgid "_New Message..."
+#~ msgstr "_New Message..."
+
+#~ msgid "Disable"
+#~ msgstr "Disable"
+
+#~ msgid "<b>Account</b>"
+#~ msgstr "<b>Account</b>"
+
+#~ msgid "A unique name for this account to identify it personally to you."
+#~ msgstr "A unique name for this account to identify it personally to you."
+
+#~ msgid "Imendio "
+#~ msgstr "Imendio "
+
+#~ msgid ""
+#~ "<small><b><span foreground=\"#555\">Example: user@jabber.org</span></b></"
+#~ "small>"
+#~ msgstr ""
+#~ "<small><b><span foreground=\"#555\">Example: user@jabber.org</span></b></"
+#~ "small>"
+
+#~ msgid "Chat Room"
+#~ msgstr "Chat Room"
+
+#~ msgid "<b>Languages</b>"
+#~ msgstr "<b>Languages</b>"
+
+#~ msgid "_Enable spell checking"
+#~ msgstr "_Enable spell checking"
+
+#~ msgid "Clear List..."
+#~ msgstr "Clear List..."
+
+#~ msgid "Are you sure you want to clear the list?"
+#~ msgstr "Are you sure you want to clear the list?"
+
+#~ msgid ""
+#~ "This will remove any custom messages you have added to the list of preset "
+#~ "status messages."
+#~ msgstr ""
+#~ "This will remove any custom messages you have added to the list of preset "
+#~ "status messages."
+
+#~ msgid "Clear List"
+#~ msgstr "Clear List"
+
+#~ msgid "Enter status message:"
+#~ msgstr "Enter status message:"
+
+#~ msgid "Status Message Presets"
+#~ msgstr "Status Message Presets"
+
+#~ msgid "_Add to status message list"
+#~ msgstr "_Add to status message list"
+
+#~ msgid "-"
+#~ msgstr "-"
+
+#~ msgid "<b>About</b>"
+#~ msgstr "<b>About</b>"
+
+#~ msgid "<b>Personal Details</b>"
+#~ msgstr "<b>Personal Details</b>"
+
+#~ msgid "<b>Status</b>"
+#~ msgstr "<b>Status</b>"
+
+#~ msgid "<b>Subscription</b>"
+#~ msgstr "<b>Subscription</b>"
+
+#~ msgid "<span size=\"smaller\">Example: Mikael or user@server.org</span>"
+#~ msgstr "<span size=\"smaller\">Example: Mikael or user@server.org</span>"
+
+#~ msgid ""
+#~ "<span size=\"smaller\">Note: You must select an account if the contact is "
+#~ "unknown</span>"
+#~ msgstr ""
+#~ "<span size=\"smaller\">Note: You must select an account if the contact is "
+#~ "unknown</span>"
+
+#~ msgid "Accou_nt:"
+#~ msgstr "Accou_nt:"
+
+#~ msgid "Add Contact"
+#~ msgstr "Add Contact"
+
+#~ msgid "Avatar:"
+#~ msgstr "Avatar:"
+
+#~ msgid "C_hange"
+#~ msgstr "C_hange"
+
+#~ msgid "Ch_at"
+#~ msgstr "Ch_at"
+
+#~ msgid "Connect on S_tartup"
+#~ msgstr "Connect on S_tartup"
+
+#~ msgid "Contact List - Gossip"
+#~ msgstr "Contact List - Gossip"
+
+#~ msgid "Contacts"
+#~ msgstr "Contacts"
+
+#~ msgid "Country:"
+#~ msgstr "Country:"
+
+#~ msgid "Edit Groups"
+#~ msgstr "Edit Groups"
+
+#~ msgid "ID:"
+#~ msgstr "ID:"
+
+#~ msgid ""
+#~ "If you chose to decide later you will be asked the next time you log on."
+#~ msgstr ""
+#~ "If you chose to decide later you will be asked the next time you log on."
+
+#~ msgid "Personal Details"
+#~ msgstr "Personal Details"
+
+#~ msgid ""
+#~ "Set the alias you want to use for:\n"
+#~ "<b>foo@bar.baz</b>\n"
+#~ "\n"
+#~ "You can retrieve contact information from the server. "
+#~ msgstr ""
+#~ "Set the alias you want to use for:\n"
+#~ "<b>foo@bar.baz</b>\n"
+#~ "\n"
+#~ "You can retrieve contact information from the server. "
+
+#~ msgid ""
+#~ "This acts as a filter to the contact list below.\n"
+#~ "\n"
+#~ "You can use segments of contact's name or ID, for example, \"jabber.org\" "
+#~ "will list everyone using that server.\n"
+#~ "\n"
+#~ "You can also use the name of a group to show only contacts in a specific "
+#~ "group."
+#~ msgstr ""
+#~ "This acts as a filter to the contact list below.\n"
+#~ "\n"
+#~ "You can use segments of contact's name or ID, for example, \"jabber.org\" "
+#~ "will list everyone using that server.\n"
+#~ "\n"
+#~ "You can also use the name of a group to show only contacts in a specific "
+#~ "group."
+
+#~ msgid ""
+#~ "This acts as a filter to the contact list below. You can use segments of "
+#~ "contact's name or ID, for example, \"jabber.org\" will list everyone "
+#~ "using that server"
+#~ msgstr ""
+#~ "This acts as a filter to the contact list below. You can use segments of "
+#~ "contact's name or ID, for example, \"jabber.org\" will list everyone "
+#~ "using that server"
+
+#~ msgid "This is the name that will be used on your roster for this contact"
+#~ msgstr "This is the name that will be used on your roster for this contact"
+
+#~ msgid "This name will be used to identify you in chat windows"
+#~ msgstr "This name will be used to identify you in chat windows"
+
+#~ msgid ""
+#~ "This name will be used to identify you when new contacts lookup your "
+#~ "details"
+#~ msgstr ""
+#~ "This name will be used to identify you when new contacts lookup your "
+#~ "details"
+
+#~ msgid "Use default name here from the contact's VCard."
+#~ msgstr "Use default name here from the contact's VCard."
+
+#~ msgid "Use system pro_xy"
+#~ msgstr "Use system pro_xy"
+
+#~ msgid "Which account do you want to use?"
+#~ msgstr "Which account do you want to use?"
+
+#~ msgid "You are not subscribed to this contact."
+#~ msgstr "You are not subscribed to this contact."
+
+#~ msgid "_Accept"
+#~ msgstr "_Accept"
+
+#~ msgid "_Birthday:"
+#~ msgstr "_Birthday:"
+
+#~ msgid "_Deny"
+#~ msgstr "_Deny"
+
+#~ msgid "_Description:"
+#~ msgstr "_Description:"
+
+#~ msgid "_Disconnect"
+#~ msgstr "_Disconnect"
+
+#~ msgid ""
+#~ "_Enter the name or contact ID of the person you want to chat to below:"
+#~ msgstr ""
+#~ "_Enter the name or contact ID of the person you want to chat to below:"
+
+#~ msgid "_Group:"
+#~ msgstr "_Group:"
+
+#~ msgid "_Nick Name:"
+#~ msgstr "_Nick Name:"
+
+#~ msgid "_Password:"
+#~ msgstr "_Password:"
+
+#~ msgid "_Retrieve"
+#~ msgstr "_Retrieve"
+
+#~ msgid "_Search"
+#~ msgstr "_Search"
+
+#~ msgid "_Subscribe"
+#~ msgstr "_Subscribe"
+
+#~ msgid "_Web site:"
+#~ msgstr "_Web site:"
diff --git a/gnome-2-22/po/eo.po b/gnome-2-22/po/eo.po
new file mode 100644
index 000000000..25baefbec
--- /dev/null
+++ b/gnome-2-22/po/eo.po
@@ -0,0 +1,1921 @@
+# Esperanto translation of Gossip
+# Copyright (C) 2003 Free Software Foundation, Inc.
+# Brient Hess <brient@brient.net>, 2004.
+#
+# This file is distributed under the same license as the Gossip package.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Gossip 0.7.5\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-05-15 23:46+0200\n"
+"PO-Revision-Date: 2004-05-29 12:22-0900\n"
+"Last-Translator: Brient Hess <brient@brient.net>\n"
+"Language-Team: Esperanto Team (inactive?) <eo@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../data/empathy.desktop.in.h:1
+#, fuzzy
+msgid "Empathy Instant Messenger"
+msgstr "Tujmesaĝilo"
+
+#: ../data/empathy.desktop.in.h:2
+msgid "Instant Messenger"
+msgstr "Tujmesaĝilo"
+
+#: ../data/empathy.schemas.in.h:1
+msgid "Always open a separate chat window for new chats."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:2
+msgid "Chat window theme"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:3
+msgid ""
+"Comma separated list of spell checker languages to use (e.g. en, fr, nl)."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:4
+#, fuzzy
+msgid "Compact contact list"
+msgstr "Aldonu al vi kontaktlisto"
+
+#: ../data/empathy.schemas.in.h:5
+msgid "Contact list sort criterium"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:6
+msgid "Default directory to select an avatar image from"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:7
+msgid "Enable popup when contact is available"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:8
+#, fuzzy
+msgid "Enable sound when away"
+msgstr "Invalidu sonoj dum _fora"
+
+#: ../data/empathy.schemas.in.h:9
+#, fuzzy
+msgid "Enable sound when busy"
+msgstr "Invalidu sonoj dum _okupita"
+
+#: ../data/empathy.schemas.in.h:10
+#, fuzzy
+msgid "Enable spell checker"
+msgstr "Gossip - Sendu Mesaĝo"
+
+#: ../data/empathy.schemas.in.h:11
+msgid "Hide main window"
+msgstr "Kaŝu precipa fenestro"
+
+#: ../data/empathy.schemas.in.h:12
+msgid "Hide the main window."
+msgstr "Kaŝu la precipa fenestro."
+
+#: ../data/empathy.schemas.in.h:13
+msgid "Open new chats in separate windows"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:14
+#, fuzzy
+msgid "Show avatars"
+msgstr "_Montru Kontaktlisto"
+
+#: ../data/empathy.schemas.in.h:15
+#, fuzzy
+msgid "Show hint about closing the main window"
+msgstr "La alteco de la precipa fenestro."
+
+#: ../data/empathy.schemas.in.h:16
+msgid "Show offline contacts"
+msgstr "Vidigu ne kontaktebloj"
+
+#: ../data/empathy.schemas.in.h:17
+msgid "Spell checking languages"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:18
+msgid "The last directory that an avatar image was chosen from."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:19
+msgid "The theme that is used to display the conversation in chat windows."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:20
+msgid "Use graphical smileys"
+msgstr "Uzas grafika ridetoj"
+
+#: ../data/empathy.schemas.in.h:21
+msgid "Use notification sounds"
+msgstr "Uzas anoncadaj sonoj"
+
+#: ../data/empathy.schemas.in.h:22
+msgid "Use theme for chat rooms"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:23
+msgid ""
+"Whether or not to check words typed against the languages you want to check "
+"with."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:24
+msgid ""
+"Whether or not to convert smileys into graphical images in conversations."
+msgstr "Ĉu konverti ridetoj al iĝi grafika bildo en konversacioj."
+
+#: ../data/empathy.schemas.in.h:25
+msgid "Whether or not to play a sound when messages arrive."
+msgstr "Ĉu ludu iu sono kiam mesaĝoj alvenas."
+
+#: ../data/empathy.schemas.in.h:26
+msgid "Whether or not to play sounds when away."
+msgstr "Ĉu ludu sonoj dum fora."
+
+#: ../data/empathy.schemas.in.h:27
+msgid "Whether or not to play sounds when busy."
+msgstr "Ĉu ludu sonoj dum okupita."
+
+#: ../data/empathy.schemas.in.h:28
+#, fuzzy
+msgid "Whether or not to show a popup when a contact becomes available."
+msgstr "Ĉu ludu iu sono kiam mesaĝoj alvenas."
+
+#: ../data/empathy.schemas.in.h:29
+#, fuzzy
+msgid ""
+"Whether or not to show avatars for contacts in the contact list and chat "
+"windows."
+msgstr "Ĉu montru kontaktoj kiun estas ne kontaktebla en la kontaktlisto."
+
+#: ../data/empathy.schemas.in.h:30
+msgid "Whether or not to show contacts that are offline in the contact list."
+msgstr "Ĉu montru kontaktoj kiun estas ne kontaktebla en la kontaktlisto."
+
+#: ../data/empathy.schemas.in.h:31
+msgid ""
+"Whether or not to show the message dialog about closing the main window with "
+"the 'x' button in the title bar."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:32
+#, fuzzy
+msgid "Whether to show the contact list in compact mode or not."
+msgstr "Ĉu montru kontaktoj kiun estas ne kontaktebla en la kontaktlisto."
+
+#: ../data/empathy.schemas.in.h:33
+msgid "Whether to use the theme for chat rooms or not."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:34
+msgid ""
+"Which criterium to use when sorting the contact list. Default is to use sort "
+"by the contact's name with the value \"name\". A value of \"state\" will "
+"sort the contact list by state."
+msgstr ""
+
+#: ../libempathy/gossip-contact.c:654 ../libempathy/gossip-presence.c:184
+#: ../libempathy/gossip-presence.c:283
+msgid "Offline"
+msgstr "Ne kontaktebla"
+
+#: ../libempathy/gossip-presence.c:274
+msgid "Available"
+msgstr "Ricevebla"
+
+#: ../libempathy/gossip-presence.c:276
+msgid "Busy"
+msgstr "Okupita"
+
+#: ../libempathy/gossip-presence.c:279
+msgid "Away"
+msgstr "Fora"
+
+#: ../libempathy-gtk/empathy-main-window.c:254
+#, fuzzy
+msgid "Show and edit accounts"
+msgstr "_Montru Kontaktlisto"
+
+#: ../libempathy-gtk/empathy-main-window.c:456
+msgid "Group"
+msgstr "Grupo"
+
+#: ../libempathy-gtk/empathy-main-window.c:477
+#, fuzzy
+msgid "Contact"
+msgstr "_Aldonu Kontakto..."
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:1
+#, fuzzy
+msgid "Contact List - Empathy"
+msgstr "_Kaŝu Kontaktlisto"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:2
+#, fuzzy
+msgid "Context"
+msgstr "Konektu"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:3
+#, fuzzy
+msgid "Join _Favorites"
+msgstr "Editu favoratoj..."
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:4
+#: ../libempathy-gtk/gossip-chat.glade.h:10
+msgid "Join _New..."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:5
+msgid "Manage Favorites..."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:6
+msgid "Show _Offline Contacts"
+msgstr "_Vidigu Ne Kontaktebloj"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:7
+#, fuzzy
+msgid "_About"
+msgstr "_Akceptu"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:8
+#, fuzzy
+msgid "_Accounts"
+msgstr "_Akceptu"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:9
+#: ../libempathy-gtk/gossip-chat.glade.h:15
+msgid "_Add Contact..."
+msgstr "_Aldonu Kontakto..."
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:10
+#: ../libempathy-gtk/gossip-contact-list.c:298
+msgid "_Chat"
+msgstr "_Babilu"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:11
+#, fuzzy
+msgid "_Contents"
+msgstr "Konektu"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:12
+#: ../libempathy-gtk/gossip-chat.glade.h:21
+#: ../libempathy-gtk/gossip-contact-list.c:310
+msgid "_Edit"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:13
+msgid "_Help"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:14
+#: ../libempathy-gtk/empathy-status-icon.glade.h:2
+msgid "_New Message..."
+msgstr "_Nova Mesaĝo..."
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:15
+#, fuzzy
+msgid "_Personal Information"
+msgstr "Persona Informaĵo"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:16
+msgid "_Preferences"
+msgstr "_Agordo"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:17
+#: ../libempathy-gtk/empathy-status-icon.glade.h:3
+msgid "_Quit"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:18
+#: ../libempathy-gtk/gossip-chat.glade.h:25
+#, fuzzy
+msgid "_Room"
+msgstr "_Ejo:"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:19
+#: ../libempathy-gtk/gossip-chat.glade.h:28
+#: ../libempathy-gtk/gossip-contact-list.c:326
+#, fuzzy
+msgid "_View Previous Conversations"
+msgstr "_Konversacio"
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:1
+msgid "Status"
+msgstr "Stato"
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:4
+msgid "_Show Contact List"
+msgstr "_Montru Kontaktlisto"
+
+#: ../libempathy-gtk/gossip-about-dialog.c:63
+msgid ""
+"Empathy is free software; you can redistribute it and/or modify it under the "
+"terms of the GNU General Public License as published by the Free Software "
+"Foundation; either version 2 of the License, or (at your option) any later "
+"version."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-about-dialog.c:67
+msgid ""
+"Empathy is distributed in the hope that it will be useful, but WITHOUT ANY "
+"WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS "
+"FOR A PARTICULAR PURPOSE. See the GNU General Public License for more "
+"details."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-about-dialog.c:71
+msgid ""
+"You should have received a copy of the GNU General Public License along with "
+"Empathy; if not, write to the Free Software Foundation, Inc., 51 Franklin "
+"Street, Fifth Floor, Boston, MA 02110-130159 USA"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-about-dialog.c:99
+#, fuzzy
+msgid "An Instant Messaging client for GNOME"
+msgstr "Gossip, Tujmesaĝilo"
+
+#: ../libempathy-gtk/gossip-about-dialog.c:105
+#, fuzzy
+msgid "translator-credits"
+msgstr "Brient Hess"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:224
+#, fuzzy
+msgid "Disable"
+msgstr "Ricevebla"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:227
+msgid "Enable"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:261
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:3
+#, fuzzy
+msgid "<b>No Account Selected</b>"
+msgstr "<b>Favorata:</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:263
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to start configuring.\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want "
+"to configure in the list on the left."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:272
+#, fuzzy
+msgid "<b>No Accounts Configured</b>"
+msgstr "<b>Favorata:</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:274
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to start configuring."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:362
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:6
+#, fuzzy
+msgid "Accounts"
+msgstr "Jabber Konto"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:857
+#, c-format
+msgid ""
+"You are about to remove your %s account!\n"
+"Are you sure you want to proceed?"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:863
+msgid ""
+"Any associated conversations and chat rooms will NOT be removed if you "
+"decide to proceed.\n"
+"\n"
+"Should you decide to add the account back at a later time, they will still "
+"be available."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:1
+#, fuzzy
+msgid "<b>Account</b>"
+msgstr "<b>Favorata:</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:2
+#, fuzzy
+msgid "<b>New Account</b>"
+msgstr "<b>Favorata:</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:4
+#, fuzzy
+msgid "<b>Settings</b>"
+msgstr "Stato"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:5
+msgid "A unique name for this account to identify it personally to you."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:7
+#, fuzzy
+msgid "Cr_eate"
+msgstr "Babilo"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:8
+msgid "Imendio "
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:9
+msgid "Jabber"
+msgstr "Jabber"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:10
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to started configuring.\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want "
+"to configure in the list on the left."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:13
+#, fuzzy
+msgid "_Name:"
+msgstr "Nomo:"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:14
+#, fuzzy
+msgid "_Type:"
+msgstr "_Temo:"
+
+#: ../libempathy-gtk/gossip-account-widget-generic.c:144
+#: ../libempathy-gtk/gossip-account-widget-generic.c:186
+#, c-format
+msgid "%s:"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:1
+#, fuzzy
+msgid ""
+"<small><b><span foreground=\"#555\">Example: user@jabber.org</span></b></"
+"small>"
+msgstr "<span size=\"smaller\">Ekzemplo: uzanto@jabber.org</span>"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:2
+msgid "Forget password and clear the entry."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:3
+msgid "Login I_D:"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:4
+#, fuzzy
+msgid "Pass_word:"
+msgstr "_Pasvorto:"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:5
+#, fuzzy
+msgid "Reso_urce:"
+msgstr "_Rimedero:"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:6
+#, fuzzy
+msgid "Use encryption (SS_L)"
+msgstr "_Uzu ĉifrado (SSL)"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:7
+#, fuzzy
+msgid "_Port:"
+msgstr "_Konektilo:"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:8
+msgid "_Server:"
+msgstr "_Servilo:"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:9
+msgid "jabber account settings"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.c:314
+msgid "Disconnected"
+msgstr "Malkonektis"
+
+#: ../libempathy-gtk/gossip-chat.c:858
+msgid "Insert Smiley"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.c:906
+msgid "_Check Word Spelling..."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.c:1244
+msgid "Connected"
+msgstr "Konektis"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:1
+msgid "C_lear"
+msgstr "_Forviŝu"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:2
+msgid "Change _Topic..."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:3
+msgid "Chat"
+msgstr "Babilo"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:4
+#, fuzzy
+msgid "Contact Infor_mation"
+msgstr "Kontakto _Informaĵo"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:5
+#, fuzzy
+msgid "Cu_t"
+msgstr "Babilo"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:6
+#, fuzzy
+msgid "In_vite..."
+msgstr "Re_gistrigu..."
+
+#: ../libempathy-gtk/gossip-chat.glade.h:7
+msgid "Insert _Smiley"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:8
+#, fuzzy
+msgid "Invitation _message:"
+msgstr "Enskribu stata mesaĝo:"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:9
+msgid "Invite"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:11
+msgid "Move Tab _Left"
+msgstr "Movu Tabo _Maldekstre"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:12
+msgid "Move Tab _Right"
+msgstr "Movu Tabo _Dekstre"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:13
+msgid "Select who would you like to invite:"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:14
+msgid "You have been invited to join a chat conference."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:16
+#, fuzzy
+msgid "_Add To Favorites"
+msgstr "Editu favoratoj..."
+
+#: ../libempathy-gtk/gossip-chat.glade.h:17
+msgid "_Close"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:18
+msgid "_Conversation"
+msgstr "_Konversacio"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:19
+msgid "_Copy"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:20
+msgid "_Detach Tab"
+msgstr "_Deigu Tabo"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:22
+msgid "_Next Tab"
+msgstr "_Posta Tabo"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:23
+msgid "_Paste"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:24
+msgid "_Previous Tab"
+msgstr "_Antaŭa Tabo"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:26
+#, fuzzy
+msgid "_Show Contacts"
+msgstr "_Montru Kontaktlisto"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:27
+msgid "_Tabs"
+msgstr "_Taboj"
+
+#: ../libempathy-gtk/gossip-chat-view.c:544
+msgid "_Copy Link Address"
+msgstr "_Kopiu Ligo Adreso"
+
+#: ../libempathy-gtk/gossip-chat-view.c:552
+msgid "_Open Link"
+msgstr "_Malfermu Ligo"
+
+#: ../libempathy-gtk/gossip-chat-view.c:889
+msgid "%A %d %B %Y"
+msgstr "%A %d %B %Y"
+
+#: ../libempathy-gtk/gossip-chat-window.c:685
+#: ../libempathy-gtk/gossip-chat-window.c:715
+#, fuzzy
+msgid "New Message"
+msgid_plural "New Messages"
+msgstr[0] "_Nova Mesaĝo..."
+msgstr[1] "_Nova Mesaĝo..."
+
+#: ../libempathy-gtk/gossip-chat-window.c:691
+#, fuzzy
+msgid "Chat Room"
+msgstr "Gossip - Babilo"
+
+#: ../libempathy-gtk/gossip-chat-window.c:696
+#: ../libempathy-gtk/gossip-chat-window.c:719
+#, fuzzy, c-format
+msgid "Conversation"
+msgid_plural "Conversations (%d)"
+msgstr[0] "_Konversacio"
+msgstr[1] "_Konversacio"
+
+#: ../libempathy-gtk/gossip-chat-window.c:1295
+msgid "Typing a message."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-contact-list.c:290
+#, fuzzy
+msgid "_Contact"
+msgstr "_Aldonu Kontakto..."
+
+#: ../libempathy-gtk/gossip-contact-list.c:294
+#, fuzzy
+msgid "_Group"
+msgstr "Grupo"
+
+#: ../libempathy-gtk/gossip-contact-list.c:298
+#, fuzzy
+msgid "Chat with contact"
+msgstr "Aldonu iu kontakto"
+
+#: ../libempathy-gtk/gossip-contact-list.c:302
+#, fuzzy
+msgid "Infor_mation"
+msgstr "Kontakto _Informaĵo"
+
+#: ../libempathy-gtk/gossip-contact-list.c:302
+#, fuzzy
+msgid "View contact information"
+msgstr "Kontakto informaĵo"
+
+#: ../libempathy-gtk/gossip-contact-list.c:306
+#, fuzzy
+msgid "Re_name"
+msgstr "/Re_nomu grupo"
+
+#: ../libempathy-gtk/gossip-contact-list.c:306
+#, fuzzy
+msgid "Rename"
+msgstr "Uzanto_nomo:"
+
+#: ../libempathy-gtk/gossip-contact-list.c:310
+#, fuzzy
+msgid "Edit the groups and name for this contact"
+msgstr ""
+"Bonvolu enigu novan kromnomon por la kontakto\n"
+"%s"
+
+#: ../libempathy-gtk/gossip-contact-list.c:314
+msgid "_Remove"
+msgstr "_Forigu"
+
+#: ../libempathy-gtk/gossip-contact-list.c:314
+#, fuzzy
+msgid "Remove contact"
+msgstr "/Forti_ru kontakto"
+
+#: ../libempathy-gtk/gossip-contact-list.c:318
+#, fuzzy
+msgid "_Invite to Chat Room"
+msgstr "Gossip - Editu Grupbabiloj"
+
+#: ../libempathy-gtk/gossip-contact-list.c:318
+msgid "Invite to a currently open chat room"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-contact-list.c:322
+msgid "_Send File..."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-contact-list.c:322
+#, fuzzy
+msgid "Send a file"
+msgstr "Elektu"
+
+#: ../libempathy-gtk/gossip-contact-list.c:326
+#, fuzzy
+msgid "View previous conversations with this contact"
+msgstr "_Konversacio"
+
+#: ../libempathy-gtk/gossip-preferences.c:250
+msgid "Language"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:1
+#, fuzzy
+msgid "<b>Appearance</b>"
+msgstr "Aspekto"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:2
+#, fuzzy
+msgid "<b>Audio</b>"
+msgstr "<b>Favorata:</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:3
+#, fuzzy
+msgid "<b>Behaviour</b>"
+msgstr "<b>Favorata:</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:4
+#, fuzzy
+msgid "<b>Contact List</b>"
+msgstr "Stato"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:5
+msgid "<b>Languages</b>"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:6
+#, fuzzy
+msgid "<b>Options</b>"
+msgstr "Konektu"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:7
+#, fuzzy
+msgid "<b>Visual</b>"
+msgstr "<b>Favorata:</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:8
+msgid ""
+"<small>The list of languages reflects only the languages for which you have "
+"a dictionary installed.</small>"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:9
+msgid "Avatars are user chosen images shown in the contact list"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:10
+#, fuzzy
+msgid "Chat Th_eme:"
+msgstr "Babilo _nomo:"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:11
+msgid "Display notifications when contacts come _online"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:12
+#, fuzzy
+msgid "Enable sounds when _away"
+msgstr "Invalidu sonoj dum _fora"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:13
+#, fuzzy
+msgid "Enable sounds when _busy"
+msgstr "Invalidu sonoj dum _okupita"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:14
+msgid "General"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:15
+#, fuzzy
+msgid "Notifications"
+msgstr "Uzas anoncadaj sonoj"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:16
+#, fuzzy
+msgid "Preferences"
+msgstr "_Agordo"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:17
+msgid "Show _avatars"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:18
+#, fuzzy
+msgid "Show _smileys as images"
+msgstr "Konvertu _ridetoj al iĝi grafikaj bildoj"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:19
+#, fuzzy
+msgid "Show co_mpact contact list"
+msgstr "_Montru Kontaktlisto"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:20
+msgid "Sort by _name"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:21
+msgid "Sort by s_tate"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:22
+msgid "Spell Checking"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:23
+msgid "Themes"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:24
+msgid "_Enable spell checking"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:25
+msgid "_Open new chats in separate windows"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:26
+#, fuzzy
+msgid "_Play sound when messages arrive"
+msgstr "Ludu sono kiam mesaĝoj alveni"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:27
+#, fuzzy
+msgid "_Use for chat rooms"
+msgstr "Gossip - Editu Grupbabiloj"
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:702
+#, fuzzy
+msgid "Custom message..."
+msgstr "Petomesaĝo"
+
+#. Clear list
+#: ../libempathy-gtk/gossip-presence-chooser.c:724
+#, fuzzy
+msgid "Clear List..."
+msgstr "_Forviŝu"
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:803
+#, fuzzy
+msgid "Are you sure you want to clear the list?"
+msgstr "Ĉu vi deziras akcepti la peton?"
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:807
+msgid ""
+"This will remove any custom messages you have added to the list of preset "
+"status messages."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:812
+#, fuzzy
+msgid "Clear List"
+msgstr "_Forviŝu"
+
+#: ../libempathy-gtk/gossip-presence-chooser.glade.h:1
+msgid "Enter status message:"
+msgstr "Enskribu stata mesaĝo:"
+
+#: ../libempathy-gtk/gossip-presence-chooser.glade.h:2
+#, fuzzy
+msgid "Status Message Presets"
+msgstr "Stato Mesaĝoj"
+
+#: ../libempathy-gtk/gossip-presence-chooser.glade.h:3
+#, fuzzy
+msgid "_Add to status message list"
+msgstr "Savis stato mesaĝoj"
+
+#: ../libempathy-gtk/gossip-private-chat.c:198
+#, c-format
+msgid "%s went offline"
+msgstr "%s estinta ne kontaktebla"
+
+#: ../libempathy-gtk/gossip-private-chat.c:212
+#, fuzzy, c-format
+msgid "%s has come online"
+msgstr "%s estanta kontaktebla"
+
+#: ../libempathy-gtk/gossip-theme-manager.c:87
+msgid "Classic"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-theme-manager.c:88
+msgid "Simple"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-theme-manager.c:89
+#, fuzzy
+msgid "Clean"
+msgstr "_Forviŝu"
+
+#: ../libempathy-gtk/gossip-theme-manager.c:90
+msgid "Blue"
+msgstr ""
+
+#: ../src/empathy-main.c:145
+msgid "Don't connect on startup"
+msgstr "Ne konekti dum lanĉo"
+
+#: ../src/empathy-main.c:155
+#, fuzzy
+msgid "- Empathy Instant Messenger"
+msgstr "Tujmesaĝilo"
+
+#, fuzzy
+#~ msgid "Gossip Instant Messenger"
+#~ msgstr "Tujmesaĝilo"
+
+#, fuzzy
+#~ msgid "Joining"
+#~ msgstr "_Kuniĝu"
+
+#, fuzzy
+#~ msgid "Unknown"
+#~ msgstr "Nekonata eraro"
+
+#, fuzzy
+#~ msgid "No affiliation"
+#~ msgstr "Uzas anoncadaj sonoj"
+
+#, fuzzy
+#~ msgid "An unknown error occurred, check your details are correct."
+#~ msgstr "Nekonata eraro"
+
+#, fuzzy
+#~ msgid "Unavailable"
+#~ msgstr "Ricevebla"
+
+#, fuzzy
+#~ msgid "An unknown error occurred."
+#~ msgstr "Nekonata eraro"
+
+#, fuzzy
+#~ msgid "Connection refused."
+#~ msgstr "Konektis"
+
+#, fuzzy
+#~ msgid "Connection timed out."
+#~ msgstr "Konektis"
+
+#, fuzzy
+#~ msgid "new account"
+#~ msgstr "Jabber Konto"
+
+#~ msgid "Home"
+#~ msgstr "Hejmo"
+
+#, fuzzy
+#~ msgid "Registration is required"
+#~ msgstr "Registrigas konto"
+
+#, fuzzy
+#~ msgid "Disconnect"
+#~ msgstr "_Malkonektu"
+
+#~ msgid "Connect"
+#~ msgstr "Konektu"
+
+#, fuzzy
+#~ msgid "Successfully registered your new account settings."
+#~ msgstr "Sukcesus registrigi la konto"
+
+#, fuzzy
+#~ msgid "Failed to register your new account settings."
+#~ msgstr "Malsukcesus registrigi la konto"
+
+#, fuzzy
+#~ msgid "Successfully changed your account password."
+#~ msgstr "Bonvolu enigu vin pasvorton:"
+
+#, fuzzy
+#~ msgid "Failed to change your account password."
+#~ msgstr "Bonvolu enigu vin pasvorton:"
+
+#, fuzzy
+#~ msgid ""
+#~ "Please enter a new password for this account:\n"
+#~ "%s"
+#~ msgstr ""
+#~ "Bonvolu enigu novan nomon por la grupo\n"
+#~ "%s"
+
+#, fuzzy
+#~ msgid "Information requested, please wait..."
+#~ msgstr "<b>Informaĵo petis, Bonvolu atendi...</b>"
+
+#~ msgid "I would like to add you to my contact list."
+#~ msgstr "Mi deziras aldoni vin al mia kontaktlisto."
+
+#, fuzzy
+#~ msgid "%d new message"
+#~ msgid_plural "%d new messages"
+#~ msgstr[0] "_Nova Mesaĝo..."
+#~ msgstr[1] "_Nova Mesaĝo..."
+
+#, fuzzy
+#~ msgid "Edit Account _Details"
+#~ msgstr "Editu Konto Informaĵo"
+
+#~ msgid "New message from %s"
+#~ msgstr "Nova mesaĝo el %s"
+
+#, fuzzy
+#~ msgid "Accept"
+#~ msgstr "_Akceptu"
+
+#, fuzzy
+#~ msgid "Name"
+#~ msgstr "Nomo:"
+
+#, fuzzy
+#~ msgid "Room"
+#~ msgstr "_Ejo:"
+
+#, fuzzy
+#~ msgid "Auto Connect"
+#~ msgstr "Konektu"
+
+#, fuzzy
+#~ msgid "Information requested..."
+#~ msgstr "<b>Informaĵo petis, Bonvolu atendi...</b>"
+
+#, fuzzy
+#~ msgid "Do you want to remove this contact from your roster?"
+#~ msgstr ""
+#~ "Vi deziras fortiri la kontakto%s\n"
+#~ "de vi kontaktlisto?"
+
+#, fuzzy
+#~ msgid ""
+#~ "Please enter a new name for the group:\n"
+#~ "%s"
+#~ msgstr ""
+#~ "Bonvolu enigu novan nomon por la grupo\n"
+#~ "%s"
+
+#~ msgid "Select"
+#~ msgstr "Elektu"
+
+#~ msgid "Unsorted"
+#~ msgstr "Malklasa"
+
+#, fuzzy
+#~ msgid "Unknown error occurred during file transfer."
+#~ msgstr "Nekonata eraro"
+
+#, fuzzy
+#~ msgid "%s would like to send you a file."
+#~ msgstr "Mi deziras aldoni vin al mia kontaktlisto."
+
+#, fuzzy
+#~ msgid "Someone would like to send you a file."
+#~ msgstr "Mi deziras aldoni vin al mia kontaktlisto."
+
+#, fuzzy
+#~ msgid "Select a file"
+#~ msgstr "Elektu"
+
+#, fuzzy
+#~ msgid "Connecting..."
+#~ msgstr "_Konektu..."
+
+#, fuzzy
+#~ msgid "Retry connection"
+#~ msgstr "Konektu"
+
+#, fuzzy
+#~ msgid "Enter the new topic you want to set for this room:"
+#~ msgstr "Kio kromnomo vi deziras uzi por tio kontakto?"
+
+#, fuzzy
+#~ msgid "Topic: %s"
+#~ msgstr "_Temo:"
+
+#, fuzzy
+#~ msgid "Account"
+#~ msgstr "Jabber Konto"
+
+#, fuzzy
+#~ msgid "Conversation With"
+#~ msgstr "_Konversacio"
+
+#~ msgid "List the available accounts"
+#~ msgstr "Listigu la disponeblaj kontoj"
+
+#~ msgid "Which account to connect to on startup"
+#~ msgstr "Tio konto al konekti dum lanĉo"
+
+#~ msgid "ACCOUNT-NAME"
+#~ msgstr "KONTO-NOMO"
+
+#~ msgid "Available accounts:"
+#~ msgstr "Disponeblaj kontoj:"
+
+#~ msgid "[default]"
+#~ msgstr "[defaŭlto]"
+
+#~ msgid "There is no account with the name '%s'."
+#~ msgstr "Ne estas konto nomas '%s'."
+
+#, fuzzy
+#~ msgid "Join"
+#~ msgstr "_Kuniĝu"
+
+#, fuzzy
+#~ msgid "Create"
+#~ msgstr "Babilo"
+
+#, fuzzy
+#~ msgid "Chat Rooms"
+#~ msgstr "Gossip - Babilo"
+
+#, fuzzy
+#~ msgid "Browsing for conference rooms, please wait..."
+#~ msgstr "<b>Informaĵo petis, Bonvolu atendi...</b>"
+
+#, fuzzy
+#~ msgid "Default"
+#~ msgstr "[defaŭlto]"
+
+#, fuzzy
+#~ msgid "Chat!"
+#~ msgstr "Babilo"
+
+#, fuzzy
+#~ msgid "%s wants to be added to your contact list."
+#~ msgstr "%s aldonos al vi kontaktlisto."
+
+#, fuzzy
+#~ msgid "Someone wants to be added to your contact list."
+#~ msgstr "%s aldonos al vi kontaktlisto."
+
+#, fuzzy
+#~ msgid "Subscription request"
+#~ msgstr "Sendas peto"
+
+#, fuzzy
+#~ msgid "Contact Information"
+#~ msgstr "Kontakto _Informaĵo"
+
+#, fuzzy
+#~ msgid "Do you want to add this person to your contact list?"
+#~ msgstr ""
+#~ "Vi deziras fortiri la kontakto%s\n"
+#~ "de vi kontaktlisto?"
+
+#, fuzzy
+#~ msgid "Do you want to add %s to your contact list?"
+#~ msgstr ""
+#~ "Vi deziras fortiri la kontakto%s\n"
+#~ "de vi kontaktlisto?"
+
+#, fuzzy
+#~ msgid "Please enter your %s account password"
+#~ msgstr "Bonvolu enigu vin pasvorton:"
+
+#~ msgid "Remember Password?"
+#~ msgstr "Memoru Pasvorto?"
+
+#, fuzzy
+#~ msgid "Change"
+#~ msgstr "Babilo"
+
+#, fuzzy
+#~ msgid "Contact goes online"
+#~ msgstr "%s estanta kontaktebla"
+
+#, fuzzy
+#~ msgid "Do you want to accept this file?"
+#~ msgstr "Ĉu vi deziras akcepti la peton?"
+
+#, fuzzy
+#~ msgid "File name:"
+#~ msgstr "Uzanto_nomo:"
+
+#, fuzzy
+#~ msgid "File size:"
+#~ msgstr "TTT-ejo:"
+
+#~ msgid "Web site:"
+#~ msgstr "TTT-ejo:"
+
+#~ msgid "_Accept"
+#~ msgstr "_Akceptu"
+
+#~ msgid "_Deny"
+#~ msgstr "_Neu"
+
+#, fuzzy
+#~ msgid "<b>Topic:</b>"
+#~ msgstr "<b>Favorata:</b>"
+
+#, fuzzy
+#~ msgid "Account:"
+#~ msgstr "Jabber Konto"
+
+#, fuzzy
+#~ msgid "Edit Favorite Room"
+#~ msgstr "Gossip - Editu Grupbabiloj"
+
+#, fuzzy
+#~ msgid "Group Chat"
+#~ msgstr "Gossip - Babilo"
+
+#, fuzzy
+#~ msgid "Join New"
+#~ msgstr "_Kuniĝu"
+
+#, fuzzy
+#~ msgid "Join room on start_up"
+#~ msgstr "Ne konekti dum lanĉo"
+
+#, fuzzy
+#~ msgid "N_ame:"
+#~ msgstr "Nomo:"
+
+#, fuzzy
+#~ msgid "S_erver:"
+#~ msgstr "Servilo:"
+
+#~ msgid "_Nickname:"
+#~ msgstr "Krom_nomo:"
+
+#~ msgid "_Room:"
+#~ msgstr "_Ejo:"
+
+#, fuzzy
+#~ msgid "<b>About</b>"
+#~ msgstr "<b>Favorata:</b>"
+
+#, fuzzy
+#~ msgid "<b>Client Information</b>"
+#~ msgstr "Informaĵo pri Babililo "
+
+#, fuzzy
+#~ msgid "<b>Groups</b>"
+#~ msgstr "<b>Favorata:</b>"
+
+#, fuzzy
+#~ msgid "<b>Name</b>"
+#~ msgstr "Stato"
+
+#, fuzzy
+#~ msgid "<b>Personal Details</b>"
+#~ msgstr "<b>Konto Elektoj</b>"
+
+#, fuzzy
+#~ msgid "<b>Subscription</b>"
+#~ msgstr "Konektu"
+
+#, fuzzy
+#~ msgid "<span size=\"smaller\">Example: Mikael or user@server.org</span>"
+#~ msgstr "<span size=\"smaller\">Ekzemplo: uzanto@jabber.org</span>"
+
+#, fuzzy
+#~ msgid "Accou_nt:"
+#~ msgstr "Jabber Konto"
+
+#, fuzzy
+#~ msgid "Add Contact"
+#~ msgstr "_Aldonu Kontakto..."
+
+#, fuzzy
+#~ msgid "Ch_at"
+#~ msgstr "Babilo"
+
+# babililo = chat-tool
+#~ msgid "Client:"
+#~ msgstr "Babililo:"
+
+#, fuzzy
+#~ msgid "Con_tact:"
+#~ msgstr "_Aldonu Kontakto..."
+
+#, fuzzy
+#~ msgid "Connect on S_tartup"
+#~ msgstr "Ne konekti dum lanĉo"
+
+#, fuzzy
+#~ msgid "Contacts"
+#~ msgstr "_Aldonu Kontakto..."
+
+#~ msgid "Country:"
+#~ msgstr "Lando:"
+
+#, fuzzy
+#~ msgid "Decide _Later"
+#~ msgstr "_Decidi pli Poste"
+
+#, fuzzy
+#~ msgid "Edit Contact"
+#~ msgstr "_Aldonu Kontakto..."
+
+#~ msgid "Edit Groups"
+#~ msgstr "Editu Grupoj"
+
+#~ msgid "Email:"
+#~ msgstr "Retpoŝto:"
+
+#, fuzzy
+#~ msgid "ID:"
+#~ msgstr "JID"
+
+#~ msgid "Name:"
+#~ msgstr "Nomo:"
+
+#~ msgid "OS:"
+#~ msgstr "Mastruma Sistemo:"
+
+#, fuzzy
+#~ msgid "Personal Details"
+#~ msgstr "<b>Konto Elektoj</b>"
+
+#, fuzzy
+#~ msgid "R_egister"
+#~ msgstr "Re_gistrigu..."
+
+#, fuzzy
+#~ msgid "Search"
+#~ msgstr "_Serĉo..."
+
+#, fuzzy
+#~ msgid "Spell Checker"
+#~ msgstr "Gossip - Sendu Mesaĝo"
+
+#, fuzzy
+#~ msgid "This is the name that will be used on your roster for this contact"
+#~ msgstr "Kio kromnomo vi deziras uzi por tio kontakto?"
+
+#~ msgid "Version:"
+#~ msgstr "Versio:"
+
+#, fuzzy
+#~ msgid "View Previous Conversations"
+#~ msgstr "_Konversacio"
+
+#, fuzzy
+#~ msgid "Which account do you want to use?"
+#~ msgstr "Kio uzantonomo vi deziras uzi?"
+
+#, fuzzy
+#~ msgid "_Connect"
+#~ msgstr "Konektu"
+
+#, fuzzy
+#~ msgid "_Description:"
+#~ msgstr "Priskribo"
+
+#~ msgid "_Disconnect"
+#~ msgstr "_Malkonektu"
+
+#, fuzzy
+#~ msgid "_Email:"
+#~ msgstr "Retpoŝto:"
+
+#, fuzzy
+#~ msgid ""
+#~ "_Enter the name or contact ID of the person you want to chat to below:"
+#~ msgstr "Enigu la uzantonomon de la personon vi deziras sendi iu mesaĝo."
+
+#, fuzzy
+#~ msgid "_For:"
+#~ msgstr "_Konektilo:"
+
+#, fuzzy
+#~ msgid "_Full Name:"
+#~ msgstr "Nomo:"
+
+#, fuzzy
+#~ msgid "_Group:"
+#~ msgstr "Grupo"
+
+#, fuzzy
+#~ msgid "_Nick Name:"
+#~ msgstr "Krom_nomo:"
+
+#, fuzzy
+#~ msgid "_Password:"
+#~ msgstr "_Pasvorto:"
+
+#, fuzzy
+#~ msgid "_Quit Message:"
+#~ msgstr "_Statoj Mesaĝoj"
+
+#, fuzzy
+#~ msgid "_Retrieve"
+#~ msgstr "_Forigu"
+
+#, fuzzy
+#~ msgid "_Web site:"
+#~ msgstr "TTT-ejo:"
+
+#~ msgid "Preset status messages"
+#~ msgstr "Savis stato mesaĝoj"
+
+#~ msgid "Preset status messages."
+#~ msgstr "Savis stato mesaĝoj."
+
+#, fuzzy
+#~ msgid "Connecting"
+#~ msgstr "Konektu"
+
+#~ msgid "%s will be added to your contact list."
+#~ msgstr "%s aldonos al vi kontaktlisto."
+
+#, fuzzy
+#~ msgid "%s ID of new contact:"
+#~ msgstr "_Jabber ID de nova kontakto:"
+
+#, fuzzy
+#~ msgid ""
+#~ "Please enter your invitation message to:\n"
+#~ "%s"
+#~ msgstr "Bonvolu enigu vin pasvorton:"
+
+#~ msgid "Contact Information for %s"
+#~ msgstr "Kontakto Informaĵo por %s"
+
+#, fuzzy
+#~ msgid "/Contact Infor_mation"
+#~ msgstr "/_Informo de Kontakto"
+
+#, fuzzy
+#~ msgid "/Re_name Contact"
+#~ msgstr "/Re_nomu kontakto"
+
+#, fuzzy
+#~ msgid "/_Edit Groups"
+#~ msgstr "/_Editu grupoj"
+
+#, fuzzy
+#~ msgid "/_View Previous Conversations"
+#~ msgstr "_Konversacio"
+
+#~ msgid ""
+#~ "Please enter a new nickname for the contact\n"
+#~ "%s"
+#~ msgstr ""
+#~ "Bonvolu enigu novan kromnomon por la kontakto\n"
+#~ "%s"
+
+#~ msgid "Edit groups for %s"
+#~ msgstr "Editu grupoj por %s"
+
+#~ msgid "Conversation Log"
+#~ msgstr "Protokolo de Konversacio"
+
+#~ msgid "Registering account"
+#~ msgstr "Registrigas konto"
+
+#, fuzzy
+#~ msgid "Respond"
+#~ msgstr "Ekspliko:"
+
+#, fuzzy
+#~ msgid "Add to _favourites"
+#~ msgstr "Editu favoratoj..."
+
+#, fuzzy
+#~ msgid "Na_me:"
+#~ msgstr "Nomo:"
+
+#, fuzzy
+#~ msgid "New Chat Room"
+#~ msgstr "Gossip - Babilo"
+
+#~ msgid " "
+#~ msgstr " "
+
+#, fuzzy
+#~ msgid "<b>Information requested, please wait...</b>"
+#~ msgstr "<b>Informaĵo petis, Bonvolu atendi...</b>"
+
+#, fuzzy
+#~ msgid "<span size=\"smaller\">Example:</span>"
+#~ msgstr "<span size=\"smaller\">Ekzemplo: uzanto@jabber.org</span>"
+
+#, fuzzy
+#~ msgid "Chat Rooms..."
+#~ msgstr "Gossip - Babilo"
+
+#, fuzzy
+#~ msgid "Do you already have an account set up on a server?"
+#~ msgstr "Ĉu havas konton en iu Jabber servilo?"
+
+#, fuzzy
+#~ msgid "Enter the port used in the connection for this account"
+#~ msgstr ""
+#~ "Bonvolu enigu novan kromnomon por la kontakto\n"
+#~ "%s"
+
+#, fuzzy
+#~ msgid "Enter the server used in the connection for this account"
+#~ msgstr ""
+#~ "Bonvolu enigu novan kromnomon por la kontakto\n"
+#~ "%s"
+
+#, fuzzy
+#~ msgid "Finished"
+#~ msgstr "Agordo Finitis"
+
+#~ msgid "Gossip"
+#~ msgstr "Gossip"
+
+#~ msgid ""
+#~ "Gossip is a modern client for the Jabber Instant Messaging system.\n"
+#~ "\n"
+#~ "This assistant will help you configure Gossip and connect you to your "
+#~ "favorite Jabber server.\n"
+#~ "\n"
+#~ "To get started, just click \"Forward\"."
+#~ msgstr ""
+#~ "Gossip estas iu modernan programon por la Jabber sistemo de tujmesaĝilo.\n"
+#~ "\n"
+#~ "Ĉi tion asistanton asistos vi al konfiguri Gossip, kaj konekti vi alvia "
+#~ "favorata servilo de Jabber.Por komenci, simple alklaki \"Antaŭen\"."
+
+#~ msgid ""
+#~ "In order to subscribe to presence notifications from the user, a request "
+#~ "will be sent. Until this request is approved, the user will always be "
+#~ "shown as \"Offline\" in your contact list."
+#~ msgstr ""
+#~ "Por kotizi al avizojn de ĉeeston el la uzanto, iu peto estos sendi. Ĝis "
+#~ "la peton estas elprovita, la uzanto ĉiam vidiĝi kiel nekontaktebla el "
+#~ "viakontaktlisto."
+
+#~ msgid "In which group do you want to place this contact?"
+#~ msgstr "Ĉu grupoj vi deziras meti tiu kontakto?"
+
+#~ msgid "Jabber ID:"
+#~ msgstr "Jabber ID:"
+
+#, fuzzy
+#~ msgid "Nickname:"
+#~ msgstr "Krom_nomo:"
+
+#, fuzzy
+#~ msgid "Port:"
+#~ msgstr "_Konektilo:"
+
+#, fuzzy
+#~ msgid "Registering Account"
+#~ msgstr "Registrigas konto"
+
+#, fuzzy
+#~ msgid "Resource:"
+#~ msgstr "_Rimedero:"
+
+#~ msgid "Server:"
+#~ msgstr "Servilo:"
+
+#, fuzzy
+#~ msgid "Web Site:"
+#~ msgstr "TTT-ejo:"
+
+#~ msgid "Welcome to Gossip"
+#~ msgstr "Bonvenon al Gossip"
+
+#~ msgid "What instant messaging system does the contact use?"
+#~ msgstr "Kio sistemo de tujmesaĝilo ĉu la kontakto uzas?"
+
+#~ msgid "What is your name?"
+#~ msgstr "Kio estas vi nomo?"
+
+#, fuzzy
+#~ msgid "What password do you want to use?"
+#~ msgstr "Kio servilo vi deziras uzi?"
+
+#~ msgid "What username do you use?"
+#~ msgstr "Kio uzantonomo vi uzas?"
+
+#~ msgid "What username do you want to use?"
+#~ msgstr "Kio uzantonomo vi deziras uzi?"
+
+#, fuzzy
+#~ msgid "Which account do you want to add this contact to?"
+#~ msgstr "Ĉu grupoj vi deziras meti tiu kontakto?"
+
+#, fuzzy
+#~ msgid ""
+#~ "You can change your account settings later by selecting the Edit-"
+#~ ">Accounts menu item."
+#~ msgstr ""
+#~ "Gossip nun estas deca konfigura por vi sistemo.\n"
+#~ "Vi povus vian konfiguron pli poste, per selektus la Babilo->Konektu..."
+#~ "menuero."
+
+#, fuzzy
+#~ msgid "Your Account"
+#~ msgstr "Jabber Konto"
+
+#~ msgid "Your Identity"
+#~ msgstr "Vi Idento"
+
+#, fuzzy
+#~ msgid "_Group Chat"
+#~ msgstr "Gossip - Babilo"
+
+#, fuzzy
+#~ msgid "_No"
+#~ msgstr "Ne"
+
+#~ msgid "_Search..."
+#~ msgstr "_Serĉo..."
+
+#, fuzzy
+#~ msgid "_Yes"
+#~ msgstr "Jes"
+
+#~ msgid "Be silent when away"
+#~ msgstr "Silentu dum fora"
+
+#~ msgid "Be silent when busy"
+#~ msgstr "Silentu dum okupita"
+
+#~ msgid "Height of main window"
+#~ msgstr "Alteco de precipa fenestro"
+
+#, fuzzy
+#~ msgid "The X position of the main window."
+#~ msgstr "La iksa pozicio de la precipa fenestro."
+
+#, fuzzy
+#~ msgid "The Y position of the main window."
+#~ msgstr "La ipsilona pozicio de la precipa fenestro."
+
+#~ msgid "The width of the main window."
+#~ msgstr "La larĝeco de la precipa fenestro."
+
+#~ msgid "Width of the main window"
+#~ msgstr "Larĝeco de la precipa fenestro"
+
+#, fuzzy
+#~ msgid "X position of main window"
+#~ msgstr "Iksa pozicio de precipa fenestro"
+
+#, fuzzy
+#~ msgid "Y position of main window"
+#~ msgstr "Ipsilona pozicio de precipa fenestro"
+
+#~ msgid "Gossip, Instant Messaging Client"
+#~ msgstr "Gossip, Tujmesaĝilo"
+
+#, fuzzy
+#~ msgid "Close this chat window"
+#~ msgstr "Kaŝu la precipa fenestro."
+
+#, fuzzy
+#~ msgid "Requested Information"
+#~ msgstr "_Konto Informaĵo"
+
+#, fuzzy
+#~ msgid "Send Message"
+#~ msgstr "Stato"
+
+#, fuzzy
+#~ msgid "%s has gone offline"
+#~ msgstr "%s estinta ne kontaktebla"
+
+#~ msgid "Available..."
+#~ msgstr "Ricevebla..."
+
+#~ msgid "Busy..."
+#~ msgstr "Okupita..."
+
+#~ msgid "Away..."
+#~ msgstr "Fora..."
+
+#~ msgid "Contact _Information"
+#~ msgstr "Kontakto _Informaĵo"
+
+#, fuzzy
+#~ msgid "Gossip - Accounts"
+#~ msgstr "Gossip - Grupbabilo"
+
+#, fuzzy
+#~ msgid "Join _Group Chat..."
+#~ msgstr "Kuniĝu _Grupbabilo..."
+
+#, fuzzy
+#~ msgid "Por_t:"
+#~ msgstr "_Konektilo:"
+
+#, fuzzy
+#~ msgid "Requested information."
+#~ msgstr "Informaĵo pri Babililo "
+
+#, fuzzy
+#~ msgid "Could not open connection"
+#~ msgstr "Sensukcese konekti"
+
+#, fuzzy
+#~ msgid "Could not find the server you wanted to use"
+#~ msgstr "Kio servilo vi deziras uzi?"
+
+#, fuzzy
+#~ msgid "Connection to the server failed."
+#~ msgstr "<b>Konektu al servilo</b>"
+
+#~ msgid "Written by:"
+#~ msgstr "Programadis per:"
+
+#~ msgid "Artwork by:"
+#~ msgstr "Arto per:"
+
+#~ msgid "Translated by:"
+#~ msgstr "Tradukis per:"
+
+#, fuzzy
+#~ msgid "Account ID"
+#~ msgstr "_Konto Informaĵo"
+
+#~ msgid "%sChat - %s"
+#~ msgstr "%sBabilo - %s"
+
+#~ msgid "/Show _Log"
+#~ msgstr "/Montru Protoko_lo"
+
+#, fuzzy
+#~ msgid "Persian"
+#~ msgstr "Versio:"
+
+#~ msgid "View Lo_g"
+#~ msgstr "Vidu _Protokolo"
+
+#~ msgid "Gossip - Group Chat"
+#~ msgstr "Gossip - Grupbabilo"
+
+#, fuzzy
+#~ msgid "Gossip - Add contact"
+#~ msgstr "Aldonu kontakto"
+
+#, fuzzy
+#~ msgid "Gossip - Contact Information"
+#~ msgstr "Kontakto _Informaĵo"
+
+#, fuzzy
+#~ msgid "Gossip - Edit Groups"
+#~ msgstr "Gossip - Editu Grupbabiloj"
+
+#, fuzzy
+#~ msgid "Gossip - New Account"
+#~ msgstr "Gossip - Grupbabilo"
+
+#, fuzzy
+#~ msgid "Gossip - New Message"
+#~ msgstr "Gossip - Sendu Mesaĝo"
+
+#, fuzzy
+#~ msgid "Gossip - Personal Details"
+#~ msgstr "Gossip - Sendu Mesaĝo"
+
+#, fuzzy
+#~ msgid "Gossip - Preferences"
+#~ msgstr "Agordoj"
+
+#, fuzzy
+#~ msgid "Gossip - Status Message"
+#~ msgstr "Gossip - Sendu Mesaĝo"
+
+#~ msgid "What request message do you want to send to %s?"
+#~ msgstr "Kio peta mesaĝo vi deziras sendi al %s?"
+
+#~ msgid "Make sure that your account information is correct."
+#~ msgstr "Kontrolu vin konton informaĵon ĉu korekta."
+
+#~ msgid "%s wants to be notified of your presence."
+#~ msgstr "%s deziras avizi da vin ĉeesto."
+
+#~ msgid "You were disconnected from the server. Do you want to reconnect?"
+#~ msgstr "Vi malkonektis de ĉi servilo. Ĉu vi deziras rekonekti?"
+
+#~ msgid ""
+#~ "Make sure that your account information is correct. The server may also "
+#~ "currently be unavailable."
+#~ msgstr ""
+#~ "Kontrolu vin konton informaĵon ĉu korekta. Ankaŭ, la servilo eble estas "
+#~ "malkonekti."
+
+#~ msgid "Edit List..."
+#~ msgstr "Editu Listo..."
+
+#~ msgid "An error occurred when chatting with %s."
+#~ msgstr "Iu eraro okazintis dum babilinta kun %s."
+
+#~ msgid "Details:"
+#~ msgstr "Detaloj:"
+
+#~ msgid "An error occurred when chatting in the group chat %s."
+#~ msgstr "Iu eraron okazis dum babilis en la grupbabilo %s."
+
+#~ msgid "Unable to enter the group chat %s."
+#~ msgstr "Malsukcesis enveni la grupbabilo %s."
+
+#~ msgid "Gossip will now try to use your account:"
+#~ msgstr "Gossip penos uzi vin konton:"
+
+#~ msgid "Gossip will now try to register the account:"
+#~ msgstr "Gossip penos registrigi la konton:"
+
+#~ msgid "*"
+#~ msgstr "*"
+
+#~ msgid "From:"
+#~ msgstr "El:"
+
+#~ msgid "Gossip - Received Message"
+#~ msgstr "Gossip - Ricevis Mesaĝo"
+
+#~ msgid "In reply to:"
+#~ msgstr "En responda pri:"
+
+#~ msgid "To:"
+#~ msgstr "Por:"
+
+#~ msgid "_Reply..."
+#~ msgstr "_Respondu..."
+
+#~ msgid "_Send"
+#~ msgstr "_Sendu"
+
+#~ msgid "C_onnect"
+#~ msgstr "K_onektu"
+
+#~ msgid " "
+#~ msgstr " "
+
+#~ msgid "<b>Available chat rooms</b>"
+#~ msgstr "<b>Riceveblaj babilejoj</b>"
+
+#~ msgid "<b>Chat room information</b>"
+#~ msgstr "<b>Informaĵo de babilejo</b>"
+
+#~ msgid "Gossip - Join Group Chat"
+#~ msgstr "Gossip - Kuniĝu Grupbabilo"
+
+#~ msgid "N_ickname:"
+#~ msgstr "K_romnomo"
+
+#~ msgid ""
+#~ "Pick a favorite, or enter nickname, server name, and the name of the chat "
+#~ "room to enter."
+#~ msgstr ""
+#~ "Elektu iu favorata, aŭ enskribu kromnomo, la nomo de servilo, kaj la nomo "
+#~ "de la babilejo por kuniĝi."
+
+#~ msgid "R_emove"
+#~ msgstr "_Fortiru"
+
+#~ msgid "_Add"
+#~ msgstr "_Aldonu"
+
+#~ msgid " "
+#~ msgstr " "
+
+#~ msgid "<b>Preset status messages</b>"
+#~ msgstr "<b>Savis stata mesaĝoj</b>"
+
+#~ msgid "<i>Information not available</i>"
+#~ msgstr "<i>Informaĵo ne havebla</i>"
+
+#~ msgid "Choose a Server"
+#~ msgstr "Elektu Servilo"
+
+#~ msgid "Choose from list:"
+#~ msgstr "Elektu el listo:"
+
+#~ msgid "Information about ..."
+#~ msgstr "Informaĵo pri ..."
+
+#~ msgid "Jabber.com"
+#~ msgstr "Jabber.com"
+
+#~ msgid "Jabber.org"
+#~ msgstr "Jabber.org"
+
+#~ msgid "On what server do you have a Jabber account?"
+#~ msgstr "Ĉu kio servilo vi havas iu konto de Jabber?"
+
+#~ msgid "Sound"
+#~ msgstr "Sono"
+
+#~ msgid "Use a different server"
+#~ msgstr "Uzas iu diferenca servilo"
+
+#~ msgid "What request message do you want to send to ...?"
+#~ msgstr "Kio petomesaĝo vi deziras sendi?"
diff --git a/gnome-2-22/po/es.po b/gnome-2-22/po/es.po
new file mode 100644
index 000000000..191f570c4
--- /dev/null
+++ b/gnome-2-22/po/es.po
@@ -0,0 +1,1751 @@
+# translation of empathy.HEAD.po to Español
+# Copyright (C) 2003 Free Software Foundation
+# This file is distributed under the same license as the Gossip package.
+#
+# Jorge González <jorgegonz@svn.gnome.org>, 2007, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: empathy.HEAD\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-02 18:53+0000\n"
+"PO-Revision-Date: 2008-03-04 18:53+0100\n"
+"Last-Translator: Jorge González <jorgegonz@svn.gnome.org>\n"
+"Language-Team: Español <gnome-es-list@gnome.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: ../data/empathy.desktop.in.in.h:1
+msgid "Empathy Instant Messenger"
+msgstr "Mensajería instantánea Empathy"
+
+#: ../data/empathy.desktop.in.in.h:2
+msgid "Send and receive instant messages"
+msgstr "Envíe y reciba mensajes instantáneos"
+
+#: ../data/empathy.schemas.in.h:1
+msgid "Always open a separate chat window for new chats."
+msgstr "Siempre abrir una ventana de chat separada para chats nuevos."
+
+#: ../data/empathy.schemas.in.h:2
+msgid ""
+"Character to add after nickname when using nick completion (tab) in group "
+"chat."
+msgstr ""
+"Carácter que añadir después del apodo cuando se usa el completado de apodos "
+"(tab) en salas de chat."
+
+#: ../data/empathy.schemas.in.h:3
+msgid "Chat window theme"
+msgstr "Tema de la ventana de charla"
+
+#: ../data/empathy.schemas.in.h:4
+msgid "Checks if Empathy should autoconnect on startup"
+msgstr "Comprueba si Empathy debe autoconectarse al inicio"
+
+#: ../data/empathy.schemas.in.h:5
+msgid "Checks if NetworkManager should be used"
+msgstr "Comprueba si se debe usar NetworkManager"
+
+#: ../data/empathy.schemas.in.h:6
+msgid "Checks if Salut account is created"
+msgstr "Comprueba si la cuenta Salut se ha creado"
+
+#: ../data/empathy.schemas.in.h:7
+msgid "Comma separated list of spell checker languages to use (e.g. en, fr, nl)."
+msgstr ""
+"Lista separada por comas de idiomas que se usarán en la revisión ortográfica "
+"(ej. en, fr, nl)."
+
+#: ../data/empathy.schemas.in.h:8
+msgid "Compact contact list"
+msgstr "Lista compacta de contactos"
+
+#: ../data/empathy.schemas.in.h:9
+msgid "Contact list sort criterium"
+msgstr "Criterio de ordenamiento de la lista de contactos"
+
+#: ../data/empathy.schemas.in.h:10
+msgid "Default directory to select an avatar image from"
+msgstr "Directorio predeterminado para seleccionar un avatar"
+
+#: ../data/empathy.schemas.in.h:11
+msgid "Enable popup when contact is available"
+msgstr "Activar ventana emergente cuando un contacto está disponible"
+
+#: ../data/empathy.schemas.in.h:12
+msgid "Enable sound when away"
+msgstr "Activar sonido al ausentarse"
+
+#: ../data/empathy.schemas.in.h:13
+msgid "Enable sound when busy"
+msgstr "Activar sonido cuando se esté ocupado"
+
+#: ../data/empathy.schemas.in.h:14
+msgid "Enable spell checker"
+msgstr "Activar revisor ortográfico"
+
+#: ../data/empathy.schemas.in.h:15
+msgid "Hide main window"
+msgstr "Ocultar la ventana principal"
+
+#: ../data/empathy.schemas.in.h:16
+msgid "Hide the main window."
+msgstr "Ocultar la ventana principal."
+
+#: ../data/empathy.schemas.in.h:17
+msgid "Nick completed character"
+msgstr "Carácter de completado de apodo"
+
+#: ../data/empathy.schemas.in.h:18
+msgid "Open new chats in separate windows"
+msgstr "Abrir chats nuevos en ventanas separadas"
+
+#: ../data/empathy.schemas.in.h:19
+msgid "Show avatars"
+msgstr "Mostrar avatares"
+
+#: ../data/empathy.schemas.in.h:20
+msgid "Show hint about closing the main window"
+msgstr "Mostrar consejo sobre cómo cerrar la ventana principal"
+
+#: ../data/empathy.schemas.in.h:21
+msgid "Show offline contacts"
+msgstr "Mostrar contactos no conectados"
+
+#: ../data/empathy.schemas.in.h:22
+msgid "Spell checking languages"
+msgstr "Idiomas para revisión ortográfica"
+
+#: ../data/empathy.schemas.in.h:23
+msgid "The last directory that an avatar image was chosen from."
+msgstr "Último directorio del que fue elegido un avatar."
+
+#: ../data/empathy.schemas.in.h:24
+msgid "The theme that is used to display the conversation in chat windows."
+msgstr "El tema que se usará para mostrar la conversación en las ventanas de chat."
+
+#: ../data/empathy.schemas.in.h:25
+msgid "Use graphical smileys"
+msgstr "Usar emoticonos gráficos"
+
+#: ../data/empathy.schemas.in.h:26
+msgid "Use notification sounds"
+msgstr "Usar sonidos de notificación"
+
+#: ../data/empathy.schemas.in.h:27
+msgid "Use theme for chat rooms"
+msgstr "Usar tema para salas de chat"
+
+#: ../data/empathy.schemas.in.h:28
+msgid ""
+"Whether or not Empathy should automatically login to your accounts on "
+"startup."
+msgstr "Indica si Empathy debe registrar sus cuentas automáticamente al inicio."
+
+#: ../data/empathy.schemas.in.h:29
+msgid "Whether or not the Salut account has been created on the first empathy run."
+msgstr ""
+"Indica si la cuenta Salut se ha creado cuando ejecutó por primera vez "
+"Empathy."
+
+#: ../data/empathy.schemas.in.h:30
+msgid ""
+"Whether or not the network manager should be used to automatically "
+"disconnect/reconnect."
+msgstr ""
+"Indica si se debe usar el gestor de la red para desconectarse/reconectarse "
+"automáticamente."
+
+#: ../data/empathy.schemas.in.h:31
+msgid ""
+"Whether or not to check words typed against the languages you want to check "
+"with."
+msgstr ""
+"Indica si se debe o no revisar las palabras tecleadas con respecto a los "
+"idiomas con los que quiere comprobarlo."
+
+#: ../data/empathy.schemas.in.h:32
+msgid "Whether or not to convert smileys into graphical images in conversations."
+msgstr ""
+"Indica si debe o no debe convertir los emoticonos en imágenes gráficas en "
+"las conversaciones."
+
+#: ../data/empathy.schemas.in.h:33
+msgid "Whether or not to play a sound when messages arrive."
+msgstr "Indica si debe reproducir un sonido cuando lleguen mensajes."
+
+#: ../data/empathy.schemas.in.h:34
+msgid "Whether or not to play sounds when away."
+msgstr "Indica si debe o no reproducir sonidos cuando se esté ausente."
+
+#: ../data/empathy.schemas.in.h:35
+msgid "Whether or not to play sounds when busy."
+msgstr "Indica si debe o no reproducir sonidos cuando esté ocupado."
+
+#: ../data/empathy.schemas.in.h:36
+msgid "Whether or not to show a popup when a contact becomes available."
+msgstr ""
+"Indica si debe o no mostrar una ventana emergente cuando un contacto vuelva "
+"a estar disponible."
+
+#: ../data/empathy.schemas.in.h:37
+msgid ""
+"Whether or not to show avatars for contacts in the contact list and chat "
+"windows."
+msgstr ""
+"Indica si debe o no mostrar los avatares para los contactos en la lista de "
+"contactos y ventanas de chat."
+
+#: ../data/empathy.schemas.in.h:38
+msgid "Whether or not to show contacts that are offline in the contact list."
+msgstr ""
+"Indica si debe o no mostrar los contactos que están desconectados en la "
+"lista de contactos."
+
+#: ../data/empathy.schemas.in.h:39
+msgid ""
+"Whether or not to show the message dialog about closing the main window with "
+"the 'x' button in the title bar."
+msgstr ""
+"Indica si debe o no mostrar un mensaje de diálogo sobre cómo cerrar la "
+"ventana principal con el botón 'x' en la barra de título."
+
+#: ../data/empathy.schemas.in.h:40
+msgid "Whether to show the contact list in compact mode or not."
+msgstr "Indica si debe o no mostrar la lista de contactos en modo compacto."
+
+#: ../data/empathy.schemas.in.h:41
+msgid "Whether to use the theme for chat rooms or not."
+msgstr "Indica si debe o no usar el tema para salas de chat."
+
+#: ../data/empathy.schemas.in.h:42
+msgid ""
+"Which criterium to use when sorting the contact list. Default is to use sort "
+"by the contact's name with the value \"name\". A value of \"state\" will "
+"sort the contact list by state."
+msgstr ""
+"Qué criterio usar al ordenar la lista de contactos. El criterio "
+"predeterminado es ordenar por el nombre del contacto con el valor «nombre». "
+"Un valor «estado» ordenará la lista por el estado."
+
+#: ../libempathy/empathy-tp-contact-list.c:724 ../src/empathy.c:149
+msgid "People nearby"
+msgstr "Gente cerca"
+
+#: ../libempathy/empathy-utils.c:540
+msgid "Available"
+msgstr "Disponible"
+
+#: ../libempathy/empathy-utils.c:542
+msgid "Busy"
+msgstr "Ocupado"
+
+#: ../libempathy/empathy-utils.c:545
+msgid "Away"
+msgstr "Ausente"
+
+#: ../libempathy/empathy-utils.c:547
+msgid "Hidden"
+msgstr "Oculto"
+
+#: ../libempathy/empathy-utils.c:550
+msgid "Offline"
+msgstr "Desconectado"
+
+#: ../libempathy-gtk/empathy-about-dialog.c:63
+msgid ""
+"Empathy is free software; you can redistribute it and/or modify it under the "
+"terms of the GNU General Public License as published by the Free Software "
+"Foundation; either version 2 of the License, or (at your option) any later "
+"version."
+msgstr ""
+"Empathy es software libre; puede redistribuirlo y /o modificarlo bajo los "
+"términos de la Licencia Pública General tal como la publica la Free Software "
+"Foundation; ya sea en la versión 2 de la Licencia, o (a su elección) "
+"cualquier versión posterior."
+
+#: ../libempathy-gtk/empathy-about-dialog.c:67
+msgid ""
+"Empathy is distributed in the hope that it will be useful, but WITHOUT ANY "
+"WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS "
+"FOR A PARTICULAR PURPOSE. See the GNU General Public License for more "
+"details."
+msgstr ""
+"Empathy se distribuye con la esperanza de que le sea útil,pero SIN NINGUNA "
+"GARANTÍA; sin incluso la garantía implícita de MERCANTILIDAD o IDONEIDAD "
+"PARA UN PROPÓSITO PARTICULAR. Vea la Licencia Pública General de GNU para "
+"más detalles."
+
+#: ../libempathy-gtk/empathy-about-dialog.c:71
+msgid ""
+"You should have received a copy of the GNU General Public License along with "
+"Empathy; if not, write to the Free Software Foundation, Inc., 51 Franklin "
+"Street, Fifth Floor, Boston, MA 02110-130159 USA"
+msgstr ""
+"Debería haber recibido una copia de la Licencia Pública General GNU junto "
+"con Gossip ; si no, escriba a la Free Software Foundation, Inc., 51 Franklin "
+"Street, Fifth Floor, Boston, MA 02110-130159 EE. UU."
+
+#: ../libempathy-gtk/empathy-about-dialog.c:99
+msgid "An Instant Messaging client for GNOME"
+msgstr "Un cliente de mensajería instantánea para GNOME"
+
+#: ../libempathy-gtk/empathy-about-dialog.c:105
+msgid "translator-credits"
+msgstr "Jorge González <jorgegonz@svn.gnome.org>, 2007-2008."
+
+#: ../libempathy-gtk/empathy-account-chooser.c:337
+msgid "All"
+msgstr "Todo"
+
+#: ../libempathy-gtk/empathy-account-widget.c:276
+#: ../libempathy-gtk/empathy-account-widget.c:321
+#, c-format
+msgid "%s:"
+msgstr "%s:"
+
+#: ../libempathy-gtk/empathy-account-widget-icq.glade.h:1
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:1
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:1
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:1
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:1
+msgid "<b>Advanced</b>"
+msgstr "<b>Avanzado</b>"
+
+#: ../libempathy-gtk/empathy-account-widget-icq.glade.h:2
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:3
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:2
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:2
+msgid "Forget password and clear the entry."
+msgstr "Olvidar la contraseña y limpiar la entrada."
+
+#: ../libempathy-gtk/empathy-account-widget-icq.glade.h:3
+msgid "ICQ _UIN:"
+msgstr "_UIN ICQ:"
+
+#: ../libempathy-gtk/empathy-account-widget-icq.glade.h:4
+msgid "ICQ account settings"
+msgstr "Ajustes de la cuenta ICQ"
+
+#: ../libempathy-gtk/empathy-account-widget-icq.glade.h:5
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:5
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:4
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:5
+msgid "Pass_word:"
+msgstr "Contra_seña:"
+
+#: ../libempathy-gtk/empathy-account-widget-icq.glade.h:6
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:8
+msgid "_Charset:"
+msgstr "Conjunto de _caracteres:"
+
+#: ../libempathy-gtk/empathy-account-widget-icq.glade.h:7
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:11
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:5
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:10
+msgid "_Port:"
+msgstr "_Puerto:"
+
+#: ../libempathy-gtk/empathy-account-widget-icq.glade.h:8
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:12
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:6
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:12
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:10
+msgid "_Server:"
+msgstr "_Servidor:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:2
+msgid "<b>Override server settings</b>"
+msgstr "<b>Sobreescribir la configuración del servidor</b>"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:4
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:3
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:4
+msgid "Login I_D:"
+msgstr "_ID de sesión:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:6
+msgid "Pri_ority:"
+msgstr "Pri_oridad:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:7
+msgid "Reso_urce:"
+msgstr "Re_curso:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:8
+msgid "Use old SS_L"
+msgstr "Usar SS_L antiguo"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:9
+msgid "_Encryption required (TLS/SSL)"
+msgstr "Se requiere ci_frado (TLS/SSL)"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:10
+msgid "_Ignore SSL certificate errors"
+msgstr "_Ignorar los errores de certificados SSL"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:13
+msgid "jabber account settings"
+msgstr "Ajustes de la cuenta Jabber"
+
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:7
+msgid "msn account settings"
+msgstr "Ajustes de la cuenta MSN"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:2
+msgid "_E-mail:"
+msgstr "Correo-e:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:3
+msgid "_First Name: "
+msgstr "_Nombre:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:4
+msgid "_Jabber ID:"
+msgstr "ID _Jabber:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:5
+msgid "_Last Name:"
+msgstr "Ape_llidos:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:6
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:8
+msgid "_Nickname:"
+msgstr "_Apodo:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:7
+msgid "_Published Name:"
+msgstr "Nombre _publicado:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:8
+msgid "salut account settings"
+msgstr "Ajustes de la cuenta Salut"
+
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:3
+msgid "J_apan server:"
+msgstr "servidor j_aponés:"
+
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:6
+msgid "Use _Yahoo Japan"
+msgstr "User _Yahoo Japan"
+
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:7
+msgid "Yahoo! account settings"
+msgstr "Ajustes de la cuenta Yahoo!"
+
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:9
+msgid "_Ignore conference and chatroom invitations"
+msgstr "_Ignorar invitaciones a conferencias y salas de chat"
+
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:11
+msgid "_Room List locale:"
+msgstr "Configuración de la lista de _salas:"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:225
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to start configuring."
+msgstr ""
+"Para añadir una cuenta nueva, pulse en el botón 'Añadir' y se creará una "
+"entrada nueva para que la configure."
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:229
+msgid ""
+"To add a new account, you first have to install a backend for each protocol "
+"you want to use."
+msgstr ""
+"Para añadir una nueva cuenta debe instalar primero un «backend» para cada "
+"protocolo que quiera usar."
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:236
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:2
+msgid "<b>No Account Selected</b>"
+msgstr "<b>Sin cuenta seleccionada</b>"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:237
+msgid ""
+"\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want "
+"to configure in the list on the left."
+msgstr ""
+"\n"
+"\n"
+"Si no quiere añadir una cuenta, simplemente pulse en la cuenta que quiere "
+"configurar en la lista de la izquierda."
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:243
+msgid "<b>No Accounts Configured</b>"
+msgstr "<b>No hay ninguna cuenta configurada</b>"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:411
+msgid "Enabled"
+msgstr "Activado"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:421
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:4
+msgid "Accounts"
+msgstr "Cuentas"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:904
+#, c-format
+msgid ""
+"You are about to remove your %s account!\n"
+"Are you sure you want to proceed?"
+msgstr ""
+"Va a eliminar su cuenta %s\n"
+"¿Seguro que quiere continuar?"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:910
+msgid ""
+"Any associated conversations and chat rooms will NOT be removed if you "
+"decide to proceed.\n"
+"\n"
+"Should you decide to add the account back at a later time, they will still "
+"be available."
+msgstr ""
+"Cualquier conversación o sala de chat asociada NO se eliminará si decide "
+"continuar.\n"
+"\n"
+"Si decidiera volver a añadir la cuenta más tarde, estarán aún disponibles."
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:1
+msgid "<b>New Account</b>"
+msgstr "<b>Nueva cuenta</b>"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:3
+msgid "<b>Settings</b>"
+msgstr "<b>Configuración</b>"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:5
+msgid "Cr_eate"
+msgstr "Cr_ear"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:6
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to started configuring.\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want "
+"to configure in the list on the left."
+msgstr ""
+"Para añadir una cuenta nueva, pulse en el botón de 'Añadir' y una se creará "
+"una entrada nueva para que la configure.\n"
+"\n"
+"Si no quiere añadir una cuenta, simplemente pulse en la cuenta que quiere "
+"configurar en la lista de la izquierda."
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:9
+msgid "Type:"
+msgstr "Tipo:"
+
+#: ../libempathy-gtk/empathy-avatar-chooser.c:449
+msgid "Select Your Avatar Image"
+msgstr "Seleccione su imagen de avatar"
+
+#: ../libempathy-gtk/empathy-avatar-chooser.c:452
+msgid "No Image"
+msgstr "Sin imagen"
+
+#: ../libempathy-gtk/empathy-avatar-chooser.c:512
+msgid "Images"
+msgstr "Imágenes"
+
+#: ../libempathy-gtk/empathy-avatar-chooser.c:516
+msgid "All Files"
+msgstr "Todos los archivos"
+
+#: ../libempathy-gtk/empathy-avatar-image.c:298
+msgid "Click to enlarge"
+msgstr "Pulse para agrandar"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:1
+msgid "End Call"
+msgstr "Finalizar llamada"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:2
+msgid "Input"
+msgstr "Entrada"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:3
+msgid "Mute"
+msgstr "Silenciar"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:4
+msgid "Output"
+msgstr "Salida"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:5
+msgid "Send Video"
+msgstr "Envía vídeo"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:6
+msgid "Start Call"
+msgstr "Iniciar llamada"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:7
+msgid "Volume"
+msgstr "Volumen"
+
+#: ../libempathy-gtk/empathy-chat.c:445
+msgid "Disconnected"
+msgstr "Desconectado"
+
+#: ../libempathy-gtk/empathy-chat.c:580
+msgid "offline"
+msgstr "desconectado"
+
+#: ../libempathy-gtk/empathy-chat.c:583
+msgid "invalid contact"
+msgstr "contacto no válido"
+
+#: ../libempathy-gtk/empathy-chat.c:586
+msgid "permission denied"
+msgstr "permiso denegado"
+
+#: ../libempathy-gtk/empathy-chat.c:589
+msgid "too long message"
+msgstr "mensaje demasiado largo"
+
+#: ../libempathy-gtk/empathy-chat.c:592
+msgid "not implemented"
+msgstr "no implementado"
+
+#: ../libempathy-gtk/empathy-chat.c:595
+msgid "unknown"
+msgstr "desconocido"
+
+#: ../libempathy-gtk/empathy-chat.c:599
+#, c-format
+msgid "Error sending message '%s': %s"
+msgstr "Error al enviar el mensaje «%s»: %s"
+
+#: ../libempathy-gtk/empathy-chat.c:1056
+msgid "Insert Smiley"
+msgstr "Insertar emoticono"
+
+#: ../libempathy-gtk/empathy-chat.c:1103
+msgid "_Check Word Spelling..."
+msgstr "_Comprobar ortografía…"
+
+#: ../libempathy-gtk/empathy-chat.c:1558
+msgid "Connected"
+msgstr "Conectado"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:1
+msgid "C_lear"
+msgstr "_Limpiar"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:2
+msgid "Ca_ll"
+msgstr "_Llamar"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:3
+msgid "Change _Topic..."
+msgstr "Cambiar el _tema…"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:4
+#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:3
+msgid "Chat"
+msgstr "Chat"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:5
+msgid "Contact Infor_mation"
+msgstr "Informa_ción del contacto"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:6
+msgid "Cu_t"
+msgstr "Cor_tar"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:7
+msgid "In_vite..."
+msgstr "In_vitar…"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:8
+msgid "Insert _Smiley"
+msgstr "Insertar _emoticono"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:9
+msgid "Invitation _message:"
+msgstr "_Mensaje de invitación:"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:10
+msgid "Invite"
+msgstr "Invitar"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:11
+#: ../libempathy-gtk/empathy-main-window.glade.h:4
+msgid "Join _New..."
+msgstr "Unirse a _nuevo…"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:12
+msgid "Move Tab _Left"
+msgstr "Mover solapa a la _izquierda"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:13
+msgid "Move Tab _Right"
+msgstr "Mover solapa a la _derecha"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:14
+msgid "Select who would you like to invite:"
+msgstr "Seleccione a quién quiere invitar:"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:15
+msgid "You have been invited to join a chat conference."
+msgstr "Le han invitado a unirse a una conferencia por chat."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:16
+#: ../libempathy-gtk/empathy-main-window.glade.h:9
+msgid "_Add Contact..."
+msgstr "_Añadir contacto…"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:17
+msgid "_Add To Favorites"
+msgstr "Añadir a _favoritos"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:18
+msgid "_Close"
+msgstr "_Cerrar"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:19
+#: ../libempathy-gtk/empathy-main-window.glade.h:11
+msgid "_Contents"
+msgstr "_Índice"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:20
+msgid "_Conversation"
+msgstr "_Conversación"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:21
+msgid "_Copy"
+msgstr "_Copiar"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:22
+msgid "_Detach Tab"
+msgstr "_Desacoplar solapa"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:23
+#: ../libempathy-gtk/empathy-contact-list-view.c:217
+#: ../libempathy-gtk/empathy-main-window.glade.h:12
+msgid "_Edit"
+msgstr "_Editar"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:24
+#: ../libempathy-gtk/empathy-main-window.glade.h:13
+msgid "_Help"
+msgstr "Ay_uda"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:25
+msgid "_Next Tab"
+msgstr "Solapa _siguiente"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:26
+msgid "_Paste"
+msgstr "_Pegar"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:27
+msgid "_Previous Tab"
+msgstr "Solapa _anterior"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:28
+#: ../libempathy-gtk/empathy-main-window.glade.h:18
+msgid "_Room"
+msgstr "_Sala"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:29
+msgid "_Show Contacts"
+msgstr "_Mostrar contactos"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:30
+msgid "_Tabs"
+msgstr "_Solapas"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:31
+#: ../libempathy-gtk/empathy-contact-list-view.c:233
+#: ../libempathy-gtk/empathy-main-window.glade.h:19
+msgid "_View Previous Conversations"
+msgstr "_Ver conversaciones previas"
+
+#: ../libempathy-gtk/empathy-chat-view.c:441
+msgid "_Copy Link Address"
+msgstr "_Copiar la dirección del enlace"
+
+#: ../libempathy-gtk/empathy-chat-view.c:449
+msgid "_Open Link"
+msgstr "_Abrir enlace"
+
+#: ../libempathy-gtk/empathy-chat-window.c:699
+#, c-format
+msgid "Conversations (%d)"
+msgstr "Conversaciones (%d)"
+
+#: ../libempathy-gtk/empathy-chat-window.c:1299
+msgid "Typing a message."
+msgstr "Tecleando un mensaje."
+
+#: ../libempathy-gtk/empathy-chatrooms-window.c:258
+msgid "Name"
+msgstr "Nombre"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.c:276
+msgid "Room"
+msgstr "Sala"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.c:285
+msgid "Auto Connect"
+msgstr "Autoconectar"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:1
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:5
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:1
+#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:1
+msgid "Account:"
+msgstr "Cuenta:"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:2
+msgid "Edit Favorite Room"
+msgstr "Editar sala de favoritos"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:3
+msgid "Join room on start_up"
+msgstr "Unirse a una sala al _iniciar"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:4
+msgid "Join this chat room when Empathy starts and you are connected"
+msgstr "Unirse a esta sala de chat cuando Empathy se inicie y esté conectado"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:5
+msgid "Manage Favorite Rooms"
+msgstr "Gestionar salas favoritas"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:6
+msgid "N_ame:"
+msgstr "_Nombre:"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:7
+msgid "S_erver:"
+msgstr "_Servidor:"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:9
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:9
+msgid "_Room:"
+msgstr "_Sala:"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:176
+msgid "Personal Information"
+msgstr "Información personal"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:179
+msgid "Edit Contact Information"
+msgstr "Editar información del contacto"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:182
+msgid "Contact Information"
+msgstr "Información del contacto"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:277
+msgid "I would like to add you to my contact list."
+msgstr "Me gustaría añadirte a mi lista de contactos."
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:301
+msgid "New Contact"
+msgstr "Contacto nuevo"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.glade.h:1
+msgid "Decide _Later"
+msgstr "Decidir _luego"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.glade.h:2
+msgid "Subscription Request"
+msgstr "Petición de suscripción"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:197
+msgid "_Contact"
+msgstr "Con_tacto"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:201
+msgid "_Group"
+msgstr "_Grupo"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:205
+#: ../libempathy-gtk/empathy-main-window.glade.h:10
+msgid "_Chat"
+msgstr "_Chat"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:205
+msgid "Chat with contact"
+msgstr "Chat con un contacto"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:209
+msgid "Infor_mation"
+msgstr "Informa_ción"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:209
+msgid "View contact information"
+msgstr "Ver información del contacto"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:213
+msgid "Re_name"
+msgstr "Re_nombrar"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:213
+msgid "Rename"
+msgstr "Renombrar"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:217
+msgid "Edit the groups and name for this contact"
+msgstr "Editar grupos y nombre para este contacto"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:221
+msgid "_Remove"
+msgstr "_Quitar"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:221
+msgid "Remove contact"
+msgstr "Quita el contacto"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:225
+msgid "_Invite to Chat Room"
+msgstr "_Invitar a sala de chat"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:225
+msgid "Invite to a currently open chat room"
+msgstr "Invita a una sala de chat ya abierta"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:229
+msgid "_Send File..."
+msgstr "_Enviar archivo…"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:229
+msgid "Send a file"
+msgstr "Envía un archivo"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:233
+msgid "View previous conversations with this contact"
+msgstr "Ver conversaciones anteriores con este contacto"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:238
+msgid "_Call"
+msgstr "_Llamar"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:238
+msgid "Start a voice or video conversation with this contact"
+msgstr "Iniciar una conversación de voz o vídeo con este contacto"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:1469
+msgid "Sorry, I don't want you in my contact list anymore."
+msgstr "Lo siento, no te quiero en mi lista de contactos."
+
+#: ../libempathy-gtk/empathy-contact-widget.c:688
+msgid "Select"
+msgstr "Seleccionar"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:698
+#: ../libempathy-gtk/empathy-main-window.c:609
+msgid "Group"
+msgstr "Grupo"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:1
+msgid "<b>Client Information</b>"
+msgstr "<b>Información del cliente</b>"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:2
+msgid "<b>Contact Details</b>"
+msgstr "<b>Detalles del contacto</b>"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:3
+msgid "<b>Contact</b>"
+msgstr "<b>Contacto</b>"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:4
+msgid "<b>Groups</b>"
+msgstr "<b>Grupos</b>"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:6
+msgid "Alias:"
+msgstr "Apodo:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:7
+msgid "Birthday:"
+msgstr "Cumpleaños:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:8
+msgid "Client:"
+msgstr "Cliente:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:9
+msgid "Contact information"
+msgstr "Información del contacto"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:10
+msgid "Email:"
+msgstr "Correo-e:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:11
+msgid "Fullname:"
+msgstr "Nombre completo:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:12
+msgid "Identifier:"
+msgstr "Identificador:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:13
+msgid "Information requested..."
+msgstr "Información solicitada…"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:14
+msgid "OS:"
+msgstr "SO:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:15
+msgid ""
+"Select the groups you want this contact to appear in, you can select more "
+"than one group or no groups."
+msgstr ""
+"Seleccione los grupos en los que quiere que este contacto aparezca, puede "
+"seleccionar más de un grupo o ningún grupo."
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:16
+msgid "Version:"
+msgstr "Versión:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:17
+msgid "Web site:"
+msgstr "Página web:"
+
+#: ../libempathy-gtk/empathy-group-chat.c:251
+msgid "Enter the new topic you want to set for this room:"
+msgstr "Introduzca el nuevo tema que quiere establecer para esta sala:"
+
+#: ../libempathy-gtk/empathy-group-chat.c:361
+#, c-format
+msgid "%s has joined the room"
+msgstr "%s ha entrado en la sala"
+
+#: ../libempathy-gtk/empathy-group-chat.c:364
+#, c-format
+msgid "%s has left the room"
+msgstr "%s ha dejado la sala"
+
+#: ../libempathy-gtk/empathy-group-chat.c:445
+#, c-format
+msgid "Topic: %s"
+msgstr "Tema: %s"
+
+#: ../libempathy-gtk/empathy-group-chat.c:574
+#, c-format
+msgid "Topic set to: %s"
+msgstr "El tema se ha establecido a: %s"
+
+#: ../libempathy-gtk/empathy-group-chat.c:576
+msgid "No topic defined"
+msgstr "No se ha definido el tema"
+
+#: ../libempathy-gtk/empathy-group-chat.glade.h:1
+msgid "<b>Topic:</b>"
+msgstr "<b>Tema:</b>"
+
+#: ../libempathy-gtk/empathy-group-chat.glade.h:2
+msgid "Group Chat"
+msgstr "Grupo de chat"
+
+#: ../libempathy-gtk/empathy-log-window.c:499
+msgid "Account"
+msgstr "Cuenta"
+
+#: ../libempathy-gtk/empathy-log-window.c:506
+msgid "Conversation"
+msgstr "Conversación"
+
+#: ../libempathy-gtk/empathy-log-window.c:516
+msgid "Date"
+msgstr "Fecha"
+
+#: ../libempathy-gtk/empathy-log-window.glade.h:1
+msgid "Conversations"
+msgstr "Conversaciones"
+
+#: ../libempathy-gtk/empathy-log-window.glade.h:2
+msgid "Previous Conversations"
+msgstr "Conversaciones anteriores"
+
+#: ../libempathy-gtk/empathy-log-window.glade.h:3
+msgid "Search"
+msgstr "Buscar"
+
+#: ../libempathy-gtk/empathy-log-window.glade.h:4
+msgid "_For:"
+msgstr "_Para:"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.c:286
+msgid "Chat Rooms"
+msgstr "Salas de chat"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:2
+msgid "Browse:"
+msgstr "Buscar:"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:3
+msgid "Enter the room name to join here or click on one or more rooms in the list."
+msgstr ""
+"Introduzca el nombre de la sala a la que unirse o pulse una o más salas de "
+"la lista."
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:4
+msgid ""
+"Enter the server which hosts the room, or leave it empty if the room is on "
+"the current account's server"
+msgstr ""
+"Introduzca el servidor que aloja la sala o déjelo vacío si la sala está en "
+"la cuenta del servidor actual"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:5
+msgid "Join"
+msgstr "Unirse"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:6
+msgid "Join New"
+msgstr "Unirse a nueva"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:7
+msgid "Re_fresh"
+msgstr "A_ctualizar"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:8
+msgid "This list represents all chat rooms hosted on the server you have entered."
+msgstr ""
+"Esta lista representa todas las salas de chat hospedadas en el servidor al "
+"que ha entrado."
+
+#: ../libempathy-gtk/empathy-main-window.c:266
+msgid "Show and edit accounts"
+msgstr "Mostrar y editar cuentas"
+
+#: ../libempathy-gtk/empathy-main-window.c:630
+msgid "Contact"
+msgstr "Contacto"
+
+#: ../libempathy-gtk/empathy-main-window.c:813
+msgid "_Edit account"
+msgstr "_Editar cuenta"
+
+#: ../libempathy-gtk/empathy-main-window.c:896
+msgid "Network error"
+msgstr "Error de red"
+
+#: ../libempathy-gtk/empathy-main-window.c:899
+msgid "Authentication failed"
+msgstr "Falló la autenticación"
+
+#: ../libempathy-gtk/empathy-main-window.c:902
+msgid "Encryption error"
+msgstr "Error de cifrado"
+
+#: ../libempathy-gtk/empathy-main-window.c:905
+msgid "Name in use"
+msgstr "Nombre en uso"
+
+#: ../libempathy-gtk/empathy-main-window.c:908
+msgid "Certificate not provided"
+msgstr "No se proporcionó el certificado"
+
+#: ../libempathy-gtk/empathy-main-window.c:911
+msgid "Certificate untrusted"
+msgstr "Certificado sin confianza"
+
+#: ../libempathy-gtk/empathy-main-window.c:914
+msgid "Certificate expired"
+msgstr "El certificado ha expirado"
+
+#: ../libempathy-gtk/empathy-main-window.c:917
+msgid "Certificate not activated"
+msgstr "El certificado no está activado"
+
+#: ../libempathy-gtk/empathy-main-window.c:920
+msgid "Certificate hostname mismatch"
+msgstr "El nombre del equipo del certificado no coincide"
+
+#: ../libempathy-gtk/empathy-main-window.c:923
+msgid "Certificate fingerprint mismatch"
+msgstr "La huella del certificado no coincide"
+
+#: ../libempathy-gtk/empathy-main-window.c:926
+msgid "Certificate self signed"
+msgstr "El certificado está firmado consigo mismo"
+
+#: ../libempathy-gtk/empathy-main-window.c:929
+msgid "Certificate error"
+msgstr "Error del certificado"
+
+#: ../libempathy-gtk/empathy-main-window.c:932
+msgid "Unknown error"
+msgstr "Error desconocido"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:1
+msgid "Contact List"
+msgstr "Lista de contactos"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:2
+msgid "Context"
+msgstr "Contexto"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:3
+msgid "Join _Favorites"
+msgstr "Unir a _favoritos"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:5
+msgid "Manage Favorites"
+msgstr "Gestionar favoritos"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:6
+msgid "Show _Offline Contacts"
+msgstr "Mostrar contactos _desconectados"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:7
+#: ../megaphone/data/GNOME_Megaphone_Applet.xml.h:1
+#: ../nothere/data/GNOME_NotHere_Applet.xml.h:1
+msgid "_About"
+msgstr "_Acerca de"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:8
+msgid "_Accounts"
+msgstr "_Cuentas"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:14
+#: ../libempathy-gtk/empathy-status-icon.glade.h:2
+msgid "_New Conversation..."
+msgstr "_Conversación nueva…"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:15
+msgid "_Personal Information"
+msgstr "Información _personal"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:16
+#: ../megaphone/data/GNOME_Megaphone_Applet.xml.h:3
+msgid "_Preferences"
+msgstr "_Preferencias"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:17
+#: ../libempathy-gtk/empathy-status-icon.glade.h:3
+msgid "_Quit"
+msgstr "_Salir"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:2
+msgid "Call"
+msgstr "Llamar"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:4
+msgid "Contact ID:"
+msgstr "ID del contacto:"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:5
+msgid "New Conversation"
+msgstr "Conversación nueva"
+
+#: ../libempathy-gtk/empathy-preferences.c:247
+msgid "Language"
+msgstr "Idioma"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:1
+msgid "<b>Appearance</b>"
+msgstr "<b>Apariencia</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:2
+msgid "<b>Audio</b>"
+msgstr "<b>Sonido</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:3
+msgid "<b>Behaviour</b>"
+msgstr "<b>Comportamiento</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:4
+msgid "<b>Contact List</b>"
+msgstr "<b>Lista de contactos</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:5
+msgid "<b>Enable spell checking for languages:</b>"
+msgstr "<b>Activar la revisión ortográfica para idiomas:</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:6
+msgid "<b>Options</b>"
+msgstr "<b>Opciones</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:7
+msgid "<b>Visual</b>"
+msgstr "<b>Visual</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:8
+msgid ""
+"<small>The list of languages reflects only the languages for which you have "
+"a dictionary installed.</small>"
+msgstr ""
+"<small>La lista de idiomas refleja sólo los idiomas para los cuales tiene un "
+"diccionario instalado.</small>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:9
+msgid "Automatically _connect on startup "
+msgstr "_Conectarse automáticamente al inicio"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:10
+msgid "Avatars are user chosen images shown in the contact list"
+msgstr ""
+"Los avatares son imágenes elegidas por el usuario que se muestran en la "
+"lista de contactos"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:11
+msgid "Chat Th_eme:"
+msgstr "_Tema del chat:"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:12
+msgid "Display notifications when contacts come _online"
+msgstr "Mostrar notificaciones cuando los contactos se _conecten"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:13
+msgid "Enable sounds when _away"
+msgstr "Activar sonidos al _ausentarse"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:14
+msgid "Enable sounds when _busy"
+msgstr "Activar sonidos cuando se esté _ocupado"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:15
+msgid "General"
+msgstr "General"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:16
+msgid "Notifications"
+msgstr "Notificaciones"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:17
+msgid "Preferences"
+msgstr "Preferencias"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:18
+msgid "Show _avatars"
+msgstr "Mostrar _avatares"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:19
+msgid "Show _smileys as images"
+msgstr "Mostrar los _emoticonos como imágenes"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:20
+msgid "Show co_mpact contact list"
+msgstr "Mostrar lista de contactos co_mpacta"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:21
+msgid "Sort by _name"
+msgstr "Ordenar por _nombre"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:22
+msgid "Sort by s_tate"
+msgstr "Ordenar por es_tado"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:23
+msgid "Spell Checking"
+msgstr "Revisión ortográfica"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:24
+msgid "Themes"
+msgstr "Temas"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:25
+msgid "_Open new chats in separate windows"
+msgstr "_Abrir charlas nuevas en ventanas separadas"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:26
+msgid "_Play sound when messages arrive"
+msgstr "_Reproducir sonido cuando lleguen mensajes"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:27
+msgid "_Use for chat rooms"
+msgstr "_Usar para sala de chat"
+
+#. Custom messages
+#: ../libempathy-gtk/empathy-presence-chooser.c:691
+msgid "Custom messages..."
+msgstr "Mensajes personalizados…"
+
+#: ../libempathy-gtk/empathy-presence-chooser.glade.h:1
+msgid "Custom message"
+msgstr "Mensaje personalizado…"
+
+#: ../libempathy-gtk/empathy-presence-chooser.glade.h:2
+msgid "Message:"
+msgstr "Mensaje:"
+
+#: ../libempathy-gtk/empathy-presence-chooser.glade.h:3
+msgid "Save message"
+msgstr "Guardar mensaje"
+
+#: ../libempathy-gtk/empathy-presence-chooser.glade.h:4
+msgid "Status:"
+msgstr "Estado:"
+
+#: ../libempathy-gtk/empathy-private-chat.c:229
+#, c-format
+msgid "%s went offline"
+msgstr "%s se ha desconectado"
+
+#: ../libempathy-gtk/empathy-private-chat.c:243
+#, c-format
+msgid "%s has come online"
+msgstr "%s se ha conectado"
+
+#: ../libempathy-gtk/empathy-spell-dialog.c:85
+msgid "Word"
+msgstr "Palabra"
+
+#: ../libempathy-gtk/empathy-spell-dialog.c:258
+msgid "Suggestions for the word"
+msgstr "Sugerencias para la palabra"
+
+#: ../libempathy-gtk/empathy-spell-dialog.glade.h:1
+msgid "Spell Checker"
+msgstr "Corrector ortográfico"
+
+#: ../libempathy-gtk/empathy-spell-dialog.glade.h:2
+msgid "Suggestions for the word:"
+msgstr "Sugerencias para la palabra:"
+
+#: ../libempathy-gtk/empathy-status-icon.c:369
+#, c-format
+msgid ""
+"New message from %s:\n"
+"%s"
+msgstr ""
+"Nuevo mensaje de %s:\n"
+"%s"
+
+#: ../libempathy-gtk/empathy-status-icon.c:434
+#, c-format
+msgid ""
+"Incoming call from %s:\n"
+"%s"
+msgstr ""
+"Llamada entrante de %s:\n"
+"%s"
+
+#: ../libempathy-gtk/empathy-status-icon.c:738
+#, c-format
+msgid "Subscription requested by %s"
+msgstr "Petición de suscripción de %s"
+
+#: ../libempathy-gtk/empathy-status-icon.c:741
+#, c-format
+msgid ""
+"\n"
+"Message: %s"
+msgstr ""
+"\n"
+"Mensaje: %s"
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:1
+msgid "Status"
+msgstr "Estado"
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:4
+msgid "_Show Contact List"
+msgstr "_Mostrar lista de contactos"
+
+#: ../libempathy-gtk/empathy-theme-boxes.c:780
+#: ../libempathy-gtk/empathy-theme-irc.c:297
+msgid "%A %d %B %Y"
+msgstr "%A %d %B %Y"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:78
+msgid "Classic"
+msgstr "Clásico"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:79
+msgid "Simple"
+msgstr "Simple"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:80
+msgid "Clean"
+msgstr "Limpiar"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:81
+msgid "Blue"
+msgstr "Azul"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.c:246
+msgid "New Network"
+msgstr "Red nueva"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:1
+msgid "<b>Network</b>"
+msgstr "<b>Red</b>"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:2
+msgid "<b>Servers</b>"
+msgstr "<b>Servidores</b>"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:3
+msgid "Charset:"
+msgstr "Conjunto de caracteres:"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:4
+msgid "Create a new IRC network"
+msgstr "Crear una red IRC nueva"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:5
+msgid "Edit the selected IRC network"
+msgstr "Editar la red IRC seleccionada"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:6
+msgid "Network"
+msgstr "Red"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:7
+msgid "Network:"
+msgstr "Red:"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:8
+msgid "Nickname:"
+msgstr "Apodo:"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:9
+msgid "Password:"
+msgstr "Contraseña:"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:10
+msgid "Quit message:"
+msgstr "Mensaje de salida:"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:11
+msgid "Real name:"
+msgstr "Nombre real:"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:12
+msgid "Remove the selected IRC network"
+msgstr "Quitar la red IRC seleccionada"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:13
+msgid "irc account settings"
+msgstr "Ajustes de la cuenta IRC"
+
+#: ../libempathy-gtk/empathy-irc-network-dialog.c:287
+msgid "new server"
+msgstr "servidor nuevo"
+
+#: ../libempathy-gtk/empathy-irc-network-dialog.c:512
+msgid "Server"
+msgstr "Servidor"
+
+#: ../libempathy-gtk/empathy-irc-network-dialog.c:527
+msgid "Port"
+msgstr "Puerto"
+
+#: ../libempathy-gtk/empathy-irc-network-dialog.c:540
+msgid "SSL"
+msgstr "SSL"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:158
+msgid "Current Locale"
+msgstr "Configuración regional actual"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:161
+#: ../libempathy-gtk/totem-subtitle-encoding.c:163
+#: ../libempathy-gtk/totem-subtitle-encoding.c:165
+#: ../libempathy-gtk/totem-subtitle-encoding.c:167
+msgid "Arabic"
+msgstr "Árabe"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:170
+msgid "Armenian"
+msgstr "Armenio"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:173
+#: ../libempathy-gtk/totem-subtitle-encoding.c:175
+#: ../libempathy-gtk/totem-subtitle-encoding.c:177
+msgid "Baltic"
+msgstr "Báltico"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:180
+msgid "Celtic"
+msgstr "Celta"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:183
+#: ../libempathy-gtk/totem-subtitle-encoding.c:185
+#: ../libempathy-gtk/totem-subtitle-encoding.c:187
+#: ../libempathy-gtk/totem-subtitle-encoding.c:189
+msgid "Central European"
+msgstr "Centroeuropeo"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:192
+#: ../libempathy-gtk/totem-subtitle-encoding.c:194
+#: ../libempathy-gtk/totem-subtitle-encoding.c:196
+#: ../libempathy-gtk/totem-subtitle-encoding.c:198
+msgid "Chinese Simplified"
+msgstr "Chino simplificado"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:201
+#: ../libempathy-gtk/totem-subtitle-encoding.c:203
+#: ../libempathy-gtk/totem-subtitle-encoding.c:205
+msgid "Chinese Traditional"
+msgstr "Chino tradicional"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:208
+msgid "Croatian"
+msgstr "Croata"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:211
+#: ../libempathy-gtk/totem-subtitle-encoding.c:213
+#: ../libempathy-gtk/totem-subtitle-encoding.c:215
+#: ../libempathy-gtk/totem-subtitle-encoding.c:217
+#: ../libempathy-gtk/totem-subtitle-encoding.c:219
+#: ../libempathy-gtk/totem-subtitle-encoding.c:221
+msgid "Cyrillic"
+msgstr "Cirílico"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:224
+msgid "Cyrillic/Russian"
+msgstr "Cirílico/Ruso"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:227
+#: ../libempathy-gtk/totem-subtitle-encoding.c:229
+msgid "Cyrillic/Ukrainian"
+msgstr "Cirílico/Ucraniano"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:232
+msgid "Georgian"
+msgstr "Georgiano"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:235
+#: ../libempathy-gtk/totem-subtitle-encoding.c:237
+#: ../libempathy-gtk/totem-subtitle-encoding.c:239
+msgid "Greek"
+msgstr "Griego"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:242
+msgid "Gujarati"
+msgstr "Gujarati"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:245
+msgid "Gurmukhi"
+msgstr "Gurmukhi"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:248
+#: ../libempathy-gtk/totem-subtitle-encoding.c:250
+#: ../libempathy-gtk/totem-subtitle-encoding.c:252
+#: ../libempathy-gtk/totem-subtitle-encoding.c:254
+msgid "Hebrew"
+msgstr "Hebreo"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:257
+msgid "Hebrew Visual"
+msgstr "Hebreo visual"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:260
+msgid "Hindi"
+msgstr "Hindú"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:263
+msgid "Icelandic"
+msgstr "Islandés"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:266
+#: ../libempathy-gtk/totem-subtitle-encoding.c:268
+#: ../libempathy-gtk/totem-subtitle-encoding.c:270
+msgid "Japanese"
+msgstr "Japonés"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:273
+#: ../libempathy-gtk/totem-subtitle-encoding.c:275
+#: ../libempathy-gtk/totem-subtitle-encoding.c:277
+#: ../libempathy-gtk/totem-subtitle-encoding.c:279
+msgid "Korean"
+msgstr "Coreano"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:282
+msgid "Nordic"
+msgstr "Nórdico"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:285
+msgid "Persian"
+msgstr "Persa"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:288
+#: ../libempathy-gtk/totem-subtitle-encoding.c:290
+msgid "Romanian"
+msgstr "Rumano"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:293
+msgid "South European"
+msgstr "Europa del sur"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:296
+msgid "Thai"
+msgstr "Tailandés"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:299
+#: ../libempathy-gtk/totem-subtitle-encoding.c:301
+#: ../libempathy-gtk/totem-subtitle-encoding.c:303
+#: ../libempathy-gtk/totem-subtitle-encoding.c:305
+msgid "Turkish"
+msgstr "Turco"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:308
+#: ../libempathy-gtk/totem-subtitle-encoding.c:310
+#: ../libempathy-gtk/totem-subtitle-encoding.c:312
+#: ../libempathy-gtk/totem-subtitle-encoding.c:314
+#: ../libempathy-gtk/totem-subtitle-encoding.c:316
+msgid "Unicode"
+msgstr "Unicode"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:319
+#: ../libempathy-gtk/totem-subtitle-encoding.c:321
+#: ../libempathy-gtk/totem-subtitle-encoding.c:323
+#: ../libempathy-gtk/totem-subtitle-encoding.c:325
+#: ../libempathy-gtk/totem-subtitle-encoding.c:327
+msgid "Western"
+msgstr "Occidental"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:330
+#: ../libempathy-gtk/totem-subtitle-encoding.c:332
+#: ../libempathy-gtk/totem-subtitle-encoding.c:334
+msgid "Vietnamese"
+msgstr "Vietnamita"
+
+#.
+#. * vim: sw=2 ts=8 cindent noai bs=2
+#.
+#: ../megaphone/data/GNOME_Megaphone_Applet.schemas.in.h:1
+msgid "The contact to display in the applet. Empty means no contact is displayed."
+msgstr ""
+"El contacto que mostrar en la miniaplicación. Si se deja vacío no se "
+"mostrará ningún contacto."
+
+#: ../megaphone/data/GNOME_Megaphone_Applet.schemas.in.h:2
+msgid "The contact's avatar token. Empty means contact has no avatar."
+msgstr "El avatar del contacto. Si se deja vacío no se mostrará ningún avatar."
+
+#: ../megaphone/data/GNOME_Megaphone_Applet.server.in.in.h:1
+msgid "Megaphone"
+msgstr "Megáfono"
+
+#: ../megaphone/data/GNOME_Megaphone_Applet.server.in.in.h:2
+#: ../megaphone/src/megaphone-applet.c:419
+msgid "Talk!"
+msgstr "Hablar"
+
+#: ../megaphone/data/GNOME_Megaphone_Applet.xml.h:2
+msgid "_Information"
+msgstr "_Información"
+
+#: ../nothere/data/GNOME_NotHere_Applet.server.in.in.h:1
+msgid "Presence"
+msgstr "Presencia"
+
+#: ../nothere/data/GNOME_NotHere_Applet.server.in.in.h:2
+#: ../nothere/src/nothere-applet.c:89
+msgid "Set your own presence"
+msgstr "Establezca su propia presencia"
+
+#: ../src/empathy.c:205
+msgid "- Empathy Instant Messenger"
+msgstr "- Mensajería instantánea Empathy"
+
diff --git a/gnome-2-22/po/eu.po b/gnome-2-22/po/eu.po
new file mode 100644
index 000000000..81876e62b
--- /dev/null
+++ b/gnome-2-22/po/eu.po
@@ -0,0 +1,1751 @@
+# translation of eu.po to Basque
+# translation of empathy.HEAD.po to
+# Copyright (C) 2003 THE gossip'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the gossip package.
+#
+# Mikel Olasagasti <hey_neken@mundurat.net>, 2003.
+# Iñaki Larrañaga Murgoitio <dooteo@euskalgnu.org>, 2003, 2004, 2006, 2007, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: eu\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-03 10:46+0100\n"
+"PO-Revision-Date: 2008-03-03 10:50+0100\n"
+"Last-Translator: Iñaki Larrañaga Murgoitio <dooteo@euskalgnu.org>\n"
+"Language-Team: Basque <itzulpena@euskalgnu.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: ../data/empathy.desktop.in.in.h:1
+msgid "Empathy Instant Messenger"
+msgstr "Empathy berehalako mezularitza"
+
+#: ../data/empathy.desktop.in.in.h:2
+msgid "Send and receive instant messages"
+msgstr "Bidali eta jaso berehalako mezuak"
+
+#: ../data/empathy.schemas.in.h:1
+msgid "Always open a separate chat window for new chats."
+msgstr "Ireki beti berriketa berriak beste leiho batean."
+
+#: ../data/empathy.schemas.in.h:2
+msgid ""
+"Character to add after nickname when using nick completion (tab) in group "
+"chat."
+msgstr ""
+"Karakterea goitizenaren atzean gehitzeko, taldeko berriketan goitizena "
+"osatzea (tabulatzailea) erabiltzean."
+
+#: ../data/empathy.schemas.in.h:3
+msgid "Chat window theme"
+msgstr "Berriketako leihoaren gaia"
+
+#: ../data/empathy.schemas.in.h:4
+msgid "Checks if Empathy should autoconnect on startup"
+msgstr "Egiaztatu Empathy-k automatikoki konektatu behar duen abiatzean"
+
+#: ../data/empathy.schemas.in.h:5
+msgid "Checks if NetworkManager should be used"
+msgstr "NetworkManager erabili behar den egiaztatzen du"
+
+#: ../data/empathy.schemas.in.h:6
+msgid "Checks if Salut account is created"
+msgstr "Salut kontua sortu behar den egiaztatzen du"
+
+#: ../data/empathy.schemas.in.h:7
+msgid "Comma separated list of spell checker languages to use (e.g. en, fr, nl)."
+msgstr ""
+"Komaz bereiztu erabiltzea nahi diren hizkuntzen zuzentzaile ortografikoen "
+"zerrenda (adib. de, ca, eu)."
+
+#: ../data/empathy.schemas.in.h:8
+msgid "Compact contact list"
+msgstr "Trinkotu kontaktu-zerrenda"
+
+#: ../data/empathy.schemas.in.h:9
+msgid "Contact list sort criterium"
+msgstr "Kontaktu-zerrenda ordenatzeko irizpidea"
+
+#: ../data/empathy.schemas.in.h:10
+msgid "Default directory to select an avatar image from"
+msgstr "Direktorio lehenetsia avatar baten irudia hautatzeko"
+
+#: ../data/empathy.schemas.in.h:11
+msgid "Enable popup when contact is available"
+msgstr "Gaitu laster-leihoa kontaktua prest dagoenean"
+
+#: ../data/empathy.schemas.in.h:12
+msgid "Enable sound when away"
+msgstr "Gaitu soinua aldentzean"
+
+#: ../data/empathy.schemas.in.h:13
+msgid "Enable sound when busy"
+msgstr "Gaitu soinua lanpetutakoan"
+
+#: ../data/empathy.schemas.in.h:14
+msgid "Enable spell checker"
+msgstr "Gaitu ortografia-egiaztapena"
+
+#: ../data/empathy.schemas.in.h:15
+msgid "Hide main window"
+msgstr "Ezkutatu leiho nagusia"
+
+#: ../data/empathy.schemas.in.h:16
+msgid "Hide the main window."
+msgstr "Ezkutatu leiho nagusia."
+
+#: ../data/empathy.schemas.in.h:17
+msgid "Nick completed character"
+msgstr "Goitizena osatzeko karakterea"
+
+#: ../data/empathy.schemas.in.h:18
+msgid "Open new chats in separate windows"
+msgstr "Ireki berriketa berriak beste leihoetan"
+
+#: ../data/empathy.schemas.in.h:19
+msgid "Show avatars"
+msgstr "Erakutsi avatar-ak"
+
+#: ../data/empathy.schemas.in.h:20
+msgid "Show hint about closing the main window"
+msgstr "Erakutsi leiho nagusia nola ixten den buruzko argibidea"
+
+#: ../data/empathy.schemas.in.h:21
+msgid "Show offline contacts"
+msgstr "Erakutsi konektatu gabeko kontaktuak"
+
+#: ../data/empathy.schemas.in.h:22
+msgid "Spell checking languages"
+msgstr "Hizkuntzen zuzentzailea"
+
+#: ../data/empathy.schemas.in.h:23
+msgid "The last directory that an avatar image was chosen from."
+msgstr "Azken direktorioa, Avatar baten irudia aukeratu dena."
+
+#: ../data/empathy.schemas.in.h:24
+msgid "The theme that is used to display the conversation in chat windows."
+msgstr "Gaia berriketan bistaratzeko (berriketako leihoan)."
+
+#: ../data/empathy.schemas.in.h:25
+msgid "Use graphical smileys"
+msgstr "Erabili aurpegierak"
+
+#: ../data/empathy.schemas.in.h:26
+msgid "Use notification sounds"
+msgstr "Erabili jakinarazpen-soinuak"
+
+#: ../data/empathy.schemas.in.h:27
+msgid "Use theme for chat rooms"
+msgstr "Erabili gaia berriketa-gelan"
+
+#: ../data/empathy.schemas.in.h:28
+msgid ""
+"Whether or not Empathy should automatically login to your accounts on "
+"startup."
+msgstr "Empathy abiatzean zure kontuetan saioa automatikoki hasi behar den ala ez"
+
+#: ../data/empathy.schemas.in.h:29
+msgid "Whether or not the Salut account has been created on the first empathy run."
+msgstr "Salut kontua sortu den ala ez (Empathy aurreneko aldiz exekutatzean)."
+
+#: ../data/empathy.schemas.in.h:30
+msgid ""
+"Whether or not the network manager should be used to automatically "
+"disconnect/reconnect."
+msgstr ""
+"Automatikoki konektatzeko/deskonektatzeko sare-kudeatzailea erabili behar "
+"den edo ez adierazten du."
+
+#: ../data/empathy.schemas.in.h:31
+msgid ""
+"Whether or not to check words typed against the languages you want to check "
+"with."
+msgstr ""
+"Idatzitako hitzen zuzenketa ortografikoa landu edo ez (nahi dituzun "
+"hizkuntzetan)."
+
+#: ../data/empathy.schemas.in.h:32
+msgid "Whether or not to convert smileys into graphical images in conversations."
+msgstr ""
+"Elkarrizketetan aurpegierak irudi grafikoetara bihurtuko diren ala ez "
+"adierazten du."
+
+#: ../data/empathy.schemas.in.h:33
+msgid "Whether or not to play a sound when messages arrive."
+msgstr "Mezuak iristean soinua joko duen ala ez adierazten du."
+
+#: ../data/empathy.schemas.in.h:34
+msgid "Whether or not to play sounds when away."
+msgstr "Kanpoan zaudenean soinua joko duen ala ez adierazten du."
+
+#: ../data/empathy.schemas.in.h:35
+msgid "Whether or not to play sounds when busy."
+msgstr "Lanpetuta zaudenean soinua joko duen ala ez adierazten du."
+
+#: ../data/empathy.schemas.in.h:36
+msgid "Whether or not to show a popup when a contact becomes available."
+msgstr "Kontaktua prest dagoenean laster-leihoa erakutsi edo ez adierazten du."
+
+#: ../data/empathy.schemas.in.h:37
+msgid ""
+"Whether or not to show avatars for contacts in the contact list and chat "
+"windows."
+msgstr ""
+"Kontaktu-zerrendan eta berriketako leihoetan kontaktuen avatarrak erakutsi "
+"edo ez adierazten du."
+
+#: ../data/empathy.schemas.in.h:38
+msgid "Whether or not to show contacts that are offline in the contact list."
+msgstr ""
+"Kontaktu-zerrendan deskonektatuak dauden kontaktuak erakutsiko dituen ala ez "
+"adierazten du."
+
+#: ../data/empathy.schemas.in.h:39
+msgid ""
+"Whether or not to show the message dialog about closing the main window with "
+"the 'x' button in the title bar."
+msgstr ""
+"Leiho nagusia titulu-barrako 'x' botoiarekin ixteari buruzko elkarrizketa-"
+"koadroa erakutsi ala ez adierazten du."
+
+#: ../data/empathy.schemas.in.h:40
+msgid "Whether to show the contact list in compact mode or not."
+msgstr "Kontaktu-zerrenda trinkotuta erakutsi edo ez adierazten du."
+
+#: ../data/empathy.schemas.in.h:41
+msgid "Whether to use the theme for chat rooms or not."
+msgstr "Berriketa-geletan gaia erabili edo ez adierazten du."
+
+#: ../data/empathy.schemas.in.h:42
+msgid ""
+"Which criterium to use when sorting the contact list. Default is to use sort "
+"by the contact's name with the value \"name\". A value of \"state\" will "
+"sort the contact list by state."
+msgstr ""
+"Zein irizpide erabiliko den kontaktu-zerrenda ordenatzean. Lehenetsia "
+"kontaktuen izenen arabera ordenatzea da \"izena\" balioarekin. \"egoera\" "
+"balioak kontaktu-zerrenda egoeraren arabera ordenatuko du."
+
+#: ../libempathy/empathy-tp-contact-list.c:724 ../src/empathy.c:149
+msgid "People nearby"
+msgstr "Inguruko jendea"
+
+#: ../libempathy/empathy-utils.c:540
+msgid "Available"
+msgstr "Prest"
+
+#: ../libempathy/empathy-utils.c:542
+msgid "Busy"
+msgstr "Lanpetuta"
+
+#: ../libempathy/empathy-utils.c:545
+msgid "Away"
+msgstr "Aldendua"
+
+#: ../libempathy/empathy-utils.c:547
+msgid "Hidden"
+msgstr "Ezkutatua"
+
+#: ../libempathy/empathy-utils.c:550
+msgid "Offline"
+msgstr "Deskonektatuta"
+
+#: ../libempathy-gtk/empathy-about-dialog.c:63
+msgid ""
+"Empathy is free software; you can redistribute it and/or modify it under the "
+"terms of the GNU General Public License as published by the Free Software "
+"Foundation; either version 2 of the License, or (at your option) any later "
+"version."
+msgstr ""
+"Empathy software librea da; birbana eta/edo alda dezakezu Software "
+"Foundation-ek argitaratutako GNU Lizentzia Publiko Orokorraren 2. bertsioan, "
+"edo (nahiago baduzu) beste berriago batean, jasotako baldintzak betez gero."
+
+#: ../libempathy-gtk/empathy-about-dialog.c:67
+msgid ""
+"Empathy is distributed in the hope that it will be useful, but WITHOUT ANY "
+"WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS "
+"FOR A PARTICULAR PURPOSE. See the GNU General Public License for more "
+"details."
+msgstr ""
+"Empathy erabilgarria izango delakoan banatzen da, baina, INOLAKO BERMERIK "
+"GABE; era berean, ez da bermatzen beraren EGOKITASUNA MERKATURATZEKO edo "
+"HELBURU PARTIKULARRETARAKO ERABILTZEKO. Argibide gehiago nahi izanez gero, "
+"ikus GNU Lizentzia Publiko Orokorra."
+
+#: ../libempathy-gtk/empathy-about-dialog.c:71
+msgid ""
+"You should have received a copy of the GNU General Public License along with "
+"Empathy; if not, write to the Free Software Foundation, Inc., 51 Franklin "
+"Street, Fifth Floor, Boston, MA 02110-130159 USA"
+msgstr ""
+"Empathy programarekin batera GNU Lizentzia Publiko Orokorraren kopia bat "
+"jasoko zenuen; hala ez bada, idatzi hona: Free Software Foundation, Inc., 51 "
+"Franklin Street, Fifth Floor, Boston, MA 02110-130159 USA"
+
+#: ../libempathy-gtk/empathy-about-dialog.c:99
+msgid "An Instant Messaging client for GNOME"
+msgstr "Berehalako mezularitzako bezero bat GNOMErako"
+
+#: ../libempathy-gtk/empathy-about-dialog.c:105
+msgid "translator-credits"
+msgstr ""
+"Mikel Olasagasti <hey_neken@mundurat.net>\n"
+"Iñaki Larrañaga Murgoitio <dooteo@euskalgnu.org>"
+
+#: ../libempathy-gtk/empathy-account-chooser.c:337
+msgid "All"
+msgstr "Denak"
+
+#: ../libempathy-gtk/empathy-account-widget.c:276
+#: ../libempathy-gtk/empathy-account-widget.c:321
+#, c-format
+msgid "%s:"
+msgstr "%s:"
+
+#: ../libempathy-gtk/empathy-account-widget-icq.glade.h:1
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:1
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:1
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:1
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:1
+msgid "<b>Advanced</b>"
+msgstr "<b>Aurreratua</b>"
+
+#: ../libempathy-gtk/empathy-account-widget-icq.glade.h:2
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:3
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:2
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:2
+msgid "Forget password and clear the entry."
+msgstr "Ahaztu pasahitza eta garbitu sarrera."
+
+#: ../libempathy-gtk/empathy-account-widget-icq.glade.h:3
+msgid "ICQ _UIN:"
+msgstr "ICQ _UIN:"
+
+#: ../libempathy-gtk/empathy-account-widget-icq.glade.h:4
+msgid "ICQ account settings"
+msgstr "ICQ kontuaren ezarpenak"
+
+#: ../libempathy-gtk/empathy-account-widget-icq.glade.h:5
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:5
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:4
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:5
+msgid "Pass_word:"
+msgstr "_Pasahitza:"
+
+#: ../libempathy-gtk/empathy-account-widget-icq.glade.h:6
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:8
+msgid "_Charset:"
+msgstr "_Karaktere-jokoa:"
+
+#: ../libempathy-gtk/empathy-account-widget-icq.glade.h:7
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:11
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:5
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:10
+msgid "_Port:"
+msgstr "_Ataka:"
+
+#: ../libempathy-gtk/empathy-account-widget-icq.glade.h:8
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:12
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:6
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:12
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:10
+msgid "_Server:"
+msgstr "_Zerbitzaria:"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.c:246
+msgid "New Network"
+msgstr "Sare berria"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:1
+msgid "<b>Network</b>"
+msgstr "<b>Sarea</b>"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:2
+msgid "<b>Servers</b>"
+msgstr "<b>Zerbitzariak</b>"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:3
+msgid "Charset:"
+msgstr "Karaktere-jokoa:"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:4
+msgid "Create a new IRC network"
+msgstr "Sortu IRC sare berria"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:5
+msgid "Edit the selected IRC network"
+msgstr "Editatu hautatutako IRC sarea"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:6
+msgid "Network"
+msgstr "Sarea"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:7
+msgid "Network:"
+msgstr "Sarea:"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:8
+msgid "Nickname:"
+msgstr "Goitizena:"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:9
+msgid "Password:"
+msgstr "Pasahitza:"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:10
+msgid "Quit message:"
+msgstr "Irteerako mezua:"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:11
+msgid "Real name:"
+msgstr "Benetako izena:"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:12
+msgid "Remove the selected IRC network"
+msgstr "Kendu hautatutako IRC sarea"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:13
+msgid "irc account settings"
+msgstr "irc kontuaren ezarpenak"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:2
+msgid "<b>Override server settings</b>"
+msgstr "<b>Gainidatzi zerbitzariaren ezarpena</b>"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:4
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:3
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:4
+msgid "Login I_D:"
+msgstr "Saioko _IDa:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:6
+msgid "Pri_ority:"
+msgstr "_Lehentasuna:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:7
+msgid "Reso_urce:"
+msgstr "_Baliabidea:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:8
+msgid "Use old SS_L"
+msgstr "Erabili SS_L zaharra"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:9
+msgid "_Encryption required (TLS/SSL)"
+msgstr "_Enkritatzea behar da (TLS/SSL)"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:10
+msgid "_Ignore SSL certificate errors"
+msgstr "_Ez ikusi egin SSL ziurtagirien erroreei"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:13
+msgid "jabber account settings"
+msgstr "jabber kontuaren ezarpenak"
+
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:7
+msgid "msn account settings"
+msgstr "msn kontuaren ezarpenak"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:2
+msgid "_E-mail:"
+msgstr "_Helb. elek.:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:3
+msgid "_First Name: "
+msgstr "_Izena:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:4
+msgid "_Jabber ID:"
+msgstr "_Jabber IDa:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:5
+msgid "_Last Name:"
+msgstr "_Abizenak:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:6
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:8
+msgid "_Nickname:"
+msgstr "_Goitizena:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:7
+msgid "_Published Name:"
+msgstr "A_rgitaratutako izena:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:8
+msgid "salut account settings"
+msgstr "salut kontuaren ezarpenak"
+
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:3
+msgid "J_apan server:"
+msgstr "_Japoniako zerbitzaria:"
+
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:6
+msgid "Use _Yahoo Japan"
+msgstr "Erabili japoniako _Yahoo"
+
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:7
+msgid "Yahoo! account settings"
+msgstr "Yahoo! kontuaren ezarpenak"
+
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:9
+msgid "_Ignore conference and chatroom invitations"
+msgstr "_Ez ikusi egin konferentzi eta berriketa-gelen gonbiteei"
+
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:11
+msgid "_Room List locale:"
+msgstr "_Gelen zerrenda lokala:"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:225
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to start configuring."
+msgstr ""
+"Kontu berri bat gehitzeko, egin klik 'Gehitu' botoian eta sarrera berria "
+"sortuko da konfiguratzen has zaitezen."
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:229
+msgid ""
+"To add a new account, you first have to install a backend for each protocol "
+"you want to use."
+msgstr ""
+"Kontu berri bat gehitzeko, aurrenik erabiltzea nahi duzun protokolo "
+"bakoitzaren motorra instalatu behar duzu."
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:236
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:2
+msgid "<b>No Account Selected</b>"
+msgstr "<b>Ez da konturik hautatu</b>"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:237
+msgid ""
+"\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want "
+"to configure in the list on the left."
+msgstr ""
+"\n"
+"\n"
+"Ez baduzu konturik gehitu nahi, egin klik konfiguratzea nahi duzun kontuan "
+"ezkerreko zerrendan."
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:243
+msgid "<b>No Accounts Configured</b>"
+msgstr "<b>Ez da konturik konfiguratu</b>"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:411
+msgid "Enabled"
+msgstr "Gaituta"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:421
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:4
+msgid "Accounts"
+msgstr "Kontuak"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:904
+#, c-format
+msgid ""
+"You are about to remove your %s account!\n"
+"Are you sure you want to proceed?"
+msgstr ""
+"Zure %s kontua ezabatzera zoaz.\n"
+"Ziur zaude ezabatzea nahi duzula?"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:910
+msgid ""
+"Any associated conversations and chat rooms will NOT be removed if you "
+"decide to proceed.\n"
+"\n"
+"Should you decide to add the account back at a later time, they will still "
+"be available."
+msgstr ""
+"Elkartutako berriketak eta gelak EZ dira ezabatuko aurrera jarraitzea "
+"erabakitzen baduzu.\n"
+"\n"
+"Beranduago kontua gehitzea erabakitzen baduzu ere, haiek oraindik "
+"erabilgarri egongo dira."
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:1
+msgid "<b>New Account</b>"
+msgstr "<b>Kontu berria</b>"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:3
+msgid "<b>Settings</b>"
+msgstr "<b>Ezarpenak</b>"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:5
+msgid "Cr_eate"
+msgstr "_Sortu"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:6
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to started configuring.\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want "
+"to configure in the list on the left."
+msgstr ""
+"Kontu berri bat gehitzeko, egin klik 'Gehitu' botoian eta sarrera berria "
+"sortuko da konfiguratzeko.\n"
+"\n"
+"Ez baduzu konturik gehitu nahi, egin klik konfiguratzea nahi duzun kontuan "
+"ezkerreko zerrendan."
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:9
+msgid "Type:"
+msgstr "Mota:"
+
+#: ../libempathy-gtk/empathy-avatar-chooser.c:449
+msgid "Select Your Avatar Image"
+msgstr "Hautatu zure avatar irudia"
+
+#: ../libempathy-gtk/empathy-avatar-chooser.c:452
+msgid "No Image"
+msgstr "Irudirik ez"
+
+#: ../libempathy-gtk/empathy-avatar-chooser.c:512
+msgid "Images"
+msgstr "Irudiak"
+
+#: ../libempathy-gtk/empathy-avatar-chooser.c:516
+msgid "All Files"
+msgstr "Fitxategi denak"
+
+#: ../libempathy-gtk/empathy-avatar-image.c:298
+msgid "Click to enlarge"
+msgstr "Egin klik handitzeko"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:1
+msgid "End Call"
+msgstr "Amaitu deia"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:2
+msgid "Input"
+msgstr "Sarrera"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:3
+msgid "Mute"
+msgstr "Mututu"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:4
+msgid "Output"
+msgstr "Irteera"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:5
+msgid "Send Video"
+msgstr "Bidali bideoa"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:6
+msgid "Start Call"
+msgstr "Hasi deia"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:7
+msgid "Volume"
+msgstr "Bolumena"
+
+#: ../libempathy-gtk/empathy-chat.c:445
+msgid "Disconnected"
+msgstr "Deskonektatuta"
+
+#: ../libempathy-gtk/empathy-chat.c:580
+msgid "offline"
+msgstr "lineaz kanpo"
+
+#: ../libempathy-gtk/empathy-chat.c:583
+msgid "invalid contact"
+msgstr "kontaktu baliogabea"
+
+#: ../libempathy-gtk/empathy-chat.c:586
+msgid "permission denied"
+msgstr "baimena ukatuta"
+
+#: ../libempathy-gtk/empathy-chat.c:589
+msgid "too long message"
+msgstr "mezua luzeegia"
+
+#: ../libempathy-gtk/empathy-chat.c:592
+msgid "not implemented"
+msgstr "inplementatu gabe"
+
+#: ../libempathy-gtk/empathy-chat.c:595
+msgid "unknown"
+msgstr "ezezaguna"
+
+#: ../libempathy-gtk/empathy-chat.c:599
+#, c-format
+msgid "Error sending message '%s': %s"
+msgstr "Errorea '%s' mezua bidaltzean: %s"
+
+#: ../libempathy-gtk/empathy-chat.c:1056
+msgid "Insert Smiley"
+msgstr "Txertatu aurpegiera"
+
+#: ../libempathy-gtk/empathy-chat.c:1103
+msgid "_Check Word Spelling..."
+msgstr "_Egiaztatu ortografia..."
+
+#: ../libempathy-gtk/empathy-chat.c:1558
+msgid "Connected"
+msgstr "Konektatuta"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:1
+msgid "C_lear"
+msgstr "_Garbitu"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:2
+msgid "Ca_ll"
+msgstr "_Deitu"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:3
+msgid "Change _Topic..."
+msgstr "Aldatu g_aia.."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:4
+#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:3
+msgid "Chat"
+msgstr "Berriketa"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:5
+msgid "Contact Infor_mation"
+msgstr "Kontaktuaren _informazioa"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:6
+msgid "Cu_t"
+msgstr "Ebak_i"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:7
+msgid "In_vite..."
+msgstr "_Gonbidatu..."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:8
+msgid "Insert _Smiley"
+msgstr "Txertatu _aurpegiera"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:9
+msgid "Invitation _message:"
+msgstr "Gonbitearen _mezua:"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:10
+msgid "Invite"
+msgstr "Gonbidatu"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:11
+#: ../libempathy-gtk/empathy-main-window.glade.h:4
+msgid "Join _New..."
+msgstr "Elkartu _berrian..."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:12
+msgid "Move Tab _Left"
+msgstr "Eraman fitxa e_zkerrera"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:13
+msgid "Move Tab _Right"
+msgstr "Eraman fitxa e_skuinera"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:14
+msgid "Select who would you like to invite:"
+msgstr "Hautatu gonbidatzea nahi duzuna:"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:15
+msgid "You have been invited to join a chat conference."
+msgstr "Berriketako konferentzi batera gonbidatu zaituzte."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:16
+#: ../libempathy-gtk/empathy-main-window.glade.h:9
+msgid "_Add Contact..."
+msgstr "Gehitu _kontaktua..."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:17
+msgid "_Add To Favorites"
+msgstr "_Gehitu gogokoei"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:18
+msgid "_Close"
+msgstr "It_xi"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:19
+#: ../libempathy-gtk/empathy-main-window.glade.h:11
+msgid "_Contents"
+msgstr "_Edukia"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:20
+msgid "_Conversation"
+msgstr "_Berriketa"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:21
+msgid "_Copy"
+msgstr "_Kopiatu"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:22
+msgid "_Detach Tab"
+msgstr "E_zabatu fitxa"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:23
+#: ../libempathy-gtk/empathy-contact-list-view.c:217
+#: ../libempathy-gtk/empathy-main-window.glade.h:12
+msgid "_Edit"
+msgstr "_Editatu"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:24
+#: ../libempathy-gtk/empathy-main-window.glade.h:13
+msgid "_Help"
+msgstr "_Laguntza"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:25
+msgid "_Next Tab"
+msgstr "_Hurrengo fitxa"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:26
+msgid "_Paste"
+msgstr "I_tsatsi"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:27
+msgid "_Previous Tab"
+msgstr "_Aurreko fitxa"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:28
+#: ../libempathy-gtk/empathy-main-window.glade.h:18
+msgid "_Room"
+msgstr "_Gela"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:29
+msgid "_Show Contacts"
+msgstr "_Erakutsi kontaktuak"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:30
+msgid "_Tabs"
+msgstr "_Fitxak"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:31
+#: ../libempathy-gtk/empathy-contact-list-view.c:233
+#: ../libempathy-gtk/empathy-main-window.glade.h:19
+msgid "_View Previous Conversations"
+msgstr "_Ikusi aurreko berriketak"
+
+#: ../libempathy-gtk/empathy-chat-view.c:441
+msgid "_Copy Link Address"
+msgstr "_Kopiatu estekaren helbidea"
+
+#: ../libempathy-gtk/empathy-chat-view.c:449
+msgid "_Open Link"
+msgstr "_Ireki esteka"
+
+#: ../libempathy-gtk/empathy-chat-window.c:699
+#, c-format
+msgid "Conversations (%d)"
+msgstr "Berriketak (%d)"
+
+#: ../libempathy-gtk/empathy-chat-window.c:1299
+msgid "Typing a message."
+msgstr "Mezua idazten."
+
+#: ../libempathy-gtk/empathy-chatrooms-window.c:258
+msgid "Name"
+msgstr "Izena"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.c:276
+msgid "Room"
+msgstr "Gela"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.c:285
+msgid "Auto Connect"
+msgstr "Konektatu automatikoki"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:1
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:5
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:1
+#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:1
+msgid "Account:"
+msgstr "Kontua:"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:2
+msgid "Edit Favorite Room"
+msgstr "Editatu gogoko gela"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:3
+msgid "Join room on start_up"
+msgstr "Elkartu gelarekin _abiatzean"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:4
+msgid "Join this chat room when Empathy starts and you are connected"
+msgstr "Elkartu berriketa-gelarekin Empathy abiatzean eta konektatzen zarenean"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:5
+msgid "Manage Favorite Rooms"
+msgstr "Kudeatu gogoko gelak"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:6
+msgid "N_ame:"
+msgstr "_Izena:"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:7
+msgid "S_erver:"
+msgstr "_Zerbitzaria:"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:9
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:9
+msgid "_Room:"
+msgstr "_Gela:"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:176
+msgid "Personal Information"
+msgstr "Informazio pertsonala"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:179
+msgid "Edit Contact Information"
+msgstr "Editatu kontaktuaren informazioa"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:182
+msgid "Contact Information"
+msgstr "Kontaktuaren informazioa"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:277
+msgid "I would like to add you to my contact list."
+msgstr "Nire kontaktu-zerrendara gehitu nahi zaitut."
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:301
+msgid "New Contact"
+msgstr "Kontaktu berria"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.glade.h:1
+msgid "Decide _Later"
+msgstr "Erabaki _beranduago"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.glade.h:2
+msgid "Subscription Request"
+msgstr "Harpidetza eskaera"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:197
+msgid "_Contact"
+msgstr "_Kontaktua"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:201
+msgid "_Group"
+msgstr "_Taldea"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:205
+#: ../libempathy-gtk/empathy-main-window.glade.h:10
+msgid "_Chat"
+msgstr "_Berriketa"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:205
+msgid "Chat with contact"
+msgstr "Egin berriketa kontaktuarekin"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:209
+msgid "Infor_mation"
+msgstr "_Informazioa"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:209
+msgid "View contact information"
+msgstr "Ikusi kontaktuaren informazioa"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:213
+msgid "Re_name"
+msgstr "Al_datu izena"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:213
+msgid "Rename"
+msgstr "Aldatu izena"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:217
+msgid "Edit the groups and name for this contact"
+msgstr "Editatu kontaktuaren taldeak eta izena"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:221
+msgid "_Remove"
+msgstr "_Kendu"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:221
+msgid "Remove contact"
+msgstr "Kendu kontaktua"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:225
+msgid "_Invite to Chat Room"
+msgstr "_Gonbidatu berriketa-gelara"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:225
+msgid "Invite to a currently open chat room"
+msgstr "Gonbidatu unean irekitako berriketa-gelara"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:229
+msgid "_Send File..."
+msgstr "_Bidali fitxategia..."
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:229
+msgid "Send a file"
+msgstr "Bidali fitxategia"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:233
+msgid "View previous conversations with this contact"
+msgstr "Ikusi kontaktuaren aurreko berriketak"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:238
+msgid "_Call"
+msgstr "_Deitu"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:238
+msgid "Start a voice or video conversation with this contact"
+msgstr "Hasi ahotsezko edo bideozko berriketa kontaktu honekin"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:1469
+msgid "Sorry, I don't want you in my contact list anymore."
+msgstr "Ez zaitut nahi nire kontaktu-zerrendan gehiago."
+
+#: ../libempathy-gtk/empathy-contact-widget.c:688
+msgid "Select"
+msgstr "Hautatu"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:698
+#: ../libempathy-gtk/empathy-main-window.c:609
+msgid "Group"
+msgstr "Taldea"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:1
+msgid "<b>Client Information</b>"
+msgstr "<b>Bezeroaren informazioa</b>"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:2
+msgid "<b>Contact Details</b>"
+msgstr "<b>Kontaktuaren xehetasunak</b>"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:3
+msgid "<b>Contact</b>"
+msgstr "<b>Kontaktua</b>"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:4
+msgid "<b>Groups</b>"
+msgstr "<b>Taldeak</b>"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:6
+msgid "Alias:"
+msgstr "Aliasa:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:7
+msgid "Birthday:"
+msgstr "Urtebetetzea:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:8
+msgid "Client:"
+msgstr "Bezeroa:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:9
+msgid "Contact information"
+msgstr "Kontaktuaren informazioa"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:10
+msgid "Email:"
+msgstr "Helb. elek.:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:11
+msgid "Fullname:"
+msgstr "Izen osoa:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:12
+msgid "Identifier:"
+msgstr "Identifikatzailea:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:13
+msgid "Information requested..."
+msgstr "Informazioa eskatuta..."
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:14
+msgid "OS:"
+msgstr "SE:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:15
+msgid ""
+"Select the groups you want this contact to appear in, you can select more "
+"than one group or no groups."
+msgstr ""
+"Hautatu taldeak kontaktu hau talde horietan azaltzeko, talde bat baino "
+"gehiago hauta ditzakezu, edo talderik ez."
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:16
+msgid "Version:"
+msgstr "Bertsioa:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:17
+msgid "Web site:"
+msgstr "Web gunea:"
+
+#: ../libempathy-gtk/empathy-group-chat.c:251
+msgid "Enter the new topic you want to set for this room:"
+msgstr "Idatzi gai berria gela honetan ezartzeko:"
+
+#: ../libempathy-gtk/empathy-group-chat.c:361
+#, c-format
+msgid "%s has joined the room"
+msgstr "%s(e)k gelara elkartzea nahi du"
+
+#: ../libempathy-gtk/empathy-group-chat.c:364
+#, c-format
+msgid "%s has left the room"
+msgstr "%s(e)k gela utzi du"
+
+#: ../libempathy-gtk/empathy-group-chat.c:445
+#, c-format
+msgid "Topic: %s"
+msgstr "Gaia: %s"
+
+#: ../libempathy-gtk/empathy-group-chat.c:574
+#, c-format
+msgid "Topic set to: %s"
+msgstr "Gaia honela ezarria: %s"
+
+#: ../libempathy-gtk/empathy-group-chat.c:576
+msgid "No topic defined"
+msgstr "Ez da gairik definitu"
+
+#: ../libempathy-gtk/empathy-group-chat.glade.h:1
+msgid "<b>Topic:</b>"
+msgstr "<b>Gaia:</b>"
+
+#: ../libempathy-gtk/empathy-group-chat.glade.h:2
+msgid "Group Chat"
+msgstr "Berriketa-gela"
+
+#: ../libempathy-gtk/empathy-irc-network-dialog.c:287
+msgid "new server"
+msgstr "zerbitzari berria"
+
+#: ../libempathy-gtk/empathy-irc-network-dialog.c:512
+msgid "Server"
+msgstr "Zerbitzaria"
+
+#: ../libempathy-gtk/empathy-irc-network-dialog.c:527
+msgid "Port"
+msgstr "Ataka"
+
+#: ../libempathy-gtk/empathy-irc-network-dialog.c:540
+msgid "SSL"
+msgstr "SSL"
+
+#: ../libempathy-gtk/empathy-log-window.c:499
+msgid "Account"
+msgstr "Kontua"
+
+#: ../libempathy-gtk/empathy-log-window.c:506
+msgid "Conversation"
+msgstr "Berriketa"
+
+#: ../libempathy-gtk/empathy-log-window.c:516
+msgid "Date"
+msgstr "Data"
+
+#: ../libempathy-gtk/empathy-log-window.glade.h:1
+msgid "Conversations"
+msgstr "Berriketak"
+
+#: ../libempathy-gtk/empathy-log-window.glade.h:2
+msgid "Previous Conversations"
+msgstr "Aurreko berriketak"
+
+#: ../libempathy-gtk/empathy-log-window.glade.h:3
+msgid "Search"
+msgstr "Bilatu"
+
+#: ../libempathy-gtk/empathy-log-window.glade.h:4
+msgid "_For:"
+msgstr "_Honentzako:"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.c:286
+msgid "Chat Rooms"
+msgstr "Berriketa-gela"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:2
+msgid "Browse:"
+msgstr "Arakatu:"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:3
+msgid "Enter the room name to join here or click on one or more rooms in the list."
+msgstr ""
+"Idatzi gelaren izena bertara elkartzeko edo egin klik gela batean edo "
+"gehiagotan zerrendan."
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:4
+msgid ""
+"Enter the server which hosts the room, or leave it empty if the room is on "
+"the current account's server"
+msgstr ""
+"Idatzi gela duen zerbitzaria, edo utzi hutsik gela ez badago uneko kontuen "
+"zerbitzarian."
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:5
+msgid "Join"
+msgstr "Elkartu"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:6
+msgid "Join New"
+msgstr "Elkartu berrian"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:7
+msgid "Re_fresh"
+msgstr "_Freskatu"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:8
+msgid "This list represents all chat rooms hosted on the server you have entered."
+msgstr ""
+"Zerrenda honek emandako zerbitzarian ostatutako berriketa-gela guztiak "
+"adierazten ditu."
+
+#: ../libempathy-gtk/empathy-main-window.c:266
+msgid "Show and edit accounts"
+msgstr "Erakutsi eta editatu kontuak"
+
+#: ../libempathy-gtk/empathy-main-window.c:630
+msgid "Contact"
+msgstr "Kontaktua"
+
+#: ../libempathy-gtk/empathy-main-window.c:813
+msgid "_Edit account"
+msgstr "_Editatu kontua"
+
+#: ../libempathy-gtk/empathy-main-window.c:896
+msgid "Network error"
+msgstr "Sareko errorea"
+
+#: ../libempathy-gtk/empathy-main-window.c:899
+msgid "Authentication failed"
+msgstr "Autentifikazioak huts egin du"
+
+#: ../libempathy-gtk/empathy-main-window.c:902
+msgid "Encryption error"
+msgstr "Enkriptazioaren errorea"
+
+#: ../libempathy-gtk/empathy-main-window.c:905
+msgid "Name in use"
+msgstr "Izena erabilita"
+
+#: ../libempathy-gtk/empathy-main-window.c:908
+msgid "Certificate not provided"
+msgstr "Ez da ziurtagiririk eman"
+
+#: ../libempathy-gtk/empathy-main-window.c:911
+msgid "Certificate untrusted"
+msgstr "Ziurtagiria ez da fidagarria"
+
+#: ../libempathy-gtk/empathy-main-window.c:914
+msgid "Certificate expired"
+msgstr "Ziurtagiria iraungituta"
+
+#: ../libempathy-gtk/empathy-main-window.c:917
+msgid "Certificate not activated"
+msgstr "Ziurtagiria aktibatu gabe"
+
+#: ../libempathy-gtk/empathy-main-window.c:920
+msgid "Certificate hostname mismatch"
+msgstr "Ziurtagiriaren ostalari-izena ez dator bat"
+
+#: ../libempathy-gtk/empathy-main-window.c:923
+msgid "Certificate fingerprint mismatch"
+msgstr "Ziurtagiriaren hatz-marka ez dator bat"
+
+#: ../libempathy-gtk/empathy-main-window.c:926
+msgid "Certificate self signed"
+msgstr "Ziurtagiria bere buruarekin sinatuta"
+
+#: ../libempathy-gtk/empathy-main-window.c:929
+msgid "Certificate error"
+msgstr "Ziurtagiriaren errorea"
+
+#: ../libempathy-gtk/empathy-main-window.c:932
+msgid "Unknown error"
+msgstr "Errore ezezaguna"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:1
+msgid "Contact List"
+msgstr "Kontaktuen zerrenda"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:2
+msgid "Context"
+msgstr "Testuingurua"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:3
+msgid "Join _Favorites"
+msgstr "Elkartu _gogokoetan"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:5
+msgid "Manage Favorites"
+msgstr "Kudeatu gogokoak"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:6
+msgid "Show _Offline Contacts"
+msgstr "Erakutsi _konektatu gabeko kontaktuak"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:7
+#: ../megaphone/data/GNOME_Megaphone_Applet.xml.h:1
+#: ../nothere/data/GNOME_NotHere_Applet.xml.h:1
+msgid "_About"
+msgstr "Honi _buruz"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:8
+msgid "_Accounts"
+msgstr "_Kontuak"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:14
+#: ../libempathy-gtk/empathy-status-icon.glade.h:2
+msgid "_New Conversation..."
+msgstr "_Berriketa berria..."
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:15
+msgid "_Personal Information"
+msgstr "_Informazio pertsonala"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:16
+#: ../megaphone/data/GNOME_Megaphone_Applet.xml.h:3
+msgid "_Preferences"
+msgstr "_Hobespenak"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:17
+#: ../libempathy-gtk/empathy-status-icon.glade.h:3
+msgid "_Quit"
+msgstr "I_rten"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:2
+msgid "Call"
+msgstr "Deitu"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:4
+msgid "Contact ID:"
+msgstr "Kontaktuaren IDa:"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:5
+msgid "New Conversation"
+msgstr "Berriketa berria"
+
+#: ../libempathy-gtk/empathy-preferences.c:247
+msgid "Language"
+msgstr "Hizkuntza"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:1
+msgid "<b>Appearance</b>"
+msgstr "<b>Itxura</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:2
+msgid "<b>Audio</b>"
+msgstr "<b>Audioa</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:3
+msgid "<b>Behaviour</b>"
+msgstr "<b>Portaera</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:4
+msgid "<b>Contact List</b>"
+msgstr "<b>Kontaktuen zerrenda</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:5
+msgid "<b>Enable spell checking for languages:</b>"
+msgstr "<b>Gaitu hizkuntzen zuzentzailea:</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:6
+msgid "<b>Options</b>"
+msgstr "<b>Aukerak</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:7
+msgid "<b>Visual</b>"
+msgstr "<b>Bisuala</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:8
+msgid ""
+"<small>The list of languages reflects only the languages for which you have "
+"a dictionary installed.</small>"
+msgstr "<small>Hizkuntzen zerrendak instalatutako hiztegiei dagokie.</small>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:9
+msgid "Automatically _connect on startup "
+msgstr "Automatikoki _konektatu abiatzean "
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:10
+msgid "Avatars are user chosen images shown in the contact list"
+msgstr ""
+"Avatarrak, erabiltzaileak aukeratutako irudiak kontaktuen zerrendan agertzen "
+"direnak dira"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:11
+msgid "Chat Th_eme:"
+msgstr "Berriketa-_gaia:"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:12
+msgid "Display notifications when contacts come _online"
+msgstr "Bistaratu jakinarazpenak kontaktuak _konektatzen direnean"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:13
+msgid "Enable sounds when _away"
+msgstr "Gaitu soinuak _aldentzean"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:14
+msgid "Enable sounds when _busy"
+msgstr "Gaitu soinuak _lanpetutakoan"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:15
+msgid "General"
+msgstr "Orokorra"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:16
+msgid "Notifications"
+msgstr "Jakinarazpenak"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:17
+msgid "Preferences"
+msgstr "Hobespenak"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:18
+msgid "Show _avatars"
+msgstr "Erakutsi _avatarrak"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:19
+msgid "Show _smileys as images"
+msgstr "Erakutsi _aurpegierak irudi gisa"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:20
+msgid "Show co_mpact contact list"
+msgstr "Erakutsi kontaktu-zerrenda _trinkotua"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:21
+msgid "Sort by _name"
+msgstr "Ordenatu _izenarekiko"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:22
+msgid "Sort by s_tate"
+msgstr "Ordenatu _egoerarekiko"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:23
+msgid "Spell Checking"
+msgstr "Zuzentzailea"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:24
+msgid "Themes"
+msgstr "Gaiak"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:25
+msgid "_Open new chats in separate windows"
+msgstr "_Ireki berriketa berriak beste leihoetan"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:26
+msgid "_Play sound when messages arrive"
+msgstr "Jo _soinua mezuak iristean"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:27
+msgid "_Use for chat rooms"
+msgstr "_Erabili berriketa-geletan"
+
+#. Custom messages
+#: ../libempathy-gtk/empathy-presence-chooser.c:691
+msgid "Custom messages..."
+msgstr "Mezu pertsonalizatuak..."
+
+#: ../libempathy-gtk/empathy-presence-chooser.glade.h:1
+msgid "Custom message"
+msgstr "Mezu pertsonalizatua"
+
+#: ../libempathy-gtk/empathy-presence-chooser.glade.h:2
+msgid "Message:"
+msgstr "Mezua:"
+
+#: ../libempathy-gtk/empathy-presence-chooser.glade.h:3
+msgid "Save message"
+msgstr "Gorde mezua"
+
+#: ../libempathy-gtk/empathy-presence-chooser.glade.h:4
+msgid "Status:"
+msgstr "Egoera:"
+
+#: ../libempathy-gtk/empathy-private-chat.c:229
+#, c-format
+msgid "%s went offline"
+msgstr "%s deskonektatu da"
+
+#: ../libempathy-gtk/empathy-private-chat.c:243
+#, c-format
+msgid "%s has come online"
+msgstr "%s konektatu da"
+
+#: ../libempathy-gtk/empathy-spell-dialog.c:85
+msgid "Word"
+msgstr "Hitza"
+
+#: ../libempathy-gtk/empathy-spell-dialog.c:258
+msgid "Suggestions for the word"
+msgstr "Hitzari buruzko iradokizuna"
+
+#: ../libempathy-gtk/empathy-spell-dialog.glade.h:1
+msgid "Spell Checker"
+msgstr "Zuzentzailea"
+
+#: ../libempathy-gtk/empathy-spell-dialog.glade.h:2
+msgid "Suggestions for the word:"
+msgstr "Hitzaren iradokizuna:"
+
+#: ../libempathy-gtk/empathy-status-icon.c:369
+#, c-format
+msgid ""
+"New message from %s:\n"
+"%s"
+msgstr ""
+"%s-(r)en mezu berria:\n"
+"%s"
+
+#: ../libempathy-gtk/empathy-status-icon.c:434
+#, c-format
+msgid ""
+"Incoming call from %s:\n"
+"%s"
+msgstr ""
+"Sarrerako deia %s-(e)ndik:\n"
+"%s"
+
+#: ../libempathy-gtk/empathy-status-icon.c:738
+#, c-format
+msgid "Subscription requested by %s"
+msgstr "%s-(e)k harpidetzea eskatu du"
+
+#: ../libempathy-gtk/empathy-status-icon.c:741
+#, c-format
+msgid ""
+"\n"
+"Message: %s"
+msgstr ""
+"\n"
+"Mezua: %s"
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:1
+msgid "Status"
+msgstr "Egoera"
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:4
+msgid "_Show Contact List"
+msgstr "_Erakutsi kontaktu-zerrenda"
+
+#: ../libempathy-gtk/empathy-theme-boxes.c:780
+#: ../libempathy-gtk/empathy-theme-irc.c:297
+msgid "%A %d %B %Y"
+msgstr "%A, %Y %B %d"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:78
+msgid "Classic"
+msgstr "Klasikoa"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:79
+msgid "Simple"
+msgstr "Soila"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:80
+msgid "Clean"
+msgstr "Garbia"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:81
+msgid "Blue"
+msgstr "Urdina"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:158
+msgid "Current Locale"
+msgstr "Uneko lokala"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:161
+#: ../libempathy-gtk/totem-subtitle-encoding.c:163
+#: ../libempathy-gtk/totem-subtitle-encoding.c:165
+#: ../libempathy-gtk/totem-subtitle-encoding.c:167
+msgid "Arabic"
+msgstr "Arabiera"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:170
+msgid "Armenian"
+msgstr "Armeniera"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:173
+#: ../libempathy-gtk/totem-subtitle-encoding.c:175
+#: ../libempathy-gtk/totem-subtitle-encoding.c:177
+msgid "Baltic"
+msgstr "Baltikokoa"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:180
+msgid "Celtic"
+msgstr "Zeltiarra"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:183
+#: ../libempathy-gtk/totem-subtitle-encoding.c:185
+#: ../libempathy-gtk/totem-subtitle-encoding.c:187
+#: ../libempathy-gtk/totem-subtitle-encoding.c:189
+msgid "Central European"
+msgstr "Europako Erdialdekoa"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:192
+#: ../libempathy-gtk/totem-subtitle-encoding.c:194
+#: ../libempathy-gtk/totem-subtitle-encoding.c:196
+#: ../libempathy-gtk/totem-subtitle-encoding.c:198
+msgid "Chinese Simplified"
+msgstr "Txinatar soildua"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:201
+#: ../libempathy-gtk/totem-subtitle-encoding.c:203
+#: ../libempathy-gtk/totem-subtitle-encoding.c:205
+msgid "Chinese Traditional"
+msgstr "Txinatar tradizionala"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:208
+msgid "Croatian"
+msgstr "Kroaziera"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:211
+#: ../libempathy-gtk/totem-subtitle-encoding.c:213
+#: ../libempathy-gtk/totem-subtitle-encoding.c:215
+#: ../libempathy-gtk/totem-subtitle-encoding.c:217
+#: ../libempathy-gtk/totem-subtitle-encoding.c:219
+#: ../libempathy-gtk/totem-subtitle-encoding.c:221
+msgid "Cyrillic"
+msgstr "Zirilikoa"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:224
+msgid "Cyrillic/Russian"
+msgstr "Zirilikoa/Errusiarra"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:227
+#: ../libempathy-gtk/totem-subtitle-encoding.c:229
+msgid "Cyrillic/Ukrainian"
+msgstr "Zirilikoa/Ukrainarra"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:232
+msgid "Georgian"
+msgstr "Georgiera"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:235
+#: ../libempathy-gtk/totem-subtitle-encoding.c:237
+#: ../libempathy-gtk/totem-subtitle-encoding.c:239
+msgid "Greek"
+msgstr "Grekoa"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:242
+msgid "Gujarati"
+msgstr "Gujaratiera"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:245
+msgid "Gurmukhi"
+msgstr "Gurmukhia"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:248
+#: ../libempathy-gtk/totem-subtitle-encoding.c:250
+#: ../libempathy-gtk/totem-subtitle-encoding.c:252
+#: ../libempathy-gtk/totem-subtitle-encoding.c:254
+msgid "Hebrew"
+msgstr "Hebreera"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:257
+msgid "Hebrew Visual"
+msgstr "Hebrear bisuala"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:260
+msgid "Hindi"
+msgstr "Hindiera"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:263
+msgid "Icelandic"
+msgstr "Islandiera"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:266
+#: ../libempathy-gtk/totem-subtitle-encoding.c:268
+#: ../libempathy-gtk/totem-subtitle-encoding.c:270
+msgid "Japanese"
+msgstr "Japoniera"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:273
+#: ../libempathy-gtk/totem-subtitle-encoding.c:275
+#: ../libempathy-gtk/totem-subtitle-encoding.c:277
+#: ../libempathy-gtk/totem-subtitle-encoding.c:279
+msgid "Korean"
+msgstr "Koreera"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:282
+msgid "Nordic"
+msgstr "Nordikoa"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:285
+msgid "Persian"
+msgstr "Persiera"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:288
+#: ../libempathy-gtk/totem-subtitle-encoding.c:290
+msgid "Romanian"
+msgstr "Errumaniera"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:293
+msgid "South European"
+msgstr "Europako Hegoaldekoa"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:296
+msgid "Thai"
+msgstr "Thailandiera"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:299
+#: ../libempathy-gtk/totem-subtitle-encoding.c:301
+#: ../libempathy-gtk/totem-subtitle-encoding.c:303
+#: ../libempathy-gtk/totem-subtitle-encoding.c:305
+msgid "Turkish"
+msgstr "Turkiera"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:308
+#: ../libempathy-gtk/totem-subtitle-encoding.c:310
+#: ../libempathy-gtk/totem-subtitle-encoding.c:312
+#: ../libempathy-gtk/totem-subtitle-encoding.c:314
+#: ../libempathy-gtk/totem-subtitle-encoding.c:316
+msgid "Unicode"
+msgstr "Unicode"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:319
+#: ../libempathy-gtk/totem-subtitle-encoding.c:321
+#: ../libempathy-gtk/totem-subtitle-encoding.c:323
+#: ../libempathy-gtk/totem-subtitle-encoding.c:325
+#: ../libempathy-gtk/totem-subtitle-encoding.c:327
+msgid "Western"
+msgstr "Mendebaldekoa"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:330
+#: ../libempathy-gtk/totem-subtitle-encoding.c:332
+#: ../libempathy-gtk/totem-subtitle-encoding.c:334
+msgid "Vietnamese"
+msgstr "Vietnamera"
+
+#.
+#. * vim: sw=2 ts=8 cindent noai bs=2
+#.
+#: ../megaphone/data/GNOME_Megaphone_Applet.schemas.in.h:1
+msgid "The contact to display in the applet. Empty means no contact is displayed."
+msgstr ""
+"Kontaktua applet-ean bistaratzeko. Hutsik utziz gero, ez da kontakturik "
+"bistaratuko."
+
+#: ../megaphone/data/GNOME_Megaphone_Applet.schemas.in.h:2
+msgid "The contact's avatar token. Empty means contact has no avatar."
+msgstr ""
+"Kontaktuaren avatarra. Hutsi utziz gero kontaktuak avatarrik ez duela "
+"adierazten da."
+
+#: ../megaphone/data/GNOME_Megaphone_Applet.server.in.in.h:1
+msgid "Megaphone"
+msgstr "Megafonoa"
+
+#: ../megaphone/data/GNOME_Megaphone_Applet.server.in.in.h:2
+#: ../megaphone/src/megaphone-applet.c:419
+msgid "Talk!"
+msgstr "Hitz egin!"
+
+#: ../megaphone/data/GNOME_Megaphone_Applet.xml.h:2
+msgid "_Information"
+msgstr "_Informazioa"
+
+#: ../nothere/data/GNOME_NotHere_Applet.server.in.in.h:1
+msgid "Presence"
+msgstr "Presentzia"
+
+#: ../nothere/data/GNOME_NotHere_Applet.server.in.in.h:2
+#: ../nothere/src/nothere-applet.c:89
+msgid "Set your own presence"
+msgstr "Ezarri zure presentzia"
+
+#: ../src/empathy.c:205
+msgid "- Empathy Instant Messenger"
+msgstr "- Empathy berehalako mezularitza"
+
diff --git a/gnome-2-22/po/fi.po b/gnome-2-22/po/fi.po
new file mode 100644
index 000000000..6f40ac773
--- /dev/null
+++ b/gnome-2-22/po/fi.po
@@ -0,0 +1,1773 @@
+# This file is distributed under the same license as the gossip package.
+# Copyright (C) 2006 Samuli Seppänen and Henna Nykänen.
+#
+# Ilkka Tuohela <hile@iki.fi>, 2006-2007.
+# Samuli Seppänen & Henna Nykänen <sjsepp@utu.fi>, 2006.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gossip\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-09 08:45+0300\n"
+"PO-Revision-Date: 2006-10-17 20:50+0300\n"
+"Last-Translator: Samuli Seppänen & Henna Nykänen <sjsepp@utu.fi>\n"
+"Language-Team: Finnish <gnome-fi-laatu@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.10.2\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: ../data/empathy.desktop.in.in.h:1
+msgid "Empathy Instant Messenger"
+msgstr "Empathy-pikaviestin"
+
+#: ../data/empathy.desktop.in.in.h:2
+msgid "Send and receive instant messages"
+msgstr "Lähetä ja vastaanota pikaviestejä"
+
+#: ../data/empathy.schemas.in.h:1
+msgid "Always open a separate chat window for new chats."
+msgstr "Avaa aina uusi ikkuna uusille keskusteluille."
+
+#: ../data/empathy.schemas.in.h:2
+msgid ""
+"Character to add after nickname when using nick completion (tab) in group "
+"chat."
+msgstr ""
+"Lempinimen jälkeen lisättävä merkki, kun käytetään lempinimen täydennystä "
+"(sarkain) ryhmäkeskustelussa."
+
+#: ../data/empathy.schemas.in.h:3
+msgid "Chat window theme"
+msgstr "Keskusteluikkunan teema"
+
+#: ../data/empathy.schemas.in.h:4
+msgid "Checks if Empathy should autoconnect on startup"
+msgstr "Tarkistaa, yhdistääkö empathy automaattisesti käynnistettäessä"
+
+#: ../data/empathy.schemas.in.h:5
+msgid "Checks if NetworkManager should be used"
+msgstr "Tarkistaa, käytetäänkö NetworkManager:ia"
+
+#: ../data/empathy.schemas.in.h:6
+msgid "Checks if Salut account is created"
+msgstr "Tarkistaa, onko salut-tili luotu"
+
+#: ../data/empathy.schemas.in.h:7
+msgid ""
+"Comma separated list of spell checker languages to use (e.g. en, fr, nl)."
+msgstr ""
+"Pilkuilla erotettu luettelo kielentarkastuksessa käytettävistä kielistä "
+"(esim. en, fr, nl)."
+
+#: ../data/empathy.schemas.in.h:8
+msgid "Compact contact list"
+msgstr "Pienikokoinen tuttavaluettelo"
+
+#: ../data/empathy.schemas.in.h:9
+msgid "Contact list sort criterium"
+msgstr "Tuttavaluettelon järjestystapa"
+
+#: ../data/empathy.schemas.in.h:10
+msgid "Default directory to select an avatar image from"
+msgstr "Oletushakemisto, josta avatar-kuvat haetaan"
+
+#: ../data/empathy.schemas.in.h:11
+msgid "Enable popup when contact is available"
+msgstr "Näytä ponnahdusikkuna, kun tuttava on linjoilla"
+
+#: ../data/empathy.schemas.in.h:12
+msgid "Enable sound when away"
+msgstr "Käytä ääniä poissa-tilassa"
+
+#: ../data/empathy.schemas.in.h:13
+msgid "Enable sound when busy"
+msgstr "Käytä ääniä varattu-tilassa"
+
+#: ../data/empathy.schemas.in.h:14
+msgid "Enable spell checker"
+msgstr "Ota käyttöön oikeinkirjoituksen tarkistus"
+
+#: ../data/empathy.schemas.in.h:15
+msgid "Hide main window"
+msgstr "Piilota pääikkuna"
+
+#: ../data/empathy.schemas.in.h:16
+msgid "Hide the main window."
+msgstr "Piilota pääikkuna."
+
+#: ../data/empathy.schemas.in.h:17
+msgid "Nick completed character"
+msgstr "Lempinimen täydennysmerkki"
+
+#: ../data/empathy.schemas.in.h:18
+msgid "Open new chats in separate windows"
+msgstr "Avaa uusi ikkuna uusille keskusteluille"
+
+#: ../data/empathy.schemas.in.h:19
+msgid "Show avatars"
+msgstr "Näytä avatar-kuvat"
+
+#: ../data/empathy.schemas.in.h:20
+msgid "Show hint about closing the main window"
+msgstr "Näytä vihje pääikkunan sulkemisesta"
+
+#: ../data/empathy.schemas.in.h:21
+msgid "Show offline contacts"
+msgstr "Näytä linjoilta poissa olevat tuttavat"
+
+#: ../data/empathy.schemas.in.h:22
+msgid "Spell checking languages"
+msgstr "Kielentarkastuksessa käytetyt kielet"
+
+#: ../data/empathy.schemas.in.h:23
+msgid "The last directory that an avatar image was chosen from."
+msgstr "Viimeisin hakemisto, josta avatar-kuva oli valittu."
+
+#: ../data/empathy.schemas.in.h:24
+msgid "The theme that is used to display the conversation in chat windows."
+msgstr "Keskusteluikkunoissa käytettävä teema."
+
+#: ../data/empathy.schemas.in.h:25
+msgid "Use graphical smileys"
+msgstr "Käytä hymiökuvakkeita"
+
+#: ../data/empathy.schemas.in.h:26
+msgid "Use notification sounds"
+msgstr "Käytä merkkiääniä"
+
+#: ../data/empathy.schemas.in.h:27
+msgid "Use theme for chat rooms"
+msgstr "Käytä teemaa keskusteluhuoneille"
+
+#: ../data/empathy.schemas.in.h:28
+msgid ""
+"Whether or not Empathy should automatically login to your accounts on "
+"startup."
+msgstr ""
+"Tulisiko empathyn ottaa yhteyttä tileihin automaattisesti, kun kirjaudut "
+"sisään."
+
+#: ../data/empathy.schemas.in.h:29
+msgid ""
+"Whether or not the Salut account has been created on the first empathy run."
+msgstr "Onko salut-tili luotu suoritettaessa empathyä ensimmäistä kertaa."
+
+#: ../data/empathy.schemas.in.h:30
+msgid ""
+"Whether or not the network manager should be used to automatically "
+"disconnect/reconnect."
+msgstr ""
+"Käytetäänkö NetworkManager:ia yhdistämään ja katkaisemaan yhteys "
+"automaattisesti."
+
+#: ../data/empathy.schemas.in.h:31
+msgid ""
+"Whether or not to check words typed against the languages you want to check "
+"with."
+msgstr "Tarkistetaanko oikeinkirjoitus haluamiasi kieliä vasten."
+
+#: ../data/empathy.schemas.in.h:32
+msgid ""
+"Whether or not to convert smileys into graphical images in conversations."
+msgstr "Muunnetaanko hymiöt graafisiksi?"
+
+#: ../data/empathy.schemas.in.h:33
+msgid "Whether or not to play a sound when messages arrive."
+msgstr "Annetaanko viestien saapuessa merkkiääni?"
+
+#: ../data/empathy.schemas.in.h:34
+msgid "Whether or not to play sounds when away."
+msgstr "Käytetäänko merkkiääniä Poissa-tilassa?"
+
+#: ../data/empathy.schemas.in.h:35
+msgid "Whether or not to play sounds when busy."
+msgstr "Käytetäänkö merkkiääniä Varattu-tilassa?"
+
+#: ../data/empathy.schemas.in.h:36
+msgid "Whether or not to show a popup when a contact becomes available."
+msgstr "Näytetäänkö ponnahdusikkuna, kun tuttava tulee linjoille."
+
+#: ../data/empathy.schemas.in.h:37
+msgid ""
+"Whether or not to show avatars for contacts in the contact list and chat "
+"windows."
+msgstr "Näytetäänkö avatarit tuttavaluettelossa ja keskusteluikkunoissa."
+
+#: ../data/empathy.schemas.in.h:38
+msgid "Whether or not to show contacts that are offline in the contact list."
+msgstr "Näytetäänkö tuttavaluettelossa myös linjoilta poissa olevat tuttavat?"
+
+#: ../data/empathy.schemas.in.h:39
+msgid ""
+"Whether or not to show the message dialog about closing the main window with "
+"the 'x' button in the title bar."
+msgstr ""
+"Näytetäänkö viesti-ikkuna pääikkunan sulkemisesta suljettaessa ikkuna X-"
+"napista."
+
+#: ../data/empathy.schemas.in.h:40
+msgid "Whether to show the contact list in compact mode or not."
+msgstr "Näytetäänkö tuttavaluettelo pienikokoisena."
+
+#: ../data/empathy.schemas.in.h:41
+msgid "Whether to use the theme for chat rooms or not."
+msgstr "Käytetäänkö teemaa keskusteluhuoneille."
+
+#: ../data/empathy.schemas.in.h:42
+msgid ""
+"Which criterium to use when sorting the contact list. Default is to use sort "
+"by the contact's name with the value \"name\". A value of \"state\" will "
+"sort the contact list by state."
+msgstr ""
+"Millä ehtoa käytetään tuttavaluettelon järjestämiseen. Oletusarvo on "
+"järjestää tuttavan nimen mukaan arvolla \"name\". Luettelo voidaan järjestää "
+"tuttavan tilan mukaan arvolla \"state\"."
+
+#: ../libempathy/empathy-tp-contact-list.c:724 ../src/empathy.c:155
+msgid "People nearby"
+msgstr "Lähellä olevat ihmiset"
+
+#: ../libempathy/empathy-utils.c:541
+msgid "Available"
+msgstr "Tavoitettavissa"
+
+#: ../libempathy/empathy-utils.c:543
+msgid "Busy"
+msgstr "Varattu"
+
+#: ../libempathy/empathy-utils.c:546
+msgid "Away"
+msgstr "Poissa"
+
+#: ../libempathy/empathy-utils.c:548
+msgid "Hidden"
+msgstr "Piilotettu"
+
+#: ../libempathy/empathy-utils.c:551
+msgid "Offline"
+msgstr "Poissa linjoilta"
+
+#: ../libempathy-gtk/empathy-about-dialog.c:63
+msgid ""
+"Empathy is free software; you can redistribute it and/or modify it under the "
+"terms of the GNU General Public License as published by the Free Software "
+"Foundation; either version 2 of the License, or (at your option) any later "
+"version."
+msgstr ""
+"Empathy on vapaa ohjelma; sitä on sallittu levittää edelleen ja muuttaa GNU "
+"yleisen lisenssin (GPL lisenssin) ehtojen mukaan sellaisina kuin Free "
+"Software Foundation on ne julkaissut; joko lisenssin version 2, tai "
+"(valinnan mukaan) minkä tahansa myöhemmän version mukaisesti."
+
+#: ../libempathy-gtk/empathy-about-dialog.c:67
+msgid ""
+"Empathy is distributed in the hope that it will be useful, but WITHOUT ANY "
+"WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS "
+"FOR A PARTICULAR PURPOSE. See the GNU General Public License for more "
+"details."
+msgstr ""
+"Empathyä levitetään siinä toivossa, että se olisi hyödyllinen, mutta ilman "
+"mitään takuuta; ilman edes hiljaista takuuta kaupallisesti hyväksyttävästä "
+"laadusta tai soveltuvuudesta tiettyyn tarkoitukseen. Katso GPL lisenssistä "
+"lisää yksityiskohtia."
+
+#: ../libempathy-gtk/empathy-about-dialog.c:71
+msgid ""
+"You should have received a copy of the GNU General Public License along with "
+"Empathy; if not, write to the Free Software Foundation, Inc., 51 Franklin "
+"Street, Fifth Floor, Boston, MA 02110-130159 USA"
+msgstr ""
+"Empathyn mukana pitäisi tulla kopio GPL-lisenssistä; jos näin ei ole, "
+"kirjoita osoitteeseen Free Software Foundation Inc., 51 Franklin St, Fifth "
+"Floor, Boston, MA 02110-1301, USA."
+
+#: ../libempathy-gtk/empathy-about-dialog.c:99
+msgid "An Instant Messaging client for GNOME"
+msgstr "Gnomen pikaviestiohjelma"
+
+#: ../libempathy-gtk/empathy-about-dialog.c:105
+msgid "translator-credits"
+msgstr ""
+"Samuli Seppänen ja Henna Nykänen, 2006.\n"
+"Ilkka Tuohela, 2006.\n"
+"\n"
+"http://www.gnome.fi/"
+
+#: ../libempathy-gtk/empathy-account-chooser.c:337
+msgid "All"
+msgstr "Kaikki"
+
+#: ../libempathy-gtk/empathy-account-widget.c:284
+#: ../libempathy-gtk/empathy-account-widget.c:329
+#, c-format
+msgid "%s:"
+msgstr "%s:"
+
+#: ../libempathy-gtk/empathy-account-widget-icq.glade.h:1
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:1
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:1
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:1
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:1
+msgid "<b>Advanced</b>"
+msgstr "<b>Lisäasetukset</b>"
+
+#: ../libempathy-gtk/empathy-account-widget-icq.glade.h:2
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:3
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:2
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:2
+msgid "Forget password and clear the entry."
+msgstr "Unohda salasana ja tyhjennä kohta."
+
+#: ../libempathy-gtk/empathy-account-widget-icq.glade.h:3
+msgid "ICQ _UIN:"
+msgstr "ICQ _UIN:"
+
+#: ../libempathy-gtk/empathy-account-widget-icq.glade.h:4
+msgid "ICQ account settings"
+msgstr "ICQ-tilin asetukset"
+
+#: ../libempathy-gtk/empathy-account-widget-icq.glade.h:5
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:5
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:4
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:5
+msgid "Pass_word:"
+msgstr "S_alasana:"
+
+#: ../libempathy-gtk/empathy-account-widget-icq.glade.h:6
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:8
+msgid "_Charset:"
+msgstr "_Merkistö:"
+
+#: ../libempathy-gtk/empathy-account-widget-icq.glade.h:7
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:11
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:5
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:10
+msgid "_Port:"
+msgstr "_Portti:"
+
+#: ../libempathy-gtk/empathy-account-widget-icq.glade.h:8
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:12
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:6
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:12
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:10
+msgid "_Server:"
+msgstr "Pal_velin:"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.c:246
+msgid "New Network"
+msgstr "Uusi verkko"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:1
+msgid "<b>Network</b>"
+msgstr "<b>Verkko</b>"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:2
+msgid "<b>Servers</b>"
+msgstr "<b>Palvelimet</b>"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:3
+msgid "Charset:"
+msgstr "Merkistö:"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:4
+msgid "Create a new IRC network"
+msgstr "Luo uusi IRC-verkko"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:5
+msgid "Edit the selected IRC network"
+msgstr "Muokkaa valittua IRC-verkkoa"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:6
+msgid "Network"
+msgstr "Verkko"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:7
+msgid "Network:"
+msgstr "Verkko:"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:8
+msgid "Nickname:"
+msgstr "Nimimerkki:"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:9
+msgid "Password:"
+msgstr "Salasana:"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:10
+msgid "Quit message:"
+msgstr "Lopetusviesti:"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:11
+msgid "Real name:"
+msgstr "Oikea nimi:"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:12
+msgid "Remove the selected IRC network"
+msgstr "Poista valittu IRC-verkko"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:13
+msgid "irc account settings"
+msgstr "irc-tilin asetukset"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:2
+msgid "<b>Override server settings</b>"
+msgstr "<b>Käytä omia asetuksia palvelimen asetusten sijasta</b>"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:4
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:3
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:4
+msgid "Login I_D:"
+msgstr "_Käyttäjätunnus:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:6
+msgid "Pri_ority:"
+msgstr "_Tärkeys:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:7
+msgid "Reso_urce:"
+msgstr "Res_urssi:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:8
+msgid "Use old SS_L"
+msgstr "Käytä vanhaa SS_L-porttia"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:9
+msgid "_Encryption required (TLS/SSL)"
+msgstr "_Vaadi salaus (TLS/SSL)"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:10
+msgid "_Ignore SSL certificate errors"
+msgstr "Älä _huomioi SSL-varmenteiden virheitä"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:13
+msgid "jabber account settings"
+msgstr "jabber-tilin asetukset"
+
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:7
+msgid "msn account settings"
+msgstr "msn-tilin asetukset"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:2
+msgid "_E-mail:"
+msgstr "_Sähköposti:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:3
+msgid "_First Name: "
+msgstr "_Etunimi:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:4
+msgid "_Jabber ID:"
+msgstr "_Jabber-tunniste:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:5
+msgid "_Last Name:"
+msgstr "_Sukunimi:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:6
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:8
+msgid "_Nickname:"
+msgstr "_Nimimerkki:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:7
+msgid "_Published Name:"
+msgstr "_Julkaistu nimi:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:8
+msgid "salut account settings"
+msgstr "salut-tilin asetukset"
+
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:3
+msgid "J_apan server:"
+msgstr "J_apanin palvelin"
+
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:6
+msgid "Use _Yahoo Japan"
+msgstr "Käytä _Yahoo Japania"
+
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:7
+msgid "Yahoo! account settings"
+msgstr "Yahoo!-tilin asetukset"
+
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:9
+msgid "_Ignore conference and chatroom invitations"
+msgstr "Älä _huomioi konferenssi- ja huonekutsuja"
+
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:11
+msgid "_Room List locale:"
+msgstr "_Huoneluettelon maa-asetusto:"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:225
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to start configuring."
+msgstr ""
+"Jos haluat lisätä uuden tilin, voit napsauttaa \"Lisää\"-painiketta ja uusi "
+"kohta lisätään, josta voit määritellä tilin asetukset."
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:229
+msgid ""
+"To add a new account, you first have to install a backend for each protocol "
+"you want to use."
+msgstr ""
+"Ennen kuin voit lisätä tilin, sinun täytyy asentaa kullekin käytettävälle "
+"protokollalle tarvittava taustajärjestelmä."
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:236
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:2
+msgid "<b>No Account Selected</b>"
+msgstr "<b>Tiliä ei ole valittu</b>"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:237
+msgid ""
+"\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want "
+"to configure in the list on the left."
+msgstr ""
+"\n"
+"\n"
+"Jos et halua lisätä uutta tiliä, valitse vasemmalla olevasta luettelosta "
+"tili, jonka asetuksia haluat muuttaa."
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:243
+msgid "<b>No Accounts Configured</b>"
+msgstr "<b>Tilejä ei ole määritelty</b>"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:411
+msgid "Enabled"
+msgstr "Käytössä"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:421
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:4
+msgid "Accounts"
+msgstr "Käyttäjätilit"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:904
+#, c-format
+msgid ""
+"You are about to remove your %s account!\n"
+"Are you sure you want to proceed?"
+msgstr ""
+"Olet poistamassa %s-tilisi!\n"
+"Haluatko varmasti jatkaa?"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:910
+msgid ""
+"Any associated conversations and chat rooms will NOT be removed if you "
+"decide to proceed.\n"
+"\n"
+"Should you decide to add the account back at a later time, they will still "
+"be available."
+msgstr ""
+"Liitettyjä keskusteluja ja keskusteluhuoneita ei poisteta, jos päätät "
+"jatkaa.\n"
+"\n"
+"Jos päätät myöhemmin lisätä tilin takaisin, ovat vanhat keskustelut ja "
+"keskusteluhuoneet jälleen käytettävissä."
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:1
+msgid "<b>New Account</b>"
+msgstr "<b>Uusi tili</b>"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:3
+msgid "<b>Settings</b>"
+msgstr "<b>Asetukset</b>"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:5
+msgid "Cr_eate"
+msgstr "_Luo"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:6
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to started configuring.\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want "
+"to configure in the list on the left."
+msgstr ""
+"Jos haluat lisätä uuden tilin, napsauta \"Lisää\"-painiketta ja määrittele "
+"tilin asetukset luetteloon lisätystä kohdasta.\n"
+"\n"
+"Jos et halua lisätä uutta tiliä, muokkaa olemassaolevaa tiliä napsauttamalla "
+"sen kohtaa vasemmalla olevasta luettelosta."
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:9
+msgid "Type:"
+msgstr "Tyyppi:"
+
+#: ../libempathy-gtk/empathy-avatar-chooser.c:449
+msgid "Select Your Avatar Image"
+msgstr "Valitse avatar-kuvasi"
+
+#: ../libempathy-gtk/empathy-avatar-chooser.c:452
+msgid "No Image"
+msgstr "Ei kuvaa"
+
+#: ../libempathy-gtk/empathy-avatar-chooser.c:512
+msgid "Images"
+msgstr "Kuvat"
+
+#: ../libempathy-gtk/empathy-avatar-chooser.c:516
+msgid "All Files"
+msgstr "Kaikki tiedostot"
+
+#: ../libempathy-gtk/empathy-avatar-image.c:298
+msgid "Click to enlarge"
+msgstr "Suurenna napsauttamalla"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:1
+msgid "End Call"
+msgstr "Lopeta puhelu"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:2
+msgid "Input"
+msgstr "Saapuva"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:3
+msgid "Mute"
+msgstr "Vaimenna"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:4
+msgid "Output"
+msgstr "Lähtevä"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:5
+msgid "Send Video"
+msgstr "Lähetä videota"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:6
+msgid "Start Call"
+msgstr "Aloita puhelu"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:7
+msgid "Volume"
+msgstr "Äänenvoimakkuus"
+
+#: ../libempathy-gtk/empathy-chat.c:441
+msgid "Disconnected"
+msgstr "Ei yhteyttä"
+
+#: ../libempathy-gtk/empathy-chat.c:565
+msgid "offline"
+msgstr "poissa linjoilta"
+
+#: ../libempathy-gtk/empathy-chat.c:568
+msgid "invalid contact"
+msgstr "virheellinen yhteystieto"
+
+#: ../libempathy-gtk/empathy-chat.c:571
+msgid "permission denied"
+msgstr "lupa evätty"
+
+#: ../libempathy-gtk/empathy-chat.c:574
+msgid "too long message"
+msgstr "liian pitkä viesti"
+
+#: ../libempathy-gtk/empathy-chat.c:577
+msgid "not implemented"
+msgstr "ei toteutettu"
+
+#: ../libempathy-gtk/empathy-chat.c:580
+msgid "unknown"
+msgstr "tuntematon"
+
+#: ../libempathy-gtk/empathy-chat.c:584
+#, c-format
+msgid "Error sending message '%s': %s"
+msgstr "Virhe lähetettäessä viestiä \"%s\": %s"
+
+#: ../libempathy-gtk/empathy-chat.c:1041
+msgid "Insert Smiley"
+msgstr "Lisää hymiö"
+
+#: ../libempathy-gtk/empathy-chat.c:1088
+msgid "_Check Word Spelling..."
+msgstr "_Tarkasta oikeinkirjoitus..."
+
+#: ../libempathy-gtk/empathy-chat.c:1545
+msgid "Connected"
+msgstr "Yhdistetty"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:1
+msgid "C_lear"
+msgstr "_Tyhjennä"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:2
+msgid "Ca_ll"
+msgstr "_Soita"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:3
+msgid "Change _Topic..."
+msgstr "Muuta _aihetta..."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:4
+#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:3
+msgid "Chat"
+msgstr "Keskustelu"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:5
+msgid "Contact Infor_mation"
+msgstr "_Yhteystiedot"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:6
+msgid "Cu_t"
+msgstr "_Leikkaa"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:7
+msgid "In_vite..."
+msgstr "_Kutsu..."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:8
+msgid "Insert _Smiley"
+msgstr "Lisää _hymiö"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:9
+msgid "Invitation _message:"
+msgstr "Kutsu_viesti:"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:10
+msgid "Invite"
+msgstr "Kutsu"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:11
+#: ../libempathy-gtk/empathy-main-window.glade.h:4
+msgid "Join _New..."
+msgstr "Liity _uuteen..."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:12
+msgid "Move Tab _Left"
+msgstr "Siirrä välilehti _vasemmalle"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:13
+msgid "Move Tab _Right"
+msgstr "Siirrä välilehti _oikealle"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:14
+msgid "Select who would you like to invite:"
+msgstr "Valitse ketkä haluat kutsua:"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:15
+msgid "You have been invited to join a chat conference."
+msgstr "Olet saanut kutsun ryhmäkeskusteluun."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:16
+#: ../libempathy-gtk/empathy-main-window.glade.h:9
+msgid "_Add Contact..."
+msgstr "Lisää _tuttava..."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:17
+msgid "_Add To Favorites"
+msgstr "Lisää _suosikkeihin"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:18
+msgid "_Close"
+msgstr "_Sulje"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:19
+#: ../libempathy-gtk/empathy-main-window.glade.h:11
+msgid "_Contents"
+msgstr "_Sisältö"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:20
+msgid "_Conversation"
+msgstr "_Keskustelu"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:21
+msgid "_Copy"
+msgstr "_Kopioi"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:22
+msgid "_Detach Tab"
+msgstr "_Irrota välilehti"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:23
+#: ../libempathy-gtk/empathy-contact-list-view.c:217
+#: ../libempathy-gtk/empathy-main-window.glade.h:12
+msgid "_Edit"
+msgstr "_Muokkaa"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:24
+#: ../libempathy-gtk/empathy-main-window.glade.h:13
+msgid "_Help"
+msgstr "O_hje"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:25
+msgid "_Next Tab"
+msgstr "_Seuraava välilehti"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:26
+msgid "_Paste"
+msgstr "_Liitä"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:27
+msgid "_Previous Tab"
+msgstr "_Edellinen välilehti"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:28
+#: ../libempathy-gtk/empathy-main-window.glade.h:18
+msgid "_Room"
+msgstr "_Huone"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:29
+msgid "_Show Contacts"
+msgstr "_Näytä tuttavat"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:30
+msgid "_Tabs"
+msgstr "V_älilehdet"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:31
+#: ../libempathy-gtk/empathy-contact-list-view.c:233
+#: ../libempathy-gtk/empathy-main-window.glade.h:19
+msgid "_View Previous Conversations"
+msgstr "_Näytä edelliset keskustelut"
+
+#: ../libempathy-gtk/empathy-chat-view.c:441
+msgid "_Copy Link Address"
+msgstr "_Kopioi linkin osoite"
+
+#: ../libempathy-gtk/empathy-chat-view.c:449
+msgid "_Open Link"
+msgstr "_Avaa linkki"
+
+#: ../libempathy-gtk/empathy-chat-window.c:699
+#, c-format
+msgid "Conversations (%d)"
+msgstr "Keskustelut (%d)"
+
+#: ../libempathy-gtk/empathy-chat-window.c:1294
+msgid "Typing a message."
+msgstr "Kirjoittaa viestiä."
+
+#: ../libempathy-gtk/empathy-chatrooms-window.c:258
+msgid "Name"
+msgstr "Nimi"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.c:276
+msgid "Room"
+msgstr "Huone"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.c:285
+msgid "Auto Connect"
+msgstr "Yhdistä automaattisesti"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:1
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:5
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:1
+#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:1
+msgid "Account:"
+msgstr "Käyttäjätili:"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:2
+msgid "Edit Favorite Room"
+msgstr "Muokkaa suosikkihuonetta"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:3
+msgid "Join room on start_up"
+msgstr "Yhdistä _keskusteluhuoneeseen käynnistettäessä"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:4
+msgid "Join this chat room when Empathy starts and you are connected"
+msgstr "Yhdistä tähän keskusteluhuoneeseen, kun yhteys on muodostettu"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:5
+msgid "Manage Favorite Rooms"
+msgstr "Hallitse suosikkihuoneita"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:6
+msgid "N_ame:"
+msgstr "_Nimi:"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:7
+msgid "S_erver:"
+msgstr "_Palvelin:"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:9
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:9
+msgid "_Room:"
+msgstr "_Keskusteluhuone:"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:176
+msgid "Personal Information"
+msgstr "Henkilökohtaiset tiedot"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:179
+msgid "Edit Contact Information"
+msgstr "Muokkaa yhteystietoja"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:182
+msgid "Contact Information"
+msgstr "Yhteystiedot"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:277
+msgid "I would like to add you to my contact list."
+msgstr "Haluaisin liittää sinut tuttavaluettelooni."
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:301
+msgid "New Contact"
+msgstr "Uusi tuttava"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.glade.h:1
+msgid "Decide _Later"
+msgstr "_Päätä myöhemmin"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.glade.h:2
+msgid "Subscription Request"
+msgstr "Liittymispyyntö"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:197
+msgid "_Contact"
+msgstr "_Tuttavat"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:201
+msgid "_Group"
+msgstr "_Ryhmä"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:205
+#: ../libempathy-gtk/empathy-main-window.glade.h:10
+msgid "_Chat"
+msgstr "_Keskustele"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:205
+msgid "Chat with contact"
+msgstr "Keskustele tuttavan kanssa"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:209
+msgid "Infor_mation"
+msgstr "_Tietoja"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:209
+msgid "View contact information"
+msgstr "Näytä yhteystiedot"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:213
+msgid "Re_name"
+msgstr "Nimeä _uudelleen"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:213
+msgid "Rename"
+msgstr "Nimeä uudelleen"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:217
+msgid "Edit the groups and name for this contact"
+msgstr "Muokkaa yhteystiedon ryhmiä ja nimeä"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:221
+msgid "_Remove"
+msgstr "_Poista"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:221
+msgid "Remove contact"
+msgstr "_Poista tuttavan yhteystiedot"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:225
+msgid "_Invite to Chat Room"
+msgstr "K_utsu keskusteluhuoneeseen"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:225
+msgid "Invite to a currently open chat room"
+msgstr "Kutsu avoinna olevaan keskusteluhuoneeseen"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:229
+msgid "_Send File..."
+msgstr "_Lähetä tiedosto..."
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:229
+msgid "Send a file"
+msgstr "Lähetä tiedosto"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:233
+msgid "View previous conversations with this contact"
+msgstr "Näytä edelliset keskustelut tämän tuttavan kanssa"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:238
+msgid "_Call"
+msgstr "_Soita"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:238
+msgid "Start a voice or video conversation with this contact"
+msgstr "Aloita puhelu tai videoneuvottelu tämän tuttavan kanssa"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:1469
+msgid "Sorry, I don't want you in my contact list anymore."
+msgstr "Anteeksi mutta en halua sinua enää tuttavaluettelooni."
+
+#: ../libempathy-gtk/empathy-contact-widget.c:688
+msgid "Select"
+msgstr "Valitse"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:698
+#: ../libempathy-gtk/empathy-main-window.c:609
+msgid "Group"
+msgstr "Ryhmä"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:1
+msgid "<b>Client Information</b>"
+msgstr "<b>Tietoja asiakasohjelmasta</b>"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:2
+msgid "<b>Contact Details</b>"
+msgstr "<b>Tuttavan yksityiskohdat</b>"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:3
+msgid "<b>Contact</b>"
+msgstr "<b>Tuttava</b>"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:4
+msgid "<b>Groups</b>"
+msgstr "<b>Ryhmät</b>"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:6
+msgid "Alias:"
+msgstr "Nimimerkki:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:7
+msgid "Birthday:"
+msgstr "Syntymäpäivä:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:8
+msgid "Client:"
+msgstr "Asiakasohjelma:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:9
+msgid "Contact information"
+msgstr "Yhteystiedot"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:10
+msgid "Email:"
+msgstr "Sähköposti:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:11
+msgid "Fullname:"
+msgstr "Koko nimi:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:12
+msgid "Identifier:"
+msgstr "Tunniste:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:13
+msgid "Information requested..."
+msgstr "Pyydetään tietoja..."
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:14
+msgid "OS:"
+msgstr "Käyttöjärjestelmä:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:15
+msgid ""
+"Select the groups you want this contact to appear in, you can select more "
+"than one group or no groups."
+msgstr ""
+"Valitse ryhmät, joissa haluat tämän yhteystiedon näkyvän. Voit valita useita "
+"ryhmiä tai olla valitsematta yhtään ryhmää."
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:16
+msgid "Version:"
+msgstr "Versio:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:17
+msgid "Web site:"
+msgstr "WWW-sivusto:"
+
+#: ../libempathy-gtk/empathy-group-chat.c:251
+msgid "Enter the new topic you want to set for this room:"
+msgstr "Anna tälle ryhmälle asetettava uusi aihe:"
+
+#: ../libempathy-gtk/empathy-group-chat.c:361
+#, c-format
+msgid "%s has joined the room"
+msgstr "%s on saapunut huoneeseen"
+
+#: ../libempathy-gtk/empathy-group-chat.c:364
+#, c-format
+msgid "%s has left the room"
+msgstr "%s on poistunut huoneesta"
+
+#: ../libempathy-gtk/empathy-group-chat.c:445
+#, c-format
+msgid "Topic: %s"
+msgstr "Aihe: %s"
+
+#: ../libempathy-gtk/empathy-group-chat.c:574
+#, c-format
+msgid "Topic set to: %s"
+msgstr "Aihe asetettu: %s"
+
+#: ../libempathy-gtk/empathy-group-chat.c:576
+msgid "No topic defined"
+msgstr "Aihetta ei ole annettu"
+
+#: ../libempathy-gtk/empathy-group-chat.glade.h:1
+msgid "<b>Topic:</b>"
+msgstr "<b>Aihe:</b>"
+
+#: ../libempathy-gtk/empathy-group-chat.glade.h:2
+msgid "Group Chat"
+msgstr "Ryhmäkeskustelu"
+
+#: ../libempathy-gtk/empathy-irc-network-dialog.c:287
+msgid "new server"
+msgstr "uusi palvelin"
+
+#: ../libempathy-gtk/empathy-irc-network-dialog.c:512
+msgid "Server"
+msgstr "Palvelin:"
+
+#: ../libempathy-gtk/empathy-irc-network-dialog.c:527
+msgid "Port"
+msgstr "Portti:"
+
+#: ../libempathy-gtk/empathy-irc-network-dialog.c:540
+msgid "SSL"
+msgstr "SSL"
+
+#: ../libempathy-gtk/empathy-log-window.c:499
+msgid "Account"
+msgstr "Käyttäjätili"
+
+#: ../libempathy-gtk/empathy-log-window.c:506
+msgid "Conversation"
+msgstr "Keskustelu"
+
+#: ../libempathy-gtk/empathy-log-window.c:516
+msgid "Date"
+msgstr "Päivämäärä"
+
+#: ../libempathy-gtk/empathy-log-window.glade.h:1
+msgid "Conversations"
+msgstr "Keskustelut"
+
+#: ../libempathy-gtk/empathy-log-window.glade.h:2
+msgid "Previous Conversations"
+msgstr "Aikaisemmat keskustelut"
+
+#: ../libempathy-gtk/empathy-log-window.glade.h:3
+msgid "Search"
+msgstr "Etsi"
+
+#: ../libempathy-gtk/empathy-log-window.glade.h:4
+msgid "_For:"
+msgstr "_Ajalta:"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.c:286
+msgid "Chat Rooms"
+msgstr "Keskusteluhuoneet"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:2
+msgid "Browse:"
+msgstr "Selaa:"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:3
+msgid ""
+"Enter the room name to join here or click on one or more rooms in the list."
+msgstr ""
+"Anna liityttävän huoneen nimi tai napsauta yhtä tai useampaa huonetta "
+"luettelosta."
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:4
+msgid ""
+"Enter the server which hosts the room, or leave it empty if the room is on "
+"the current account's server"
+msgstr ""
+"Anna palvelin, jolta huone löytyy, tai jätä tyhjäksi jos huone on tilin "
+"nykyisellä palvelimella"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:5
+msgid "Join"
+msgstr "Liity"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:6
+msgid "Join New"
+msgstr "Liity uuteen"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:7
+msgid "Re_fresh"
+msgstr "_Päivitä"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:8
+msgid ""
+"This list represents all chat rooms hosted on the server you have entered."
+msgstr ""
+"Tässä luettelossa ovat kaikki huoneet palvelimelta, johon olet kirjautunut"
+
+#: ../libempathy-gtk/empathy-main-window.c:266
+msgid "Show and edit accounts"
+msgstr "Näytä ja muokkaa tilejä"
+
+#: ../libempathy-gtk/empathy-main-window.c:630
+msgid "Contact"
+msgstr "Tuttava"
+
+#: ../libempathy-gtk/empathy-main-window.c:813
+msgid "_Edit account"
+msgstr "Muokkaa _tiliä"
+
+#: ../libempathy-gtk/empathy-main-window.c:896
+msgid "Network error"
+msgstr "Verkkovirhe"
+
+#: ../libempathy-gtk/empathy-main-window.c:899
+msgid "Authentication failed"
+msgstr "Todennus epäonninstui"
+
+#: ../libempathy-gtk/empathy-main-window.c:902
+msgid "Encryption error"
+msgstr "Salausvirhe"
+
+#: ../libempathy-gtk/empathy-main-window.c:905
+msgid "Name in use"
+msgstr "Nimi on käytössä"
+
+#: ../libempathy-gtk/empathy-main-window.c:908
+msgid "Certificate not provided"
+msgstr "Varmennetta ei ole annettu"
+
+#: ../libempathy-gtk/empathy-main-window.c:911
+msgid "Certificate untrusted"
+msgstr "Varmenne ei ole luotettu"
+
+#: ../libempathy-gtk/empathy-main-window.c:914
+msgid "Certificate expired"
+msgstr "Varmenne on vanhentunut"
+
+#: ../libempathy-gtk/empathy-main-window.c:917
+msgid "Certificate not activated"
+msgstr "Varmenne ei ole vielä aktivoitu"
+
+#: ../libempathy-gtk/empathy-main-window.c:920
+msgid "Certificate hostname mismatch"
+msgstr "Varmenteen verkkonimi ei täsmää"
+
+#: ../libempathy-gtk/empathy-main-window.c:923
+msgid "Certificate fingerprint mismatch"
+msgstr "Varmenteen sormenjälki ei täsmää"
+
+#: ../libempathy-gtk/empathy-main-window.c:926
+msgid "Certificate self signed"
+msgstr "Itseallekirjoitettu varmenne"
+
+#: ../libempathy-gtk/empathy-main-window.c:929
+msgid "Certificate error"
+msgstr "Varmennevirhe"
+
+#: ../libempathy-gtk/empathy-main-window.c:932
+msgid "Unknown error"
+msgstr "Tuntematon virhe"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:1
+msgid "Contact List"
+msgstr "Tuttavaluettelo"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:2
+msgid "Context"
+msgstr "Yhteys"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:3
+msgid "Join _Favorites"
+msgstr "Liity _suosikkeihin"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:5
+msgid "Manage Favorites"
+msgstr "Hallitse suosikkeja"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:6
+msgid "Show _Offline Contacts"
+msgstr "Näytä _poissa linjoilta olevat tuttavat"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:7
+#: ../megaphone/data/GNOME_Megaphone_Applet.xml.h:1
+#: ../nothere/data/GNOME_NotHere_Applet.xml.h:1
+msgid "_About"
+msgstr "_Tietoja"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:8
+msgid "_Accounts"
+msgstr "_Käyttäjätilit"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:14
+#: ../libempathy-gtk/empathy-status-icon.glade.h:2
+msgid "_New Conversation..."
+msgstr "Uusi _keskustelu..."
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:15
+msgid "_Personal Information"
+msgstr "_Henkilötiedot"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:16
+#: ../megaphone/data/GNOME_Megaphone_Applet.xml.h:3
+msgid "_Preferences"
+msgstr "_Asetukset"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:17
+#: ../libempathy-gtk/empathy-status-icon.glade.h:3
+msgid "_Quit"
+msgstr "_Lopeta"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:2
+msgid "Call"
+msgstr "Soita"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:4
+msgid "Contact ID:"
+msgstr "Tuttavan tunniste:"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:5
+msgid "New Conversation"
+msgstr "Uusi keskustelu"
+
+#: ../libempathy-gtk/empathy-preferences.c:247
+msgid "Language"
+msgstr "Kieli"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:1
+msgid "<b>Appearance</b>"
+msgstr "<b>Ulkoasu</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:2
+msgid "<b>Audio</b>"
+msgstr "<b>Ääni</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:3
+msgid "<b>Behaviour</b>"
+msgstr "<b>Toiminta</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:4
+msgid "<b>Contact List</b>"
+msgstr "<b>Tuttavaluettelo</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:5
+msgid "<b>Enable spell checking for languages:</b>"
+msgstr "<b>Käytä kielentarkistusta kielille:</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:6
+msgid "<b>Options</b>"
+msgstr "<b>Valinnat</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:7
+msgid "<b>Visual</b>"
+msgstr "<b>Ulkoasu</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:8
+msgid ""
+"<small>The list of languages reflects only the languages for which you have "
+"a dictionary installed.</small>"
+msgstr ""
+"<small>Luettelo kielistä sisältää ainoastaan ne kielet, joille "
+"tietokoneessasi on asennettu sanakirja.</small>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:9
+msgid "Automatically _connect on startup "
+msgstr "Yhdistä _käynnistettäessä "
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:10
+msgid "Avatars are user chosen images shown in the contact list"
+msgstr "Avatarit ovat käyttäjän valitsemia kuvia tuttavaluettelossa"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:11
+msgid "Chat Th_eme:"
+msgstr "Keskustelun _teema:"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:12
+msgid "Display notifications when contacts come _online"
+msgstr "Näytä huomautuksia, kun tuttavat saapuvat _linjoille"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:13
+msgid "Enable sounds when _away"
+msgstr "Merkkiäänet poissa-tilassa"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:14
+msgid "Enable sounds when _busy"
+msgstr "Merkkiäänet varattu-tilassa"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:15
+msgid "General"
+msgstr "Yleinen"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:16
+msgid "Notifications"
+msgstr "Huomautukset"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:17
+msgid "Preferences"
+msgstr "Asetukset"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:18
+msgid "Show _avatars"
+msgstr "Näytä _avattaret"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:19
+msgid "Show _smileys as images"
+msgstr "Näytä _hymiöt hymiökuvakkeina"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:20
+msgid "Show co_mpact contact list"
+msgstr "Näytä _pieni tuttavaluettelo"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:21
+msgid "Sort by _name"
+msgstr "Järjestä _nimen mukaan"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:22
+msgid "Sort by s_tate"
+msgstr "Järjestä _tilan mukaan"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:23
+msgid "Spell Checking"
+msgstr "Kielentarkastus"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:24
+msgid "Themes"
+msgstr "Teemat"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:25
+msgid "_Open new chats in separate windows"
+msgstr "_Avaa uusi ikkuna uusille keskusteluille"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:26
+msgid "_Play sound when messages arrive"
+msgstr "_Merkkiääni viestin saapuessa"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:27
+msgid "_Use for chat rooms"
+msgstr "_Käytä keskusteluhuoneille"
+
+#. Custom messages
+#: ../libempathy-gtk/empathy-presence-chooser.c:691
+msgid "Custom messages..."
+msgstr "Itse määritellyt viestit..."
+
+#: ../libempathy-gtk/empathy-presence-chooser.glade.h:1
+msgid "Custom message"
+msgstr "Itse määriteltyviesti"
+
+#: ../libempathy-gtk/empathy-presence-chooser.glade.h:2
+msgid "Message:"
+msgstr "Viesti:"
+
+#: ../libempathy-gtk/empathy-presence-chooser.glade.h:3
+msgid "Save message"
+msgstr "Tallenna viesti"
+
+#: ../libempathy-gtk/empathy-presence-chooser.glade.h:4
+msgid "Status:"
+msgstr "Tila:"
+
+#: ../libempathy-gtk/empathy-private-chat.c:229
+#, c-format
+msgid "%s went offline"
+msgstr "%s poistui linjoilta"
+
+#: ../libempathy-gtk/empathy-private-chat.c:243
+#, c-format
+msgid "%s has come online"
+msgstr "%s on kirjautunut sisään"
+
+#: ../libempathy-gtk/empathy-spell-dialog.c:85
+msgid "Word"
+msgstr "Sana"
+
+#: ../libempathy-gtk/empathy-spell-dialog.c:258
+msgid "Suggestions for the word"
+msgstr "Korjausehdotukset"
+
+#: ../libempathy-gtk/empathy-spell-dialog.glade.h:1
+msgid "Spell Checker"
+msgstr "Kielentarkastus"
+
+#: ../libempathy-gtk/empathy-spell-dialog.glade.h:2
+msgid "Suggestions for the word:"
+msgstr "Korjausehdotuksia:"
+
+#: ../libempathy-gtk/empathy-status-icon.c:358
+#, c-format
+msgid ""
+"New message from %s:\n"
+"%s"
+msgstr ""
+"Uusi viesti käyttäjältä %s:\n"
+"%s"
+
+#: ../libempathy-gtk/empathy-status-icon.c:423
+#, c-format
+msgid ""
+"Incoming call from %s:\n"
+"%s"
+msgstr ""
+"Puhelu käyttäjältä %s:\n"
+"%s"
+
+#: ../libempathy-gtk/empathy-status-icon.c:727
+#, c-format
+msgid "Subscription requested by %s"
+msgstr "Liittymispyyntö käyttäjältä %s"
+
+#: ../libempathy-gtk/empathy-status-icon.c:730
+#, c-format
+msgid ""
+"\n"
+"Message: %s"
+msgstr ""
+"\n"
+"Viesti: %s"
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:1
+msgid "Status"
+msgstr "Tila"
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:4
+msgid "_Show Contact List"
+msgstr "_Näytä tuttavaluettelo"
+
+#: ../libempathy-gtk/empathy-theme-boxes.c:780
+#: ../libempathy-gtk/empathy-theme-irc.c:297
+msgid "%A %d %B %Y"
+msgstr "%A %d. %Bta %Y"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:78
+msgid "Classic"
+msgstr "Perinteinen"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:79
+msgid "Simple"
+msgstr "Yksinkertainen"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:80
+msgid "Clean"
+msgstr "Siisti"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:81
+msgid "Blue"
+msgstr "Sininen"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:158
+msgid "Current Locale"
+msgstr "Nykyinen maa-asetusto"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:161
+#: ../libempathy-gtk/totem-subtitle-encoding.c:163
+#: ../libempathy-gtk/totem-subtitle-encoding.c:165
+#: ../libempathy-gtk/totem-subtitle-encoding.c:167
+msgid "Arabic"
+msgstr "arabia"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:170
+msgid "Armenian"
+msgstr "armenia"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:173
+#: ../libempathy-gtk/totem-subtitle-encoding.c:175
+#: ../libempathy-gtk/totem-subtitle-encoding.c:177
+msgid "Baltic"
+msgstr "baltti"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:180
+msgid "Celtic"
+msgstr "keltti"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:183
+#: ../libempathy-gtk/totem-subtitle-encoding.c:185
+#: ../libempathy-gtk/totem-subtitle-encoding.c:187
+#: ../libempathy-gtk/totem-subtitle-encoding.c:189
+msgid "Central European"
+msgstr "keskieurooppalainen"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:192
+#: ../libempathy-gtk/totem-subtitle-encoding.c:194
+#: ../libempathy-gtk/totem-subtitle-encoding.c:196
+#: ../libempathy-gtk/totem-subtitle-encoding.c:198
+msgid "Chinese Simplified"
+msgstr "kiina, yksinkertaistettu"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:201
+#: ../libempathy-gtk/totem-subtitle-encoding.c:203
+#: ../libempathy-gtk/totem-subtitle-encoding.c:205
+msgid "Chinese Traditional"
+msgstr "kiina, perinteinen"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:208
+msgid "Croatian"
+msgstr "kroatia"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:211
+#: ../libempathy-gtk/totem-subtitle-encoding.c:213
+#: ../libempathy-gtk/totem-subtitle-encoding.c:215
+#: ../libempathy-gtk/totem-subtitle-encoding.c:217
+#: ../libempathy-gtk/totem-subtitle-encoding.c:219
+#: ../libempathy-gtk/totem-subtitle-encoding.c:221
+msgid "Cyrillic"
+msgstr "kyrillinen"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:224
+msgid "Cyrillic/Russian"
+msgstr "kyrillinen, Venäjä"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:227
+#: ../libempathy-gtk/totem-subtitle-encoding.c:229
+msgid "Cyrillic/Ukrainian"
+msgstr "kyrillinen, Ukraina"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:232
+msgid "Georgian"
+msgstr "georgia"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:235
+#: ../libempathy-gtk/totem-subtitle-encoding.c:237
+#: ../libempathy-gtk/totem-subtitle-encoding.c:239
+msgid "Greek"
+msgstr "kreikka"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:242
+msgid "Gujarati"
+msgstr "gujarati"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:245
+msgid "Gurmukhi"
+msgstr "gurmukhi"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:248
+#: ../libempathy-gtk/totem-subtitle-encoding.c:250
+#: ../libempathy-gtk/totem-subtitle-encoding.c:252
+#: ../libempathy-gtk/totem-subtitle-encoding.c:254
+msgid "Hebrew"
+msgstr "heprea"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:257
+msgid "Hebrew Visual"
+msgstr "heprea, visuaalinen"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:260
+msgid "Hindi"
+msgstr "hindi"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:263
+msgid "Icelandic"
+msgstr "islanti"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:266
+#: ../libempathy-gtk/totem-subtitle-encoding.c:268
+#: ../libempathy-gtk/totem-subtitle-encoding.c:270
+msgid "Japanese"
+msgstr "japani"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:273
+#: ../libempathy-gtk/totem-subtitle-encoding.c:275
+#: ../libempathy-gtk/totem-subtitle-encoding.c:277
+#: ../libempathy-gtk/totem-subtitle-encoding.c:279
+msgid "Korean"
+msgstr "korea"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:282
+msgid "Nordic"
+msgstr "pohjoismainen"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:285
+msgid "Persian"
+msgstr "farsi"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:288
+#: ../libempathy-gtk/totem-subtitle-encoding.c:290
+msgid "Romanian"
+msgstr "romania"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:293
+msgid "South European"
+msgstr "etelä-eurooppa"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:296
+msgid "Thai"
+msgstr "thai"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:299
+#: ../libempathy-gtk/totem-subtitle-encoding.c:301
+#: ../libempathy-gtk/totem-subtitle-encoding.c:303
+#: ../libempathy-gtk/totem-subtitle-encoding.c:305
+msgid "Turkish"
+msgstr "turkki"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:308
+#: ../libempathy-gtk/totem-subtitle-encoding.c:310
+#: ../libempathy-gtk/totem-subtitle-encoding.c:312
+#: ../libempathy-gtk/totem-subtitle-encoding.c:314
+#: ../libempathy-gtk/totem-subtitle-encoding.c:316
+msgid "Unicode"
+msgstr "unicode"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:319
+#: ../libempathy-gtk/totem-subtitle-encoding.c:321
+#: ../libempathy-gtk/totem-subtitle-encoding.c:323
+#: ../libempathy-gtk/totem-subtitle-encoding.c:325
+#: ../libempathy-gtk/totem-subtitle-encoding.c:327
+msgid "Western"
+msgstr "länsimaalainen"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:330
+#: ../libempathy-gtk/totem-subtitle-encoding.c:332
+#: ../libempathy-gtk/totem-subtitle-encoding.c:334
+msgid "Vietnamese"
+msgstr "vietnam"
+
+#.
+#. * vim: sw=2 ts=8 cindent noai bs=2
+#.
+#: ../megaphone/data/GNOME_Megaphone_Applet.schemas.in.h:1
+msgid ""
+"The contact to display in the applet. Empty means no contact is displayed."
+msgstr ""
+"Sovelmassa näytettävä tuttava. Tyhjä tarkoittaa, ettei tuttavaa näytetä."
+
+#: ../megaphone/data/GNOME_Megaphone_Applet.schemas.in.h:2
+msgid "The contact's avatar token. Empty means contact has no avatar."
+msgstr ""
+"Tuttavan avatar-tunniste. Tyhjä tarkoittaa, ettei käyttäjällä ole avatarta."
+
+#: ../megaphone/data/GNOME_Megaphone_Applet.server.in.in.h:1
+msgid "Megaphone"
+msgstr "Megafoni"
+
+#: ../megaphone/data/GNOME_Megaphone_Applet.server.in.in.h:2
+#: ../megaphone/src/megaphone-applet.c:419
+msgid "Talk!"
+msgstr "Puhu!"
+
+#: ../megaphone/data/GNOME_Megaphone_Applet.xml.h:2
+msgid "_Information"
+msgstr "_Tietoja"
+
+#: ../nothere/data/GNOME_NotHere_Applet.server.in.in.h:1
+msgid "Presence"
+msgstr "Läsnäolo"
+
+#: ../nothere/data/GNOME_NotHere_Applet.server.in.in.h:2
+#: ../nothere/src/nothere-applet.c:89
+msgid "Set your own presence"
+msgstr "Aseta läsnäolosi tila"
+
+#: ../src/empathy.c:291
+msgid "- Empathy Instant Messenger"
+msgstr "- Empathy-pikaviestiohjelma"
+
+#~ msgid "Call from %s"
+#~ msgstr "Puhelu (%s)"
+
+#~ msgid "Disable"
+#~ msgstr "Poista käytöstä"
+
+#~ msgid "_New Message..."
+#~ msgstr "_Uusi viesti..."
+
+#~ msgid "New Message"
+#~ msgid_plural "New Messages"
+#~ msgstr[0] "Uusi viesti"
+#~ msgstr[1] "Uusia viestejä"
+
+#~ msgid "Chat Room"
+#~ msgstr "Keskusteluhuone"
+
+#~ msgid ""
+#~ "Subscription requested for %s\n"
+#~ "Message: %s"
+#~ msgstr ""
+#~ "Käyttäjä %s pyytää yhteyttä\n"
+#~ "Viesti: %s"
diff --git a/gnome-2-22/po/fr.po b/gnome-2-22/po/fr.po
new file mode 100644
index 000000000..0670d5c56
--- /dev/null
+++ b/gnome-2-22/po/fr.po
@@ -0,0 +1,1794 @@
+# French translation of empathy.
+# Copyright (C) 2003-2008 The Free Software Foundation, Inc.
+# This file is distributed under the same license as the empathy package.
+#
+# Frédéric Brin <duckx@mezimail.com>, 2003.
+# Lionel Henry <yoplait@tuxfamily.org>, 2003.
+# Laurent Richard <laurent.richard@lilit.be>, 2004.
+# Christophe Merlet <redfox@redfoxcenter.org>, 2004.
+# Audrey Simons <asimons@redhat.com>, 2004.
+# Quentin Delance <quentin.delance@laposte.net>, 2006.
+# Claude Paroz <claude@2xlibre.net>, 2007.
+# Jonathan Ernst <jonathan@ernstfamily.ch>, 2007.
+# Damien Durand <splinux@fedoraproject.org>, 2007.
+# Robert-André Mauchin <zebob.m@pengzone.org>, 2007-2008.
+# Frederic Peters <fpeters@0d.be>, 2007.
+# Laurent Bigonville <bigon@bigon.be>, 2007.
+# Stéphane Raimbault <stephane.raimbault@gmail.com>, 2007.
+# Christophe Benz <christophe.benz@gmail.com>, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: empathy 0.11\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-05 21:33+0100\n"
+"PO-Revision-Date: 2008-03-05 21:35+0100\n"
+"Last-Translator: Robert-André Mauchin <zebob.m@pengzone.org>\n"
+"Language-Team: GNOME French Team <gnomefr@traduc.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+
+#: ../data/empathy.desktop.in.in.h:1
+msgid "Empathy Instant Messenger"
+msgstr "Messagerie instantanée Empathy"
+
+# Utilisation de l'infinitif sur les infobulles du Bureau
+#: ../data/empathy.desktop.in.in.h:2
+msgid "Send and receive instant messages"
+msgstr "Envoyer et recevoir des messages instantanés"
+
+#: ../data/empathy.schemas.in.h:1
+msgid "Always open a separate chat window for new chats."
+msgstr ""
+"Toujours ouvrir une fenêtre de discussion séparée pour les nouvelles "
+"discussions."
+
+#: ../data/empathy.schemas.in.h:2
+msgid ""
+"Character to add after nickname when using nick completion (tab) in group "
+"chat."
+msgstr ""
+"Caractère à ajouter à la suite du pseudonyme lors de l'utilisation de l'auto-"
+"complètement du pseudonyme (tab) dans un groupe de discussion."
+
+#: ../data/empathy.schemas.in.h:3
+msgid "Chat window theme"
+msgstr "Thème de la fenêtre de discussion"
+
+#: ../data/empathy.schemas.in.h:4
+msgid "Checks if Empathy should autoconnect on startup"
+msgstr "Cochez si Empathy doit se connecter au démarrage"
+
+#: ../data/empathy.schemas.in.h:5
+msgid "Checks if NetworkManager should be used"
+msgstr "Cochez si NetworkManager devrait être utilisé"
+
+#: ../data/empathy.schemas.in.h:6
+msgid "Checks if Salut account is created"
+msgstr "Cochez si le compte Salut est créé"
+
+#: ../data/empathy.schemas.in.h:7
+msgid ""
+"Comma separated list of spell checker languages to use (e.g. en, fr, nl)."
+msgstr ""
+"Liste séparée par des virgules des langues à utiliser pour la correction "
+"orthographique (par ex. : en, fr, nl)."
+
+#: ../data/empathy.schemas.in.h:8
+msgid "Compact contact list"
+msgstr "Liste compacte de contacts"
+
+#: ../data/empathy.schemas.in.h:9
+msgid "Contact list sort criterium"
+msgstr "Critère de tri pour la liste de contacts"
+
+#: ../data/empathy.schemas.in.h:10
+msgid "Default directory to select an avatar image from"
+msgstr "Répertoire par défaut où choisir un avatar"
+
+#: ../data/empathy.schemas.in.h:11
+msgid "Enable popup when contact is available"
+msgstr "Afficher une fenêtre popup quand le contact est disponible"
+
+#: ../data/empathy.schemas.in.h:12
+msgid "Enable sound when away"
+msgstr "Activer les sons lorsque vous êtes absent"
+
+#: ../data/empathy.schemas.in.h:13
+msgid "Enable sound when busy"
+msgstr "Activer les sons lorsque vous êtes indisponible"
+
+#: ../data/empathy.schemas.in.h:14
+msgid "Enable spell checker"
+msgstr "Activer le correcteur orthographique"
+
+#: ../data/empathy.schemas.in.h:15
+msgid "Hide main window"
+msgstr "Masquer la fenêtre principale"
+
+#: ../data/empathy.schemas.in.h:16
+msgid "Hide the main window."
+msgstr "Masque la fenêtre principale."
+
+#: ../data/empathy.schemas.in.h:17
+msgid "Nick completed character"
+msgstr "Caractère d'auto-complètement du pseudonyme"
+
+#: ../data/empathy.schemas.in.h:18
+msgid "Open new chats in separate windows"
+msgstr "Ouvrir les nouvelles discussions dans des fenêtres séparées"
+
+#: ../data/empathy.schemas.in.h:19
+msgid "Show avatars"
+msgstr "Afficher les avatars"
+
+#: ../data/empathy.schemas.in.h:20
+msgid "Show hint about closing the main window"
+msgstr "Afficher une astuce sur la fermeture de la fenêtre principale"
+
+#: ../data/empathy.schemas.in.h:21
+msgid "Show offline contacts"
+msgstr "Afficher les contacts déconnectés"
+
+#: ../data/empathy.schemas.in.h:22
+msgid "Spell checking languages"
+msgstr "Langues de la correction orthographique"
+
+#: ../data/empathy.schemas.in.h:23
+msgid "The last directory that an avatar image was chosen from."
+msgstr "Dernier répertoire où un avatar a été choisi."
+
+#: ../data/empathy.schemas.in.h:24
+msgid "The theme that is used to display the conversation in chat windows."
+msgstr "Le thème utilisé pour l'affichage dans les fenêtres de discussion."
+
+#: ../data/empathy.schemas.in.h:25
+msgid "Use graphical smileys"
+msgstr "Utiliser des frimousses graphiques"
+
+#: ../data/empathy.schemas.in.h:26
+msgid "Use notification sounds"
+msgstr "Utiliser des sons de notification"
+
+#: ../data/empathy.schemas.in.h:27
+msgid "Use theme for chat rooms"
+msgstr "Utiliser des thèmes pour les salles de discussion"
+
+#: ../data/empathy.schemas.in.h:28
+msgid ""
+"Whether or not Empathy should automatically login to your accounts on "
+"startup."
+msgstr ""
+"Indique si Empathy doit se connecter automatiquement à vos comptes au "
+"démarrage."
+
+#: ../data/empathy.schemas.in.h:29
+msgid ""
+"Whether or not the Salut account has been created on the first empathy run."
+msgstr ""
+"Indique si le compte Salut à bien été créé au premier lancement d'Empathy."
+
+#: ../data/empathy.schemas.in.h:30
+msgid ""
+"Whether or not the network manager should be used to automatically "
+"disconnect/reconnect."
+msgstr ""
+"Indique si NetworkManager doit être utilisé pour se déconnecter ou se "
+"reconnecter automatiquement."
+
+#: ../data/empathy.schemas.in.h:31
+msgid ""
+"Whether or not to check words typed against the languages you want to check "
+"with."
+msgstr ""
+"Indique s'il faut vérifier l'orthographe des mots saisis selon les langues "
+"choisies."
+
+#: ../data/empathy.schemas.in.h:32
+msgid ""
+"Whether or not to convert smileys into graphical images in conversations."
+msgstr ""
+"Indique s'il faut changer les frimousses en images graphiques dans les "
+"conversations."
+
+#: ../data/empathy.schemas.in.h:33
+msgid "Whether or not to play a sound when messages arrive."
+msgstr "Indique s'il faut jouer un son quand un message arrive."
+
+#: ../data/empathy.schemas.in.h:34
+msgid "Whether or not to play sounds when away."
+msgstr "Indique s'il faut émettre des sons en cas d'absence."
+
+#: ../data/empathy.schemas.in.h:35
+msgid "Whether or not to play sounds when busy."
+msgstr "Indique s'il faut émettre des sons en cas d'indisponibilité."
+
+#: ../data/empathy.schemas.in.h:36
+msgid "Whether or not to show a popup when a contact becomes available."
+msgstr ""
+"Indique s'il faut afficher une fenêtre popup lorsqu'un contact devient "
+"disponible."
+
+#: ../data/empathy.schemas.in.h:37
+msgid ""
+"Whether or not to show avatars for contacts in the contact list and chat "
+"windows."
+msgstr ""
+"Indique s'il faut afficher les avatars des contacts dans la liste des "
+"contacts et les fenêtres de discussion."
+
+#: ../data/empathy.schemas.in.h:38
+msgid "Whether or not to show contacts that are offline in the contact list."
+msgstr ""
+"Indique s'il faut afficher les contacts qui sont déconnectés dans la liste "
+"des contacts."
+
+#: ../data/empathy.schemas.in.h:39
+msgid ""
+"Whether or not to show the message dialog about closing the main window with "
+"the 'x' button in the title bar."
+msgstr ""
+"Indique s'il faut afficher la boîte de dialogue au sujet de la fermeture de "
+"la fenêtre principale avec le bouton « x » dans la barre de titre."
+
+#: ../data/empathy.schemas.in.h:40
+msgid "Whether to show the contact list in compact mode or not."
+msgstr "Indique s'il faut afficher la liste des contacts en mode compact."
+
+#: ../data/empathy.schemas.in.h:41
+msgid "Whether to use the theme for chat rooms or not."
+msgstr "Indique s'il faut utiliser les thèmes pour les salles de discussion."
+
+#: ../data/empathy.schemas.in.h:42
+msgid ""
+"Which criterium to use when sorting the contact list. Default is to use sort "
+"by the contact's name with the value \"name\". A value of \"state\" will "
+"sort the contact list by state."
+msgstr ""
+"Quel critère utiliser pour le tri de la liste des contacts. Le comportement "
+"par défaut est de trier selon le nom du contact (valeur: « name »). Une "
+"valeur « state » triera la liste des contacts selon leur état."
+
+#: ../libempathy/empathy-tp-contact-list.c:724 ../src/empathy.c:149
+msgid "People nearby"
+msgstr "Personnes à proximité"
+
+#: ../libempathy/empathy-utils.c:541
+msgid "Available"
+msgstr "Disponible"
+
+#: ../libempathy/empathy-utils.c:543
+msgid "Busy"
+msgstr "Occupé"
+
+#: ../libempathy/empathy-utils.c:546
+msgid "Away"
+msgstr "Absent"
+
+#: ../libempathy/empathy-utils.c:548
+msgid "Hidden"
+msgstr "Masqué"
+
+#: ../libempathy/empathy-utils.c:551
+msgid "Offline"
+msgstr "Déconnecté"
+
+#: ../libempathy-gtk/empathy-about-dialog.c:63
+msgid ""
+"Empathy is free software; you can redistribute it and/or modify it under the "
+"terms of the GNU General Public License as published by the Free Software "
+"Foundation; either version 2 of the License, or (at your option) any later "
+"version."
+msgstr ""
+"Empathy est un logiciel libre ; vous pouvez le redistribuer et/ou le "
+"modifier selon les termes de la Licence Publique Générale GNU, telle que "
+"publiée par la Free Software Foundation ; version 2 de la licence ou (à "
+"votre discrétion) toute version ultérieure."
+
+#: ../libempathy-gtk/empathy-about-dialog.c:67
+msgid ""
+"Empathy is distributed in the hope that it will be useful, but WITHOUT ANY "
+"WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS "
+"FOR A PARTICULAR PURPOSE. See the GNU General Public License for more "
+"details."
+msgstr ""
+"Empathy est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE "
+"GARANTIE ; sans même la garantie implicite de VALEUR MARCHANDE ou "
+"D'ADÉQUATION À UN BESOIN PARTICULIER. Pour plus de détails, voir la Licence "
+"Publique Générale GNU."
+
+#: ../libempathy-gtk/empathy-about-dialog.c:71
+msgid ""
+"You should have received a copy of the GNU General Public License along with "
+"Empathy; if not, write to the Free Software Foundation, Inc., 51 Franklin "
+"Street, Fifth Floor, Boston, MA 02110-130159 USA"
+msgstr ""
+"Un exemplaire de la Licence Publique Générale GNU doit être fourni avec "
+"Empathy ; si ce n'est pas le cas, écrivez à la Free Software Foundation, "
+"Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-130159 USA"
+
+#: ../libempathy-gtk/empathy-about-dialog.c:99
+msgid "An Instant Messaging client for GNOME"
+msgstr "Un client de messagerie instantanée pour GNOME"
+
+#: ../libempathy-gtk/empathy-about-dialog.c:105
+msgid "translator-credits"
+msgstr ""
+"Frédéric Brin <duckx@mezimail.com>\n"
+"Lionel Henry <yoplait@tuxfamily.org>\n"
+"Laurent Richard <laurent.richard@lilit.be>\n"
+"Christophe Merlet <redfox@redfoxcenter.org>\n"
+"Audrey Simons <asimons@redhat.com>\n"
+"Quentin Delance <quentin.delance@laposte.net>\n"
+"Claude Paroz <claude@2xlibre.net>\n"
+"Jonathan Ernst <jonathan@ernstfamily.ch>\n"
+"Damien Durand <splinux@fedoraproject.org>\n"
+"Robert-André Mauchin <zebob.m@pengzone.org>\n"
+"Frederic Peters <fpeters@0d.be>\n"
+"Laurent Bigonville <bigon@bigon.be>\n"
+"Stéphane Raimbault <stephane.raimbault@gmail.com>\n"
+"Christophe Benz <christophe.benz@gmail.com>"
+
+#: ../libempathy-gtk/empathy-account-chooser.c:337
+msgid "All"
+msgstr "Toutes"
+
+#: ../libempathy-gtk/empathy-account-widget.c:276
+#: ../libempathy-gtk/empathy-account-widget.c:321
+#, c-format
+msgid "%s:"
+msgstr "%s :"
+
+#: ../libempathy-gtk/empathy-account-widget-icq.glade.h:1
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:1
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:1
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:1
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:1
+msgid "<b>Advanced</b>"
+msgstr "<b>Avancés</b>"
+
+#: ../libempathy-gtk/empathy-account-widget-icq.glade.h:2
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:3
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:2
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:2
+msgid "Forget password and clear the entry."
+msgstr "Oublier le mot de passe et effacer la zone."
+
+#: ../libempathy-gtk/empathy-account-widget-icq.glade.h:3
+msgid "ICQ _UIN:"
+msgstr "_UIN ICQ :"
+
+#: ../libempathy-gtk/empathy-account-widget-icq.glade.h:4
+msgid "ICQ account settings"
+msgstr "Paramètres de compte ICQ"
+
+#: ../libempathy-gtk/empathy-account-widget-icq.glade.h:5
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:5
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:4
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:5
+msgid "Pass_word:"
+msgstr "Mot de _passe :"
+
+#: ../libempathy-gtk/empathy-account-widget-icq.glade.h:6
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:8
+msgid "_Charset:"
+msgstr "Jeu de _caractères :"
+
+#: ../libempathy-gtk/empathy-account-widget-icq.glade.h:7
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:11
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:5
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:10
+msgid "_Port:"
+msgstr "_Port :"
+
+#: ../libempathy-gtk/empathy-account-widget-icq.glade.h:8
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:12
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:6
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:12
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:10
+msgid "_Server:"
+msgstr "_Serveur :"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.c:246
+msgid "New Network"
+msgstr "Nouveau réseau"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:1
+msgid "<b>Network</b>"
+msgstr "<b>Réseau</b>"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:2
+msgid "<b>Servers</b>"
+msgstr "<b>Serveurs</b>"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:3
+msgid "Charset:"
+msgstr "Jeu de caractères :"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:4
+msgid "Create a new IRC network"
+msgstr "Crée un nouveau réseau IRC"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:5
+msgid "Edit the selected IRC network"
+msgstr "Modifie le réseau IRC sélectionné"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:6
+msgid "Network"
+msgstr "Réseau"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:7
+msgid "Network:"
+msgstr "Réseau :"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:8
+msgid "Nickname:"
+msgstr "Pseudonyme :"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:9
+msgid "Password:"
+msgstr "Mot de passe :"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:10
+msgid "Quit message:"
+msgstr "Message de départ :"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:11
+msgid "Real name:"
+msgstr "Nom réel :"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:12
+msgid "Remove the selected IRC network"
+msgstr "Supprime le réseau IRC sélectionné"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:13
+msgid "irc account settings"
+msgstr "paramètres de compte irc"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:2
+msgid "<b>Override server settings</b>"
+msgstr "<b>Outrepasser les paramètres du serveur</b>"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:4
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:3
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:4
+msgid "Login I_D:"
+msgstr "I_dentifiant de connexion :"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:6
+msgid "Pri_ority:"
+msgstr "Pri_orité :"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:7
+msgid "Reso_urce:"
+msgstr "Resso_urce :"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:8
+msgid "Use old SS_L"
+msgstr "Utiliser l'ancien SS_L"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:9
+msgid "_Encryption required (TLS/SSL)"
+msgstr "Chiffr_ement requis (TLS/SSL)"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:10
+msgid "_Ignore SSL certificate errors"
+msgstr "_Ignorer les erreurs de certificat SSL"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:13
+msgid "jabber account settings"
+msgstr "paramètres de compte jabber"
+
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:7
+msgid "msn account settings"
+msgstr "paramètres de compte msn"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:2
+msgid "_E-mail:"
+msgstr "_Adresse électronique :"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:3
+msgid "_First Name: "
+msgstr "_Prénom :"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:4
+msgid "_Jabber ID:"
+msgstr "_Identifiant Jabber :"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:5
+msgid "_Last Name:"
+msgstr "_Nom :"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:6
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:8
+msgid "_Nickname:"
+msgstr "_Pseudonyme :"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:7
+msgid "_Published Name:"
+msgstr "Nom _publié :"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:8
+msgid "salut account settings"
+msgstr "paramètres de compte salut"
+
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:3
+msgid "J_apan server:"
+msgstr "Serveur j_aponais :"
+
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:6
+msgid "Use _Yahoo Japan"
+msgstr "Utiliser _Yahoo Japan"
+
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:7
+msgid "Yahoo! account settings"
+msgstr "Paramètres de compte Yahoo!"
+
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:9
+msgid "_Ignore conference and chatroom invitations"
+msgstr "_Ignorer les invitations à des réunions ou à des salles de discussion"
+
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:11
+msgid "_Room List locale:"
+msgstr "Locale de la liste des _salles :"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:225
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to start configuring."
+msgstr ""
+"Pour ajouter un nouveau compte, vous pouvez cliquer sur le bouton "
+"« Ajouter » et vous pourrez alors configurer cette nouvelle entrée."
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:229
+msgid ""
+"To add a new account, you first have to install a backend for each protocol "
+"you want to use."
+msgstr ""
+"Pour ajouter un nouveau compte, vous devez d'abord installer le moteur "
+"correspondant à chaque protocole que vous voulez utiliser."
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:236
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:2
+msgid "<b>No Account Selected</b>"
+msgstr "<b>Aucun compte sélectionné</b>"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:237
+msgid ""
+"\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want "
+"to configure in the list on the left."
+msgstr ""
+"\n"
+"\n"
+"Si vous ne souhaitez pas créer de compte, cliquez simplement dans la liste "
+"de gauche sur le compte que vous voulez configurer."
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:243
+msgid "<b>No Accounts Configured</b>"
+msgstr "<b>Aucun compte configuré</b>"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:411
+msgid "Enabled"
+msgstr "Activé"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:421
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:4
+msgid "Accounts"
+msgstr "Comptes"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:904
+#, c-format
+msgid ""
+"You are about to remove your %s account!\n"
+"Are you sure you want to proceed?"
+msgstr ""
+"Vous êtes sur le point de supprimer votre compte %s !\n"
+"Voulez-vous vraiment continuer ?"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:910
+msgid ""
+"Any associated conversations and chat rooms will NOT be removed if you "
+"decide to proceed.\n"
+"\n"
+"Should you decide to add the account back at a later time, they will still "
+"be available."
+msgstr ""
+"Toutes les salles de conversation et de discussion associées ne seront PAS "
+"supprimées si vous décidez de continuez.\n"
+"\n"
+"Si vous décidez de recréer ce compte plus tard, elles seront toujours "
+"disponibles."
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:1
+msgid "<b>New Account</b>"
+msgstr "<b>Nouveau compte</b>"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:3
+msgid "<b>Settings</b>"
+msgstr "<b>Paramètres</b>"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:5
+msgid "Cr_eate"
+msgstr "C_réer"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:6
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to started configuring.\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want "
+"to configure in the list on the left."
+msgstr ""
+"Pour ajouter un nouveau compte, vous pouvez cliquer sur le bouton "
+"« Ajouter » et vous pourrez alors configurer cette nouvelle entrée.\n"
+"\n"
+"Si vous ne souhaitez pas créer de compte, cliquez simplement dans la liste "
+"de gauche sur le compte que vous voulez configurer."
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:9
+msgid "Type:"
+msgstr "Type :"
+
+#: ../libempathy-gtk/empathy-avatar-chooser.c:449
+msgid "Select Your Avatar Image"
+msgstr "Sélection de l'image d'avatar"
+
+#: ../libempathy-gtk/empathy-avatar-chooser.c:452
+msgid "No Image"
+msgstr "Aucune image"
+
+#: ../libempathy-gtk/empathy-avatar-chooser.c:512
+msgid "Images"
+msgstr "Images"
+
+#: ../libempathy-gtk/empathy-avatar-chooser.c:516
+msgid "All Files"
+msgstr "Tous les fichiers"
+
+#: ../libempathy-gtk/empathy-avatar-image.c:298
+msgid "Click to enlarge"
+msgstr "Cliquer pour agrandir"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:1
+msgid "End Call"
+msgstr "Fin d'appel"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:2
+msgid "Input"
+msgstr "Entrée"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:3
+msgid "Mute"
+msgstr "Sourdine"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:4
+msgid "Output"
+msgstr "Sortie"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:5
+msgid "Send Video"
+msgstr "Envoyer la vidéo"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:6
+msgid "Start Call"
+msgstr "Début d'appel"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:7
+msgid "Volume"
+msgstr "Volume"
+
+#: ../libempathy-gtk/empathy-chat.c:445
+msgid "Disconnected"
+msgstr "Déconnecté"
+
+#: ../libempathy-gtk/empathy-chat.c:580
+msgid "offline"
+msgstr "déconnecté"
+
+#: ../libempathy-gtk/empathy-chat.c:583
+msgid "invalid contact"
+msgstr "contact non valide"
+
+#: ../libempathy-gtk/empathy-chat.c:586
+msgid "permission denied"
+msgstr "permission refusée"
+
+#: ../libempathy-gtk/empathy-chat.c:589
+msgid "too long message"
+msgstr "message trop long"
+
+#: ../libempathy-gtk/empathy-chat.c:592
+msgid "not implemented"
+msgstr "non implémenté"
+
+#: ../libempathy-gtk/empathy-chat.c:595
+msgid "unknown"
+msgstr "inconnu"
+
+#: ../libempathy-gtk/empathy-chat.c:599
+#, c-format
+msgid "Error sending message '%s': %s"
+msgstr "Erreur à l'envoi du message « %s » : %s"
+
+#: ../libempathy-gtk/empathy-chat.c:1056
+msgid "Insert Smiley"
+msgstr "Insérer une frimousse"
+
+#: ../libempathy-gtk/empathy-chat.c:1103
+msgid "_Check Word Spelling..."
+msgstr "_Vérifier l'orthographe..."
+
+#: ../libempathy-gtk/empathy-chat.c:1558
+msgid "Connected"
+msgstr "Connecté"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:1
+msgid "C_lear"
+msgstr "_Nettoyer"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:2
+msgid "Ca_ll"
+msgstr "Appe_ler"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:3
+msgid "Change _Topic..."
+msgstr "Modifier le _sujet..."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:4
+#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:3
+msgid "Chat"
+msgstr "Discuter"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:5
+msgid "Contact Infor_mation"
+msgstr "Infor_mations du contact"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:6
+msgid "Cu_t"
+msgstr "Co_uper"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:7
+msgid "In_vite..."
+msgstr "In_viter..."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:8
+msgid "Insert _Smiley"
+msgstr "Insérer une _frimousse"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:9
+msgid "Invitation _message:"
+msgstr "_Message d'invitation :"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:10
+msgid "Invite"
+msgstr "Inviter"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:11
+#: ../libempathy-gtk/empathy-main-window.glade.h:4
+msgid "Join _New..."
+msgstr "Rejoindre _nouveau"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:12
+msgid "Move Tab _Left"
+msgstr "Déplacer l'onglet à _gauche"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:13
+msgid "Move Tab _Right"
+msgstr "Déplacer l'onglet à _droite"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:14
+msgid "Select who would you like to invite:"
+msgstr "Sélectionnez la personne à inviter :"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:15
+msgid "You have been invited to join a chat conference."
+msgstr "Vous avez été invité(e) à joindre une salle de discussion"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:16
+#: ../libempathy-gtk/empathy-main-window.glade.h:9
+msgid "_Add Contact..."
+msgstr "A_jouter un contact..."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:17
+msgid "_Add To Favorites"
+msgstr "_Ajouter aux favoris..."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:18
+msgid "_Close"
+msgstr "_Fermer"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:19
+#: ../libempathy-gtk/empathy-main-window.glade.h:11
+msgid "_Contents"
+msgstr "_Sommaire"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:20
+msgid "_Conversation"
+msgstr "_Conversation"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:21
+msgid "_Copy"
+msgstr "_Copier"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:22
+msgid "_Detach Tab"
+msgstr "_Détacher l'onglet"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:23
+#: ../libempathy-gtk/empathy-contact-list-view.c:217
+#: ../libempathy-gtk/empathy-main-window.glade.h:12
+msgid "_Edit"
+msgstr "É_diter"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:24
+#: ../libempathy-gtk/empathy-main-window.glade.h:13
+msgid "_Help"
+msgstr "Aid_e"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:25
+msgid "_Next Tab"
+msgstr "Onglet _suivant"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:26
+msgid "_Paste"
+msgstr "C_oller"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:27
+msgid "_Previous Tab"
+msgstr "Onglet _précédent"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:28
+#: ../libempathy-gtk/empathy-main-window.glade.h:18
+msgid "_Room"
+msgstr "_Salle"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:29
+msgid "_Show Contacts"
+msgstr "Afficher les contacts"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:30
+msgid "_Tabs"
+msgstr "_Onglets"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:31
+#: ../libempathy-gtk/empathy-contact-list-view.c:233
+#: ../libempathy-gtk/empathy-main-window.glade.h:19
+msgid "_View Previous Conversations"
+msgstr "_Afficher les conversations précédentes"
+
+#: ../libempathy-gtk/empathy-chat-view.c:441
+msgid "_Copy Link Address"
+msgstr "_Copier l'adresse du lien"
+
+#: ../libempathy-gtk/empathy-chat-view.c:449
+msgid "_Open Link"
+msgstr "_Ouvrir le lien"
+
+#: ../libempathy-gtk/empathy-chat-window.c:699
+#, c-format
+msgid "Conversations (%d)"
+msgstr "Conversations (%d)"
+
+#: ../libempathy-gtk/empathy-chat-window.c:1299
+msgid "Typing a message."
+msgstr "Saisie d'un message."
+
+#: ../libempathy-gtk/empathy-chatrooms-window.c:258
+msgid "Name"
+msgstr "Nom"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.c:276
+msgid "Room"
+msgstr "Salle"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.c:285
+msgid "Auto Connect"
+msgstr "Connexion automatique"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:1
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:5
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:1
+#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:1
+msgid "Account:"
+msgstr "Compte :"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:2
+msgid "Edit Favorite Room"
+msgstr "Éditer les salles favorites"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:3
+msgid "Join room on start_up"
+msgstr "Joindre la salle au _démarrage"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:4
+msgid "Join this chat room when Empathy starts and you are connected"
+msgstr ""
+"Joindre cette salle de discussion quand Empathy démarre et que vous êtes "
+"connecté"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:5
+msgid "Manage Favorite Rooms"
+msgstr "Gérer les salles favorites"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:6
+msgid "N_ame:"
+msgstr "_Nom :"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:7
+msgid "S_erver:"
+msgstr "_Serveur :"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:9
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:9
+msgid "_Room:"
+msgstr "Sall_e :"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:176
+msgid "Personal Information"
+msgstr "Informations personnelles"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:179
+msgid "Edit Contact Information"
+msgstr "Modifier les informations du contact"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:182
+msgid "Contact Information"
+msgstr "Informations du contact"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:277
+msgid "I would like to add you to my contact list."
+msgstr "Je voudrais vous ajouter à ma liste de contacts."
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:301
+msgid "New Contact"
+msgstr "Nouveau contact"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.glade.h:1
+msgid "Decide _Later"
+msgstr "Décider plus _tard"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.glade.h:2
+msgid "Subscription Request"
+msgstr "Requête d'abonnement"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:197
+msgid "_Contact"
+msgstr "_Contact"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:201
+msgid "_Group"
+msgstr "_Groupe"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:205
+#: ../libempathy-gtk/empathy-main-window.glade.h:10
+msgid "_Chat"
+msgstr "_Discuter"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:205
+msgid "Chat with contact"
+msgstr "Discuter avec un contact"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:209
+msgid "Infor_mation"
+msgstr "Infor_mations"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:209
+msgid "View contact information"
+msgstr "Voir les informations sur le contact"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:213
+msgid "Re_name"
+msgstr "Re_nommer"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:213
+msgid "Rename"
+msgstr "Renommer"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:217
+msgid "Edit the groups and name for this contact"
+msgstr "Éditer les groupes et le nom de ce contact"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:221
+msgid "_Remove"
+msgstr "_Supprimer"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:221
+msgid "Remove contact"
+msgstr "Supprimer le contact"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:225
+msgid "_Invite to Chat Room"
+msgstr "_Inviter dans la salle de discussion"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:225
+msgid "Invite to a currently open chat room"
+msgstr "Inviter dans une salle de discussion actuellement ouverte"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:229
+msgid "_Send File..."
+msgstr "_Envoyer un fichier..."
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:229
+msgid "Send a file"
+msgstr "Envoie un fichier"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:233
+msgid "View previous conversations with this contact"
+msgstr "Affiche les conversations précédentes avec ce contact"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:238
+msgid "_Call"
+msgstr "_Appeler"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:238
+msgid "Start a voice or video conversation with this contact"
+msgstr "Démarre une conversation audio ou vidéo avec ce contact"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:1469
+msgid "Sorry, I don't want you in my contact list anymore."
+msgstr "Désolé, je ne te veux plus dans ma liste de contacts."
+
+#: ../libempathy-gtk/empathy-contact-widget.c:688
+msgid "Select"
+msgstr "Sélectionner"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:698
+#: ../libempathy-gtk/empathy-main-window.c:609
+msgid "Group"
+msgstr "Groupe"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:1
+msgid "<b>Client Information</b>"
+msgstr "<b>Informations du client</b>"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:2
+msgid "<b>Contact Details</b>"
+msgstr "<b>Détails sur le contact</b>"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:3
+msgid "<b>Contact</b>"
+msgstr "<b>Contact</b>"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:4
+msgid "<b>Groups</b>"
+msgstr "<b>Groupes</b>"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:6
+msgid "Alias:"
+msgstr "Alias :"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:7
+msgid "Birthday:"
+msgstr "Anniversaire :"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:8
+msgid "Client:"
+msgstr "Client :"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:9
+msgid "Contact information"
+msgstr "Informations sur le contact"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:10
+msgid "Email:"
+msgstr "Adresse électronique :"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:11
+msgid "Fullname:"
+msgstr "Nom complet :"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:12
+msgid "Identifier:"
+msgstr "Identifiant :"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:13
+msgid "Information requested..."
+msgstr "Demande des informations en cours..."
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:14
+msgid "OS:"
+msgstr "OS :"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:15
+msgid ""
+"Select the groups you want this contact to appear in, you can select more "
+"than one group or no groups."
+msgstr ""
+"Sélectionnez les groupes auxquels ce contact appartiendra ; vous pouvez "
+"sélectionner plus d'un groupe ou aucun groupe."
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:16
+msgid "Version:"
+msgstr "Version :"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:17
+msgid "Web site:"
+msgstr "Site Web :"
+
+#: ../libempathy-gtk/empathy-group-chat.c:251
+msgid "Enter the new topic you want to set for this room:"
+msgstr "Saisissez le nouveau sujet à définir pour cette salle :"
+
+#: ../libempathy-gtk/empathy-group-chat.c:361
+#, c-format
+msgid "%s has joined the room"
+msgstr "%s a rejoint la salle"
+
+#: ../libempathy-gtk/empathy-group-chat.c:364
+#, c-format
+msgid "%s has left the room"
+msgstr "%s a quitté la salle"
+
+#: ../libempathy-gtk/empathy-group-chat.c:445
+#, c-format
+msgid "Topic: %s"
+msgstr "Sujet : %s"
+
+#: ../libempathy-gtk/empathy-group-chat.c:574
+#, c-format
+msgid "Topic set to: %s"
+msgstr "Sujet défini : %s"
+
+#: ../libempathy-gtk/empathy-group-chat.c:576
+msgid "No topic defined"
+msgstr "Pas de sujet défini"
+
+#: ../libempathy-gtk/empathy-group-chat.glade.h:1
+msgid "<b>Topic:</b>"
+msgstr "<b>Sujet :</b>"
+
+#: ../libempathy-gtk/empathy-group-chat.glade.h:2
+msgid "Group Chat"
+msgstr "Groupe de discussion"
+
+#: ../libempathy-gtk/empathy-irc-network-dialog.c:287
+msgid "new server"
+msgstr "nouveau serveur"
+
+#: ../libempathy-gtk/empathy-irc-network-dialog.c:512
+msgid "Server"
+msgstr "Serveur"
+
+#: ../libempathy-gtk/empathy-irc-network-dialog.c:527
+msgid "Port"
+msgstr "Port"
+
+#: ../libempathy-gtk/empathy-irc-network-dialog.c:540
+msgid "SSL"
+msgstr "SSL"
+
+#: ../libempathy-gtk/empathy-log-window.c:499
+msgid "Account"
+msgstr "Compte"
+
+#: ../libempathy-gtk/empathy-log-window.c:506
+msgid "Conversation"
+msgstr "Conversation"
+
+#: ../libempathy-gtk/empathy-log-window.c:516
+msgid "Date"
+msgstr "Date"
+
+#: ../libempathy-gtk/empathy-log-window.glade.h:1
+msgid "Conversations"
+msgstr "Conversations"
+
+#: ../libempathy-gtk/empathy-log-window.glade.h:2
+msgid "Previous Conversations"
+msgstr "Conversations précédentes"
+
+#: ../libempathy-gtk/empathy-log-window.glade.h:3
+msgid "Search"
+msgstr "Rechercher"
+
+# Search est le titre de l'onglet, et est suivi de _For placé devant la zone de
+# texte à rechercher, j'ai donc essayé d'adapter au mieux.
+#: ../libempathy-gtk/empathy-log-window.glade.h:4
+msgid "_For:"
+msgstr "ce _terme :"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.c:286
+msgid "Chat Rooms"
+msgstr "Salles de discussion"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:2
+msgid "Browse:"
+msgstr "Parcourir :"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:3
+msgid ""
+"Enter the room name to join here or click on one or more rooms in the list."
+msgstr ""
+"Saisissez le nom de salle à rejoindre ou cliquez sur une ou plusieurs salles "
+"dans la liste."
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:4
+msgid ""
+"Enter the server which hosts the room, or leave it empty if the room is on "
+"the current account's server"
+msgstr ""
+"Saisissez le serveur qui héberge la salle ou laissez-le vide si la salle est "
+"sur le même serveur que le compte actuel"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:5
+msgid "Join"
+msgstr "Joindre"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:6
+msgid "Join New"
+msgstr "Joindre une nouvelle salle"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:7
+msgid "Re_fresh"
+msgstr "_Actualiser"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:8
+msgid ""
+"This list represents all chat rooms hosted on the server you have entered."
+msgstr ""
+"Cette liste représente toutes les salles de discussion hébergées sur le "
+"serveur actuel."
+
+#: ../libempathy-gtk/empathy-main-window.c:266
+msgid "Show and edit accounts"
+msgstr "Afficher et modifier les comptes"
+
+#: ../libempathy-gtk/empathy-main-window.c:630
+msgid "Contact"
+msgstr "Contact"
+
+#: ../libempathy-gtk/empathy-main-window.c:813
+msgid "_Edit account"
+msgstr "Mo_difier le compte"
+
+#: ../libempathy-gtk/empathy-main-window.c:896
+msgid "Network error"
+msgstr "Erreur réseau"
+
+#: ../libempathy-gtk/empathy-main-window.c:899
+msgid "Authentication failed"
+msgstr "L'authentification a échoué"
+
+#: ../libempathy-gtk/empathy-main-window.c:902
+msgid "Encryption error"
+msgstr "Erreur de chiffrement"
+
+#: ../libempathy-gtk/empathy-main-window.c:905
+msgid "Name in use"
+msgstr "Nom déjà utilisé"
+
+#: ../libempathy-gtk/empathy-main-window.c:908
+msgid "Certificate not provided"
+msgstr "Certificat non fourni"
+
+#: ../libempathy-gtk/empathy-main-window.c:911
+msgid "Certificate untrusted"
+msgstr "Certificat non validé"
+
+#: ../libempathy-gtk/empathy-main-window.c:914
+msgid "Certificate expired"
+msgstr "Le certificat a expiré"
+
+#: ../libempathy-gtk/empathy-main-window.c:917
+msgid "Certificate not activated"
+msgstr "Certificat non activé"
+
+#: ../libempathy-gtk/empathy-main-window.c:920
+msgid "Certificate hostname mismatch"
+msgstr "Le nom de l'hôte du certificat ne correspond pas"
+
+#: ../libempathy-gtk/empathy-main-window.c:923
+msgid "Certificate fingerprint mismatch"
+msgstr "L'empreinte du certificat ne correspond pas"
+
+#: ../libempathy-gtk/empathy-main-window.c:926
+msgid "Certificate self signed"
+msgstr "Certificat auto-signé"
+
+#: ../libempathy-gtk/empathy-main-window.c:929
+msgid "Certificate error"
+msgstr "Erreur de certificat"
+
+#: ../libempathy-gtk/empathy-main-window.c:932
+msgid "Unknown error"
+msgstr "Erreur inconnue"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:1
+msgid "Contact List"
+msgstr "Liste des contacts"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:2
+msgid "Context"
+msgstr "Contexte"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:3
+msgid "Join _Favorites"
+msgstr "Joindre les _favoris"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:5
+msgid "Manage Favorites"
+msgstr "Gérer les favoris"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:6
+msgid "Show _Offline Contacts"
+msgstr "Afficher les contacts _déconnectés"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:7
+#: ../megaphone/data/GNOME_Megaphone_Applet.xml.h:1
+#: ../nothere/data/GNOME_NotHere_Applet.xml.h:1
+msgid "_About"
+msgstr "À _propos"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:8
+msgid "_Accounts"
+msgstr "_Comptes"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:14
+#: ../libempathy-gtk/empathy-status-icon.glade.h:2
+msgid "_New Conversation..."
+msgstr "_Nouvelle conversation..."
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:15
+msgid "_Personal Information"
+msgstr "_Informations personnelles"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:16
+#: ../megaphone/data/GNOME_Megaphone_Applet.xml.h:3
+msgid "_Preferences"
+msgstr "_Préférences"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:17
+#: ../libempathy-gtk/empathy-status-icon.glade.h:3
+msgid "_Quit"
+msgstr "_Quitter"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:2
+msgid "Call"
+msgstr "Appel"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:4
+msgid "Contact ID:"
+msgstr "Identifiant du contact :"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:5
+msgid "New Conversation"
+msgstr "Nouvelle conversation"
+
+#: ../libempathy-gtk/empathy-preferences.c:247
+msgid "Language"
+msgstr "Langue"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:1
+msgid "<b>Appearance</b>"
+msgstr "<b>Apparence</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:2
+msgid "<b>Audio</b>"
+msgstr "<b>Audio</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:3
+msgid "<b>Behaviour</b>"
+msgstr "<b>Comportement</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:4
+msgid "<b>Contact List</b>"
+msgstr "<b>Liste des contacts</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:5
+msgid "<b>Enable spell checking for languages:</b>"
+msgstr "<b>Activer la correction orthographique pour les langues :</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:6
+msgid "<b>Options</b>"
+msgstr "<b>Options</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:7
+msgid "<b>Visual</b>"
+msgstr "<b>Aspect</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:8
+msgid ""
+"<small>The list of languages reflects only the languages for which you have "
+"a dictionary installed.</small>"
+msgstr ""
+"<small>La liste de langues ne contient que les langues pour lesquelles vous "
+"avez un dictionnaire installé.</small>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:9
+msgid "Automatically _connect on startup "
+msgstr "Se _connecter automatiquement au démarrage"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:10
+msgid "Avatars are user chosen images shown in the contact list"
+msgstr ""
+"Les avatars sont des images choisies par l'utilisateur et visibles dans la "
+"liste de contacts"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:11
+msgid "Chat Th_eme:"
+msgstr "_Thème de la fenêtre de discussion :"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:12
+msgid "Display notifications when contacts come _online"
+msgstr "Afficher des notifications quand les contacts se c_onnectent"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:13
+msgid "Enable sounds when _away"
+msgstr "Activer les sons lorsque vous êtes _absent"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:14
+msgid "Enable sounds when _busy"
+msgstr "Activer les sons lorsque vous êtes _occupé"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:15
+msgid "General"
+msgstr "Général"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:16
+msgid "Notifications"
+msgstr "Notifications"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:17
+msgid "Preferences"
+msgstr "Préférences"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:18
+msgid "Show _avatars"
+msgstr "Afficher les _avatars"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:19
+msgid "Show _smileys as images"
+msgstr "Convertir les _frimousses en images"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:20
+msgid "Show co_mpact contact list"
+msgstr "Afficher la liste co_mpacte des contacts"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:21
+msgid "Sort by _name"
+msgstr "Trié par _nom"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:22
+msgid "Sort by s_tate"
+msgstr "Trié par é_tat"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:23
+msgid "Spell Checking"
+msgstr "Correction orthographique"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:24
+msgid "Themes"
+msgstr "Thèmes"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:25
+msgid "_Open new chats in separate windows"
+msgstr "_Ouvrir les nouvelles discussions dans des fenêtres séparées"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:26
+msgid "_Play sound when messages arrive"
+msgstr "_Jouer un son lors de la réception des messages"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:27
+msgid "_Use for chat rooms"
+msgstr "_Utiliser pour les salles de discussion"
+
+#. Custom messages
+#: ../libempathy-gtk/empathy-presence-chooser.c:691
+msgid "Custom messages..."
+msgstr "Messages personnalisés..."
+
+#: ../libempathy-gtk/empathy-presence-chooser.glade.h:1
+msgid "Custom message"
+msgstr "Message personnalisé"
+
+#: ../libempathy-gtk/empathy-presence-chooser.glade.h:2
+msgid "Message:"
+msgstr "Message :"
+
+#: ../libempathy-gtk/empathy-presence-chooser.glade.h:3
+msgid "Save message"
+msgstr "Enregistrer le message"
+
+#: ../libempathy-gtk/empathy-presence-chooser.glade.h:4
+msgid "Status:"
+msgstr "État :"
+
+#: ../libempathy-gtk/empathy-private-chat.c:229
+#, c-format
+msgid "%s went offline"
+msgstr "%s s'est déconnecté"
+
+#: ../libempathy-gtk/empathy-private-chat.c:243
+#, c-format
+msgid "%s has come online"
+msgstr "%s s'est connecté"
+
+#: ../libempathy-gtk/empathy-spell-dialog.c:85
+msgid "Word"
+msgstr "Mot"
+
+#: ../libempathy-gtk/empathy-spell-dialog.c:258
+msgid "Suggestions for the word"
+msgstr "Suggestions pour le mot"
+
+#: ../libempathy-gtk/empathy-spell-dialog.glade.h:1
+msgid "Spell Checker"
+msgstr "Correcteur orthographique"
+
+#: ../libempathy-gtk/empathy-spell-dialog.glade.h:2
+msgid "Suggestions for the word:"
+msgstr "Suggestions pour le mot :"
+
+#: ../libempathy-gtk/empathy-status-icon.c:369
+#, c-format
+msgid ""
+"New message from %s:\n"
+"%s"
+msgstr ""
+"Nouveau message de %s\n"
+"%s"
+
+#: ../libempathy-gtk/empathy-status-icon.c:434
+#, c-format
+msgid ""
+"Incoming call from %s:\n"
+"%s"
+msgstr ""
+"Appel entrant de %s :\n"
+"%s"
+
+#: ../libempathy-gtk/empathy-status-icon.c:738
+#, c-format
+msgid "Subscription requested by %s"
+msgstr "Demande d'abonnement de %s"
+
+#: ../libempathy-gtk/empathy-status-icon.c:741
+#, c-format
+msgid ""
+"\n"
+"Message: %s"
+msgstr ""
+"\n"
+"Message : %s"
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:1
+msgid "Status"
+msgstr "État"
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:4
+msgid "_Show Contact List"
+msgstr "_Afficher la liste des contacts"
+
+#: ../libempathy-gtk/empathy-theme-boxes.c:780
+#: ../libempathy-gtk/empathy-theme-irc.c:297
+msgid "%A %d %B %Y"
+msgstr "%A %d %B %Y"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:78
+msgid "Classic"
+msgstr "Classique"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:79
+msgid "Simple"
+msgstr "Simple"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:80
+msgid "Clean"
+msgstr "Propre"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:81
+msgid "Blue"
+msgstr "Bleu"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:158
+msgid "Current Locale"
+msgstr "Locale actuelle"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:161
+#: ../libempathy-gtk/totem-subtitle-encoding.c:163
+#: ../libempathy-gtk/totem-subtitle-encoding.c:165
+#: ../libempathy-gtk/totem-subtitle-encoding.c:167
+msgid "Arabic"
+msgstr "Arabe"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:170
+msgid "Armenian"
+msgstr "Arménien"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:173
+#: ../libempathy-gtk/totem-subtitle-encoding.c:175
+#: ../libempathy-gtk/totem-subtitle-encoding.c:177
+msgid "Baltic"
+msgstr "Balte"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:180
+msgid "Celtic"
+msgstr "Celtique"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:183
+#: ../libempathy-gtk/totem-subtitle-encoding.c:185
+#: ../libempathy-gtk/totem-subtitle-encoding.c:187
+#: ../libempathy-gtk/totem-subtitle-encoding.c:189
+msgid "Central European"
+msgstr "Europe centrale"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:192
+#: ../libempathy-gtk/totem-subtitle-encoding.c:194
+#: ../libempathy-gtk/totem-subtitle-encoding.c:196
+#: ../libempathy-gtk/totem-subtitle-encoding.c:198
+msgid "Chinese Simplified"
+msgstr "Chinois simplifié"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:201
+#: ../libempathy-gtk/totem-subtitle-encoding.c:203
+#: ../libempathy-gtk/totem-subtitle-encoding.c:205
+msgid "Chinese Traditional"
+msgstr "Chinois traditionnel"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:208
+msgid "Croatian"
+msgstr "Croate"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:211
+#: ../libempathy-gtk/totem-subtitle-encoding.c:213
+#: ../libempathy-gtk/totem-subtitle-encoding.c:215
+#: ../libempathy-gtk/totem-subtitle-encoding.c:217
+#: ../libempathy-gtk/totem-subtitle-encoding.c:219
+#: ../libempathy-gtk/totem-subtitle-encoding.c:221
+msgid "Cyrillic"
+msgstr "Cyrillique"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:224
+msgid "Cyrillic/Russian"
+msgstr "Cyrillique/Russe"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:227
+#: ../libempathy-gtk/totem-subtitle-encoding.c:229
+msgid "Cyrillic/Ukrainian"
+msgstr "Cyrillique/Ukrainien"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:232
+msgid "Georgian"
+msgstr "Géorgien"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:235
+#: ../libempathy-gtk/totem-subtitle-encoding.c:237
+#: ../libempathy-gtk/totem-subtitle-encoding.c:239
+msgid "Greek"
+msgstr "Grec"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:242
+msgid "Gujarati"
+msgstr "Gujarâtî"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:245
+msgid "Gurmukhi"
+msgstr "Gurmukhī"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:248
+#: ../libempathy-gtk/totem-subtitle-encoding.c:250
+#: ../libempathy-gtk/totem-subtitle-encoding.c:252
+#: ../libempathy-gtk/totem-subtitle-encoding.c:254
+msgid "Hebrew"
+msgstr "Hébreu"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:257
+msgid "Hebrew Visual"
+msgstr "Hébreu visuel"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:260
+msgid "Hindi"
+msgstr "Hindî"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:263
+msgid "Icelandic"
+msgstr "Islandais"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:266
+#: ../libempathy-gtk/totem-subtitle-encoding.c:268
+#: ../libempathy-gtk/totem-subtitle-encoding.c:270
+msgid "Japanese"
+msgstr "Japonais"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:273
+#: ../libempathy-gtk/totem-subtitle-encoding.c:275
+#: ../libempathy-gtk/totem-subtitle-encoding.c:277
+#: ../libempathy-gtk/totem-subtitle-encoding.c:279
+msgid "Korean"
+msgstr "Coréen"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:282
+msgid "Nordic"
+msgstr "Nordique"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:285
+msgid "Persian"
+msgstr "Perse"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:288
+#: ../libempathy-gtk/totem-subtitle-encoding.c:290
+msgid "Romanian"
+msgstr "Roumain"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:293
+msgid "South European"
+msgstr "Europe méridionale"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:296
+msgid "Thai"
+msgstr "Thaï"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:299
+#: ../libempathy-gtk/totem-subtitle-encoding.c:301
+#: ../libempathy-gtk/totem-subtitle-encoding.c:303
+#: ../libempathy-gtk/totem-subtitle-encoding.c:305
+msgid "Turkish"
+msgstr "Turc"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:308
+#: ../libempathy-gtk/totem-subtitle-encoding.c:310
+#: ../libempathy-gtk/totem-subtitle-encoding.c:312
+#: ../libempathy-gtk/totem-subtitle-encoding.c:314
+#: ../libempathy-gtk/totem-subtitle-encoding.c:316
+msgid "Unicode"
+msgstr "Unicode"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:319
+#: ../libempathy-gtk/totem-subtitle-encoding.c:321
+#: ../libempathy-gtk/totem-subtitle-encoding.c:323
+#: ../libempathy-gtk/totem-subtitle-encoding.c:325
+#: ../libempathy-gtk/totem-subtitle-encoding.c:327
+msgid "Western"
+msgstr "Occidental"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:330
+#: ../libempathy-gtk/totem-subtitle-encoding.c:332
+#: ../libempathy-gtk/totem-subtitle-encoding.c:334
+msgid "Vietnamese"
+msgstr "Vietnamien"
+
+#.
+#. * vim: sw=2 ts=8 cindent noai bs=2
+#.
+#: ../megaphone/data/GNOME_Megaphone_Applet.schemas.in.h:1
+msgid ""
+"The contact to display in the applet. Empty means no contact is displayed."
+msgstr ""
+"Le contact à afficher dans l'applet. Laissez vide pour n'afficher aucun "
+"contact."
+
+#: ../megaphone/data/GNOME_Megaphone_Applet.schemas.in.h:2
+msgid "The contact's avatar token. Empty means contact has no avatar."
+msgstr ""
+"Le jeton de l'avatar du contact. Si le contact n'a pas d'avatar, cette "
+"valeur reste vide."
+
+#: ../megaphone/data/GNOME_Megaphone_Applet.server.in.in.h:1
+msgid "Megaphone"
+msgstr "Mégaphone"
+
+#: ../megaphone/data/GNOME_Megaphone_Applet.server.in.in.h:2
+#: ../megaphone/src/megaphone-applet.c:419
+msgid "Talk!"
+msgstr "Parlez !"
+
+#: ../megaphone/data/GNOME_Megaphone_Applet.xml.h:2
+msgid "_Information"
+msgstr "_Informations"
+
+#: ../nothere/data/GNOME_NotHere_Applet.server.in.in.h:1
+msgid "Presence"
+msgstr "Présence"
+
+#: ../nothere/data/GNOME_NotHere_Applet.server.in.in.h:2
+#: ../nothere/src/nothere-applet.c:89
+msgid "Set your own presence"
+msgstr "Définissez votre présence"
+
+#: ../src/empathy.c:205
+msgid "- Empathy Instant Messenger"
+msgstr "- Messagerie instantanée Empathy"
diff --git a/gnome-2-22/po/ga.po b/gnome-2-22/po/ga.po
new file mode 100644
index 000000000..58d4b4775
--- /dev/null
+++ b/gnome-2-22/po/ga.po
@@ -0,0 +1,1141 @@
+# Irish (gaeilge) translations for gossip
+# Copyright (C) 2004 Alastair McKinstry <mckinstry@computer.org>
+# This file is distributed under the same license as the gossip package.
+# Alastair McKinstry <mckinstry@computer.org>, 2004.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gossip HEAD\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-05-15 23:46+0200\n"
+"PO-Revision-Date: 2004-01-02 07:20+0000\n"
+"Last-Translator: Alastair McKinstry <mckinstry@computer.org>\n"
+"Language-Team: Irish <gaeilge-gnulinux@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../data/empathy.desktop.in.h:1
+#, fuzzy
+msgid "Empathy Instant Messenger"
+msgstr "Gossip - Caint"
+
+#: ../data/empathy.desktop.in.h:2
+msgid "Instant Messenger"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:1
+msgid "Always open a separate chat window for new chats."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:2
+msgid "Chat window theme"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:3
+msgid ""
+"Comma separated list of spell checker languages to use (e.g. en, fr, nl)."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:4
+#, fuzzy
+msgid "Compact contact list"
+msgstr "_Taispeán Líosta Tadhall"
+
+#: ../data/empathy.schemas.in.h:5
+msgid "Contact list sort criterium"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:6
+msgid "Default directory to select an avatar image from"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:7
+msgid "Enable popup when contact is available"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:8
+msgid "Enable sound when away"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:9
+msgid "Enable sound when busy"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:10
+#, fuzzy
+msgid "Enable spell checker"
+msgstr "Gossip - Caint"
+
+#: ../data/empathy.schemas.in.h:11
+msgid "Hide main window"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:12
+msgid "Hide the main window."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:13
+msgid "Open new chats in separate windows"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:14
+#, fuzzy
+msgid "Show avatars"
+msgstr "_Taispeán Líosta Tadhall"
+
+#: ../data/empathy.schemas.in.h:15
+msgid "Show hint about closing the main window"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:16
+msgid "Show offline contacts"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:17
+msgid "Spell checking languages"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:18
+msgid "The last directory that an avatar image was chosen from."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:19
+msgid "The theme that is used to display the conversation in chat windows."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:20
+msgid "Use graphical smileys"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:21
+msgid "Use notification sounds"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:22
+msgid "Use theme for chat rooms"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:23
+msgid ""
+"Whether or not to check words typed against the languages you want to check "
+"with."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:24
+msgid ""
+"Whether or not to convert smileys into graphical images in conversations."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:25
+msgid "Whether or not to play a sound when messages arrive."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:26
+msgid "Whether or not to play sounds when away."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:27
+msgid "Whether or not to play sounds when busy."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:28
+msgid "Whether or not to show a popup when a contact becomes available."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:29
+msgid ""
+"Whether or not to show avatars for contacts in the contact list and chat "
+"windows."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:30
+msgid "Whether or not to show contacts that are offline in the contact list."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:31
+msgid ""
+"Whether or not to show the message dialog about closing the main window with "
+"the 'x' button in the title bar."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:32
+msgid "Whether to show the contact list in compact mode or not."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:33
+msgid "Whether to use the theme for chat rooms or not."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:34
+msgid ""
+"Which criterium to use when sorting the contact list. Default is to use sort "
+"by the contact's name with the value \"name\". A value of \"state\" will "
+"sort the contact list by state."
+msgstr ""
+
+#: ../libempathy/gossip-contact.c:654 ../libempathy/gossip-presence.c:184
+#: ../libempathy/gossip-presence.c:283
+msgid "Offline"
+msgstr ""
+
+#: ../libempathy/gossip-presence.c:274
+msgid "Available"
+msgstr ""
+
+#: ../libempathy/gossip-presence.c:276
+msgid "Busy"
+msgstr ""
+
+#: ../libempathy/gossip-presence.c:279
+msgid "Away"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.c:254
+#, fuzzy
+msgid "Show and edit accounts"
+msgstr "_Taispeán Líosta Tadhall"
+
+#: ../libempathy-gtk/empathy-main-window.c:456
+msgid "Group"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.c:477
+#, fuzzy
+msgid "Contact"
+msgstr "Gossip - Caint"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:1
+#, fuzzy
+msgid "Contact List - Empathy"
+msgstr "_Taispeán Líosta Tadhall"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:2
+#, fuzzy
+msgid "Context"
+msgstr "Ceangail"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:3
+msgid "Join _Favorites"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:4
+#: ../libempathy-gtk/gossip-chat.glade.h:10
+msgid "Join _New..."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:5
+msgid "Manage Favorites..."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:6
+msgid "Show _Offline Contacts"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:7
+msgid "_About"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:8
+msgid "_Accounts"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:9
+#: ../libempathy-gtk/gossip-chat.glade.h:15
+msgid "_Add Contact..."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:10
+#: ../libempathy-gtk/gossip-contact-list.c:298
+msgid "_Chat"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:11
+#, fuzzy
+msgid "_Contents"
+msgstr "Ceangail"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:12
+#: ../libempathy-gtk/gossip-chat.glade.h:21
+#: ../libempathy-gtk/gossip-contact-list.c:310
+#, fuzzy
+msgid "_Edit"
+msgstr "_Ealu"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:13
+msgid "_Help"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:14
+#: ../libempathy-gtk/empathy-status-icon.glade.h:2
+msgid "_New Message..."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:15
+msgid "_Personal Information"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:16
+msgid "_Preferences"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:17
+#: ../libempathy-gtk/empathy-status-icon.glade.h:3
+msgid "_Quit"
+msgstr "_Ealu"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:18
+#: ../libempathy-gtk/gossip-chat.glade.h:25
+#, fuzzy
+msgid "_Room"
+msgstr "_Seomra:"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:19
+#: ../libempathy-gtk/gossip-chat.glade.h:28
+#: ../libempathy-gtk/gossip-contact-list.c:326
+msgid "_View Previous Conversations"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:1
+msgid "Status"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:4
+msgid "_Show Contact List"
+msgstr "_Taispeán Líosta Tadhall"
+
+#: ../libempathy-gtk/gossip-about-dialog.c:63
+msgid ""
+"Empathy is free software; you can redistribute it and/or modify it under the "
+"terms of the GNU General Public License as published by the Free Software "
+"Foundation; either version 2 of the License, or (at your option) any later "
+"version."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-about-dialog.c:67
+msgid ""
+"Empathy is distributed in the hope that it will be useful, but WITHOUT ANY "
+"WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS "
+"FOR A PARTICULAR PURPOSE. See the GNU General Public License for more "
+"details."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-about-dialog.c:71
+msgid ""
+"You should have received a copy of the GNU General Public License along with "
+"Empathy; if not, write to the Free Software Foundation, Inc., 51 Franklin "
+"Street, Fifth Floor, Boston, MA 02110-130159 USA"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-about-dialog.c:99
+msgid "An Instant Messaging client for GNOME"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-about-dialog.c:105
+msgid "translator-credits"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:224
+msgid "Disable"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:227
+msgid "Enable"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:261
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:3
+msgid "<b>No Account Selected</b>"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:263
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to start configuring.\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want "
+"to configure in the list on the left."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:272
+msgid "<b>No Accounts Configured</b>"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:274
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to start configuring."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:362
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:6
+msgid "Accounts"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:857
+#, c-format
+msgid ""
+"You are about to remove your %s account!\n"
+"Are you sure you want to proceed?"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:863
+msgid ""
+"Any associated conversations and chat rooms will NOT be removed if you "
+"decide to proceed.\n"
+"\n"
+"Should you decide to add the account back at a later time, they will still "
+"be available."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:1
+msgid "<b>Account</b>"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:2
+#, fuzzy
+msgid "<b>New Account</b>"
+msgstr "Gossip - Caint"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:4
+#, fuzzy
+msgid "<b>Settings</b>"
+msgstr "Ceangail"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:5
+msgid "A unique name for this account to identify it personally to you."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:7
+#, fuzzy
+msgid "Cr_eate"
+msgstr "G_lan"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:8
+msgid "Imendio "
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:9
+msgid "Jabber"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:10
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to started configuring.\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want "
+"to configure in the list on the left."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:13
+#, fuzzy
+msgid "_Name:"
+msgstr "Ainm:"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:14
+msgid "_Type:"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-account-widget-generic.c:144
+#: ../libempathy-gtk/gossip-account-widget-generic.c:186
+#, c-format
+msgid "%s:"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:1
+msgid ""
+"<small><b><span foreground=\"#555\">Example: user@jabber.org</span></b></"
+"small>"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:2
+msgid "Forget password and clear the entry."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:3
+msgid "Login I_D:"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:4
+#, fuzzy
+msgid "Pass_word:"
+msgstr "_Pasfhocal:"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:5
+msgid "Reso_urce:"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:6
+msgid "Use encryption (SS_L)"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:7
+#, fuzzy
+msgid "_Port:"
+msgstr "_Pasfhocal:"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:8
+msgid "_Server:"
+msgstr "_Freastalaí:"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:9
+msgid "jabber account settings"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.c:314
+#, fuzzy
+msgid "Disconnected"
+msgstr "Ceangail"
+
+#: ../libempathy-gtk/gossip-chat.c:858
+msgid "Insert Smiley"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.c:906
+msgid "_Check Word Spelling..."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.c:1244
+#, fuzzy
+msgid "Connected"
+msgstr "Ceangail"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:1
+msgid "C_lear"
+msgstr "G_lan"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:2
+msgid "Change _Topic..."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:3
+msgid "Chat"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:4
+msgid "Contact Infor_mation"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:5
+msgid "Cu_t"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:6
+msgid "In_vite..."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:7
+msgid "Insert _Smiley"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:8
+msgid "Invitation _message:"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:9
+msgid "Invite"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:11
+msgid "Move Tab _Left"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:12
+msgid "Move Tab _Right"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:13
+msgid "Select who would you like to invite:"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:14
+msgid "You have been invited to join a chat conference."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:16
+msgid "_Add To Favorites"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:17
+msgid "_Close"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:18
+msgid "_Conversation"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:19
+msgid "_Copy"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:20
+msgid "_Detach Tab"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:22
+msgid "_Next Tab"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:23
+msgid "_Paste"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:24
+msgid "_Previous Tab"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:26
+#, fuzzy
+msgid "_Show Contacts"
+msgstr "_Taispeán Líosta Tadhall"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:27
+msgid "_Tabs"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat-view.c:544
+msgid "_Copy Link Address"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat-view.c:552
+msgid "_Open Link"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat-view.c:889
+msgid "%A %d %B %Y"
+msgstr "%A %d %B %Y"
+
+#: ../libempathy-gtk/gossip-chat-window.c:685
+#: ../libempathy-gtk/gossip-chat-window.c:715
+#, fuzzy
+msgid "New Message"
+msgid_plural "New Messages"
+msgstr[0] "Gossip - Caint"
+msgstr[1] "Gossip - Caint"
+
+#: ../libempathy-gtk/gossip-chat-window.c:691
+#, fuzzy
+msgid "Chat Room"
+msgstr "Gossip - Caint"
+
+#: ../libempathy-gtk/gossip-chat-window.c:696
+#: ../libempathy-gtk/gossip-chat-window.c:719
+#, fuzzy, c-format
+msgid "Conversation"
+msgid_plural "Conversations (%d)"
+msgstr[0] "Ceangail"
+msgstr[1] "Ceangail"
+
+#: ../libempathy-gtk/gossip-chat-window.c:1295
+msgid "Typing a message."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-contact-list.c:290
+#, fuzzy
+msgid "_Contact"
+msgstr "Gossip - Caint"
+
+#: ../libempathy-gtk/gossip-contact-list.c:294
+#, fuzzy
+msgid "_Group"
+msgstr "Gossip - Caint"
+
+#: ../libempathy-gtk/gossip-contact-list.c:298
+msgid "Chat with contact"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-contact-list.c:302
+msgid "Infor_mation"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-contact-list.c:302
+msgid "View contact information"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-contact-list.c:306
+#, fuzzy
+msgid "Re_name"
+msgstr "Ainm:"
+
+#: ../libempathy-gtk/gossip-contact-list.c:306
+#, fuzzy
+msgid "Rename"
+msgstr "_Leasainm:"
+
+#: ../libempathy-gtk/gossip-contact-list.c:310
+msgid "Edit the groups and name for this contact"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-contact-list.c:314
+#, fuzzy
+msgid "_Remove"
+msgstr "S_críos"
+
+#: ../libempathy-gtk/gossip-contact-list.c:314
+#, fuzzy
+msgid "Remove contact"
+msgstr "_Scríos"
+
+#: ../libempathy-gtk/gossip-contact-list.c:318
+#, fuzzy
+msgid "_Invite to Chat Room"
+msgstr "Gossip - Caint"
+
+#: ../libempathy-gtk/gossip-contact-list.c:318
+msgid "Invite to a currently open chat room"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-contact-list.c:322
+msgid "_Send File..."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-contact-list.c:322
+msgid "Send a file"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-contact-list.c:326
+msgid "View previous conversations with this contact"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.c:250
+msgid "Language"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:1
+msgid "<b>Appearance</b>"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:2
+msgid "<b>Audio</b>"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:3
+msgid "<b>Behaviour</b>"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:4
+#, fuzzy
+msgid "<b>Contact List</b>"
+msgstr "_Taispeán Líosta Tadhall"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:5
+msgid "<b>Languages</b>"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:6
+#, fuzzy
+msgid "<b>Options</b>"
+msgstr "Ceangail"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:7
+msgid "<b>Visual</b>"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:8
+msgid ""
+"<small>The list of languages reflects only the languages for which you have "
+"a dictionary installed.</small>"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:9
+msgid "Avatars are user chosen images shown in the contact list"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:10
+msgid "Chat Th_eme:"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:11
+msgid "Display notifications when contacts come _online"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:12
+msgid "Enable sounds when _away"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:13
+msgid "Enable sounds when _busy"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:14
+msgid "General"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:15
+msgid "Notifications"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:16
+msgid "Preferences"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:17
+msgid "Show _avatars"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:18
+msgid "Show _smileys as images"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:19
+#, fuzzy
+msgid "Show co_mpact contact list"
+msgstr "_Taispeán Líosta Tadhall"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:20
+msgid "Sort by _name"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:21
+msgid "Sort by s_tate"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:22
+msgid "Spell Checking"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:23
+msgid "Themes"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:24
+msgid "_Enable spell checking"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:25
+msgid "_Open new chats in separate windows"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:26
+msgid "_Play sound when messages arrive"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:27
+#, fuzzy
+msgid "_Use for chat rooms"
+msgstr "Gossip - Caint"
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:702
+msgid "Custom message..."
+msgstr ""
+
+#. Clear list
+#: ../libempathy-gtk/gossip-presence-chooser.c:724
+#, fuzzy
+msgid "Clear List..."
+msgstr "G_lan"
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:803
+msgid "Are you sure you want to clear the list?"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:807
+msgid ""
+"This will remove any custom messages you have added to the list of preset "
+"status messages."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:812
+#, fuzzy
+msgid "Clear List"
+msgstr "G_lan"
+
+#: ../libempathy-gtk/gossip-presence-chooser.glade.h:1
+msgid "Enter status message:"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-presence-chooser.glade.h:2
+#, fuzzy
+msgid "Status Message Presets"
+msgstr "Gossip - Caint"
+
+#: ../libempathy-gtk/gossip-presence-chooser.glade.h:3
+#, fuzzy
+msgid "_Add to status message list"
+msgstr "Gossip - Caint"
+
+#: ../libempathy-gtk/gossip-private-chat.c:198
+#, c-format
+msgid "%s went offline"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-private-chat.c:212
+#, c-format
+msgid "%s has come online"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-theme-manager.c:87
+msgid "Classic"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-theme-manager.c:88
+msgid "Simple"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-theme-manager.c:89
+#, fuzzy
+msgid "Clean"
+msgstr "G_lan"
+
+#: ../libempathy-gtk/gossip-theme-manager.c:90
+msgid "Blue"
+msgstr ""
+
+#: ../src/empathy-main.c:145
+msgid "Don't connect on startup"
+msgstr ""
+
+#: ../src/empathy-main.c:155
+#, fuzzy
+msgid "- Empathy Instant Messenger"
+msgstr "Gossip - Caint"
+
+#, fuzzy
+#~ msgid "Unknown"
+#~ msgstr "Earraidh gan aithne"
+
+#, fuzzy
+#~ msgid "An unknown error occurred, check your details are correct."
+#~ msgstr "Earraidh gan aithne"
+
+#, fuzzy
+#~ msgid "An unknown error occurred."
+#~ msgstr "Earraidh gan aithne"
+
+#, fuzzy
+#~ msgid "new account"
+#~ msgstr "Gossip - Caint"
+
+#~ msgid "Home"
+#~ msgstr "Baile"
+
+#, fuzzy
+#~ msgid "Disconnect"
+#~ msgstr "Ceangail"
+
+#~ msgid "Connect"
+#~ msgstr "Ceangail"
+
+#, fuzzy
+#~ msgid "%d new message"
+#~ msgid_plural "%d new messages"
+#~ msgstr[0] "Gossip - Caint"
+#~ msgstr[1] "Gossip - Caint"
+
+#, fuzzy
+#~ msgid "Name"
+#~ msgstr "Ainm:"
+
+#, fuzzy
+#~ msgid "Room"
+#~ msgstr "_Seomra:"
+
+#, fuzzy
+#~ msgid "Auto Connect"
+#~ msgstr "Ceangail"
+
+#, fuzzy
+#~ msgid "Unknown error occurred during file transfer."
+#~ msgstr "Earraidh gan aithne"
+
+#, fuzzy
+#~ msgid "Connecting..."
+#~ msgstr "Ceangail"
+
+#, fuzzy
+#~ msgid "Retry connection"
+#~ msgstr "Ceangail"
+
+#~ msgid "ACCOUNT-NAME"
+#~ msgstr "AINM-CÚNTAS"
+
+#~ msgid "[default]"
+#~ msgstr "[gnáth]"
+
+#, fuzzy
+#~ msgid "Chat Rooms"
+#~ msgstr "Gossip - Caint"
+
+#, fuzzy
+#~ msgid "Default"
+#~ msgstr "[gnáth]"
+
+#, fuzzy
+#~ msgid "File name:"
+#~ msgstr "_Leasainm:"
+
+#, fuzzy
+#~ msgid "<b>Topic:</b>"
+#~ msgstr "Ceangail"
+
+#, fuzzy
+#~ msgid "Edit Favorite Room"
+#~ msgstr "Gossip - Caint"
+
+#, fuzzy
+#~ msgid "Group Chat"
+#~ msgstr "Gossip - Caint"
+
+#, fuzzy
+#~ msgid "N_ame:"
+#~ msgstr "Ainm:"
+
+#, fuzzy
+#~ msgid "S_erver:"
+#~ msgstr "Freastalaí:"
+
+#~ msgid "_Nickname:"
+#~ msgstr "_Leasainm:"
+
+#~ msgid "_Room:"
+#~ msgstr "_Seomra:"
+
+#, fuzzy
+#~ msgid "<b>Subscription</b>"
+#~ msgstr "Ceangail"
+
+#, fuzzy
+#~ msgid "Accou_nt:"
+#~ msgstr "Gossip - Caint"
+
+#, fuzzy
+#~ msgid "Add Contact"
+#~ msgstr "Gossip - Caint"
+
+#, fuzzy
+#~ msgid "Con_tact:"
+#~ msgstr "Gossip - Caint"
+
+#, fuzzy
+#~ msgid "Connect on S_tartup"
+#~ msgstr "Ceangail"
+
+#, fuzzy
+#~ msgid "Contacts"
+#~ msgstr "Gossip - Caint"
+
+#, fuzzy
+#~ msgid "Edit Contact"
+#~ msgstr "Gossip - Caint"
+
+#, fuzzy
+#~ msgid "Edit Groups"
+#~ msgstr "Gossip - Caint"
+
+#~ msgid "Name:"
+#~ msgstr "Ainm:"
+
+#, fuzzy
+#~ msgid "Search"
+#~ msgstr "_Cuardaigh..."
+
+#, fuzzy
+#~ msgid "Spell Checker"
+#~ msgstr "Gossip - Caint"
+
+#~ msgid "Version:"
+#~ msgstr "Leagan:"
+
+#, fuzzy
+#~ msgid "_Connect"
+#~ msgstr "Ceangail"
+
+#, fuzzy
+#~ msgid "_Description:"
+#~ msgstr "Leagan:"
+
+#, fuzzy
+#~ msgid "_For:"
+#~ msgstr "_Pasfhocal:"
+
+#, fuzzy
+#~ msgid "_Full Name:"
+#~ msgstr "Ainm:"
+
+#, fuzzy
+#~ msgid "_Group:"
+#~ msgstr "Gossip - Caint"
+
+#, fuzzy
+#~ msgid "_Nick Name:"
+#~ msgstr "_Leasainm:"
+
+#, fuzzy
+#~ msgid "_Password:"
+#~ msgstr "_Pasfhocal:"
+
+#, fuzzy
+#~ msgid "_Quit Message:"
+#~ msgstr "Gossip - Caint"
+
+#, fuzzy
+#~ msgid "Na_me:"
+#~ msgstr "Ainm:"
+
+#, fuzzy
+#~ msgid "New Chat Room"
+#~ msgstr "Gossip - Caint"
+
+#~ msgid " "
+#~ msgstr " "
+
+#, fuzzy
+#~ msgid "Chat Rooms..."
+#~ msgstr "Gossip - Caint"
+
+#~ msgid "Gossip"
+#~ msgstr "Gossip"
+
+#, fuzzy
+#~ msgid "Nickname:"
+#~ msgstr "_Leasainm:"
+
+#~ msgid "Server:"
+#~ msgstr "Freastalaí:"
+
+#, fuzzy
+#~ msgid "_No"
+#~ msgstr "Níl"
+
+#~ msgid "_Search..."
+#~ msgstr "_Cuardaigh..."
+
+#, fuzzy
+#~ msgid "_Yes"
+#~ msgstr "Tá"
+
+#, fuzzy
+#~ msgid "Gossip - Accounts"
+#~ msgstr "Gossip - Caint"
+
+#, fuzzy
+#~ msgid "Persian"
+#~ msgstr "Leagan:"
+
+#~ msgid "Details:"
+#~ msgstr "Sonraí:"
+
+#~ msgid "*"
+#~ msgstr "*"
+
+#~ msgid "From:"
+#~ msgstr "Ó:"
+
+#~ msgid "To:"
+#~ msgstr "Do:"
+
+#~ msgid "C_onnect"
+#~ msgstr "C_eangail"
+
+#~ msgid " "
+#~ msgstr " "
+
+#~ msgid "_Add"
+#~ msgstr "_Suim"
+
+#~ msgid " "
+#~ msgstr " "
+
+#~ msgid "Jabber.org"
+#~ msgstr "Jabber.org"
diff --git a/gnome-2-22/po/gl.po b/gnome-2-22/po/gl.po
new file mode 100644
index 000000000..a5c903144
--- /dev/null
+++ b/gnome-2-22/po/gl.po
@@ -0,0 +1,1454 @@
+# translation of gl.po to Galego
+# translation of empathy.HEAD.gl.po to
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+#
+# Ignacio Casal Quinteiro <icq@svn.gnome.org>, 2007, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: gl\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-02-12 15:13+0100\n"
+"PO-Revision-Date: 2008-02-12 15:13+0100\n"
+"Last-Translator: Ignacio Casal Quinteiro <icq@svn.gnome.org>\n"
+"Language-Team: Galego <proxecto@trasno.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: ../data/empathy.desktop.in.in.h:1
+msgid "Empathy Instant Messenger"
+msgstr "Mensaxería na Internet de Empathy"
+
+#: ../data/empathy.desktop.in.in.h:2
+msgid "Send and receive instant messages"
+msgstr "Envíe e reciba mensaxes instantáneas"
+
+#: ../data/empathy.schemas.in.h:1
+msgid "Always open a separate chat window for new chats."
+msgstr "Abrir sempre nunha ventá de conversa separada para conversas novas."
+
+#: ../data/empathy.schemas.in.h:2
+msgid ""
+"Character to add after nickname when using nick completion (tab) in group "
+"chat."
+msgstr ""
+"Carácter a engadir despois do alcume cando se usa completado de alcume "
+"(separador) na conversa de grupo."
+
+#: ../data/empathy.schemas.in.h:3
+msgid "Chat window theme"
+msgstr "Tema da ventá de conversa"
+
+#: ../data/empathy.schemas.in.h:4
+msgid "Checks if Empathy should autoconnect on startup"
+msgstr "Comproba se Empathy debería conectarse automaticamente ao inicio"
+
+#: ../data/empathy.schemas.in.h:5
+msgid "Checks if NetworkManager should be used"
+msgstr "Comproba se se debería usar NetworkManager"
+
+#: ../data/empathy.schemas.in.h:6
+msgid "Checks if Salut account is created"
+msgstr "Comproba se se creou a conta Salut"
+
+#: ../data/empathy.schemas.in.h:7
+msgid "Comma separated list of spell checker languages to use (e.g. en, fr, nl)."
+msgstr ""
+"Lista separada por comas de idiomas que se usarán na revisión ortográfica "
+"(ex. en, gl, es)."
+
+#: ../data/empathy.schemas.in.h:8
+msgid "Compact contact list"
+msgstr "Lista compacta de contactos"
+
+#: ../data/empathy.schemas.in.h:9
+msgid "Contact list sort criterium"
+msgstr "Criterio de ordenamento da lista de contactos"
+
+#: ../data/empathy.schemas.in.h:10
+msgid "Default directory to select an avatar image from"
+msgstr "Directorio predeterminado para seleccionar un avatar"
+
+#: ../data/empathy.schemas.in.h:11
+msgid "Enable popup when contact is available"
+msgstr "Activar ventá emerxente cando un contacto está dispoñible"
+
+#: ../data/empathy.schemas.in.h:12
+msgid "Enable sound when away"
+msgstr "Activar son ao ausentarse"
+
+#: ../data/empathy.schemas.in.h:13
+msgid "Enable sound when busy"
+msgstr "Activar son cando se está ocupado"
+
+#: ../data/empathy.schemas.in.h:14
+msgid "Enable spell checker"
+msgstr "Activar corrector ortográfico"
+
+#: ../data/empathy.schemas.in.h:15
+msgid "Hide main window"
+msgstr "Ocultar a ventá principal"
+
+#: ../data/empathy.schemas.in.h:16
+msgid "Hide the main window."
+msgstr "Ocultar a ventá principal."
+
+#: ../data/empathy.schemas.in.h:17
+msgid "Nick completed character"
+msgstr "Carácter de completado de alcume"
+
+#: ../data/empathy.schemas.in.h:18
+msgid "Open new chats in separate windows"
+msgstr "Abrir conversas novas en ventás separadas"
+
+#: ../data/empathy.schemas.in.h:19
+msgid "Show avatars"
+msgstr "Mostrar avatares"
+
+#: ../data/empathy.schemas.in.h:20
+msgid "Show hint about closing the main window"
+msgstr "Mostrar consello sobre como pechar a ventá principal"
+
+#: ../data/empathy.schemas.in.h:21
+msgid "Show offline contacts"
+msgstr "Mostrar os contactos desconectados"
+
+#: ../data/empathy.schemas.in.h:22
+msgid "Spell checking languages"
+msgstr "Linguas para revisión ortográfica"
+
+#: ../data/empathy.schemas.in.h:23
+msgid "The last directory that an avatar image was chosen from."
+msgstr "O último directorio do que foi escollido un avatar."
+
+#: ../data/empathy.schemas.in.h:24
+msgid "The theme that is used to display the conversation in chat windows."
+msgstr "O tema que se usará para mostrar a conversa nas ventás de conversas."
+
+#: ../data/empathy.schemas.in.h:25
+msgid "Use graphical smileys"
+msgstr "Usar emoticonas gráficas"
+
+#: ../data/empathy.schemas.in.h:26
+msgid "Use notification sounds"
+msgstr "Usar sons de notificación"
+
+#: ../data/empathy.schemas.in.h:27
+msgid "Use theme for chat rooms"
+msgstr "Usar tema para salas de conversas"
+
+#: ../data/empathy.schemas.in.h:28
+msgid ""
+"Whether or not Empathy should automatically login to your accounts on "
+"startup."
+msgstr ""
+"Indica ou non se Empathy debería inciar sesión automaticamente nas súas ao "
+"inicio."
+
+#: ../data/empathy.schemas.in.h:29
+msgid "Whether or not the Salut account has been created on the first empathy run."
+msgstr "Indica se a conta Salut creouse cando executou por primeira vez Empathy."
+
+#: ../data/empathy.schemas.in.h:30
+msgid ""
+"Whether or not the network manager should be used to automatically "
+"disconnect/reconnect."
+msgstr ""
+"Indica ou non se se debería usar network manager para desconectar/reconectar "
+"automaticamente."
+
+#: ../data/empathy.schemas.in.h:31
+msgid ""
+"Whether or not to check words typed against the languages you want to check "
+"with."
+msgstr ""
+"Indica se se debe ou non revisar as palabras tecleadas con respecto aos "
+"idiomas cos que quere comprobalo."
+
+#: ../data/empathy.schemas.in.h:32
+msgid "Whether or not to convert smileys into graphical images in conversations."
+msgstr ""
+"Indica se debe ou non converter as emoticonas en imaxes gráficas nas "
+"conversas."
+
+#: ../data/empathy.schemas.in.h:33
+msgid "Whether or not to play a sound when messages arrive."
+msgstr "Indica se debe reproducir un son cando cheguen mensaxes."
+
+#: ../data/empathy.schemas.in.h:34
+msgid "Whether or not to play sounds when away."
+msgstr "Indica se debe ou non reproducir sons cando esté ausente."
+
+#: ../data/empathy.schemas.in.h:35
+msgid "Whether or not to play sounds when busy."
+msgstr "Indica se debe ou non reproducir sons cando esté ocupado."
+
+#: ../data/empathy.schemas.in.h:36
+msgid "Whether or not to show a popup when a contact becomes available."
+msgstr ""
+"Indica se debe ou non mostrar unha ventá emerxente cando un contacto volva a "
+"estar dispoñible."
+
+#: ../data/empathy.schemas.in.h:37
+msgid ""
+"Whether or not to show avatars for contacts in the contact list and chat "
+"windows."
+msgstr ""
+"Indica se debe ou non mostrar os avatares para os contactos na lista de "
+"contactos e ventás de conversas."
+
+#: ../data/empathy.schemas.in.h:38
+msgid "Whether or not to show contacts that are offline in the contact list."
+msgstr ""
+"Indica se debe ou non mostrar os contactos que están deconectados na lista "
+"de contactos"
+
+#: ../data/empathy.schemas.in.h:39
+msgid ""
+"Whether or not to show the message dialog about closing the main window with "
+"the 'x' button in the title bar."
+msgstr ""
+"Indica se debe ou non mostrar unha mensaxe de diálogo sobre como pechar a "
+"ventá principal co botón 'x' na barra de título."
+
+#: ../data/empathy.schemas.in.h:40
+msgid "Whether to show the contact list in compact mode or not."
+msgstr "Indica se debe ou non mostrar a lista de contactos en modo compacto."
+
+#: ../data/empathy.schemas.in.h:41
+msgid "Whether to use the theme for chat rooms or not."
+msgstr "Indica se debe ou non usar o tema para salas de conversa."
+
+#: ../data/empathy.schemas.in.h:42
+msgid ""
+"Which criterium to use when sorting the contact list. Default is to use sort "
+"by the contact's name with the value \"name\". A value of \"state\" will "
+"sort the contact list by state."
+msgstr ""
+"Que criterio usar ao ordenar a lista de contactos. O criterio por defecto é "
+"ordenar polo nome do contacto co valor \"name\". Un valor de \"state\" "
+"ordenará a lista polo estado."
+
+#: ../libempathy/empathy-tp-contact-list.c:724 ../src/empathy.c:149
+msgid "People nearby"
+msgstr "Xente máis próxima"
+
+#: ../libempathy/empathy-utils.c:468
+msgid "Available"
+msgstr "Dispoñible"
+
+#: ../libempathy/empathy-utils.c:470
+msgid "Busy"
+msgstr "Ocupado"
+
+#: ../libempathy/empathy-utils.c:473
+msgid "Away"
+msgstr "Ausente"
+
+#: ../libempathy/empathy-utils.c:475
+msgid "Hidden"
+msgstr "Oculto"
+
+#: ../libempathy/empathy-utils.c:478
+msgid "Offline"
+msgstr "Desconectado"
+
+#: ../libempathy-gtk/empathy-about-dialog.c:63
+msgid ""
+"Empathy is free software; you can redistribute it and/or modify it under the "
+"terms of the GNU General Public License as published by the Free Software "
+"Foundation; either version 2 of the License, or (at your option) any later "
+"version."
+msgstr ""
+"O Empathy é software libre; pode redistribuílo ou modificadlo baixo os "
+"termos da Licenza Pública Xeral de GNU publicada pola Free Software "
+"Foundation; xa sexa na versión 2 da Licenza como (segundo a súa escolla) en "
+"calquera versión posterior."
+
+#: ../libempathy-gtk/empathy-about-dialog.c:67
+msgid ""
+"Empathy is distributed in the hope that it will be useful, but WITHOUT ANY "
+"WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS "
+"FOR A PARTICULAR PURPOSE. See the GNU General Public License for more "
+"details."
+msgstr ""
+"O Empathy distribúese coa esperanza de que sexa útil, mais SEN NINGUNHA "
+"GARANTÍA; mesmo sen a garantía implícita de COMERCIALIZACIÓN ou IDONEIDADE "
+"PARA UN PROPÓSITO PARTICULAR. Para máis detalles vexa a Licenza Pública "
+"Xeral de GNU."
+
+#: ../libempathy-gtk/empathy-about-dialog.c:71
+msgid ""
+"You should have received a copy of the GNU General Public License along with "
+"Empathy; if not, write to the Free Software Foundation, Inc., 51 Franklin "
+"Street, Fifth Floor, Boston, MA 02110-130159 USA"
+msgstr ""
+"Debeu recibir unha copia da Licenza Pública Xeral de GNU xunto co Nautilus; "
+"en caso contrario, escriba á Free Software Foundation, Inc., 51 Franklin "
+"Street, Fifth Floor, Boston, MA 02110-130159 USA"
+
+#: ../libempathy-gtk/empathy-about-dialog.c:99
+msgid "An Instant Messaging client for GNOME"
+msgstr "Un cliente de mensaxería instantánea para Gnome"
+
+#: ../libempathy-gtk/empathy-about-dialog.c:105
+msgid "translator-credits"
+msgstr "Ignacio Casal Quinteiro <nacho.resa@gmail.com>"
+
+#: ../libempathy-gtk/empathy-account-chooser.c:337
+msgid "All"
+msgstr "Todo"
+
+#: ../libempathy-gtk/empathy-account-widget.c:276
+#: ../libempathy-gtk/empathy-account-widget.c:321
+#, c-format
+msgid "%s:"
+msgstr "%s:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:1
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:1
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:1
+msgid "<b>Advanced</b>"
+msgstr "<b>Avanzado</b>"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:2
+msgid "<b>Override server settings</b>"
+msgstr "<b>Sobreescribir a configuración do servidor</b>"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:3
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:2
+msgid "Forget password and clear the entry."
+msgstr "Olvidar o contrasinal e limpar a entrada."
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:4
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:3
+msgid "Login I_D:"
+msgstr "I_D de sesión:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:5
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:4
+msgid "Pass_word:"
+msgstr "_Contrasinal:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:6
+msgid "Pri_ority:"
+msgstr "Pri_oridade:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:7
+msgid "Reso_urce:"
+msgstr "Rec_urso:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:8
+msgid "Use old SS_L"
+msgstr "Usar antigo SS_L"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:9
+msgid "_Encryption required (TLS/SSL)"
+msgstr "É n_ecesario cifrado (TLS/SSL)"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:10
+msgid "_Ignore SSL certificate errors"
+msgstr "_Ignorar erros do certificado SSL"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:11
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:5
+msgid "_Port:"
+msgstr "_Porto:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:12
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:6
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:10
+msgid "_Server:"
+msgstr "_Servidor:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:13
+msgid "jabber account settings"
+msgstr "axustes da conta jabber"
+
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:7
+msgid "msn account settings"
+msgstr "axustes da conta msn"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:2
+msgid "_E-mail:"
+msgstr "_Correo-e:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:3
+msgid "_First Name: "
+msgstr "_Nome: "
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:4
+msgid "_Jabber ID:"
+msgstr "ID _Jabber:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:5
+msgid "_Last Name:"
+msgstr "Ape_lidos:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:6
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:8
+msgid "_Nickname:"
+msgstr "Alcu_me:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:7
+msgid "_Published Name:"
+msgstr "Nome _publicado:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:8
+msgid "salut account settings"
+msgstr "axustes da conta salut"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:224
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to start configuring."
+msgstr ""
+"Para engadir unha nova conta, pode premer no botón 'Engadir' e crearase unha "
+"nova entrada para que a configure."
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:228
+msgid ""
+"To add a new account, you first have to install a backend for each protocol "
+"you want to use."
+msgstr ""
+"Para engadir unha nova conta, primeiro debe instalar un \"backend\" para "
+"cada protocolo que queira usar."
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:235
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:2
+msgid "<b>No Account Selected</b>"
+msgstr "<b>Ningunha conta seleccionada</b>"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:236
+msgid ""
+"\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want "
+"to configure in the list on the left."
+msgstr ""
+"\n"
+"\n"
+"Se non quere engadir unha conta, simplemente prema na conta que quere "
+"configurar na lista da esquerda."
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:242
+msgid "<b>No Accounts Configured</b>"
+msgstr "<b>Non hai ningunha conta configurada</b>"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:398
+msgid "Enabled"
+msgstr "Activado"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:408
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:4
+msgid "Accounts"
+msgstr "Contas"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:891
+#, c-format
+msgid ""
+"You are about to remove your %s account!\n"
+"Are you sure you want to proceed?"
+msgstr ""
+"Vai a eliminar a súa conta %s!\n"
+"Está seguro de que quere proceder?"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:897
+msgid ""
+"Any associated conversations and chat rooms will NOT be removed if you "
+"decide to proceed.\n"
+"\n"
+"Should you decide to add the account back at a later time, they will still "
+"be available."
+msgstr ""
+"Calquer conversa ou sala de conversa asociada NON se eliminará se decide "
+"proceder.\n"
+"\n"
+"Debería decidir engadir a conta máis tarde, estarán aínda dispoñibles."
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:1
+msgid "<b>New Account</b>"
+msgstr "<b>Nova conta</b>"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:3
+msgid "<b>Settings</b>"
+msgstr "<b>Axustes</b>"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:5
+msgid "Cr_eate"
+msgstr "Cr_ear"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:6
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to started configuring.\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want "
+"to configure in the list on the left."
+msgstr ""
+"Para engadir unha nova conta, pode premer no botón 'Engadir' e crearase unha "
+"nova entrada para que a configure.\n"
+"\n"
+"Se non quere engadir unha conta, simplemente prema na conta que quere "
+"configurar na lista da esquerda."
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:9
+msgid "Type:"
+msgstr "Tipo:"
+
+#: ../libempathy-gtk/empathy-avatar-chooser.c:449
+msgid "Select Your Avatar Image"
+msgstr "Seleccione o seu Avatar"
+
+#: ../libempathy-gtk/empathy-avatar-chooser.c:452
+msgid "No Image"
+msgstr "Sen imaxe"
+
+#: ../libempathy-gtk/empathy-avatar-chooser.c:512
+msgid "Images"
+msgstr "Imaxes"
+
+#: ../libempathy-gtk/empathy-avatar-chooser.c:516
+msgid "All Files"
+msgstr "Todos os ficheiros"
+
+#: ../libempathy-gtk/empathy-avatar-image.c:298
+msgid "Click to enlarge"
+msgstr "Prema para agrandar"
+
+#: ../libempathy-gtk/empathy-call-window.c:116
+#, c-format
+msgid "Call from %s"
+msgstr "Chamada de %s"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:1
+#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:2
+msgid "Call"
+msgstr "Chamar"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:2
+msgid "Input"
+msgstr "Entrada"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:3
+msgid "Mute"
+msgstr "Silenciar"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:4
+msgid "Output"
+msgstr "Saída"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:5
+msgid "Send Video"
+msgstr "Envía vídeo"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:6
+msgid "Volume"
+msgstr "Volume"
+
+#: ../libempathy-gtk/empathy-chat.c:436
+msgid "Disconnected"
+msgstr "Desconectado"
+
+#: ../libempathy-gtk/empathy-chat.c:556
+msgid "offline"
+msgstr "desconectado"
+
+#: ../libempathy-gtk/empathy-chat.c:559
+msgid "invalid contact"
+msgstr "contacto inválido"
+
+#: ../libempathy-gtk/empathy-chat.c:562
+msgid "permission denied"
+msgstr "permiso denegado"
+
+#: ../libempathy-gtk/empathy-chat.c:565
+msgid "too long message"
+msgstr "mensaxe demasiado longa"
+
+#: ../libempathy-gtk/empathy-chat.c:568
+msgid "not implemented"
+msgstr "sen implementar"
+
+#: ../libempathy-gtk/empathy-chat.c:571
+msgid "unknown"
+msgstr "descoñecido"
+
+#: ../libempathy-gtk/empathy-chat.c:575
+#, c-format
+msgid "Error sending message '%s': %s"
+msgstr "Erro enviando a mensaxe '%s': %s"
+
+#: ../libempathy-gtk/empathy-chat.c:1032
+msgid "Insert Smiley"
+msgstr "Inserir emoticona"
+
+#: ../libempathy-gtk/empathy-chat.c:1079
+msgid "_Check Word Spelling..."
+msgstr "_Comprobar ortografía..."
+
+#: ../libempathy-gtk/empathy-chat.c:1508
+msgid "Connected"
+msgstr "Conectado"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:1
+msgid "C_lear"
+msgstr "_Limpar"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:2
+msgid "Ca_ll"
+msgstr "C_hamar"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:3
+msgid "Change _Topic..."
+msgstr "Cambiar _tema..."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:4
+#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:3
+msgid "Chat"
+msgstr "Conversa"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:5
+msgid "Contact Infor_mation"
+msgstr "Infor_mación do contacto"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:6
+msgid "Cu_t"
+msgstr "Cor_tar"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:7
+msgid "In_vite..."
+msgstr "In_vitar..."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:8
+msgid "Insert _Smiley"
+msgstr "Inserir _emoticona"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:9
+msgid "Invitation _message:"
+msgstr "_Mensaxe de invitación:"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:10
+msgid "Invite"
+msgstr "Invitar"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:11
+#: ../libempathy-gtk/empathy-main-window.glade.h:4
+msgid "Join _New..."
+msgstr "Unirse a _novo..."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:12
+msgid "Move Tab _Left"
+msgstr "Mover separador á _esquerda"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:13
+msgid "Move Tab _Right"
+msgstr "Mover separador á _dereita"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:14
+msgid "Select who would you like to invite:"
+msgstr "Seleccione a quen quere invitar:"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:15
+msgid "You have been invited to join a chat conference."
+msgstr "Invitáronlle a unirse a unha conferencia."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:16
+#: ../libempathy-gtk/empathy-main-window.glade.h:9
+msgid "_Add Contact..."
+msgstr "_Engadir contacto..."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:17
+msgid "_Add To Favorites"
+msgstr "_Engadir a favoritos"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:18
+msgid "_Close"
+msgstr "_Pechar"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:19
+#: ../libempathy-gtk/empathy-main-window.glade.h:11
+msgid "_Contents"
+msgstr "_Contidos"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:20
+msgid "_Conversation"
+msgstr "_Conversa"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:21
+msgid "_Copy"
+msgstr "_Copiar"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:22
+msgid "_Detach Tab"
+msgstr "_Desacoplar separador"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:23
+#: ../libempathy-gtk/empathy-contact-list-view.c:217
+#: ../libempathy-gtk/empathy-main-window.glade.h:12
+msgid "_Edit"
+msgstr "_Editar"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:24
+#: ../libempathy-gtk/empathy-main-window.glade.h:13
+msgid "_Help"
+msgstr "A_xuda"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:25
+msgid "_Next Tab"
+msgstr "Segui_nte separador"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:26
+msgid "_Paste"
+msgstr "_Pegar"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:27
+msgid "_Previous Tab"
+msgstr "Separador an_terior"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:28
+#: ../libempathy-gtk/empathy-main-window.glade.h:18
+msgid "_Room"
+msgstr "_Sala"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:29
+msgid "_Show Contacts"
+msgstr "_Mostrar contactos"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:30
+msgid "_Tabs"
+msgstr "_Separadores"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:31
+#: ../libempathy-gtk/empathy-contact-list-view.c:233
+#: ../libempathy-gtk/empathy-main-window.glade.h:19
+msgid "_View Previous Conversations"
+msgstr "_Ver conversas anteriores"
+
+#: ../libempathy-gtk/empathy-chat-view.c:441
+msgid "_Copy Link Address"
+msgstr "_Copiar o enderezo da ligazón"
+
+#: ../libempathy-gtk/empathy-chat-view.c:449
+msgid "_Open Link"
+msgstr "_Abrir ligazón"
+
+#: ../libempathy-gtk/empathy-chat-window.c:699
+#, c-format
+msgid "Conversations (%d)"
+msgstr "Conversas (%d)"
+
+#: ../libempathy-gtk/empathy-chat-window.c:1299
+msgid "Typing a message."
+msgstr "Escribindo unha mensaxe."
+
+#: ../libempathy-gtk/empathy-chatrooms-window.c:258
+msgid "Name"
+msgstr "Nome"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.c:276
+msgid "Room"
+msgstr "Sala"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.c:285
+msgid "Auto Connect"
+msgstr "Conectar automaticamente"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:1
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:5
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:1
+#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:1
+msgid "Account:"
+msgstr "Conta:"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:2
+msgid "Edit Favorite Room"
+msgstr "Editar sala favorita"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:3
+msgid "Join room on start_up"
+msgstr "Unirse a unha sala ao _iniciar"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:4
+msgid "Join this chat room when Empathy starts and you are connected"
+msgstr "Unirse a esta sala cando se inicie Empathy e esté conectado"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:5
+msgid "Manage Favorite Rooms"
+msgstr "Xestionar as salas favoritas"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:6
+msgid "N_ame:"
+msgstr "N_ome:"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:7
+msgid "S_erver:"
+msgstr "S_ervidor:"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:9
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:9
+msgid "_Room:"
+msgstr "_Sala:"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:176
+msgid "Personal Information"
+msgstr "Información persoal"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:179
+msgid "Edit Contact Information"
+msgstr "Editar a información do contacto"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:182
+msgid "Contact Information"
+msgstr "Información do contacto"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:277
+msgid "I would like to add you to my contact list."
+msgstr "Gustaríame engadirte á miña lista de contactos."
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:301
+msgid "New Contact"
+msgstr "Novo contacto"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.glade.h:1
+msgid "Decide _Later"
+msgstr "Decidir _despois"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.glade.h:2
+msgid "Subscription Request"
+msgstr "Solicitude de subscrición"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:197
+msgid "_Contact"
+msgstr "_Contacto"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:201
+msgid "_Group"
+msgstr "_Grupo"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:205
+#: ../libempathy-gtk/empathy-main-window.glade.h:10
+msgid "_Chat"
+msgstr "_Conversa"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:205
+msgid "Chat with contact"
+msgstr "Conversar con contacto"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:209
+msgid "Infor_mation"
+msgstr "Infor_mación"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:209
+msgid "View contact information"
+msgstr "Ver a información do contacto"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:213
+msgid "Re_name"
+msgstr "Re_nomear"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:213
+msgid "Rename"
+msgstr "Renomear"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:217
+msgid "Edit the groups and name for this contact"
+msgstr "Editar grupos e nome para este contacto"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:221
+msgid "_Remove"
+msgstr "_Eliminar"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:221
+msgid "Remove contact"
+msgstr "Eliminar contacto"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:225
+msgid "_Invite to Chat Room"
+msgstr "_Invitar á sala de conversa"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:225
+msgid "Invite to a currently open chat room"
+msgstr "Invitar á sala de conversa aberta actualmente"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:229
+msgid "_Send File..."
+msgstr "_Enviar ficheiro..."
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:229
+msgid "Send a file"
+msgstr "Enviar un ficheiro"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:233
+msgid "View previous conversations with this contact"
+msgstr "Ver as conversas previas deste contacto"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:238
+msgid "_Call"
+msgstr "_Chamar"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:238
+msgid "Start a voice or video conversation with this contact"
+msgstr "Inicia unha conversa de voz ou vídeo con este contacto"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:1469
+msgid "Sorry, I don't want you in my contact list anymore."
+msgstr "Síntoo, non te quero na miña lista de contactos máis."
+
+#: ../libempathy-gtk/empathy-contact-widget.c:688
+msgid "Select"
+msgstr "Seleccionar"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:698
+#: ../libempathy-gtk/empathy-main-window.c:609
+msgid "Group"
+msgstr "Grupo"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:1
+msgid "<b>Client Information</b>"
+msgstr "<b>Información de cliente</b>"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:2
+msgid "<b>Contact Details</b>"
+msgstr "<b>Detalles do contacto</b>"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:3
+msgid "<b>Contact</b>"
+msgstr "<b>Contacto</b>"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:4
+msgid "<b>Groups</b>"
+msgstr "<b>Grupos</b>"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:6
+msgid "Alias:"
+msgstr "Alcume:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:7
+msgid "Birthday:"
+msgstr "Cumpreanos:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:8
+msgid "Client:"
+msgstr "Cliente:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:9
+msgid "Contact information"
+msgstr "Información do contacto"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:10
+msgid "Email:"
+msgstr "Correo-e:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:11
+msgid "Fullname:"
+msgstr "Nome completo:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:12
+msgid "Identifier:"
+msgstr "Identificador:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:13
+msgid "Information requested..."
+msgstr "Información solicitada..."
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:14
+msgid "OS:"
+msgstr "SO:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:15
+msgid ""
+"Select the groups you want this contact to appear in, you can select more "
+"than one group or no groups."
+msgstr ""
+"Seleccione os grupos nos que quere que apareza este contacto, pode "
+"seleccionar máis de un ou ningún grupo."
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:16
+msgid "Version:"
+msgstr "Versión:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:17
+msgid "Web site:"
+msgstr "Sitio web:"
+
+#: ../libempathy-gtk/empathy-group-chat.c:251
+msgid "Enter the new topic you want to set for this room:"
+msgstr "Introduza o novo tema que quere establecer nesta sala:"
+
+#: ../libempathy-gtk/empathy-group-chat.c:364
+#, c-format
+msgid "%s has joined the room"
+msgstr "%s uniuse á sala"
+
+#: ../libempathy-gtk/empathy-group-chat.c:367
+#, c-format
+msgid "%s has left the room"
+msgstr "%s deixou a sala"
+
+#: ../libempathy-gtk/empathy-group-chat.c:447
+#, c-format
+msgid "Topic: %s"
+msgstr "Tema: %s"
+
+#: ../libempathy-gtk/empathy-group-chat.c:575
+#, c-format
+msgid "Topic set to: %s"
+msgstr "Tema establecido a: %s"
+
+#: ../libempathy-gtk/empathy-group-chat.c:577
+msgid "No topic defined"
+msgstr "Tema sen definir"
+
+#: ../libempathy-gtk/empathy-group-chat.glade.h:1
+msgid "<b>Topic:</b>"
+msgstr "<b>Tema:</b>"
+
+#: ../libempathy-gtk/empathy-group-chat.glade.h:2
+msgid "Group Chat"
+msgstr "Grupo de conversa"
+
+#: ../libempathy-gtk/empathy-log-window.c:499
+msgid "Account"
+msgstr "Conta"
+
+#: ../libempathy-gtk/empathy-log-window.c:506
+msgid "Conversation"
+msgstr "Conversa"
+
+#: ../libempathy-gtk/empathy-log-window.c:516
+msgid "Date"
+msgstr "Data"
+
+#: ../libempathy-gtk/empathy-log-window.glade.h:1
+msgid "Conversations"
+msgstr "Conversas"
+
+#: ../libempathy-gtk/empathy-log-window.glade.h:2
+msgid "Previous Conversations"
+msgstr "Conversas anteriores"
+
+#: ../libempathy-gtk/empathy-log-window.glade.h:3
+msgid "Search"
+msgstr "Buscar"
+
+#: ../libempathy-gtk/empathy-log-window.glade.h:4
+msgid "_For:"
+msgstr "_Por:"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.c:286
+msgid "Chat Rooms"
+msgstr "Salas de conversa"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:2
+msgid "Browse:"
+msgstr "Examinar:"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:3
+msgid "Enter the room name to join here or click on one or more rooms in the list."
+msgstr ""
+"Introduza o nome da sala á que se quere unir aquí ou prema nunha ou máis "
+"salas na lista."
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:4
+msgid ""
+"Enter the server which hosts the room, or leave it empty if the room is on "
+"the current account's server"
+msgstr ""
+"Introduza o servidor que aloxa a sala ou déixeo baleiro se a sala está na "
+"conta do servidor actual"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:5
+msgid "Join"
+msgstr "Unirse"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:6
+msgid "Join New"
+msgstr "Unirse a nova"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:7
+msgid "Re_fresh"
+msgstr "Ac_tualizar"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:8
+msgid "This list represents all chat rooms hosted on the server you have entered."
+msgstr ""
+"Esta lista representa todas as salas de conversas que están no servidor no "
+"que entrou."
+
+#: ../libempathy-gtk/empathy-main-window.c:266
+msgid "Show and edit accounts"
+msgstr "Mostrar e editar contas"
+
+#: ../libempathy-gtk/empathy-main-window.c:630
+msgid "Contact"
+msgstr "Contacto"
+
+#: ../libempathy-gtk/empathy-main-window.c:813
+msgid "_Edit account"
+msgstr "_Editar conta"
+
+#: ../libempathy-gtk/empathy-main-window.c:896
+msgid "Network error"
+msgstr "Erro da rede"
+
+#: ../libempathy-gtk/empathy-main-window.c:899
+msgid "Authentication failed"
+msgstr "Fallou a autenticación"
+
+#: ../libempathy-gtk/empathy-main-window.c:902
+msgid "Encryption error"
+msgstr "Erro de cifrado"
+
+#: ../libempathy-gtk/empathy-main-window.c:905
+msgid "Name in use"
+msgstr "Nome en uso"
+
+#: ../libempathy-gtk/empathy-main-window.c:908
+msgid "Certificate not provided"
+msgstr "Non se proporcionou ningún certificado"
+
+#: ../libempathy-gtk/empathy-main-window.c:911
+msgid "Certificate untrusted"
+msgstr "Certificado non fiable"
+
+#: ../libempathy-gtk/empathy-main-window.c:914
+msgid "Certificate expired"
+msgstr "Certificado caducado"
+
+#: ../libempathy-gtk/empathy-main-window.c:917
+msgid "Certificate not activated"
+msgstr "Certificado non activado"
+
+#: ../libempathy-gtk/empathy-main-window.c:920
+msgid "Certificate hostname mismatch"
+msgstr "O nome do host do certificado non coincide"
+
+#: ../libempathy-gtk/empathy-main-window.c:923
+msgid "Certificate fingerprint mismatch"
+msgstr "A pegada do certificado non coincide"
+
+#: ../libempathy-gtk/empathy-main-window.c:926
+msgid "Certificate self signed"
+msgstr "O certificado está asinado por si mesmo"
+
+#: ../libempathy-gtk/empathy-main-window.c:929
+msgid "Certificate error"
+msgstr "Erro de certificado"
+
+#: ../libempathy-gtk/empathy-main-window.c:932
+msgid "Unknown error"
+msgstr "Erro descoñecido"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:1
+msgid "Contact List"
+msgstr "Lista de contactos"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:2
+msgid "Context"
+msgstr "Contexto"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:3
+msgid "Join _Favorites"
+msgstr "Unir a _favoritos"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:5
+msgid "Manage Favorites"
+msgstr "Xestionar favoritos"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:6
+msgid "Show _Offline Contacts"
+msgstr "Mostrar contactos _desconectados"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:7
+#: ../megaphone/data/GNOME_Megaphone_Applet.xml.h:1
+#: ../nothere/data/GNOME_NotHere_Applet.xml.h:1
+msgid "_About"
+msgstr "_Sobre"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:8
+msgid "_Accounts"
+msgstr "_Contas"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:14
+#: ../libempathy-gtk/empathy-status-icon.glade.h:2
+msgid "_New Conversation..."
+msgstr "_Nova conversa..."
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:15
+msgid "_Personal Information"
+msgstr "Información _persoal"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:16
+#: ../megaphone/data/GNOME_Megaphone_Applet.xml.h:3
+msgid "_Preferences"
+msgstr "_Preferencias"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:17
+#: ../libempathy-gtk/empathy-status-icon.glade.h:3
+msgid "_Quit"
+msgstr "_Saír"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:4
+msgid "Contact ID:"
+msgstr "ID de contacto:"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:5
+msgid "New Conversation"
+msgstr "Nova conversa"
+
+#: ../libempathy-gtk/empathy-preferences.c:247
+msgid "Language"
+msgstr "Lingua"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:1
+msgid "<b>Appearance</b>"
+msgstr "<b>Aparencia</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:2
+msgid "<b>Audio</b>"
+msgstr "<b>Son</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:3
+msgid "<b>Behaviour</b>"
+msgstr "<b>Comportamento</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:4
+msgid "<b>Contact List</b>"
+msgstr "<b>Lista de contactos</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:5
+msgid "<b>Enable spell checking for languages:</b>"
+msgstr "<b>Activar corrección ortográfica para as linguas:</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:6
+msgid "<b>Options</b>"
+msgstr "<b>Opcións</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:7
+msgid "<b>Visual</b>"
+msgstr "<b>Visual</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:8
+msgid ""
+"<small>The list of languages reflects only the languages for which you have "
+"a dictionary installed.</small>"
+msgstr ""
+"<small>A lista de linguas reflexa só as linguas para as cales ten instalado "
+"un dicionario.</small>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:9
+msgid "Automatically _connect on startup "
+msgstr "_Conectar automaticamente ao inicio"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:10
+msgid "Avatars are user chosen images shown in the contact list"
+msgstr ""
+"Os avatares son imaxes escollidas polo usuario que se mostran na lista de "
+"contactos"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:11
+msgid "Chat Th_eme:"
+msgstr "T_ema da conversa:"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:12
+msgid "Display notifications when contacts come _online"
+msgstr "Mostrar notificacións cando se _conecten os contactos"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:13
+msgid "Enable sounds when _away"
+msgstr "Activar sons cando está _ausente"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:14
+msgid "Enable sounds when _busy"
+msgstr "Activar sons cando está _ocupado"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:15
+msgid "General"
+msgstr "Xeral"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:16
+msgid "Notifications"
+msgstr "Notificacións"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:17
+msgid "Preferences"
+msgstr "Preferencias"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:18
+msgid "Show _avatars"
+msgstr "Mostrar _avatares"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:19
+msgid "Show _smileys as images"
+msgstr "Mostrar _emoticonas como imaxes"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:20
+msgid "Show co_mpact contact list"
+msgstr "Mostrar lista de contactos co_mpacta"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:21
+msgid "Sort by _name"
+msgstr "Ordenar por _nome"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:22
+msgid "Sort by s_tate"
+msgstr "Ordenar por e_stado"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:23
+msgid "Spell Checking"
+msgstr "Comprobación ortográfica"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:24
+msgid "Themes"
+msgstr "Temas"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:25
+msgid "_Open new chats in separate windows"
+msgstr "_Abrir as conversas novas en ventás separadas"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:26
+msgid "_Play sound when messages arrive"
+msgstr "_Reproducir son cando cheguen mensaxes"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:27
+msgid "_Use for chat rooms"
+msgstr "_Usar para salas de conversa"
+
+#. Custom messages
+#: ../libempathy-gtk/empathy-presence-chooser.c:691
+msgid "Custom messages..."
+msgstr "Mensaxes personalizadas..."
+
+#: ../libempathy-gtk/empathy-presence-chooser.glade.h:1
+msgid "Custom message"
+msgstr "Mensaxe personalizada"
+
+#: ../libempathy-gtk/empathy-presence-chooser.glade.h:2
+msgid "Message:"
+msgstr "Mensaxe:"
+
+#: ../libempathy-gtk/empathy-presence-chooser.glade.h:3
+msgid "Save message"
+msgstr "Gardar mensaxe"
+
+#: ../libempathy-gtk/empathy-presence-chooser.glade.h:4
+msgid "Status:"
+msgstr "Estado:"
+
+#: ../libempathy-gtk/empathy-private-chat.c:229
+#, c-format
+msgid "%s went offline"
+msgstr "%s desconectouse"
+
+#: ../libempathy-gtk/empathy-private-chat.c:243
+#, c-format
+msgid "%s has come online"
+msgstr "%s conectouse"
+
+#: ../libempathy-gtk/empathy-spell-dialog.c:85
+msgid "Word"
+msgstr "Palabra"
+
+#: ../libempathy-gtk/empathy-spell-dialog.c:258
+msgid "Suggestions for the word"
+msgstr "Suxestións para a palabra"
+
+#: ../libempathy-gtk/empathy-spell-dialog.glade.h:1
+msgid "Spell Checker"
+msgstr "Comprobador ortográfico"
+
+#: ../libempathy-gtk/empathy-spell-dialog.glade.h:2
+msgid "Suggestions for the word:"
+msgstr "Suxestións para a palabra:"
+
+#: ../libempathy-gtk/empathy-status-icon.c:354
+#, c-format
+msgid ""
+"New message from %s:\n"
+"%s"
+msgstr ""
+"Mensaxe nova de %s:\n"
+"%s"
+
+#: ../libempathy-gtk/empathy-status-icon.c:625
+#, c-format
+msgid "Subscription requested by %s"
+msgstr "Solicitude de subscrición de %s"
+
+#: ../libempathy-gtk/empathy-status-icon.c:628
+#, c-format
+msgid ""
+"\n"
+"Message: %s"
+msgstr ""
+"\n"
+"Mensaxe: %s"
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:1
+msgid "Status"
+msgstr "Estado"
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:4
+msgid "_Show Contact List"
+msgstr "_Mostrar lista de contactos"
+
+#: ../libempathy-gtk/empathy-theme-boxes.c:779
+#: ../libempathy-gtk/empathy-theme-irc.c:297
+msgid "%A %d %B %Y"
+msgstr "%A %d %B %Y"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:78
+msgid "Classic"
+msgstr "Clásico"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:79
+msgid "Simple"
+msgstr "Sinxela"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:80
+msgid "Clean"
+msgstr "Limpar"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:81
+msgid "Blue"
+msgstr "Azul"
+
+#: ../megaphone/data/GNOME_Megaphone_Applet.schemas.in.h:1
+msgid "The contact to display in the applet. Empty means no contact is displayed."
+msgstr ""
+"O contacto a mostrar na applet. Se se deixa baleiro non se mostrará ningún "
+"contacto."
+
+#: ../megaphone/data/GNOME_Megaphone_Applet.schemas.in.h:2
+msgid "The contact's avatar token. Empty means contact has no avatar."
+msgstr "O avatar do contacto. Se se deixa baleiro non se mostrará ningún avatar."
+
+#: ../megaphone/data/GNOME_Megaphone_Applet.server.in.in.h:1
+msgid "Megaphone"
+msgstr "Megáfono"
+
+#: ../megaphone/data/GNOME_Megaphone_Applet.server.in.in.h:2
+#: ../megaphone/src/megaphone-applet.c:419
+msgid "Talk!"
+msgstr "Falar!"
+
+#: ../megaphone/data/GNOME_Megaphone_Applet.xml.h:2
+msgid "_Information"
+msgstr "_Información"
+
+#: ../nothere/data/GNOME_NotHere_Applet.server.in.in.h:1
+msgid "Presence"
+msgstr "Presencia"
+
+#: ../nothere/data/GNOME_NotHere_Applet.server.in.in.h:2
+#: ../nothere/src/nothere-applet.c:89
+msgid "Set your own presence"
+msgstr "Establecer a súa presencia"
+
+#: ../src/empathy.c:205
+msgid "- Empathy Instant Messenger"
+msgstr "- Mensaxería instantánea de Empathy"
+
diff --git a/gnome-2-22/po/he.po b/gnome-2-22/po/he.po
new file mode 100644
index 000000000..52090f980
--- /dev/null
+++ b/gnome-2-22/po/he.po
@@ -0,0 +1,1679 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+msgid ""
+msgstr ""
+"Project-Id-Version: empathy\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-02-23 15:03+0000\n"
+"PO-Revision-Date: 2008-02-23 19:56+0200\n"
+"Last-Translator: Mark Krapivner <mark125@gmail.com>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Poedit-Language: Hebrew\n"
+
+#: ../data/empathy.desktop.in.in.h:1
+msgid "Empathy Instant Messenger"
+msgstr ""
+"‏Empathy - מסרים מיידיים"
+
+#: ../data/empathy.desktop.in.in.h:2
+msgid "Send and receive instant messages"
+msgstr "שלח וקבל מסרים מיידיים"
+
+#: ../data/empathy.schemas.in.h:1
+msgid "Always open a separate chat window for new chats."
+msgstr "Always open a separate chat window for new chats."
+
+#: ../data/empathy.schemas.in.h:2
+msgid ""
+"Character to add after nickname when using nick completion (tab) in group "
+"chat."
+msgstr ""
+"Character to add after nickname when using nick completion (tab) in group "
+"chat."
+
+#: ../data/empathy.schemas.in.h:3
+msgid "Chat window theme"
+msgstr "Chat window theme"
+
+#: ../data/empathy.schemas.in.h:4
+msgid "Checks if Empathy should autoconnect on startup"
+msgstr "Checks if Empathy should autoconnect on startup"
+
+#: ../data/empathy.schemas.in.h:5
+msgid "Checks if NetworkManager should be used"
+msgstr "Checks if NetworkManager should be used"
+
+#: ../data/empathy.schemas.in.h:6
+msgid "Checks if Salut account is created"
+msgstr "Checks if Salut account is created"
+
+#: ../data/empathy.schemas.in.h:7
+msgid ""
+"Comma separated list of spell checker languages to use (e.g. en, fr, nl)."
+msgstr ""
+"Comma separated list of spell checker languages to use (e.g. en, fr, nl)."
+
+#: ../data/empathy.schemas.in.h:8
+msgid "Compact contact list"
+msgstr "Compact contact list"
+
+#: ../data/empathy.schemas.in.h:9
+msgid "Contact list sort criterium"
+msgstr "Contact list sort criterium"
+
+#: ../data/empathy.schemas.in.h:10
+msgid "Default directory to select an avatar image from"
+msgstr "Default directory to select an avatar image from"
+
+#: ../data/empathy.schemas.in.h:11
+msgid "Enable popup when contact is available"
+msgstr "Enable popup when contact is available"
+
+#: ../data/empathy.schemas.in.h:12
+msgid "Enable sound when away"
+msgstr "Enable sound when away"
+
+#: ../data/empathy.schemas.in.h:13
+msgid "Enable sound when busy"
+msgstr "Enable sound when busy"
+
+#: ../data/empathy.schemas.in.h:14
+msgid "Enable spell checker"
+msgstr "Enable spell checker"
+
+#: ../data/empathy.schemas.in.h:15
+msgid "Hide main window"
+msgstr "Hide main window"
+
+#: ../data/empathy.schemas.in.h:16
+msgid "Hide the main window."
+msgstr "Hide the main window."
+
+#: ../data/empathy.schemas.in.h:17
+msgid "Nick completed character"
+msgstr "Nick completed character"
+
+#: ../data/empathy.schemas.in.h:18
+msgid "Open new chats in separate windows"
+msgstr "Open new chats in separate windows"
+
+#: ../data/empathy.schemas.in.h:19
+msgid "Show avatars"
+msgstr "Show avatars"
+
+#: ../data/empathy.schemas.in.h:20
+msgid "Show hint about closing the main window"
+msgstr "Show hint about closing the main window"
+
+#: ../data/empathy.schemas.in.h:21
+msgid "Show offline contacts"
+msgstr "Show offline contacts"
+
+#: ../data/empathy.schemas.in.h:22
+msgid "Spell checking languages"
+msgstr "Spell checking languages"
+
+#: ../data/empathy.schemas.in.h:23
+msgid "The last directory that an avatar image was chosen from."
+msgstr "The last directory that an avatar image was chosen from."
+
+#: ../data/empathy.schemas.in.h:24
+msgid "The theme that is used to display the conversation in chat windows."
+msgstr "The theme that is used to display the conversation in chat windows."
+
+#: ../data/empathy.schemas.in.h:25
+msgid "Use graphical smileys"
+msgstr "Use graphical smileys"
+
+#: ../data/empathy.schemas.in.h:26
+msgid "Use notification sounds"
+msgstr "Use notification sounds"
+
+#: ../data/empathy.schemas.in.h:27
+msgid "Use theme for chat rooms"
+msgstr "Use theme for chat rooms"
+
+#: ../data/empathy.schemas.in.h:28
+msgid ""
+"Whether or not Empathy should automatically login to your accounts on "
+"startup."
+msgstr ""
+"Whether or not Empathy should automatically login to your accounts on "
+"startup."
+
+#: ../data/empathy.schemas.in.h:29
+msgid ""
+"Whether or not the Salut account has been created on the first empathy run."
+msgstr ""
+"Whether or not the Salut account has been created on the first empathy run."
+
+#: ../data/empathy.schemas.in.h:30
+msgid ""
+"Whether or not the network manager should be used to automatically "
+"disconnect/reconnect."
+msgstr ""
+"Whether or not the network manager should be used to automatically "
+"disconnect/reconnect."
+
+#: ../data/empathy.schemas.in.h:31
+msgid ""
+"Whether or not to check words typed against the languages you want to check "
+"with."
+msgstr ""
+"Whether or not to check words typed against the languages you want to check "
+"with."
+
+#: ../data/empathy.schemas.in.h:32
+msgid ""
+"Whether or not to convert smileys into graphical images in conversations."
+msgstr ""
+"Whether or not to convert smileys into graphical images in conversations."
+
+#: ../data/empathy.schemas.in.h:33
+msgid "Whether or not to play a sound when messages arrive."
+msgstr "Whether or not to play a sound when messages arrive."
+
+#: ../data/empathy.schemas.in.h:34
+msgid "Whether or not to play sounds when away."
+msgstr "Whether or not to play sounds when away."
+
+#: ../data/empathy.schemas.in.h:35
+msgid "Whether or not to play sounds when busy."
+msgstr "Whether or not to play sounds when busy."
+
+#: ../data/empathy.schemas.in.h:36
+msgid "Whether or not to show a popup when a contact becomes available."
+msgstr "Whether or not to show a popup when a contact becomes available."
+
+#: ../data/empathy.schemas.in.h:37
+msgid ""
+"Whether or not to show avatars for contacts in the contact list and chat "
+"windows."
+msgstr ""
+"Whether or not to show avatars for contacts in the contact list and chat "
+"windows."
+
+#: ../data/empathy.schemas.in.h:38
+msgid "Whether or not to show contacts that are offline in the contact list."
+msgstr "Whether or not to show contacts that are offline in the contact list."
+
+#: ../data/empathy.schemas.in.h:39
+msgid ""
+"Whether or not to show the message dialog about closing the main window with "
+"the 'x' button in the title bar."
+msgstr ""
+"Whether or not to show the message dialog about closing the main window with "
+"the 'x' button in the title bar."
+
+#: ../data/empathy.schemas.in.h:40
+msgid "Whether to show the contact list in compact mode or not."
+msgstr "Whether to show the contact list in compact mode or not."
+
+#: ../data/empathy.schemas.in.h:41
+msgid "Whether to use the theme for chat rooms or not."
+msgstr "Whether to use the theme for chat rooms or not."
+
+#: ../data/empathy.schemas.in.h:42
+msgid ""
+"Which criterium to use when sorting the contact list. Default is to use sort "
+"by the contact's name with the value \"name\". A value of \"state\" will "
+"sort the contact list by state."
+msgstr ""
+"Which criterium to use when sorting the contact list. Default is to use sort "
+"by the contact's name with the value \"name\". A value of \"state\" will "
+"sort the contact list by state."
+
+#: ../libempathy/empathy-tp-contact-list.c:724 ../src/empathy.c:149
+msgid "People nearby"
+msgstr ""
+
+#: ../libempathy/empathy-utils.c:539
+msgid "Available"
+msgstr "זמין"
+
+#: ../libempathy/empathy-utils.c:541
+msgid "Busy"
+msgstr "עסוק"
+
+#: ../libempathy/empathy-utils.c:544
+msgid "Away"
+msgstr "מרוחק"
+
+#: ../libempathy/empathy-utils.c:546
+msgid "Hidden"
+msgstr "מוסתר"
+
+#: ../libempathy/empathy-utils.c:549
+msgid "Offline"
+msgstr "מנותק"
+
+#: ../libempathy-gtk/empathy-about-dialog.c:63
+msgid ""
+"Empathy is free software; you can redistribute it and/or modify it under the "
+"terms of the GNU General Public License as published by the Free Software "
+"Foundation; either version 2 of the License, or (at your option) any later "
+"version."
+msgstr ""
+"Empathy is free software; you can redistribute it and/or modify it under the "
+"terms of the GNU General Public License as published by the Free Software "
+"Foundation; either version 2 of the License, or (at your option) any later "
+"version."
+
+#: ../libempathy-gtk/empathy-about-dialog.c:67
+msgid ""
+"Empathy is distributed in the hope that it will be useful, but WITHOUT ANY "
+"WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS "
+"FOR A PARTICULAR PURPOSE. See the GNU General Public License for more "
+"details."
+msgstr ""
+"Empathy is distributed in the hope that it will be useful, but WITHOUT ANY "
+"WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS "
+"FOR A PARTICULAR PURPOSE. See the GNU General Public License for more "
+"details."
+
+#: ../libempathy-gtk/empathy-about-dialog.c:71
+msgid ""
+"You should have received a copy of the GNU General Public License along with "
+"Empathy; if not, write to the Free Software Foundation, Inc., 51 Franklin "
+"Street, Fifth Floor, Boston, MA 02110-130159 USA"
+msgstr ""
+"You should have received a copy of the GNU General Public License along with "
+"Empathy; if not, write to the Free Software Foundation, Inc., 51 Franklin "
+"Street, Fifth Floor, Boston, MA 02110-130159 USA"
+
+#: ../libempathy-gtk/empathy-about-dialog.c:99
+msgid "An Instant Messaging client for GNOME"
+msgstr "לקוח מסרים מיידיים עבור GNOME"
+
+#: ../libempathy-gtk/empathy-about-dialog.c:105
+msgid "translator-credits"
+msgstr ""
+"מארק קרפיבנר <mark125@gmail.com>\n"
+"\n"
+"פרוייקט תרגום GNOME לעברית:\n"
+"‏http://gnome-il.berlios.de"
+
+#: ../libempathy-gtk/empathy-account-chooser.c:337
+msgid "All"
+msgstr "הכל"
+
+#: ../libempathy-gtk/empathy-account-widget.c:276
+#: ../libempathy-gtk/empathy-account-widget.c:321
+#, c-format
+msgid "%s:"
+msgstr "%s:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:1
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:1
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:1
+msgid "<b>Advanced</b>"
+msgstr "<b>מתקדם</b>"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:2
+msgid "<b>Override server settings</b>"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:3
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:2
+msgid "Forget password and clear the entry."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:4
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:3
+msgid "Login I_D:"
+msgstr "מזהה משת_מש:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:5
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:4
+msgid "Pass_word:"
+msgstr "סיסמ_ה:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:6
+msgid "Pri_ority:"
+msgstr "עדי_פות:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:7
+msgid "Reso_urce:"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:8
+msgid "Use old SS_L"
+msgstr "השתמש ב-SS_L ישן"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:9
+msgid "_Encryption required (TLS/SSL)"
+msgstr "_נדרשת הצפנה (TLS/SSL)"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:10
+msgid "_Ignore SSL certificate errors"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:11
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:5
+msgid "_Port:"
+msgstr "_שער:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:12
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:6
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:10
+msgid "_Server:"
+msgstr "_שרת:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:13
+msgid "jabber account settings"
+msgstr "הגדרות חשבון jabber"
+
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:7
+msgid "msn account settings"
+msgstr "הגדרות חשבון msn"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:2
+msgid "_E-mail:"
+msgstr "דוא\"ל:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:3
+msgid "_First Name: "
+msgstr "שם _פרטי:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:4
+msgid "_Jabber ID:"
+msgstr "מזהה Jabber:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:5
+msgid "_Last Name:"
+msgstr "שם _משפחה"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:6
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:8
+msgid "_Nickname:"
+msgstr "_כינוי"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:7
+msgid "_Published Name:"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:8
+msgid "salut account settings"
+msgstr "הגדרות חשבון salut"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:225
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to start configuring."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:229
+msgid ""
+"To add a new account, you first have to install a backend for each protocol "
+"you want to use."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:236
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:2
+msgid "<b>No Account Selected</b>"
+msgstr "<b>לא נבחרו חשבונות</b>"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:237
+msgid ""
+"\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want "
+"to configure in the list on the left."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:243
+msgid "<b>No Accounts Configured</b>"
+msgstr "<b>לא הוגדרו חשבונות</b>"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:411
+msgid "Enabled"
+msgstr "מופעל"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:421
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:4
+msgid "Accounts"
+msgstr "חשבונות"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:904
+#, c-format
+msgid ""
+"You are about to remove your %s account!\n"
+"Are you sure you want to proceed?"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:910
+msgid ""
+"Any associated conversations and chat rooms will NOT be removed if you "
+"decide to proceed.\n"
+"\n"
+"Should you decide to add the account back at a later time, they will still "
+"be available."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:1
+msgid "<b>New Account</b>"
+msgstr "<b>חשבון חדש</b>"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:3
+msgid "<b>Settings</b>"
+msgstr "<b>הגדרות</b>"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:5
+msgid "Cr_eate"
+msgstr "_צור"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:6
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to started configuring.\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want "
+"to configure in the list on the left."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:9
+msgid "Type:"
+msgstr "סוג:"
+
+#: ../libempathy-gtk/empathy-avatar-chooser.c:449
+msgid "Select Your Avatar Image"
+msgstr "בחר את התמונה האישית שלך"
+
+#: ../libempathy-gtk/empathy-avatar-chooser.c:452
+msgid "No Image"
+msgstr "ללא תמונה"
+
+#: ../libempathy-gtk/empathy-avatar-chooser.c:512
+msgid "Images"
+msgstr "תמונות"
+
+#: ../libempathy-gtk/empathy-avatar-chooser.c:516
+msgid "All Files"
+msgstr "כל הקבצים"
+
+#: ../libempathy-gtk/empathy-avatar-image.c:298
+msgid "Click to enlarge"
+msgstr "לחץ כדי להגדיל"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:1
+msgid "End Call"
+msgstr "סיים שיחה"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:2
+msgid "Input"
+msgstr "קלט"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:3
+msgid "Mute"
+msgstr "השתק"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:4
+msgid "Output"
+msgstr "פלט"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:5
+msgid "Send Video"
+msgstr "שלח וידאו"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:6
+msgid "Start Call"
+msgstr "התחל שיחה"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:7
+msgid "Volume"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-chat.c:445
+msgid "Disconnected"
+msgstr "מנותק"
+
+#: ../libempathy-gtk/empathy-chat.c:580
+msgid "offline"
+msgstr "מנותק"
+
+#: ../libempathy-gtk/empathy-chat.c:583
+msgid "invalid contact"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-chat.c:586
+msgid "permission denied"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-chat.c:589
+msgid "too long message"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-chat.c:592
+msgid "not implemented"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-chat.c:595
+msgid "unknown"
+msgstr "לא ידוע"
+
+#: ../libempathy-gtk/empathy-chat.c:599
+#, c-format
+msgid "Error sending message '%s': %s"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-chat.c:1056
+msgid "Insert Smiley"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-chat.c:1103
+msgid "_Check Word Spelling..."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-chat.c:1558
+msgid "Connected"
+msgstr "מחובר"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:1
+msgid "C_lear"
+msgstr "נ_קה"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:2
+msgid "Ca_ll"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-chat.glade.h:3
+msgid "Change _Topic..."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-chat.glade.h:4
+#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:3
+msgid "Chat"
+msgstr "שיחה"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:5
+msgid "Contact Infor_mation"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-chat.glade.h:6
+msgid "Cu_t"
+msgstr "ג_זור"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:7
+msgid "In_vite..."
+msgstr "הז_מן..."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:8
+msgid "Insert _Smiley"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-chat.glade.h:9
+msgid "Invitation _message:"
+msgstr "הודעת הזמ_נה:"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:10
+msgid "Invite"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-chat.glade.h:11
+#: ../libempathy-gtk/empathy-main-window.glade.h:4
+msgid "Join _New..."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-chat.glade.h:12
+msgid "Move Tab _Left"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-chat.glade.h:13
+msgid "Move Tab _Right"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-chat.glade.h:14
+msgid "Select who would you like to invite:"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-chat.glade.h:15
+msgid "You have been invited to join a chat conference."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-chat.glade.h:16
+#: ../libempathy-gtk/empathy-main-window.glade.h:9
+msgid "_Add Contact..."
+msgstr "_הוסף איש קשר..."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:17
+msgid "_Add To Favorites"
+msgstr "_הוסף למועדפים"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:18
+msgid "_Close"
+msgstr "_סגור"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:19
+#: ../libempathy-gtk/empathy-main-window.glade.h:11
+msgid "_Contents"
+msgstr "_תכנים"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:20
+msgid "_Conversation"
+msgstr "_שיחה"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:21
+msgid "_Copy"
+msgstr "_העתק"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:22
+msgid "_Detach Tab"
+msgstr "_נתק לשונית"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:23
+#: ../libempathy-gtk/empathy-contact-list-view.c:217
+#: ../libempathy-gtk/empathy-main-window.glade.h:12
+msgid "_Edit"
+msgstr "_עריכה"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:24
+#: ../libempathy-gtk/empathy-main-window.glade.h:13
+msgid "_Help"
+msgstr "_עזרה"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:25
+msgid "_Next Tab"
+msgstr "_לשונית הבאה"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:26
+msgid "_Paste"
+msgstr "_הדבק"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:27
+msgid "_Previous Tab"
+msgstr "_לשונית קודמת"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:28
+#: ../libempathy-gtk/empathy-main-window.glade.h:18
+msgid "_Room"
+msgstr "_חדר"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:29
+msgid "_Show Contacts"
+msgstr "_הצג אנשי קשר"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:30
+msgid "_Tabs"
+msgstr "_לשוניות"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:31
+#: ../libempathy-gtk/empathy-contact-list-view.c:233
+#: ../libempathy-gtk/empathy-main-window.glade.h:19
+msgid "_View Previous Conversations"
+msgstr "_צפייה בשיחות קודמות"
+
+#: ../libempathy-gtk/empathy-chat-view.c:441
+msgid "_Copy Link Address"
+msgstr "העתק _מיקום קישור"
+
+#: ../libempathy-gtk/empathy-chat-view.c:449
+msgid "_Open Link"
+msgstr "_פתח קישור"
+
+#: ../libempathy-gtk/empathy-chat-window.c:699
+#, c-format
+msgid "Conversations (%d)"
+msgstr "שיחות (%d)"
+
+#: ../libempathy-gtk/empathy-chat-window.c:1299
+msgid "Typing a message."
+msgstr "מקליד הודעה."
+
+#: ../libempathy-gtk/empathy-chatrooms-window.c:258
+msgid "Name"
+msgstr "שם"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.c:276
+msgid "Room"
+msgstr "חדר"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.c:285
+msgid "Auto Connect"
+msgstr "חיבור אוטומטי"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:1
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:5
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:1
+#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:1
+msgid "Account:"
+msgstr "חשבון:"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:2
+msgid "Edit Favorite Room"
+msgstr "ערוך חדר מועדף"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:3
+msgid "Join room on start_up"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:4
+msgid "Join this chat room when Empathy starts and you are connected"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:5
+msgid "Manage Favorite Rooms"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:6
+msgid "N_ame:"
+msgstr "ש_ם:"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:7
+msgid "S_erver:"
+msgstr "ש_רת:"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:9
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:9
+msgid "_Room:"
+msgstr "_חדר:"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:176
+msgid "Personal Information"
+msgstr "מידע אישי"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:179
+msgid "Edit Contact Information"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:182
+msgid "Contact Information"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:277
+msgid "I would like to add you to my contact list."
+msgstr "הייתי רוצה להוסיף אותך לרשימת אנשי הקשר שלי."
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:301
+msgid "New Contact"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-contact-dialogs.glade.h:1
+msgid "Decide _Later"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-contact-dialogs.glade.h:2
+msgid "Subscription Request"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:197
+msgid "_Contact"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:201
+msgid "_Group"
+msgstr "_קבוצה"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:205
+#: ../libempathy-gtk/empathy-main-window.glade.h:10
+msgid "_Chat"
+msgstr "_שיחה"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:205
+msgid "Chat with contact"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:209
+msgid "Infor_mation"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:209
+msgid "View contact information"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:213
+msgid "Re_name"
+msgstr "שנה _שם"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:213
+msgid "Rename"
+msgstr "שנה שם"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:217
+msgid "Edit the groups and name for this contact"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:221
+msgid "_Remove"
+msgstr "_הסר"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:221
+msgid "Remove contact"
+msgstr "הסר איש קשר"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:225
+msgid "_Invite to Chat Room"
+msgstr "_הזמן לחדר שיחה"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:225
+msgid "Invite to a currently open chat room"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:229
+msgid "_Send File..."
+msgstr "_שלח קובץ..."
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:229
+msgid "Send a file"
+msgstr "שלח קובץ"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:233
+msgid "View previous conversations with this contact"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:238
+msgid "_Call"
+msgstr "_שיחה"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:238
+msgid "Start a voice or video conversation with this contact"
+msgstr "התחל שיחת קול או וידאו עם איש קשר הזה"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:1469
+msgid "Sorry, I don't want you in my contact list anymore."
+msgstr "מצטער, אני יותר לא רוצה אותך ברשימת אנשי הקשר שלי."
+
+#: ../libempathy-gtk/empathy-contact-widget.c:688
+msgid "Select"
+msgstr "בחר"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:698
+#: ../libempathy-gtk/empathy-main-window.c:609
+msgid "Group"
+msgstr "קבוצה"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:1
+msgid "<b>Client Information</b>"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:2
+msgid "<b>Contact Details</b>"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:3
+msgid "<b>Contact</b>"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:4
+msgid "<b>Groups</b>"
+msgstr "<b>קבוצות</b>"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:6
+msgid "Alias:"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:7
+msgid "Birthday:"
+msgstr "יום הולדת:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:8
+msgid "Client:"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:9
+msgid "Contact information"
+msgstr "נתוני איש קשר"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:10
+msgid "Email:"
+msgstr "דוא\"ל:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:11
+msgid "Fullname:"
+msgstr "שם מלא:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:12
+msgid "Identifier:"
+msgstr "מזהה:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:13
+msgid "Information requested..."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:14
+msgid "OS:"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:15
+msgid ""
+"Select the groups you want this contact to appear in, you can select more "
+"than one group or no groups."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:16
+msgid "Version:"
+msgstr "גרסה:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:17
+msgid "Web site:"
+msgstr "אתר אינטרנט:"
+
+#: ../libempathy-gtk/empathy-group-chat.c:251
+msgid "Enter the new topic you want to set for this room:"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-group-chat.c:361
+#, c-format
+msgid "%s has joined the room"
+msgstr ""
+"‏%s הצטרף לחדר"
+
+#: ../libempathy-gtk/empathy-group-chat.c:364
+#, c-format
+msgid "%s has left the room"
+msgstr ""
+"‏%s עזב את החדר"
+
+#: ../libempathy-gtk/empathy-group-chat.c:445
+#, c-format
+msgid "Topic: %s"
+msgstr "נושא: %s"
+
+#: ../libempathy-gtk/empathy-group-chat.c:574
+#, c-format
+msgid "Topic set to: %s"
+msgstr "הנושא נקבע ל: %s"
+
+#: ../libempathy-gtk/empathy-group-chat.c:576
+msgid "No topic defined"
+msgstr "לא נקבע נושא"
+
+#: ../libempathy-gtk/empathy-group-chat.glade.h:1
+msgid "<b>Topic:</b>"
+msgstr "<b>נושא:</b>"
+
+#: ../libempathy-gtk/empathy-group-chat.glade.h:2
+msgid "Group Chat"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-log-window.c:499
+msgid "Account"
+msgstr "חשבון"
+
+#: ../libempathy-gtk/empathy-log-window.c:506
+msgid "Conversation"
+msgstr "שיחה"
+
+#: ../libempathy-gtk/empathy-log-window.c:516
+msgid "Date"
+msgstr "תאריך"
+
+#: ../libempathy-gtk/empathy-log-window.glade.h:1
+msgid "Conversations"
+msgstr "שיחות"
+
+#: ../libempathy-gtk/empathy-log-window.glade.h:2
+msgid "Previous Conversations"
+msgstr "שיחות קודמות"
+
+#: ../libempathy-gtk/empathy-log-window.glade.h:3
+msgid "Search"
+msgstr "חיפוש"
+
+#: ../libempathy-gtk/empathy-log-window.glade.h:4
+msgid "_For:"
+msgstr "_ערך:"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.c:286
+msgid "Chat Rooms"
+msgstr "חדרי שיחה"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:2
+msgid "Browse:"
+msgstr "עיין:"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:3
+msgid ""
+"Enter the room name to join here or click on one or more rooms in the list."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:4
+msgid ""
+"Enter the server which hosts the room, or leave it empty if the room is on "
+"the current account's server"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:5
+msgid "Join"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:6
+msgid "Join New"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:7
+msgid "Re_fresh"
+msgstr "רע_נן"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:8
+msgid ""
+"This list represents all chat rooms hosted on the server you have entered."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.c:266
+msgid "Show and edit accounts"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.c:630
+msgid "Contact"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.c:813
+msgid "_Edit account"
+msgstr "_ערוך חשבון"
+
+#: ../libempathy-gtk/empathy-main-window.c:896
+msgid "Network error"
+msgstr "שגיאת רשת"
+
+#: ../libempathy-gtk/empathy-main-window.c:899
+msgid "Authentication failed"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.c:902
+msgid "Encryption error"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.c:905
+msgid "Name in use"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.c:908
+msgid "Certificate not provided"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.c:911
+msgid "Certificate untrusted"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.c:914
+msgid "Certificate expired"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.c:917
+msgid "Certificate not activated"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.c:920
+msgid "Certificate hostname mismatch"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.c:923
+msgid "Certificate fingerprint mismatch"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.c:926
+msgid "Certificate self signed"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.c:929
+msgid "Certificate error"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.c:932
+msgid "Unknown error"
+msgstr "שגיאה לא ידועה"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:1
+msgid "Contact List"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:2
+msgid "Context"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:3
+msgid "Join _Favorites"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:5
+msgid "Manage Favorites"
+msgstr "נהל מועדפים"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:6
+msgid "Show _Offline Contacts"
+msgstr "הצג אנשי קשר _מנותקים"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:7
+#: ../megaphone/data/GNOME_Megaphone_Applet.xml.h:1
+#: ../nothere/data/GNOME_NotHere_Applet.xml.h:1
+msgid "_About"
+msgstr "_אודות"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:8
+msgid "_Accounts"
+msgstr "_חשבונות"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:14
+#: ../libempathy-gtk/empathy-status-icon.glade.h:2
+msgid "_New Conversation..."
+msgstr "_שיחה חדשה..."
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:15
+msgid "_Personal Information"
+msgstr "מידע _אישי"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:16
+#: ../megaphone/data/GNOME_Megaphone_Applet.xml.h:3
+msgid "_Preferences"
+msgstr "_העדפות"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:17
+#: ../libempathy-gtk/empathy-status-icon.glade.h:3
+msgid "_Quit"
+msgstr "יצי_אה"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:2
+msgid "Call"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:4
+msgid "Contact ID:"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:5
+msgid "New Conversation"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-preferences.c:247
+msgid "Language"
+msgstr "שפה"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:1
+msgid "<b>Appearance</b>"
+msgstr "<b>מראה</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:2
+msgid "<b>Audio</b>"
+msgstr "<b>צליל</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:3
+msgid "<b>Behaviour</b>"
+msgstr "<b>התנהגות</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:4
+msgid "<b>Contact List</b>"
+msgstr "<b>רשימת אנשי קשר</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:5
+msgid "<b>Enable spell checking for languages:</b>"
+msgstr "<b>הפעל בדיקת איות עבור השפות:</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:6
+msgid "<b>Options</b>"
+msgstr "<b>אפשרויות</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:7
+msgid "<b>Visual</b>"
+msgstr "<b>חזותי</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:8
+msgid ""
+"<small>The list of languages reflects only the languages for which you have "
+"a dictionary installed.</small>"
+msgstr "<small>ברשימת השפות מוצגות שפות שעבורן מותקנים אצלך מילונים.</small>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:9
+msgid "Automatically _connect on startup "
+msgstr ""
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:10
+msgid "Avatars are user chosen images shown in the contact list"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:11
+msgid "Chat Th_eme:"
+msgstr "ער_כת נושא לשיחה:"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:12
+msgid "Display notifications when contacts come _online"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:13
+msgid "Enable sounds when _away"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:14
+msgid "Enable sounds when _busy"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:15
+msgid "General"
+msgstr "כללי"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:16
+msgid "Notifications"
+msgstr "התרעות"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:17
+msgid "Preferences"
+msgstr "העדפות"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:18
+msgid "Show _avatars"
+msgstr "הצג _תמנות אישיות"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:19
+msgid "Show _smileys as images"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:20
+msgid "Show co_mpact contact list"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:21
+msgid "Sort by _name"
+msgstr "מיין לפי _שם"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:22
+msgid "Sort by s_tate"
+msgstr "מיין לפי מצ_ב"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:23
+msgid "Spell Checking"
+msgstr "בדיקת איות"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:24
+msgid "Themes"
+msgstr "ערכות נושא"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:25
+msgid "_Open new chats in separate windows"
+msgstr "_פתח שיחות חדשות בחלונות נפרדים"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:26
+msgid "_Play sound when messages arrive"
+msgstr "_נגן צליל כשמתקבלת הודעה"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:27
+msgid "_Use for chat rooms"
+msgstr "_שימוש בחדרי שיחה"
+
+#. Custom messages
+#: ../libempathy-gtk/empathy-presence-chooser.c:691
+msgid "Custom messages..."
+msgstr "הודעות מותאמות אישית..."
+
+#: ../libempathy-gtk/empathy-presence-chooser.glade.h:1
+msgid "Custom message"
+msgstr "הודעה מותאמת אישית"
+
+#: ../libempathy-gtk/empathy-presence-chooser.glade.h:2
+msgid "Message:"
+msgstr "הודעה:"
+
+#: ../libempathy-gtk/empathy-presence-chooser.glade.h:3
+msgid "Save message"
+msgstr "שמור הודעה"
+
+#: ../libempathy-gtk/empathy-presence-chooser.glade.h:4
+msgid "Status:"
+msgstr "מצב:"
+
+#: ../libempathy-gtk/empathy-private-chat.c:229
+#, c-format
+msgid "%s went offline"
+msgstr ""
+"‏%s התנתק"
+
+#: ../libempathy-gtk/empathy-private-chat.c:243
+#, c-format
+msgid "%s has come online"
+msgstr ""
+"‏%s התחבר"
+
+#: ../libempathy-gtk/empathy-spell-dialog.c:85
+msgid "Word"
+msgstr "מילה"
+
+#: ../libempathy-gtk/empathy-spell-dialog.c:258
+msgid "Suggestions for the word"
+msgstr "הצעות עבור המילה"
+
+#: ../libempathy-gtk/empathy-spell-dialog.glade.h:1
+msgid "Spell Checker"
+msgstr "בודק איות"
+
+#: ../libempathy-gtk/empathy-spell-dialog.glade.h:2
+msgid "Suggestions for the word:"
+msgstr "הצעות עבור המילה:"
+
+#: ../libempathy-gtk/empathy-status-icon.c:369
+#, c-format
+msgid ""
+"New message from %s:\n"
+"%s"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-status-icon.c:434
+#, c-format
+msgid ""
+"Incoming call from %s:\n"
+"%s"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-status-icon.c:738
+#, c-format
+msgid "Subscription requested by %s"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-status-icon.c:741
+#, c-format
+msgid ""
+"\n"
+"Message: %s"
+msgstr ""
+"\n"
+"הודעה: %s"
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:1
+msgid "Status"
+msgstr "מצב"
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:4
+msgid "_Show Contact List"
+msgstr "_הצג רשימת אנשי קשר"
+
+#: ../libempathy-gtk/empathy-theme-boxes.c:780
+#: ../libempathy-gtk/empathy-theme-irc.c:297
+msgid "%A %d %B %Y"
+msgstr "%A %d %B %Y"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:78
+msgid "Classic"
+msgstr "קלאסי"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:79
+msgid "Simple"
+msgstr "פשוט"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:80
+msgid "Clean"
+msgstr "נקי"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:81
+msgid "Blue"
+msgstr "כחול"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.c:246
+msgid "New Network"
+msgstr "רשת חדשה"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:1
+msgid "<b>Network</b>"
+msgstr "<b>רשת</b>"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:2
+msgid "<b>Servers</b>"
+msgstr "<b>שרתים</b>"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:3
+msgid "Charset:"
+msgstr "קידוד תוים:"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:4
+msgid "Create a new IRC network"
+msgstr "צור רשת IRC חדשה"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:5
+msgid "Edit the selected IRC network"
+msgstr "ערוך רשת IRC מסומנת"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:6
+msgid "Network"
+msgstr "רשת"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:7
+msgid "Network:"
+msgstr "רשת:"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:8
+msgid "Nickname:"
+msgstr "כינוי:"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:9
+msgid "Password:"
+msgstr "סיסמה:"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:10
+msgid "Quit message:"
+msgstr "הודאת יציאה:"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:11
+msgid "Real name:"
+msgstr "שם אמיתי:"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:12
+msgid "Remove the selected IRC network"
+msgstr "הסר רשת IRC מסומנת"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:13
+msgid "irc account settings"
+msgstr "הגדרות חשבון irc"
+
+#: ../libempathy-gtk/empathy-irc-network-dialog.c:287
+msgid "new server"
+msgstr "שרת חדש"
+
+#: ../libempathy-gtk/empathy-irc-network-dialog.c:512
+msgid "Server"
+msgstr "שרת"
+
+#: ../libempathy-gtk/empathy-irc-network-dialog.c:527
+msgid "Port"
+msgstr "שער"
+
+#: ../libempathy-gtk/empathy-irc-network-dialog.c:540
+msgid "SSL"
+msgstr "SSL"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:158
+msgid "Current Locale"
+msgstr "מיקום נוכחי"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:161
+#: ../libempathy-gtk/totem-subtitle-encoding.c:163
+#: ../libempathy-gtk/totem-subtitle-encoding.c:165
+#: ../libempathy-gtk/totem-subtitle-encoding.c:167
+msgid "Arabic"
+msgstr "ערבית"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:170
+msgid "Armenian"
+msgstr "ארמנית"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:173
+#: ../libempathy-gtk/totem-subtitle-encoding.c:175
+#: ../libempathy-gtk/totem-subtitle-encoding.c:177
+msgid "Baltic"
+msgstr "בלטית"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:180
+msgid "Celtic"
+msgstr ""
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:183
+#: ../libempathy-gtk/totem-subtitle-encoding.c:185
+#: ../libempathy-gtk/totem-subtitle-encoding.c:187
+#: ../libempathy-gtk/totem-subtitle-encoding.c:189
+msgid "Central European"
+msgstr "מרכז אירופאי"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:192
+#: ../libempathy-gtk/totem-subtitle-encoding.c:194
+#: ../libempathy-gtk/totem-subtitle-encoding.c:196
+#: ../libempathy-gtk/totem-subtitle-encoding.c:198
+msgid "Chinese Simplified"
+msgstr "סינית מפושטת"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:201
+#: ../libempathy-gtk/totem-subtitle-encoding.c:203
+#: ../libempathy-gtk/totem-subtitle-encoding.c:205
+msgid "Chinese Traditional"
+msgstr "סינית מסורתית"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:208
+msgid "Croatian"
+msgstr "קרואטית"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:211
+#: ../libempathy-gtk/totem-subtitle-encoding.c:213
+#: ../libempathy-gtk/totem-subtitle-encoding.c:215
+#: ../libempathy-gtk/totem-subtitle-encoding.c:217
+#: ../libempathy-gtk/totem-subtitle-encoding.c:219
+#: ../libempathy-gtk/totem-subtitle-encoding.c:221
+msgid "Cyrillic"
+msgstr "קירילי"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:224
+msgid "Cyrillic/Russian"
+msgstr "קירילי/רוסי"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:227
+#: ../libempathy-gtk/totem-subtitle-encoding.c:229
+msgid "Cyrillic/Ukrainian"
+msgstr "קרילי/אוקראיני"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:232
+msgid "Georgian"
+msgstr "גאורגית"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:235
+#: ../libempathy-gtk/totem-subtitle-encoding.c:237
+#: ../libempathy-gtk/totem-subtitle-encoding.c:239
+msgid "Greek"
+msgstr "יוונית"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:242
+msgid "Gujarati"
+msgstr "גוג'אראטית"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:245
+msgid "Gurmukhi"
+msgstr "גורמוקית"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:248
+#: ../libempathy-gtk/totem-subtitle-encoding.c:250
+#: ../libempathy-gtk/totem-subtitle-encoding.c:252
+#: ../libempathy-gtk/totem-subtitle-encoding.c:254
+msgid "Hebrew"
+msgstr "עברית"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:257
+msgid "Hebrew Visual"
+msgstr "עברית ויזואלית"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:260
+msgid "Hindi"
+msgstr "הינדית"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:263
+msgid "Icelandic"
+msgstr "איסלנדית"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:266
+#: ../libempathy-gtk/totem-subtitle-encoding.c:268
+#: ../libempathy-gtk/totem-subtitle-encoding.c:270
+msgid "Japanese"
+msgstr "יפנית"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:273
+#: ../libempathy-gtk/totem-subtitle-encoding.c:275
+#: ../libempathy-gtk/totem-subtitle-encoding.c:277
+#: ../libempathy-gtk/totem-subtitle-encoding.c:279
+msgid "Korean"
+msgstr "קוראנית"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:282
+msgid "Nordic"
+msgstr "נורדי"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:285
+msgid "Persian"
+msgstr "פרסית"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:288
+#: ../libempathy-gtk/totem-subtitle-encoding.c:290
+msgid "Romanian"
+msgstr "רומנית"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:293
+msgid "South European"
+msgstr "דרום אירופאית"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:296
+msgid "Thai"
+msgstr "תאילנדית"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:299
+#: ../libempathy-gtk/totem-subtitle-encoding.c:301
+#: ../libempathy-gtk/totem-subtitle-encoding.c:303
+#: ../libempathy-gtk/totem-subtitle-encoding.c:305
+msgid "Turkish"
+msgstr "טורקית"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:308
+#: ../libempathy-gtk/totem-subtitle-encoding.c:310
+#: ../libempathy-gtk/totem-subtitle-encoding.c:312
+#: ../libempathy-gtk/totem-subtitle-encoding.c:314
+#: ../libempathy-gtk/totem-subtitle-encoding.c:316
+msgid "Unicode"
+msgstr "יוניקוד"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:319
+#: ../libempathy-gtk/totem-subtitle-encoding.c:321
+#: ../libempathy-gtk/totem-subtitle-encoding.c:323
+#: ../libempathy-gtk/totem-subtitle-encoding.c:325
+#: ../libempathy-gtk/totem-subtitle-encoding.c:327
+msgid "Western"
+msgstr "מערבי"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:330
+#: ../libempathy-gtk/totem-subtitle-encoding.c:332
+#: ../libempathy-gtk/totem-subtitle-encoding.c:334
+msgid "Vietnamese"
+msgstr "ויאטנמית"
+
+#.
+#. * vim: sw=2 ts=8 cindent noai bs=2
+#.
+#: ../megaphone/data/GNOME_Megaphone_Applet.schemas.in.h:1
+msgid ""
+"The contact to display in the applet. Empty means no contact is displayed."
+msgstr ""
+"The contact to display in the applet. Empty means no contact is displayed."
+
+#: ../megaphone/data/GNOME_Megaphone_Applet.schemas.in.h:2
+msgid "The contact's avatar token. Empty means contact has no avatar."
+msgstr "The contact's avatar token. Empty means contact has no avatar."
+
+#: ../megaphone/data/GNOME_Megaphone_Applet.server.in.in.h:1
+msgid "Megaphone"
+msgstr "Megaphone"
+
+#: ../megaphone/data/GNOME_Megaphone_Applet.server.in.in.h:2
+#: ../megaphone/src/megaphone-applet.c:419
+msgid "Talk!"
+msgstr "דבר!"
+
+#: ../megaphone/data/GNOME_Megaphone_Applet.xml.h:2
+msgid "_Information"
+msgstr ""
+
+#: ../nothere/data/GNOME_NotHere_Applet.server.in.in.h:1
+msgid "Presence"
+msgstr "Presence"
+
+#: ../nothere/data/GNOME_NotHere_Applet.server.in.in.h:2
+#: ../nothere/src/nothere-applet.c:89
+msgid "Set your own presence"
+msgstr ""
+
+#: ../src/empathy.c:205
+msgid "- Empathy Instant Messenger"
+msgstr "- Empathy Instant Messenger"
diff --git a/gnome-2-22/po/hr.po b/gnome-2-22/po/hr.po
new file mode 100644
index 000000000..da1b5692c
--- /dev/null
+++ b/gnome-2-22/po/hr.po
@@ -0,0 +1,1144 @@
+# Translation of Empathy to Croatian
+# Copyright (C) Senko Rasic <senko.rasic@collabora.co.uk>
+# This file is distributed under the same license as the Empathy package.
+msgid ""
+msgstr ""
+"Project-Id-Version: empathy.HEAD.hr\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-08-25 23:46+0200\n"
+"PO-Revision-Date: 2007-08-25 20:40+CET\n"
+"Last-Translator: Senko Rasic <senko.rasic@collabora.co.uk>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+
+#: ../data/empathy.desktop.in.in.h:1
+msgid "Empathy Instant Messenger"
+msgstr "Empathy Instant Komunikacija"
+
+#: ../data/empathy.desktop.in.in.h:2
+msgid "Instant Messenger"
+msgstr "Instant Komunikacija"
+
+#: ../data/empathy.schemas.in.h:1
+msgid "Always open a separate chat window for new chats."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:2
+msgid "Chat window theme"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:3
+msgid "Comma separated list of spell checker languages to use (e.g. en, fr, nl)."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:4
+msgid "Compact contact list"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:5
+msgid "Contact list sort criterium"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:6
+msgid "Default directory to select an avatar image from"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:7
+msgid "Enable popup when contact is available"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:8
+msgid "Enable sound when away"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:9
+msgid "Enable sound when busy"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:10
+msgid "Enable spell checker"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:11
+msgid "Hide main window"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:12
+msgid "Hide the main window."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:13
+msgid "Open new chats in separate windows"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:14
+msgid "Show avatars"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:15
+msgid "Show hint about closing the main window"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:16
+msgid "Show offline contacts"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:17
+msgid "Spell checking languages"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:18
+msgid "The last directory that an avatar image was chosen from."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:19
+msgid "The theme that is used to display the conversation in chat windows."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:20
+msgid "Use graphical smileys"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:21
+msgid "Use notification sounds"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:22
+msgid "Use theme for chat rooms"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:23
+msgid ""
+"Whether or not to check words typed against the languages you want to check "
+"with."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:24
+msgid "Whether or not to convert smileys into graphical images in conversations."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:25
+msgid "Whether or not to play a sound when messages arrive."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:26
+msgid "Whether or not to play sounds when away."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:27
+msgid "Whether or not to play sounds when busy."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:28
+msgid "Whether or not to show a popup when a contact becomes available."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:29
+msgid ""
+"Whether or not to show avatars for contacts in the contact list and chat "
+"windows."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:30
+msgid "Whether or not to show contacts that are offline in the contact list."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:31
+msgid ""
+"Whether or not to show the message dialog about closing the main window with "
+"the 'x' button in the title bar."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:32
+msgid "Whether to show the contact list in compact mode or not."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:33
+msgid "Whether to use the theme for chat rooms or not."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:34
+msgid ""
+"Which criterium to use when sorting the contact list. Default is to use sort "
+"by the contact's name with the value \"name\". A value of \"state\" will "
+"sort the contact list by state."
+msgstr ""
+
+#: ../libempathy/empathy-presence.c:184 ../libempathy/empathy-presence.c:283
+msgid "Offline"
+msgstr "Odspojen"
+
+#: ../libempathy/empathy-presence.c:274
+msgid "Available"
+msgstr "Dostupan"
+
+#: ../libempathy/empathy-presence.c:276
+msgid "Busy"
+msgstr "Zauzet"
+
+#: ../libempathy/empathy-presence.c:279
+msgid "Away"
+msgstr "Odsutan"
+
+#: ../libempathy-gtk/empathy-about-dialog.c:63
+msgid ""
+"Empathy is free software; you can redistribute it and/or modify it under the "
+"terms of the GNU General Public License as published by the Free Software "
+"Foundation; either version 2 of the License, or (at your option) any later "
+"version."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-about-dialog.c:67
+msgid ""
+"Empathy is distributed in the hope that it will be useful, but WITHOUT ANY "
+"WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS "
+"FOR A PARTICULAR PURPOSE. See the GNU General Public License for more "
+"details."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-about-dialog.c:71
+msgid ""
+"You should have received a copy of the GNU General Public License along with "
+"Empathy; if not, write to the Free Software Foundation, Inc., 51 Franklin "
+"Street, Fifth Floor, Boston, MA 02110-130159 USA"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-about-dialog.c:99
+msgid "An Instant Messaging client for GNOME"
+msgstr "Program za instant komunikaciju za GNOME"
+
+#: ../libempathy-gtk/empathy-about-dialog.c:105
+msgid "translator-credits"
+msgstr "Senko Rašić <senko.rasic@collabora.co.uk>, 2007"
+
+#: ../libempathy-gtk/empathy-account-chooser.c:391
+msgid "All"
+msgstr "Svi"
+
+#: ../libempathy-gtk/empathy-account-widget-generic.c:144
+#: ../libempathy-gtk/empathy-account-widget-generic.c:186
+#, c-format
+msgid "%s:"
+msgstr "%s:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:1
+msgid "Forget password and clear the entry."
+msgstr "Zaboravi lozinku i obriši unos."
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:2
+msgid "Login I_D:"
+msgstr "Korisničko ime:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:3
+msgid "Pass_word:"
+msgstr "Lozinka:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:4
+msgid "Reso_urce:"
+msgstr "Resurs:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:5
+msgid "Use encryption (SS_L)"
+msgstr "Koristi enkripciju (SS_L)"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:6
+msgid "_Port:"
+msgstr "_Port:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:7
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:10
+msgid "_Server:"
+msgstr "_Poslužitelj:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:8
+msgid "jabber account settings"
+msgstr "postavke jabber računa"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:224
+msgid "Disable"
+msgstr "Onemogući"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:227
+msgid "Enable"
+msgstr "Omogući"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:261
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:3
+msgid "<b>No Account Selected</b>"
+msgstr "<b>Nije odabran niti jedan korisnički račun</b>"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:263
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to start configuring.\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want "
+"to configure in the list on the left."
+msgstr ""
+"Za dodavanje novog korisničkog računa kliknite na 'Dodaj' gumb, koji će "
+"kreirati novi račun kojeg možete podesiti.\n"
+"\n"
+"Ako ne želite dodati korisnički račun, jednostavno odaberite račun koji želite "
+"podesiti u listi lijevo."
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:272
+msgid "<b>No Accounts Configured</b>"
+msgstr "<b>Nema podešenih korisničkih računa</b>"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:274
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to start configuring."
+msgstr ""
+"Za dodavanje novog korisničkog računa kliknite na 'Dodaj' gumb, koji će "
+"kreirati novi račun kojeg možete podesiti."
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:367
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:6
+msgid "Accounts"
+msgstr "Korisnički računi"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:862
+#, c-format
+msgid ""
+"You are about to remove your %s account!\n"
+"Are you sure you want to proceed?"
+msgstr "Jeste li sigurni da želite obrisati vaš %s korisnički račun?"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:868
+msgid ""
+"Any associated conversations and chat rooms will NOT be removed if you "
+"decide to proceed.\n"
+"\n"
+"Should you decide to add the account back at a later time, they will still "
+"be available."
+msgstr ""
+"Razgovori i sobe NEĆE biti maknuti čak i ukoliko nastavite.\n"
+"\n"
+"Ako kasnije odlučite vratiti korisnički račun, oni će i dalje biti dostupni."
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:1
+msgid "<b>Account</b>"
+msgstr "<b>Korisnički račun</b>"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:2
+msgid "<b>New Account</b>"
+msgstr "<b>Novi korisnički račun</b>"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:4
+msgid "<b>Settings</b>"
+msgstr "<b>Postavke</b>"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:5
+msgid "A unique name for this account to identify it personally to you."
+msgstr "Jedinstveno ime pod kojim ćete pamtiti ovaj korisnički račun."
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:7
+msgid "Cr_eate"
+msgstr "Stvori"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:8
+msgid "Imendio "
+msgstr "Imendio "
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:9
+msgid "Jabber"
+msgstr "Jabber"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:10
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to started configuring.\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want "
+"to configure in the list on the left."
+msgstr ""
+"Za dodavanje novog korisničkog računa kliknite na 'Dodaj' gumb, koji će "
+"kreirati novi račun kojeg možete podesiti.\n"
+"\n"
+"Ako ne želite dodati korisnički račun, jednostavno odaberite račun koji želite "
+"podesiti u listi lijevo."
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:13
+msgid "_Name:"
+msgstr "Ime:"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:14
+msgid "_Type:"
+msgstr "_Tip:"
+
+#: ../libempathy-gtk/empathy-chat.c:331
+msgid "Disconnected"
+msgstr "Odspojen"
+
+#: ../libempathy-gtk/empathy-chat.c:875
+msgid "Insert Smiley"
+msgstr "Ubaci smješka"
+
+#: ../libempathy-gtk/empathy-chat.c:923
+msgid "_Check Word Spelling..."
+msgstr "_Provjeri pravopis…"
+
+#: ../libempathy-gtk/empathy-chat.c:1347
+msgid "Connected"
+msgstr "Spojen"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:1
+msgid "C_lear"
+msgstr "_Obriši"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:2
+msgid "Change _Topic..."
+msgstr "Promijeni _Temu..."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:3
+msgid "Chat"
+msgstr "Razgovor"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:4
+msgid "Contact Infor_mation"
+msgstr "Infor_macije o kontaktu"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:5
+msgid "Cu_t"
+msgstr "Izreži"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:6
+msgid "In_vite..."
+msgstr "Pozovi..."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:7
+msgid "Insert _Smiley"
+msgstr "Ubaci _smješka"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:8
+msgid "Invitation _message:"
+msgstr "_Pozivna poruka:"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:9
+msgid "Invite"
+msgstr "Pozovi"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:10
+#: ../libempathy-gtk/empathy-main-window.glade.h:4
+msgid "Join _New..."
+msgstr "Nova _soba…"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:11
+msgid "Move Tab _Left"
+msgstr "Pomakni karticu _Lijevo"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:12
+msgid "Move Tab _Right"
+msgstr "Pomakni karticu _Desno"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:13
+msgid "Select who would you like to invite:"
+msgstr "Odaberite kog želite pozvati:"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:14
+msgid "You have been invited to join a chat conference."
+msgstr "Pozvani ste da se pridružite sobi za razgovor."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:15
+#: ../libempathy-gtk/empathy-main-window.glade.h:9
+msgid "_Add Contact..."
+msgstr "_Dodaj kontakt…"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:16
+msgid "_Add To Favorites"
+msgstr "Dodaj u _Favorite"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:17
+msgid "_Close"
+msgstr "_Zatvori"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:18
+msgid "_Conversation"
+msgstr "_Razgovor"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:19
+msgid "_Copy"
+msgstr "_Kopiraj"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:20
+msgid "_Detach Tab"
+msgstr "_Odspoji karticu"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:21
+#: ../libempathy-gtk/empathy-contact-list-view.c:216
+#: ../libempathy-gtk/empathy-main-window.glade.h:12
+msgid "_Edit"
+msgstr "_Uredi"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:22
+msgid "_Next Tab"
+msgstr "Slijedeća kartica"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:23
+msgid "_Paste"
+msgstr "_Zalijepi"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:24
+msgid "_Previous Tab"
+msgstr "Prethodna kartica"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:25
+#: ../libempathy-gtk/empathy-main-window.glade.h:18
+msgid "_Room"
+msgstr "_Soba"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:26
+msgid "_Show Contacts"
+msgstr "_Pokaži kontakte"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:27
+msgid "_Tabs"
+msgstr "_Kartice"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:28
+#: ../libempathy-gtk/empathy-contact-list-view.c:232
+#: ../libempathy-gtk/empathy-main-window.glade.h:19
+msgid "_View Previous Conversations"
+msgstr "_Prikaži prethodne razgovore"
+
+#: ../libempathy-gtk/empathy-chat-view.c:557
+msgid "_Copy Link Address"
+msgstr "_Kopiraj adresu linka"
+
+#: ../libempathy-gtk/empathy-chat-view.c:565
+msgid "_Open Link"
+msgstr "_Otvori link"
+
+#: ../libempathy-gtk/empathy-chat-view.c:902
+msgid "%A %d %B %Y"
+msgstr "%A %d %B %Y"
+
+#: ../libempathy-gtk/empathy-chat-window.c:703
+#: ../libempathy-gtk/empathy-chat-window.c:733
+msgid "New Message"
+msgid_plural "New Messages"
+msgstr[0] "Nova poruka"
+msgstr[1] "Nove poruke"
+msgstr[2] "Novih poruka"
+
+#: ../libempathy-gtk/empathy-chat-window.c:709
+msgid "Chat Room"
+msgstr "Soba za razgovor"
+
+#: ../libempathy-gtk/empathy-chat-window.c:714
+#: ../libempathy-gtk/empathy-chat-window.c:737
+#: ../libempathy-gtk/empathy-log-window.c:525
+#, c-format
+msgid "Conversation"
+msgid_plural "Conversations (%d)"
+msgstr[0] "Razgovor"
+msgstr[1] "Razgovora (%d)"
+msgstr[2] "Razgovora (%d)"
+
+#: ../libempathy-gtk/empathy-chat-window.c:1288
+msgid "Typing a message."
+msgstr "Piše poruku."
+
+#: ../libempathy-gtk/empathy-chatrooms-window.c:251
+msgid "Name"
+msgstr "Ime"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.c:269
+msgid "Room"
+msgstr "Soba"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.c:278
+msgid "Auto Connect"
+msgstr "Automatsko spajanje"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:1
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:5
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:1
+msgid "Account:"
+msgstr "Korisnički račun:"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:2
+msgid "Edit Favorite Room"
+msgstr "Uredi favorizirane sobe"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:3
+msgid "Join room on start_up"
+msgstr "Pridruži se sobi prilikom pokretanja"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:4
+msgid "Join this chat room when Empathy starts and you are connected"
+msgstr "Spoji se u ovu sobu prilikom pokretanja Empathya ako si spojen"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:5
+msgid "Manage Favorite Rooms"
+msgstr "Uređivanje favoriziranih soba"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:6
+msgid "N_ame:"
+msgstr "_Naziv:"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:7
+msgid "S_erver:"
+msgstr "_Poslužitelj:"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:8
+msgid "_Nickname:"
+msgstr "_Nadimak:"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:9
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:9
+msgid "_Room:"
+msgstr "_Soba:"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:169
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:9
+msgid "Contact information"
+msgstr "Informacije o kontaktu"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:217
+msgid "I would like to add you to my contact list."
+msgstr "Želim Vas dodati na svoju listu kontakata."
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:241
+msgid "New contact"
+msgstr "Novi kontakt"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.glade.h:1
+msgid "Decide _Later"
+msgstr "Odlučite kasnije"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.glade.h:2
+msgid "Subscription Request"
+msgstr "Zahtjev za pretplatom"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:196
+msgid "_Contact"
+msgstr "_Kontakt"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:200
+msgid "_Group"
+msgstr "_Grupa"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:204
+#: ../libempathy-gtk/empathy-main-window.glade.h:10
+msgid "_Chat"
+msgstr "_Razgovor"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:204
+msgid "Chat with contact"
+msgstr "Razgovor s kontaktom"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:208
+msgid "Infor_mation"
+msgstr "Infor_macija"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:208
+msgid "View contact information"
+msgstr "Pregled informacija o kontaktu"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:212
+msgid "Re_name"
+msgstr "Pro_mijeni ime"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:212
+msgid "Rename"
+msgstr "Promijeni ime"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:216
+msgid "Edit the groups and name for this contact"
+msgstr "Uredite grupe i ime za ovaj kontakt"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:220
+msgid "_Remove"
+msgstr "_Makni"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:220
+msgid "Remove contact"
+msgstr "Makni kontakt iz liste"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:224
+msgid "_Invite to Chat Room"
+msgstr "_Pozovi u sobu za razgovor"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:224
+msgid "Invite to a currently open chat room"
+msgstr "Pozovi u trenutno otvorenu sobu za razgovor"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:228
+msgid "_Send File..."
+msgstr "_Pošalji datoteku…"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:228
+msgid "Send a file"
+msgstr "Pošalji datoteku"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:232
+msgid "View previous conversations with this contact"
+msgstr "Pogledaj prethodne razgovore s ovim kontaktom"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:1488
+msgid "Sorry, I don't want you in my contact list anymore."
+msgstr "Žao mi je, ali ne želim Vas više u svojoj listi kontakata."
+
+#: ../libempathy-gtk/empathy-contact-widget.c:561
+msgid "Select"
+msgstr "Odaberite"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:571
+#: ../libempathy-gtk/empathy-main-window.c:612
+msgid "Group"
+msgstr "Grupa"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:1
+msgid "<b>Client Information</b>"
+msgstr "<b>Informacije o kontaktu</b>"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:2
+msgid "<b>Contact Details</b>"
+msgstr "<b>Detalji kontakta</b>"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:3
+msgid "<b>Contact</b>"
+msgstr "<b>Kontakt</b>"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:4
+msgid "<b>Groups</b>"
+msgstr "<b>Grupe</b>"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:6
+msgid "Alias:"
+msgstr "Alias:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:7
+msgid "Birthday:"
+msgstr "Rođendan:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:8
+msgid "Client:"
+msgstr "Klijent:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:10
+msgid "Email:"
+msgstr "Elektronska pošta:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:11
+msgid "Fullname:"
+msgstr "Puno ime:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:12
+msgid "Identifier:"
+msgstr "Identifikator:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:13
+msgid "Information requested..."
+msgstr "Informacija zatražena..."
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:14
+msgid "OS:"
+msgstr "OS:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:15
+msgid ""
+"Select the groups you want this contact to appear in, you can select more "
+"than one group or no groups."
+msgstr ""
+"Odaberite grupe u kojima želite da se ovaj kontakt pojavi. Možete odabrati "
+"i više od jedne, ili niti jednu grupu."
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:16
+msgid "Version:"
+msgstr "Verzija:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:17
+msgid "Web site:"
+msgstr "Web stranica:"
+
+#: ../libempathy-gtk/empathy-group-chat.c:252
+msgid "Enter the new topic you want to set for this room:"
+msgstr "Unesite novu temu koju želite postaviti za ovu sobu:"
+
+#: ../libempathy-gtk/empathy-group-chat.c:360
+#, c-format
+msgid "%s has joined the room"
+msgstr "%s se pridružio sobi"
+
+#: ../libempathy-gtk/empathy-group-chat.c:376
+#, c-format
+msgid "%s has left the room"
+msgstr "%s je izašao iz sobe"
+
+#: ../libempathy-gtk/empathy-group-chat.c:455
+#, c-format
+msgid "Topic: %s"
+msgstr "Tema: %s"
+
+#: ../libempathy-gtk/empathy-group-chat.c:572
+#, c-format
+msgid "Topic set to: %s"
+msgstr "Tema postavljena na: %s"
+
+#: ../libempathy-gtk/empathy-group-chat.glade.h:1
+msgid "<b>Topic:</b>"
+msgstr "<b>Tema:</b>"
+
+#: ../libempathy-gtk/empathy-group-chat.glade.h:2
+msgid "Group Chat"
+msgstr "Grupni razgovor"
+
+#: ../libempathy-gtk/empathy-log-window.c:518
+msgid "Account"
+msgstr "Korisnički račun"
+
+#: ../libempathy-gtk/empathy-log-window.c:535
+msgid "Date"
+msgstr "Datum"
+
+#: ../libempathy-gtk/empathy-log-window.glade.h:1
+msgid "Conversations"
+msgstr "Razgovori"
+
+#: ../libempathy-gtk/empathy-log-window.glade.h:2
+msgid "Search"
+msgstr "Traži"
+
+#: ../libempathy-gtk/empathy-log-window.glade.h:3
+msgid "View Previous Conversations"
+msgstr "Pregled prethodnih razgovora"
+
+#: ../libempathy-gtk/empathy-log-window.glade.h:4
+msgid "_For:"
+msgstr "_Za:"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.c:310
+msgid "Chat Rooms"
+msgstr "Sobe za razgovor"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:2
+msgid "Browse:"
+msgstr "Pretraži:"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:3
+msgid "Enter the room name to join here or click on one or more rooms in the list."
+msgstr ""
+"Unesite ime sobe kojoj se želite pridružiti, ili odaberite jednu ili više soba iz liste."
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:4
+msgid ""
+"Enter the server which hosts the room, or leave it empty if the room is on "
+"the current account's server"
+msgstr ""
+"Unesite adresu poslužitelja na kojem je ova soba, ili ostavite prazno ako je "
+"soba na poslužitelju trenutnog korisničkog računa"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:5
+msgid "Join"
+msgstr "Pridruži se"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:6
+msgid "Join New"
+msgstr "Nova soba"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:7
+msgid "Re_fresh"
+msgstr "Osvježi"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:8
+msgid "This list represents all chat rooms hosted on the server you have entered."
+msgstr ""
+"Ovaj popis sadrži sve sobe za razgovor na poslužitelju kojeg ste odabrali."
+
+#: ../libempathy-gtk/empathy-main-window.c:277
+msgid "Show and edit accounts"
+msgstr "Prikaži i uredi korisničke račune"
+
+#: ../libempathy-gtk/empathy-main-window.c:633
+msgid "Contact"
+msgstr "Kontakt"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:1
+msgid "Contact List - Empathy"
+msgstr "Lista kontakata - Empathy"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:2
+msgid "Context"
+msgstr "Kontekst"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:3
+msgid "Join _Favorites"
+msgstr "Pridruži se _odabranim sobama"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:5
+msgid "Manage Favorites..."
+msgstr "Uredi odabrane sobe…"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:6
+msgid "Show _Offline Contacts"
+msgstr "Prikaži kontakte koji nisu na mreži"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:7
+msgid "_About"
+msgstr "_O"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:8
+msgid "_Accounts"
+msgstr "_Korisnički računi"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:11
+msgid "_Contents"
+msgstr "_Sadržaj"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:13
+msgid "_Help"
+msgstr "Pomoć"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:14
+#: ../libempathy-gtk/empathy-status-icon.glade.h:2
+msgid "_New Message..."
+msgstr "_Nova poruka…"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:15
+msgid "_Personal Information"
+msgstr "_Osobni podaci"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:16
+msgid "_Preferences"
+msgstr "_Postavke"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:17
+#: ../libempathy-gtk/empathy-status-icon.glade.h:3
+msgid "_Quit"
+msgstr "_Kraj"
+
+#: ../libempathy-gtk/empathy-preferences.c:250
+msgid "Language"
+msgstr "Jezik"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:1
+msgid "<b>Appearance</b>"
+msgstr "<b>Izgled</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:2
+msgid "<b>Audio</b>"
+msgstr "<b>Zvuk</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:3
+msgid "<b>Behaviour</b>"
+msgstr "<b>Ponašanje</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:4
+msgid "<b>Contact List</b>"
+msgstr "<b>Lista kontakata</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:5
+msgid "<b>Languages</b>"
+msgstr "<b>Jezici</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:6
+msgid "<b>Options</b>"
+msgstr "<b>Opcije</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:7
+msgid "<b>Visual</b>"
+msgstr "<b>Izgled</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:8
+msgid ""
+"<small>The list of languages reflects only the languages for which you have "
+"a dictionary installed.</small>"
+msgstr ""
+"<small>Lista jezika sadrži samo jezike za koje ste instalirali riječnik.</small>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:9
+msgid "Avatars are user chosen images shown in the contact list"
+msgstr ""
+"Avatari su slike koje korisnici za sebe odaberu, za prikaz u listi kontakata"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:10
+msgid "Chat Th_eme:"
+msgstr "T_ema razgovora:"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:11
+msgid "Display notifications when contacts come _online"
+msgstr "Prikaži obavjesti kad kontakt dođe na mrežu"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:12
+msgid "Enable sounds when _away"
+msgstr "Omogući zvukove dok je korisnik odsutan"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:13
+msgid "Enable sounds when _busy"
+msgstr "Omogući zvukove dok je korisnik zauzet"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:14
+msgid "General"
+msgstr "Općenito"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:15
+msgid "Notifications"
+msgstr "Obavjesti"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:16
+msgid "Preferences"
+msgstr "Postavke"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:17
+msgid "Show _avatars"
+msgstr "Prikazuj _avatare"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:18
+msgid "Show _smileys as images"
+msgstr "Prikazuj _smješke kao slike"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:19
+msgid "Show co_mpact contact list"
+msgstr "Prikaži kompaktnu listu kontakata"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:20
+msgid "Sort by _name"
+msgstr "Sortiraj po _imenu"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:21
+msgid "Sort by s_tate"
+msgstr "Sortiraj po s_tanju"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:22
+msgid "Spell Checking"
+msgstr "Provjera pravopisa"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:23
+msgid "Themes"
+msgstr "Teme"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:24
+msgid "_Enable spell checking"
+msgstr "_Uključi provjeru pravopisa"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:25
+msgid "_Open new chats in separate windows"
+msgstr "_Otvori nove razgovore u posebnim prozorima"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:26
+msgid "_Play sound when messages arrive"
+msgstr "_Sviraj zvuk kad stigne nova poruka"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:27
+msgid "_Use for chat rooms"
+msgstr "_Koristi za sobe za razgovor"
+
+#: ../libempathy-gtk/empathy-presence-chooser.c:664
+msgid "Custom message..."
+msgstr "Osobna poruka…"
+
+#. Clear list
+#: ../libempathy-gtk/empathy-presence-chooser.c:686
+msgid "Clear List..."
+msgstr "Obriši listu…"
+
+#: ../libempathy-gtk/empathy-presence-chooser.c:765
+msgid "Are you sure you want to clear the list?"
+msgstr "Jeste li sigurni da želite obrisati listu?"
+
+#: ../libempathy-gtk/empathy-presence-chooser.c:769
+msgid ""
+"This will remove any custom messages you have added to the list of preset "
+"status messages."
+msgstr ""
+"Ovo će maknuti sve osobne poruke koje ste dodali u listu statusnih poruka."
+
+#: ../libempathy-gtk/empathy-presence-chooser.c:774
+msgid "Clear List"
+msgstr "Obriši listu"
+
+#: ../libempathy-gtk/empathy-presence-chooser.glade.h:1
+msgid "Enter status message:"
+msgstr "Unesite statusnu poruku:"
+
+#: ../libempathy-gtk/empathy-presence-chooser.glade.h:2
+msgid "Status Message Presets"
+msgstr "Prekonfigurirane statusne poruke"
+
+#: ../libempathy-gtk/empathy-presence-chooser.glade.h:3
+msgid "_Add to status message list"
+msgstr "_Dodaj u listu statusnih poruka"
+
+#: ../libempathy-gtk/empathy-private-chat.c:185
+#, c-format
+msgid "%s went offline"
+msgstr "%s se odspojio s mreže"
+
+#: ../libempathy-gtk/empathy-private-chat.c:199
+#, c-format
+msgid "%s has come online"
+msgstr "%s je došao na mrežu"
+
+#: ../libempathy-gtk/empathy-spell-dialog.c:85
+msgid "Word"
+msgstr "Riječ"
+
+#: ../libempathy-gtk/empathy-spell-dialog.c:258
+msgid "Suggestions for the word"
+msgstr "Sugestije za riječ"
+
+#: ../libempathy-gtk/empathy-spell-dialog.glade.h:1
+msgid "Spell Checker"
+msgstr "Provjera pravopisa"
+
+#: ../libempathy-gtk/empathy-spell-dialog.glade.h:2
+msgid "Suggestions for the word:"
+msgstr "Sugestije za riječ:"
+
+#: ../libempathy-gtk/empathy-status-icon.c:300
+#, c-format
+msgid ""
+"New message from %s:\n"
+"%s"
+msgstr ""
+"Nova poruka od %s:\n"
+"%s"
+
+#: ../libempathy-gtk/empathy-status-icon.c:549
+#, c-format
+msgid ""
+"Subscription requested for %s\n"
+"Message: %s"
+msgstr ""
+"Zahtjev za pretplatu za %s\n"
+"Poruka: %s"
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:1
+msgid "Status"
+msgstr "Status"
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:4
+msgid "_Show Contact List"
+msgstr "_Prikaži listu kontakata"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:87
+msgid "Classic"
+msgstr "Klasik"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:88
+msgid "Simple"
+msgstr "Jednostavno"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:89
+msgid "Clean"
+msgstr "Čisto"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:90
+msgid "Blue"
+msgstr "Plavo"
+
+#: ../src/empathy.c:165
+msgid "Don't connect on startup"
+msgstr "Nemoj se spojiti pri pokretanju"
+
+#: ../src/empathy.c:176
+msgid "- Empathy Instant Messenger"
+msgstr "- Empathy instant komunikacija"
+
+
diff --git a/gnome-2-22/po/hu.po b/gnome-2-22/po/hu.po
new file mode 100644
index 000000000..c7baeeba6
--- /dev/null
+++ b/gnome-2-22/po/hu.po
@@ -0,0 +1,1311 @@
+# Hungarian translation of gossip
+# This file is distributed under the same license as the gossip package.
+# Copyright (C) 2005, 2006, 2007, Free Software Foundation, Inc.
+#
+# Gabor Kelemen <kelemeng@gnome.hu>, 2005, 2006, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: gossip.HEAD\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-10-28 12:07+0000\n"
+"PO-Revision-Date: 2007-10-30 14:31+0100\n"
+"Last-Translator: Gabor Kelemen <kelemeng@gnome.hu>\n"
+"Language-Team: Hungarian <gnome@gnome.hu>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: ../data/empathy.desktop.in.in.h:1
+msgid "Empathy Instant Messenger"
+msgstr "Empathy azonnali üzenő"
+
+#: ../data/empathy.desktop.in.in.h:2
+msgid "Send and receive instant messages"
+msgstr "Azonnali üzenetek küldése és fogadása"
+
+#: ../data/empathy.schemas.in.h:1
+msgid "Always open a separate chat window for new chats."
+msgstr "Mindig külön ablakot nyisson az új csevegéseknek."
+
+#: ../data/empathy.schemas.in.h:2
+msgid "Chat window theme"
+msgstr "Csevegőablak témája"
+
+#: ../data/empathy.schemas.in.h:3
+msgid "Checks if Salut account is created"
+msgstr "Ellenőrzi a Salut fiók létrehozását"
+
+#: ../data/empathy.schemas.in.h:4
+msgid "Comma separated list of spell checker languages to use (e.g. en, fr, nl)."
+msgstr ""
+"A helyesírás-ellenőrző által használandó nyelvek vesszővel elválasztott "
+"listája (például en, fr, hu)."
+
+#: ../data/empathy.schemas.in.h:5
+msgid "Compact contact list"
+msgstr "Tömör partnerlista"
+
+#: ../data/empathy.schemas.in.h:6
+msgid "Contact list sort criterium"
+msgstr "Partnerlista rendezési feltétele"
+
+#: ../data/empathy.schemas.in.h:7
+msgid "Default directory to select an avatar image from"
+msgstr "Alapértelmezett könyvtár avatar kép kiválasztásához"
+
+#: ../data/empathy.schemas.in.h:8
+msgid "Enable popup when contact is available"
+msgstr "Felugró ablak engedélyezése partner elérhetővé válásakor"
+
+#: ../data/empathy.schemas.in.h:9
+msgid "Enable sound when away"
+msgstr "Hang engedélyezése, ha távol vagyok"
+
+#: ../data/empathy.schemas.in.h:10
+msgid "Enable sound when busy"
+msgstr "Hang engedélyezése, ha elfoglalt vagyok"
+
+#: ../data/empathy.schemas.in.h:11
+msgid "Enable spell checker"
+msgstr "Helyesírás-ellenőrző engedélyezése"
+
+#: ../data/empathy.schemas.in.h:12
+msgid "Hide main window"
+msgstr "Főablak elrejtése"
+
+#: ../data/empathy.schemas.in.h:13
+msgid "Hide the main window."
+msgstr "A főablak elrejtése."
+
+#: ../data/empathy.schemas.in.h:14
+msgid "Open new chats in separate windows"
+msgstr "Új csevegések megnyitása külön ablakokban"
+
+#: ../data/empathy.schemas.in.h:15
+msgid "Show avatars"
+msgstr "Avatarok mutatása"
+
+#: ../data/empathy.schemas.in.h:16
+msgid "Show hint about closing the main window"
+msgstr "Tanács megjelenítése a főablak bezárásakor"
+
+#: ../data/empathy.schemas.in.h:17
+msgid "Show offline contacts"
+msgstr "Kilépett partnerek mutatása"
+
+#: ../data/empathy.schemas.in.h:18
+msgid "Spell checking languages"
+msgstr "Helyesírás-ellenőrző nyelvei"
+
+#: ../data/empathy.schemas.in.h:19
+msgid "The last directory that an avatar image was chosen from."
+msgstr "Az utolsó könyvtár, amelyből egy avatar kép kiválasztásra került."
+
+#: ../data/empathy.schemas.in.h:20
+msgid "The theme that is used to display the conversation in chat windows."
+msgstr "A beszélgetés megjelenítésére használt téma a csevegőablakokban."
+
+#: ../data/empathy.schemas.in.h:21
+msgid "Use graphical smileys"
+msgstr "Grafikus hangulatjelek használata"
+
+#: ../data/empathy.schemas.in.h:22
+msgid "Use notification sounds"
+msgstr "Értesítő hangok használata"
+
+#: ../data/empathy.schemas.in.h:23
+msgid "Use theme for chat rooms"
+msgstr "Téma használata a csevegőszobákhoz"
+
+#: ../data/empathy.schemas.in.h:24
+msgid "Whether or not the Salut account has been created on the first empathy run."
+msgstr "A Salut fiók létrejött-e az Empathy első futtatásakor."
+
+#: ../data/empathy.schemas.in.h:25
+msgid ""
+"Whether or not to check words typed against the languages you want to check "
+"with."
+msgstr "A beírt szavak ellenőrzése az ellenőrizni kívánt nyelveken."
+
+#: ../data/empathy.schemas.in.h:26
+msgid "Whether or not to convert smileys into graphical images in conversations."
+msgstr "Hangulatjelek képekké alakítása társalgások közben."
+
+#: ../data/empathy.schemas.in.h:27
+msgid "Whether or not to play a sound when messages arrive."
+msgstr "Lejátsszon-e hangot üzenetek érkezésekor?"
+
+#: ../data/empathy.schemas.in.h:28
+msgid "Whether or not to play sounds when away."
+msgstr "Lejátsszon-e hangot ha Ön távol van?"
+
+#: ../data/empathy.schemas.in.h:29
+msgid "Whether or not to play sounds when busy."
+msgstr "Lejátsszon-e hangot ha Ön elfoglalt?"
+
+#: ../data/empathy.schemas.in.h:30
+msgid "Whether or not to show a popup when a contact becomes available."
+msgstr "Megjelenjen-e egy felugró ablak egy partner elérhetővé válásakor?"
+
+#: ../data/empathy.schemas.in.h:31
+msgid ""
+"Whether or not to show avatars for contacts in the contact list and chat "
+"windows."
+msgstr ""
+"Megjelenjenek-e az avatarok a partnerekhez a partnerlistában és "
+"csevegőablakokban?"
+
+#: ../data/empathy.schemas.in.h:32
+msgid "Whether or not to show contacts that are offline in the contact list."
+msgstr "Kilépett partnerek mutatása a partnerlistában."
+
+#: ../data/empathy.schemas.in.h:33
+msgid ""
+"Whether or not to show the message dialog about closing the main window with "
+"the 'x' button in the title bar."
+msgstr "Megjelenjen-e párbeszédablak a főablak bezárásakor a címsor X gombjával."
+
+#: ../data/empathy.schemas.in.h:34
+msgid "Whether to show the contact list in compact mode or not."
+msgstr "Megjelenjen-e a partnerlista tömör módban."
+
+#: ../data/empathy.schemas.in.h:35
+msgid "Whether to use the theme for chat rooms or not."
+msgstr "A téma használata csevegőszobákhoz."
+
+#: ../data/empathy.schemas.in.h:36
+msgid ""
+"Which criterium to use when sorting the contact list. Default is to use sort "
+"by the contact's name with the value \"name\". A value of \"state\" will "
+"sort the contact list by state."
+msgstr ""
+"A partnerlista rendezéséhez használandó feltétel. A lehetséges értékek: "
+"\"name\" (név, ez az alapértelmezett) és \"state\" (állapot)."
+
+#: ../libempathy/empathy-presence.c:185 ../libempathy/empathy-presence.c:285
+msgid "Offline"
+msgstr "Kilépett"
+
+#: ../libempathy/empathy-presence.c:275
+msgid "Available"
+msgstr "Elérhető"
+
+#: ../libempathy/empathy-presence.c:277
+msgid "Busy"
+msgstr "Elfoglalt"
+
+#: ../libempathy/empathy-presence.c:280
+msgid "Away"
+msgstr "Távol"
+
+#: ../libempathy/empathy-presence.c:282
+msgid "Hidden"
+msgstr "Rejtett"
+
+#: ../libempathy/empathy-tp-contact-list.c:729 ../src/empathy.c:212
+msgid "People nearby"
+msgstr "Közeli emberek"
+
+#: ../libempathy-gtk/empathy-about-dialog.c:63
+msgid ""
+"Empathy is free software; you can redistribute it and/or modify it under the "
+"terms of the GNU General Public License as published by the Free Software "
+"Foundation; either version 2 of the License, or (at your option) any later "
+"version."
+msgstr ""
+"Az Empathy szabad szoftver, terjesztheti és/vagy módosíthatja a Free "
+"Software Foundation által kiadott GNU General Public License második (vagy "
+"bármely későbbi) változatában foglaltak alapján."
+
+#: ../libempathy-gtk/empathy-about-dialog.c:67
+msgid ""
+"Empathy is distributed in the hope that it will be useful, but WITHOUT ANY "
+"WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS "
+"FOR A PARTICULAR PURPOSE. See the GNU General Public License for more "
+"details."
+msgstr ""
+"Az Empathy programot abban a reményben terjesztjük, hogy hasznos lesz, de "
+"nem vállalunk SEMMIFÉLE GARANCIÁT, még olyan értelemben sem, hogy a program "
+"alkalmas-e a KÖZREADÁSRA vagy EGY BIZONYOS FELADAT ELVÉGZÉSÉRE. További "
+"részletekért tanulmányozza a GNU GPL licencet."
+
+#: ../libempathy-gtk/empathy-about-dialog.c:71
+msgid ""
+"You should have received a copy of the GNU General Public License along with "
+"Empathy; if not, write to the Free Software Foundation, Inc., 51 Franklin "
+"Street, Fifth Floor, Boston, MA 02110-130159 USA"
+msgstr ""
+"Az Empathy programhoz a GNU General Public License egy példánya is jár, ha "
+"nem kapta meg, írjon a Free Software Foundation Inc.-nek. Levélcímük: 51 "
+"Franklin Street, Fifth Floor, Boston, MA 02110-130159 USA"
+
+#: ../libempathy-gtk/empathy-about-dialog.c:99
+msgid "An Instant Messaging client for GNOME"
+msgstr "Egy azonnaliüzenő-kliens a GNOME-hoz"
+
+#: ../libempathy-gtk/empathy-about-dialog.c:105
+msgid "translator-credits"
+msgstr "Kelemen Gábor <kelemeng@gnome.hu>"
+
+#: ../libempathy-gtk/empathy-account-chooser.c:337
+msgid "All"
+msgstr "Minden"
+
+#: ../libempathy-gtk/empathy-account-widget-generic.c:146
+#: ../libempathy-gtk/empathy-account-widget-generic.c:208
+#, c-format
+msgid "%s:"
+msgstr "%s:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:1
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:1
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:1
+msgid "<b>Advanced</b>"
+msgstr "<b>Haladó</b>"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:2
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:2
+msgid "Forget password and clear the entry."
+msgstr "A jelszó elfelejtése és a mező törlése."
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:3
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:3
+msgid "Login I_D:"
+msgstr "Bejelentkezési a_zonosító:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:4
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:4
+msgid "Pass_word:"
+msgstr "_Jelszó:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:5
+msgid "Reso_urce:"
+msgstr "_Erőforrás:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:6
+msgid "Use encryption (SS_L)"
+msgstr "_Titkosítás használata (SSL)"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:7
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:5
+msgid "_Port:"
+msgstr "_Port:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:8
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:6
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:10
+msgid "_Server:"
+msgstr "_Kiszolgáló:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:9
+msgid "jabber account settings"
+msgstr "jabber fiókbeállítások"
+
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:7
+msgid "msn account settings"
+msgstr "msn fiókbeállítások"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:2
+msgid "_E-mail:"
+msgstr "_E-mail:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:3
+msgid "_First Name: "
+msgstr "_Utónév: "
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:4
+msgid "_Jabber ID:"
+msgstr "_Jabber azonosító:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:5
+msgid "_Last Name:"
+msgstr "_Vezetéknév:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:6
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:8
+msgid "_Nickname:"
+msgstr "_Becenév:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:7
+msgid "_Published Name:"
+msgstr "_Közzétett név:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:8
+msgid "salut account settings"
+msgstr "salut fiókbeállítások"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:218
+msgid "Disable"
+msgstr "Tiltás"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:221
+msgid "Enable"
+msgstr "Engedélyezés"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:256
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to start configuring."
+msgstr ""
+"Új fiók hozzáadásához kattintson a Hozzáadás gombra és létrejön egy új "
+"bejegyzés a beállítás elkezdéséhez."
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:260
+msgid ""
+"To add a new account, you first have to install a backend for each protocol "
+"you want to use."
+msgstr "Új fiók létrehozásához először telepítenie kell egy háttérprogramot minden használandó protokollhoz."
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:267
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:2
+msgid "<b>No Account Selected</b>"
+msgstr "<b>Nincs kiválasztva fiók</b>"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:268
+msgid ""
+"\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want "
+"to configure in the list on the left."
+msgstr ""
+"\n"
+"\n"
+"Ha nem kíván fiókot hozzáadni, akkor kattintson a beállítani kívánt fiókra a "
+"bal oldali listában."
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:274
+msgid "<b>No Accounts Configured</b>"
+msgstr "<b>Nincsenek beállítva fiókok</b>"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:401
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:4
+msgid "Accounts"
+msgstr "Fiókok"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:898
+#, c-format
+msgid ""
+"You are about to remove your %s account!\n"
+"Are you sure you want to proceed?"
+msgstr ""
+"A(z) %s fiókjának eltávolítására készül!\n"
+"Biztosan folytatni akarja?"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:904
+msgid ""
+"Any associated conversations and chat rooms will NOT be removed if you "
+"decide to proceed.\n"
+"\n"
+"Should you decide to add the account back at a later time, they will still "
+"be available."
+msgstr ""
+"A társított társalgások és csevegőszobák NEM kerülnek törlésre ha a "
+"folytatást választja.\n"
+"\n"
+"Ha később a fiók visszaállítása mellett dönt, akkor ezek elérhetővé válnak."
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:1
+msgid "<b>New Account</b>"
+msgstr "<b>Új fiók</b>"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:3
+msgid "<b>Settings</b>"
+msgstr "<b>Beállítások</b>"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:5
+msgid "Cr_eate"
+msgstr "_Létrehozás"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:6
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to started configuring.\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want "
+"to configure in the list on the left."
+msgstr ""
+"Új fiók hozzáadásához kattintson a Hozzáadás gombra és létrejön egy új "
+"bejegyzés a beállítás elkezdéséhez.\n"
+"\n"
+"Ha nem kíván fiókot hozzáadni, akkor kattintson a beállítani kívánt fiókra a "
+"bal oldali listában."
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:9
+msgid "Type:"
+msgstr "Típus:"
+
+#: ../libempathy-gtk/empathy-avatar-chooser.c:448
+msgid "Select Your Avatar Image"
+msgstr "Válassza ki az avatarját"
+
+#: ../libempathy-gtk/empathy-avatar-chooser.c:451
+msgid "No Image"
+msgstr "Nincs kép"
+
+#: ../libempathy-gtk/empathy-avatar-chooser.c:511
+msgid "Images"
+msgstr "Képek"
+
+#: ../libempathy-gtk/empathy-avatar-chooser.c:515
+msgid "All Files"
+msgstr "Minden fájl"
+
+#: ../libempathy-gtk/empathy-avatar-image.c:298
+msgid "Click to enlarge"
+msgstr "Kattintson ide a nagyításhoz"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:1
+msgid "Call"
+msgstr "Hívás"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:2
+msgid "Input"
+msgstr "Bevitel"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:3
+msgid "Mute"
+msgstr "Némítás"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:4
+msgid "Output"
+msgstr "Kimenet"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:5
+msgid "Send Video"
+msgstr "Videó küldése"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:6
+msgid "Volume"
+msgstr "Hangerő"
+
+#: ../libempathy-gtk/empathy-chat.c:332
+msgid "Disconnected"
+msgstr "Kapcsolat bontva"
+
+#: ../libempathy-gtk/empathy-chat.c:452
+msgid "offline"
+msgstr "kilépett"
+
+#: ../libempathy-gtk/empathy-chat.c:455
+msgid "invalid contact"
+msgstr "érvénytelen partner"
+
+#: ../libempathy-gtk/empathy-chat.c:458
+msgid "permission denied"
+msgstr "hozzáférés megtagadva"
+
+#: ../libempathy-gtk/empathy-chat.c:461
+msgid "too long message"
+msgstr "túl hosszú üzenet"
+
+#: ../libempathy-gtk/empathy-chat.c:464
+msgid "not implemented"
+msgstr "nincs megvalósítva"
+
+#: ../libempathy-gtk/empathy-chat.c:467
+msgid "unknown"
+msgstr "ismeretlen"
+
+#: ../libempathy-gtk/empathy-chat.c:471
+#, c-format
+msgid "Error sending message '%s': %s"
+msgstr "hiba a(z) \"%s\" üzenet elküldésekor: %s"
+
+#: ../libempathy-gtk/empathy-chat.c:926
+msgid "Insert Smiley"
+msgstr "Hangulatjel beszúrása"
+
+#: ../libempathy-gtk/empathy-chat.c:973
+msgid "_Check Word Spelling..."
+msgstr "Szó _helyesírásának ellenőrzése..."
+
+#: ../libempathy-gtk/empathy-chat.c:1398
+msgid "Connected"
+msgstr "Kapcsolódva"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:1
+msgid "C_lear"
+msgstr "_Törlés"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:2
+msgid "Ca_ll"
+msgstr "_Hívás"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:3
+msgid "Change _Topic..."
+msgstr "_Téma módosítása..."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:4
+msgid "Chat"
+msgstr "Csevegés"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:5
+msgid "Contact Infor_mation"
+msgstr "_Partnerinformációk"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:6
+msgid "Cu_t"
+msgstr "_Kivágás"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:7
+msgid "In_vite..."
+msgstr "_Meghívás..."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:8
+msgid "Insert _Smiley"
+msgstr "Ha_ngulatjel beszúrása"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:9
+msgid "Invitation _message:"
+msgstr "Meghívó ü_zenet:"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:10
+msgid "Invite"
+msgstr "Meghívás"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:11
+#: ../libempathy-gtk/empathy-main-window.glade.h:4
+msgid "Join _New..."
+msgstr "Csatlakozás ú_jhoz..."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:12
+msgid "Move Tab _Left"
+msgstr "Lap _balra"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:13
+msgid "Move Tab _Right"
+msgstr "Lap j_obbra"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:14
+msgid "Select who would you like to invite:"
+msgstr "Válassza ki, hogy kit szeretne meghívni:"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:15
+msgid "You have been invited to join a chat conference."
+msgstr "Meghívást kapott egy konferenciacsevegésre."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:16
+#: ../libempathy-gtk/empathy-main-window.glade.h:9
+msgid "_Add Contact..."
+msgstr "Partner _felvétele..."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:17
+msgid "_Add To Favorites"
+msgstr "_Hozzáadás a kedvencekhez"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:18
+msgid "_Close"
+msgstr "_Bezárás"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:19
+msgid "_Conversation"
+msgstr "_Társalgás"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:20
+msgid "_Copy"
+msgstr "_Másolás"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:21
+msgid "_Detach Tab"
+msgstr "_Lap leválasztása"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:22
+#: ../libempathy-gtk/empathy-contact-list-view.c:218
+#: ../libempathy-gtk/empathy-main-window.glade.h:12
+msgid "_Edit"
+msgstr "S_zerkesztés"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:23
+msgid "_Next Tab"
+msgstr "_Következő lap"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:24
+msgid "_Paste"
+msgstr "_Beillesztés"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:25
+msgid "_Previous Tab"
+msgstr "_Előző lap"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:26
+#: ../libempathy-gtk/empathy-main-window.glade.h:18
+msgid "_Room"
+msgstr "Sz_oba"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:27
+msgid "_Show Contacts"
+msgstr "Partnerek _mutatása"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:28
+msgid "_Tabs"
+msgstr "_Lapok"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:29
+#: ../libempathy-gtk/empathy-contact-list-view.c:234
+#: ../libempathy-gtk/empathy-main-window.glade.h:19
+msgid "_View Previous Conversations"
+msgstr "K_orábbi társalgások megjelenítése"
+
+#: ../libempathy-gtk/empathy-chat-view.c:468
+msgid "_Copy Link Address"
+msgstr "Hivatkozás cí_mének másolása"
+
+#: ../libempathy-gtk/empathy-chat-view.c:476
+msgid "_Open Link"
+msgstr "_Hivatkozás megnyitása"
+
+#: ../libempathy-gtk/empathy-chat-view.c:754
+msgid "%A %d %B %Y"
+msgstr "%y. %B %e %A"
+
+#: ../libempathy-gtk/empathy-chat-window.c:695
+#, c-format
+msgid "Conversations (%d)"
+msgstr "Társalgások (%d)"
+
+#: ../libempathy-gtk/empathy-chat-window.c:1281
+msgid "Typing a message."
+msgstr "Üzenet írása."
+
+#: ../libempathy-gtk/empathy-chatrooms-window.c:258
+msgid "Name"
+msgstr "Név"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.c:276
+msgid "Room"
+msgstr "Szoba"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.c:285
+msgid "Auto Connect"
+msgstr "Automatikus kapcsolódás"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:1
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:5
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:1
+msgid "Account:"
+msgstr "Felhasználói fiók:"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:2
+msgid "Edit Favorite Room"
+msgstr "Kedvenc szoba szerkesztése"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:3
+msgid "Join room on start_up"
+msgstr "_Csatlakozás a szobához indításkor"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:4
+msgid "Join this chat room when Empathy starts and you are connected"
+msgstr "Csatlakozás ehhez a csevegőszobához az Empathy indításakor"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:5
+msgid "Manage Favorite Rooms"
+msgstr "Kedvenc szobák kezelése"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:6
+msgid "N_ame:"
+msgstr "Né_v:"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:7
+msgid "S_erver:"
+msgstr "_Kiszolgáló:"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:9
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:9
+msgid "_Room:"
+msgstr "Sz_oba:"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:176
+msgid "Personal Information"
+msgstr "Személyes információk"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:179
+msgid "Edit Contact Information"
+msgstr "Partnerinformációk szerkesztése"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:182
+msgid "Contact Information"
+msgstr "Partnerinformációk"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:277
+msgid "I would like to add you to my contact list."
+msgstr "Szeretném hozzáadni Önt a partnerlistámhoz."
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:301
+msgid "New Contact"
+msgstr "Új partner"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.glade.h:1
+msgid "Decide _Later"
+msgstr "_Döntés később"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.glade.h:2
+msgid "Subscription Request"
+msgstr "Feliratkozási kérés"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:198
+msgid "_Contact"
+msgstr "_Partner"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:202
+msgid "_Group"
+msgstr "_Csoport"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:206
+#: ../libempathy-gtk/empathy-main-window.glade.h:10
+msgid "_Chat"
+msgstr "_Csevegés"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:206
+msgid "Chat with contact"
+msgstr "Csevegés partnerrel"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:210
+msgid "Infor_mation"
+msgstr "_Információk"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:210
+msgid "View contact information"
+msgstr "Partnerinformációk megjelenítése"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:214
+msgid "Re_name"
+msgstr "Át_nevezés"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:214
+msgid "Rename"
+msgstr "Átnevezés"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:218
+msgid "Edit the groups and name for this contact"
+msgstr "Partner csoportjainak és nevének szerkesztése"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:222
+msgid "_Remove"
+msgstr "_Eltávolítás"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:222
+msgid "Remove contact"
+msgstr "Partner eltávolítása"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:226
+msgid "_Invite to Chat Room"
+msgstr "Meg_hívás csevegőszobába"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:226
+msgid "Invite to a currently open chat room"
+msgstr "Meghívás egy jelenleg megnyitott csevegőszobába"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:230
+msgid "_Send File..."
+msgstr "_Fájl küldése..."
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:230
+msgid "Send a file"
+msgstr "Fájl küldése"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:234
+msgid "View previous conversations with this contact"
+msgstr "A partnerrel folytatott korábbi társalgások megjelenítése"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:239
+msgid "_Call"
+msgstr "_Hívás"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:239
+msgid "Start a voice or video conversation with this contact"
+msgstr "Hang- vagy videotársalgás kezdése a partnerrel"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:1415
+msgid "Sorry, I don't want you in my contact list anymore."
+msgstr "Elnézést, már nem szeretném a partnerlistámon látni."
+
+#: ../libempathy-gtk/empathy-contact-widget.c:656
+msgid "Select"
+msgstr "Kijelölés"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:666
+#: ../libempathy-gtk/empathy-main-window.c:607
+msgid "Group"
+msgstr "Csoport"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:1
+msgid "<b>Client Information</b>"
+msgstr "<b>Kliensinformációk</b>"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:2
+msgid "<b>Contact Details</b>"
+msgstr "<b>Partner részletei</b>"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:3
+msgid "<b>Contact</b>"
+msgstr "<b>Partner</b>"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:4
+msgid "<b>Groups</b>"
+msgstr "<b>Csoportok</b>"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:6
+msgid "Alias:"
+msgstr "Álnév:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:7
+msgid "Birthday:"
+msgstr "Születésnap:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:8
+msgid "Client:"
+msgstr "Kliens:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:9
+msgid "Contact information"
+msgstr "Partnerinformációk"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:10
+msgid "Email:"
+msgstr "E-mail:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:11
+msgid "Fullname:"
+msgstr "Teljes név:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:12
+msgid "Identifier:"
+msgstr "Azonosító:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:13
+msgid "Information requested..."
+msgstr "Információk lekérve..."
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:14
+msgid "OS:"
+msgstr "OS:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:15
+msgid ""
+"Select the groups you want this contact to appear in, you can select more "
+"than one group or no groups."
+msgstr ""
+"Válassza ki azokat a csoportokat, amelyekben a partner megjelenjen, "
+"kiválaszthat nulla vagy több csoportot is."
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:16
+msgid "Version:"
+msgstr "Verzió:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:17
+msgid "Web site:"
+msgstr "Weboldal:"
+
+#: ../libempathy-gtk/empathy-group-chat.c:253
+msgid "Enter the new topic you want to set for this room:"
+msgstr "Adja meg a szoba új témáját:"
+
+#: ../libempathy-gtk/empathy-group-chat.c:366
+#, c-format
+msgid "%s has joined the room"
+msgstr "%s belépett a szobába"
+
+#: ../libempathy-gtk/empathy-group-chat.c:369
+#, c-format
+msgid "%s has left the room"
+msgstr "%s elhagyta a szobát"
+
+#: ../libempathy-gtk/empathy-group-chat.c:449
+#, c-format
+msgid "Topic: %s"
+msgstr "Téma: %s"
+
+#: ../libempathy-gtk/empathy-group-chat.c:571
+#, c-format
+msgid "Topic set to: %s"
+msgstr "Téma beállítva: %s"
+
+#: ../libempathy-gtk/empathy-group-chat.c:573
+msgid "No topic defined"
+msgstr "Nincs megadva témakör"
+
+#: ../libempathy-gtk/empathy-group-chat.glade.h:1
+msgid "<b>Topic:</b>"
+msgstr "<b>Téma:</b>"
+
+#: ../libempathy-gtk/empathy-group-chat.glade.h:2
+msgid "Group Chat"
+msgstr "Csoport"
+
+#: ../libempathy-gtk/empathy-log-window.c:497
+msgid "Account"
+msgstr "Fiók"
+
+#: ../libempathy-gtk/empathy-log-window.c:504
+msgid "Conversation"
+msgstr "Társalgás"
+
+#: ../libempathy-gtk/empathy-log-window.c:514
+msgid "Date"
+msgstr "Dátum"
+
+#: ../libempathy-gtk/empathy-log-window.glade.h:1
+msgid "Conversations"
+msgstr "Társalgások"
+
+#: ../libempathy-gtk/empathy-log-window.glade.h:2
+msgid "Previous Conversations"
+msgstr "Korábbi társalgások"
+
+#: ../libempathy-gtk/empathy-log-window.glade.h:3
+msgid "Search"
+msgstr "Keresés"
+
+#: ../libempathy-gtk/empathy-log-window.glade.h:4
+msgid "_For:"
+msgstr "_Ehhez:"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.c:286
+msgid "Chat Rooms"
+msgstr "Csevegőszobák"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:2
+msgid "Browse:"
+msgstr "Keresés:"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:3
+msgid "Enter the room name to join here or click on one or more rooms in the list."
+msgstr ""
+"Itt adja meg a szoba nevét a csatlakozáshoz, vagy kattintson néhány, a "
+"listán látható szobára."
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:4
+msgid ""
+"Enter the server which hosts the room, or leave it empty if the room is on "
+"the current account's server"
+msgstr "Adja meg a szobát üzemeltető kiszolgáló nevét, vagy hagyja üresen ha a szoba a jelenlegi fiókéval egyező kiszolgálón van"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:5
+msgid "Join"
+msgstr "Csatlakozás"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:6
+msgid "Join New"
+msgstr "Csatlakozás újhoz"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:7
+msgid "Re_fresh"
+msgstr "_Frissítés"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:8
+msgid "This list represents all chat rooms hosted on the server you have entered."
+msgstr "A lista a kiszolgálón található összes csevegőszobát képviseli."
+
+#: ../libempathy-gtk/empathy-main-window.c:275
+msgid "Show and edit accounts"
+msgstr "Fiókok megjelenítése és szerkesztése"
+
+#: ../libempathy-gtk/empathy-main-window.c:628
+msgid "Contact"
+msgstr "Partner"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:1
+msgid "Contact List"
+msgstr "Partnerlista"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:2
+msgid "Context"
+msgstr "Környezet"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:3
+msgid "Join _Favorites"
+msgstr "_Csatlakozás a kedvencekhez"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:5
+msgid "Manage Favorites"
+msgstr "Kedvencek kezelése"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:6
+msgid "Show _Offline Contacts"
+msgstr "Kilé_pett partnerek mutatása"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:7
+#: ../megaphone/data/GNOME_Megaphone_Applet.xml.h:1
+#: ../nothere/data/GNOME_NotHere_Applet.xml.h:1
+msgid "_About"
+msgstr "_Névjegy"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:8
+msgid "_Accounts"
+msgstr "_Fiókok"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:11
+msgid "_Contents"
+msgstr "_Tartalom"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:13
+msgid "_Help"
+msgstr "_Súgó"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:14
+#: ../libempathy-gtk/empathy-status-icon.glade.h:2
+msgid "_New Message..."
+msgstr "Ú_j üzenet..."
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:15
+msgid "_Personal Information"
+msgstr "S_zemélyes információk"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:16
+#: ../megaphone/data/GNOME_Megaphone_Applet.xml.h:3
+msgid "_Preferences"
+msgstr "_Beállítások"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:17
+#: ../libempathy-gtk/empathy-status-icon.glade.h:3
+msgid "_Quit"
+msgstr "_Kilépés"
+
+#: ../libempathy-gtk/empathy-preferences.c:243
+msgid "Language"
+msgstr "Nyelv"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:1
+msgid "<b>Appearance</b>"
+msgstr "<b>Megjelenés</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:2
+msgid "<b>Audio</b>"
+msgstr "<b>Audio</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:3
+msgid "<b>Behaviour</b>"
+msgstr "<b>Viselkedés</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:4
+msgid "<b>Contact List</b>"
+msgstr "<b>Partnerlista</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:5
+msgid "<b>Enable spell checking for languages:</b>"
+msgstr "<b>Helyesírás-ellenőrzés ezen nyelveken:</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:6
+msgid "<b>Options</b>"
+msgstr "<b>Beállítások</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:7
+msgid "<b>Visual</b>"
+msgstr "<b>Látvány</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:8
+msgid ""
+"<small>The list of languages reflects only the languages for which you have "
+"a dictionary installed.</small>"
+msgstr ""
+"<small>Ezen az oldalon csak azok a nyelvek vannak felsorolva, amelyekhez "
+"telepítve van szótár.</small>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:9
+msgid "Avatars are user chosen images shown in the contact list"
+msgstr ""
+"Az avatarok a felhasználó által kiválasztott és a partnerlistában megjelenő "
+"képek"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:10
+msgid "Chat Th_eme:"
+msgstr "Csevegés té_mája:"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:11
+msgid "Display notifications when contacts come _online"
+msgstr "Értesítések _megjelenítése, ha a partnerek elérhetővé válnak"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:12
+msgid "Enable sounds when _away"
+msgstr "Hangok engedélyezése, ha _távol vagyok"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:13
+msgid "Enable sounds when _busy"
+msgstr "Hangok engedélyezése, ha el_foglalt vagyok"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:14
+msgid "General"
+msgstr "Általános"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:15
+msgid "Notifications"
+msgstr "Értesítések"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:16
+msgid "Preferences"
+msgstr "Beállítások"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:17
+msgid "Show _avatars"
+msgstr "_Avatarok megjelenítése"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:18
+msgid "Show _smileys as images"
+msgstr "Hang_ulatjelek képekké alakítása"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:19
+msgid "Show co_mpact contact list"
+msgstr "_Tömör partnerlista mutatása"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:20
+msgid "Sort by _name"
+msgstr "Rendezés _név szerint"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:21
+msgid "Sort by s_tate"
+msgstr "Rendezés áll_apot szerint"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:22
+msgid "Spell Checking"
+msgstr "Helyesírás-ellenőrzés"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:23
+msgid "Themes"
+msgstr "Témák"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:24
+msgid "_Open new chats in separate windows"
+msgstr "Új csevegések megnyitása _külön ablakokban"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:25
+msgid "_Play sound when messages arrive"
+msgstr "_Hang lejátszása üzenetek érkezésekor"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:26
+msgid "_Use for chat rooms"
+msgstr "Használat _csevegőszobákhoz"
+
+#. Custom messages
+#: ../libempathy-gtk/empathy-presence-chooser.c:691
+msgid "Custom messages..."
+msgstr "Egyéni üzenetek..."
+
+#: ../libempathy-gtk/empathy-presence-chooser.glade.h:1
+msgid "Custom message"
+msgstr "Egyéni üzenet"
+
+#: ../libempathy-gtk/empathy-presence-chooser.glade.h:2
+msgid "Message:"
+msgstr "Üzenet:"
+
+#: ../libempathy-gtk/empathy-presence-chooser.glade.h:3
+msgid "Save message"
+msgstr "Üzenet mentése"
+
+#: ../libempathy-gtk/empathy-presence-chooser.glade.h:4
+msgid "Status:"
+msgstr "Állapot:"
+
+#: ../libempathy-gtk/empathy-private-chat.c:188
+#, c-format
+msgid "%s went offline"
+msgstr "%s kilépett"
+
+#: ../libempathy-gtk/empathy-private-chat.c:202
+#, c-format
+msgid "%s has come online"
+msgstr "%s elérhetővé vált"
+
+#: ../libempathy-gtk/empathy-spell-dialog.c:85
+msgid "Word"
+msgstr "Szó"
+
+#: ../libempathy-gtk/empathy-spell-dialog.c:258
+msgid "Suggestions for the word"
+msgstr "Javaslat a szóra"
+
+#: ../libempathy-gtk/empathy-spell-dialog.glade.h:1
+msgid "Spell Checker"
+msgstr "Helyesírás-ellenőrző"
+
+#: ../libempathy-gtk/empathy-spell-dialog.glade.h:2
+msgid "Suggestions for the word:"
+msgstr "Javaslatok a szóhoz:"
+
+#: ../libempathy-gtk/empathy-status-icon.c:310
+#, c-format
+msgid ""
+"New message from %s:\n"
+"%s"
+msgstr ""
+"Új üzenet %s partnertől:\n"
+"%s"
+
+#: ../libempathy-gtk/empathy-status-icon.c:579
+#, c-format
+msgid "Subscription requested by %s"
+msgstr "%s feliratkozást kért"
+
+#: ../libempathy-gtk/empathy-status-icon.c:582
+#, c-format
+msgid ""
+"\n"
+"Message: %s"
+msgstr ""
+"\n"
+"Üzenet: %s"
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:1
+msgid "Status"
+msgstr "Állapot"
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:4
+msgid "_Show Contact List"
+msgstr "Partnerlista m_utatása"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:87
+msgid "Classic"
+msgstr "Klasszikus"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:88
+msgid "Simple"
+msgstr "Egyszerű"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:89
+msgid "Clean"
+msgstr "Tiszta"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:90
+msgid "Blue"
+msgstr "Kék"
+
+#: ../megaphone/data/GNOME_Megaphone_Applet.schemas.in.h:1
+msgid "The contact to display in the applet. Empty means no contact is displayed."
+msgstr "A kisalkalmazásban megjelenítendő partner. Ha üres, akkor nem jelenik meg."
+
+#: ../megaphone/data/GNOME_Megaphone_Applet.schemas.in.h:2
+msgid "The contact's avatar token. Empty means contact has no avatar."
+msgstr "A partner avatarja. Ha üres, akkor a partnernek nincs avatarja."
+
+#: ../megaphone/data/GNOME_Megaphone_Applet.server.in.in.h:1
+msgid "Megaphone"
+msgstr "Megaphone"
+
+#: ../megaphone/data/GNOME_Megaphone_Applet.server.in.in.h:2
+#: ../megaphone/src/megaphone-applet.c:419
+msgid "Talk!"
+msgstr "Beszéljen!"
+
+#: ../megaphone/data/GNOME_Megaphone_Applet.xml.h:2
+msgid "_Information"
+msgstr "_Információk"
+
+#: ../nothere/data/GNOME_NotHere_Applet.server.in.in.h:1
+msgid "Presence"
+msgstr "Jelenlét"
+
+#: ../nothere/data/GNOME_NotHere_Applet.server.in.in.h:2
+#: ../nothere/src/nothere-applet.c:89
+msgid "Set your own presence"
+msgstr "Saját jelenlétének beállítása"
+
+#: ../src/empathy.c:272
+msgid "Don't connect on startup"
+msgstr "Ne kapcsolódjon indításkor"
+
+#: ../src/empathy.c:283
+msgid "- Empathy Instant Messenger"
+msgstr "- Empathy azonnali üzenő"
+
diff --git a/gnome-2-22/po/it.po b/gnome-2-22/po/it.po
new file mode 100644
index 000000000..87d3c7918
--- /dev/null
+++ b/gnome-2-22/po/it.po
@@ -0,0 +1,1843 @@
+# Italian translation for Empaty
+# Derived from Gossip Translation
+# Copyright (C) 2003-2008 Free Software Foundation, Inc
+# This file is distributed under the same license as the Empaty package.
+# Fabio Bonelli <fabiobonelli@libero.it>, 2003
+# Michele Baldessari <michele@pupazzo.org>, 2003
+# Milo Casagrande <milo_casagrande@yahoo.it>, 2007-2008
+#
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Empathy\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-05 09:08+0100\n"
+"PO-Revision-Date: 2008-03-05 09:09+0100\n"
+"Last-Translator: Milo Casagrande <milo_casagrande@yahoo.it>\n"
+"Language-Team: Italian <tp@lists.linux.it>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../data/empathy.desktop.in.in.h:1
+msgid "Empathy Instant Messenger"
+msgstr "Empathy - Messaggistica istantanea"
+
+#: ../data/empathy.desktop.in.in.h:2
+msgid "Send and receive instant messages"
+msgstr "Invia e ricevi messaggi istantanei"
+
+#: ../data/empathy.schemas.in.h:1
+msgid "Always open a separate chat window for new chats."
+msgstr "Apre sempre in una finestra separata le nuove conversazioni."
+
+#: ../data/empathy.schemas.in.h:2
+msgid ""
+"Character to add after nickname when using nick completion (tab) in group "
+"chat."
+msgstr ""
+"Il carattere da usare dopo il soprannome quando viene usato il completamento "
+"del soprannome nelle chat di gruppo."
+
+#: ../data/empathy.schemas.in.h:3
+msgid "Chat window theme"
+msgstr "Tema finestra conversazione"
+
+#: ../data/empathy.schemas.in.h:4
+msgid "Checks if Empathy should autoconnect on startup"
+msgstr "Controlla se Empathy deve connettersi automaticamente all'avvio"
+
+#: ../data/empathy.schemas.in.h:5
+msgid "Checks if NetworkManager should be used"
+msgstr "Controlla se deve essere usato NetworkManager"
+
+#: ../data/empathy.schemas.in.h:6
+msgid "Checks if Salut account is created"
+msgstr "Controlla se l'account Salut è stato creato"
+
+# (ndt) non metto fr neanche dopo morto! :D
+#: ../data/empathy.schemas.in.h:7
+msgid ""
+"Comma separated list of spell checker languages to use (e.g. en, fr, nl)."
+msgstr ""
+"Elenco dizionari per il controllo ortografico, separare gli elementi con "
+"virgole (es. it, en, nl)."
+
+#: ../data/empathy.schemas.in.h:8
+msgid "Compact contact list"
+msgstr "Elenco contatti compatto"
+
+#: ../data/empathy.schemas.in.h:9
+msgid "Contact list sort criterium"
+msgstr "Criterio di ordinamento dell'elenco contatti"
+
+#: ../data/empathy.schemas.in.h:10
+msgid "Default directory to select an avatar image from"
+msgstr "Directory predefinita da cui selezionare un'immagine per l'avatar"
+
+#: ../data/empathy.schemas.in.h:11
+msgid "Enable popup when contact is available"
+msgstr "Mostra un pop-up quando un contatto è disponibile"
+
+#: ../data/empathy.schemas.in.h:12
+msgid "Enable sound when away"
+msgstr "Abilita i suoni quando si è assenti"
+
+#: ../data/empathy.schemas.in.h:13
+msgid "Enable sound when busy"
+msgstr "Abilita i suoni quando si è occupati"
+
+#: ../data/empathy.schemas.in.h:14
+msgid "Enable spell checker"
+msgstr "Abilita il correttore ortografico"
+
+#: ../data/empathy.schemas.in.h:15
+msgid "Hide main window"
+msgstr "Nasconde la finestra principale"
+
+#: ../data/empathy.schemas.in.h:16
+msgid "Hide the main window."
+msgstr "Nasconde la finestra principale."
+
+#: ../data/empathy.schemas.in.h:17
+msgid "Nick completed character"
+msgstr "Carattere soprannome completato"
+
+#: ../data/empathy.schemas.in.h:18
+msgid "Open new chats in separate windows"
+msgstr "Apre nuove conversazioni in finestre separate"
+
+#: ../data/empathy.schemas.in.h:19
+msgid "Show avatars"
+msgstr "Mostra gli avatar"
+
+#: ../data/empathy.schemas.in.h:20
+msgid "Show hint about closing the main window"
+msgstr "Mostra suggerimento riguardo la chiusura della finestra principale"
+
+#: ../data/empathy.schemas.in.h:21
+msgid "Show offline contacts"
+msgstr "Mostra contatti non in linea"
+
+#: ../data/empathy.schemas.in.h:22
+msgid "Spell checking languages"
+msgstr "Lingue controllo ortografico"
+
+#: ../data/empathy.schemas.in.h:23
+msgid "The last directory that an avatar image was chosen from."
+msgstr "L'ultima directory da cui è stato scelto un avatar."
+
+#: ../data/empathy.schemas.in.h:24
+msgid "The theme that is used to display the conversation in chat windows."
+msgstr ""
+"Il tema usato per mostrare le conversazioni nelle finestre di conversazione."
+
+#: ../data/empathy.schemas.in.h:25
+msgid "Use graphical smileys"
+msgstr "Utilizza emoticon grafici"
+
+#: ../data/empathy.schemas.in.h:26
+msgid "Use notification sounds"
+msgstr "Utilizza suoni per le notifiche"
+
+#: ../data/empathy.schemas.in.h:27
+msgid "Use theme for chat rooms"
+msgstr "Utilizza un tema per le finestre di conversazione"
+
+#: ../data/empathy.schemas.in.h:28
+msgid ""
+"Whether or not Empathy should automatically login to your accounts on "
+"startup."
+msgstr ""
+"Indica se Empathy deve connettersi automaticamente agli account all'avvio."
+
+#: ../data/empathy.schemas.in.h:29
+msgid ""
+"Whether or not the Salut account has been created on the first empathy run."
+msgstr ""
+"Indica se l'account Salut è stato creato o meno durante la prima esecuzione "
+"di empathy."
+
+#: ../data/empathy.schemas.in.h:30
+msgid ""
+"Whether or not the network manager should be used to automatically "
+"disconnect/reconnect."
+msgstr ""
+"Indica se NetworkManager deve essere usato per connettersi/disconnettersi "
+"automaticamente."
+
+#: ../data/empathy.schemas.in.h:31
+msgid ""
+"Whether or not to check words typed against the languages you want to check "
+"with."
+msgstr ""
+"Indica se verificare o meno le parole digitate con le lingue selezionate."
+
+#: ../data/empathy.schemas.in.h:32
+msgid ""
+"Whether or not to convert smileys into graphical images in conversations."
+msgstr ""
+"Indica se convertire o meno gli emoticon in immagini grafiche durante le "
+"conversazioni."
+
+#: ../data/empathy.schemas.in.h:33
+msgid "Whether or not to play a sound when messages arrive."
+msgstr "Indica se emettere o meno un suono all'arrivo di un messaggio."
+
+#: ../data/empathy.schemas.in.h:34
+msgid "Whether or not to play sounds when away."
+msgstr "Indica se utilizzare o meno i suoni o meno quando si è assenti."
+
+#: ../data/empathy.schemas.in.h:35
+msgid "Whether or not to play sounds when busy."
+msgstr "Indica se utilizzare o meno i suoni quando si è occupati."
+
+#: ../data/empathy.schemas.in.h:36
+msgid "Whether or not to show a popup when a contact becomes available."
+msgstr ""
+"Indica se mostrare o meno un pop-up quando un contatto diventa disponibile."
+
+#: ../data/empathy.schemas.in.h:37
+msgid ""
+"Whether or not to show avatars for contacts in the contact list and chat "
+"windows."
+msgstr ""
+"Indica se mostrare o meno gli avatar dei contatti nell'elenco contatti e "
+"nelle finestre di conversazione."
+
+#: ../data/empathy.schemas.in.h:38
+msgid "Whether or not to show contacts that are offline in the contact list."
+msgstr ""
+"Indica se mostrare o meno i contatti non in linea nell'elenco dei contatti."
+
+#: ../data/empathy.schemas.in.h:39
+msgid ""
+"Whether or not to show the message dialog about closing the main window with "
+"the 'x' button in the title bar."
+msgstr ""
+"Indica se mostrare o meno un dialogo riguardo la chiusura della finestra "
+"principale con il pulsante \"x\" nella barra del titolo."
+
+#: ../data/empathy.schemas.in.h:40
+msgid "Whether to show the contact list in compact mode or not."
+msgstr "Indica se mostrare o meno l'elenco contatti in modalità compatta."
+
+#: ../data/empathy.schemas.in.h:41
+msgid "Whether to use the theme for chat rooms or not."
+msgstr "Indica se usare o meno un tema per le finestre di conversazione."
+
+#: ../data/empathy.schemas.in.h:42
+msgid ""
+"Which criterium to use when sorting the contact list. Default is to use sort "
+"by the contact's name with the value \"name\". A value of \"state\" will "
+"sort the contact list by state."
+msgstr ""
+"Indica quale criterio usare per l'ordinamento dell'elenco contatti. "
+"L'ordinamento predefinito è quello secondo il nome del contatto con il "
+"valore \"name\". Il valore \"state\" ordina in base allo stato del contatto."
+
+#: ../libempathy/empathy-tp-contact-list.c:724 ../src/empathy.c:149
+msgid "People nearby"
+msgstr "Persone nelle vicinanze"
+
+#: ../libempathy/empathy-utils.c:541
+msgid "Available"
+msgstr "Disponibile"
+
+#: ../libempathy/empathy-utils.c:543
+msgid "Busy"
+msgstr "Occupato"
+
+#: ../libempathy/empathy-utils.c:546
+msgid "Away"
+msgstr "Assente"
+
+#: ../libempathy/empathy-utils.c:548
+msgid "Hidden"
+msgstr "Nascosto"
+
+#: ../libempathy/empathy-utils.c:551
+msgid "Offline"
+msgstr "Non in linea"
+
+#: ../libempathy-gtk/empathy-about-dialog.c:63
+msgid ""
+"Empathy is free software; you can redistribute it and/or modify it under the "
+"terms of the GNU General Public License as published by the Free Software "
+"Foundation; either version 2 of the License, or (at your option) any later "
+"version."
+msgstr ""
+"Empathy è software libero; è possibile ridistribuirlo e/o modificarlo "
+"secondo i termini della licenza GNU General Public License, come pubblicata "
+"dalla Free Software Foundation; versione 2 della licenza, o (a scelta) una "
+"versione più recente."
+
+#: ../libempathy-gtk/empathy-about-dialog.c:67
+msgid ""
+"Empathy is distributed in the hope that it will be useful, but WITHOUT ANY "
+"WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS "
+"FOR A PARTICULAR PURPOSE. See the GNU General Public License for more "
+"details."
+msgstr ""
+"Empathy è distribuito nella speranza che possa risultare utile, ma SENZA "
+"ALCUNA GARANZIA, nemmeno la garanzia implicita di COMMERCIABILITÀ o "
+"APPLICABILITÀ PER UNO SCOPO PARTICOLARE. Per maggiori dettagli consultare la "
+"GNU General Public License."
+
+#: ../libempathy-gtk/empathy-about-dialog.c:71
+msgid ""
+"You should have received a copy of the GNU General Public License along with "
+"Empathy; if not, write to the Free Software Foundation, Inc., 51 Franklin "
+"Street, Fifth Floor, Boston, MA 02110-130159 USA"
+msgstr ""
+"Una copia della GNU General Public License dovrebbe essere stata fornita con "
+"questo programma. In caso contrario scrivere a: Free Software Foundation, "
+"Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301, USA"
+
+#: ../libempathy-gtk/empathy-about-dialog.c:99
+msgid "An Instant Messaging client for GNOME"
+msgstr "Un client di messaggistica istantanea per GNOME"
+
+#: ../libempathy-gtk/empathy-about-dialog.c:105
+msgid "translator-credits"
+msgstr ""
+"Milo Casagrande <milo_casagrande@yahoo.it>\n"
+"Michele Baldessari\n"
+"Fabio Bonelli"
+
+#: ../libempathy-gtk/empathy-account-chooser.c:337
+msgid "All"
+msgstr "Tutti"
+
+#: ../libempathy-gtk/empathy-account-widget.c:276
+#: ../libempathy-gtk/empathy-account-widget.c:321
+#, c-format
+msgid "%s:"
+msgstr "%s:"
+
+#: ../libempathy-gtk/empathy-account-widget-icq.glade.h:1
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:1
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:1
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:1
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:1
+msgid "<b>Advanced</b>"
+msgstr "<b>Avanzato</b>"
+
+# (ndt) suggerimento
+#: ../libempathy-gtk/empathy-account-widget-icq.glade.h:2
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:3
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:2
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:2
+msgid "Forget password and clear the entry."
+msgstr "Dimentica la password e azzera la voce."
+
+#: ../libempathy-gtk/empathy-account-widget-icq.glade.h:3
+msgid "ICQ _UIN:"
+msgstr "_UIN ICQ:"
+
+# (ndt) titolo
+#: ../libempathy-gtk/empathy-account-widget-icq.glade.h:4
+msgid "ICQ account settings"
+msgstr "Impostazioni account ICQ"
+
+#: ../libempathy-gtk/empathy-account-widget-icq.glade.h:5
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:5
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:4
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:5
+msgid "Pass_word:"
+msgstr "Pass_word:"
+
+#: ../libempathy-gtk/empathy-account-widget-icq.glade.h:6
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:8
+msgid "_Charset:"
+msgstr "C_odifica caratteri:"
+
+#: ../libempathy-gtk/empathy-account-widget-icq.glade.h:7
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:11
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:5
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:10
+msgid "_Port:"
+msgstr "_Porta:"
+
+#: ../libempathy-gtk/empathy-account-widget-icq.glade.h:8
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:12
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:6
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:12
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:10
+msgid "_Server:"
+msgstr "_Server:"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.c:246
+msgid "New Network"
+msgstr "Nuova rete"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:1
+msgid "<b>Network</b>"
+msgstr "<b>Rete</b>"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:2
+msgid "<b>Servers</b>"
+msgstr "<b>Server</b>"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:3
+msgid "Charset:"
+msgstr "Codifica caratteri:"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:4
+msgid "Create a new IRC network"
+msgstr "Crea una nuova rete IRC"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:5
+msgid "Edit the selected IRC network"
+msgstr "Modifica la rete IRC selezionata"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:6
+msgid "Network"
+msgstr "Rete"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:7
+msgid "Network:"
+msgstr "Rete:"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:8
+msgid "Nickname:"
+msgstr "Soprannome:"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:9
+msgid "Password:"
+msgstr "Password:"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:10
+msgid "Quit message:"
+msgstr "Messaggio di uscita:"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:11
+msgid "Real name:"
+msgstr "Nome reale:"
+
+# (ndt) suggerimento
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:12
+msgid "Remove the selected IRC network"
+msgstr "Rimuove la rete IRC selezionata"
+
+# (ndt) titolo dialogo
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:13
+msgid "irc account settings"
+msgstr "Impostazioni account IRC"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:2
+msgid "<b>Override server settings</b>"
+msgstr "<b>Ignorare impostazioni server</b>"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:4
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:3
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:4
+msgid "Login I_D:"
+msgstr "I_D accesso:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:6
+msgid "Pri_ority:"
+msgstr "Pri_orità:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:7
+msgid "Reso_urce:"
+msgstr "_Risorsa:"
+
+# (ndt) opzione
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:8
+msgid "Use old SS_L"
+msgstr "_Usare vecchio SSL"
+
+# (ndt) opzione
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:9
+msgid "_Encryption required (TLS/SSL)"
+msgstr "Richiesta _cifratura (TLS/SSL)"
+
+# (ndt) opzione
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:10
+msgid "_Ignore SSL certificate errors"
+msgstr "_Ignorare errori certificati SSL"
+
+# (ndt) titolo
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:13
+msgid "jabber account settings"
+msgstr "Impostazioni account Jabber"
+
+# (ndt) titolo
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:7
+msgid "msn account settings"
+msgstr "Impostazioni account MSN"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:2
+msgid "_E-mail:"
+msgstr "_Email:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:3
+msgid "_First Name: "
+msgstr "_Nome:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:4
+msgid "_Jabber ID:"
+msgstr "I_D Jabber:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:5
+msgid "_Last Name:"
+msgstr "C_ognome:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:6
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:8
+msgid "_Nickname:"
+msgstr "_Soprannome:"
+
+# (ndt) dovrebbe essere il nome visualizzato con l'account
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:7
+msgid "_Published Name:"
+msgstr "Nome _visibile:"
+
+# (ndt) titolo
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:8
+msgid "salut account settings"
+msgstr "Impostazioni account Salut"
+
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:3
+msgid "J_apan server:"
+msgstr "Server giapponese:"
+
+# (ndt) opzione
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:6
+msgid "Use _Yahoo Japan"
+msgstr "Usare _Yahoo giappone"
+
+# (ndt) titolo
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:7
+msgid "Yahoo! account settings"
+msgstr "Impostazioni account Yahoo!"
+
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:9
+msgid "_Ignore conference and chatroom invitations"
+msgstr "I_gnorare conferenze e inviti canali chat"
+
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:11
+msgid "_Room List locale:"
+msgstr "_Nazione elenco canali:"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:225
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to start configuring."
+msgstr ""
+"Per aggiungere un nuovo account, fare clic sul pulsante «Aggiungi» per "
+"creare una nuova voce da configurare."
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:229
+msgid ""
+"To add a new account, you first have to install a backend for each protocol "
+"you want to use."
+msgstr ""
+"Per aggiungere un nuovo account è necessario installare un backend per ogni "
+"protocollo da usare."
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:236
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:2
+msgid "<b>No Account Selected</b>"
+msgstr "<b>Nessun account selezionato</b>"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:237
+msgid ""
+"\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want "
+"to configure in the list on the left."
+msgstr ""
+"\n"
+"\n"
+"Se non si desidera aggiungere un account, fare clic sull'account da "
+"configurare nell'elenco a sinistra."
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:243
+msgid "<b>No Accounts Configured</b>"
+msgstr "<b>Nessun account configurato</b>"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:411
+msgid "Enabled"
+msgstr "Abilitato"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:421
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:4
+msgid "Accounts"
+msgstr "Account"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:904
+#, c-format
+msgid ""
+"You are about to remove your %s account!\n"
+"Are you sure you want to proceed?"
+msgstr ""
+"L'account %s sta per essere rimosso.\n"
+"Procedere veramente?"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:910
+msgid ""
+"Any associated conversations and chat rooms will NOT be removed if you "
+"decide to proceed.\n"
+"\n"
+"Should you decide to add the account back at a later time, they will still "
+"be available."
+msgstr ""
+"Eventuali conversazioni o canali chat non verranno rimossi se si decide di "
+"procedere.\n"
+"\n"
+"Se l'account verrà inserito nuovamente, saranno ancora disponibili."
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:1
+msgid "<b>New Account</b>"
+msgstr "<b>Nuovo account</b>"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:3
+msgid "<b>Settings</b>"
+msgstr "<b>Impostazioni</b>"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:5
+msgid "Cr_eate"
+msgstr "Cr_ea"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:6
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to started configuring.\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want "
+"to configure in the list on the left."
+msgstr ""
+"Per aggiungere un nuovo account, fare clic sul pulsante «Aggiungi» per "
+"creare una nuova voce da configurare.\n"
+"\n"
+"Se non si desidera aggiungere un account, fare clic sull'account da "
+"configurare nell'elenco a sinistra."
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:9
+msgid "Type:"
+msgstr "Tipo:"
+
+# (ndt) titolo dialogo
+#: ../libempathy-gtk/empathy-avatar-chooser.c:449
+msgid "Select Your Avatar Image"
+msgstr "Selezione avatar"
+
+#: ../libempathy-gtk/empathy-avatar-chooser.c:452
+msgid "No Image"
+msgstr "Nessuna immagine"
+
+#: ../libempathy-gtk/empathy-avatar-chooser.c:512
+msgid "Images"
+msgstr "Immagini"
+
+#: ../libempathy-gtk/empathy-avatar-chooser.c:516
+msgid "All Files"
+msgstr "Tutti i file"
+
+#: ../libempathy-gtk/empathy-avatar-image.c:298
+msgid "Click to enlarge"
+msgstr "Clic per ingrandire"
+
+# (ndt) pulsante
+#: ../libempathy-gtk/empathy-call-window.glade.h:1
+msgid "End Call"
+msgstr "Termina chiamata"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:2
+msgid "Input"
+msgstr "Ingresso"
+
+# (ndt) pulsante per azzerare i livelli del volume di input e output
+#: ../libempathy-gtk/empathy-call-window.glade.h:3
+msgid "Mute"
+msgstr "Muto"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:4
+msgid "Output"
+msgstr "Uscita"
+
+# (ndt) opzione
+#: ../libempathy-gtk/empathy-call-window.glade.h:5
+msgid "Send Video"
+msgstr "Inviare video"
+
+# (ndt) pulsante
+#: ../libempathy-gtk/empathy-call-window.glade.h:6
+msgid "Start Call"
+msgstr "Avvia chiamata"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:7
+msgid "Volume"
+msgstr "Volume"
+
+#: ../libempathy-gtk/empathy-chat.c:445
+msgid "Disconnected"
+msgstr "Disconnesso"
+
+#: ../libempathy-gtk/empathy-chat.c:580
+msgid "offline"
+msgstr "non in linea"
+
+#: ../libempathy-gtk/empathy-chat.c:583
+msgid "invalid contact"
+msgstr "contatto non valido"
+
+#: ../libempathy-gtk/empathy-chat.c:586
+msgid "permission denied"
+msgstr "permesso negato"
+
+#: ../libempathy-gtk/empathy-chat.c:589
+msgid "too long message"
+msgstr "messaggio troppo lungo"
+
+#: ../libempathy-gtk/empathy-chat.c:592
+msgid "not implemented"
+msgstr "non implementato"
+
+#: ../libempathy-gtk/empathy-chat.c:595
+msgid "unknown"
+msgstr "sconosciuto"
+
+#: ../libempathy-gtk/empathy-chat.c:599
+#, c-format
+msgid "Error sending message '%s': %s"
+msgstr "Errore nell'inviare il messaggio «%s»: %s"
+
+#: ../libempathy-gtk/empathy-chat.c:1056
+msgid "Insert Smiley"
+msgstr "Inserisci emoticon"
+
+#: ../libempathy-gtk/empathy-chat.c:1103
+msgid "_Check Word Spelling..."
+msgstr "_Controllo ortografico..."
+
+#: ../libempathy-gtk/empathy-chat.c:1558
+msgid "Connected"
+msgstr "Connesso"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:1
+msgid "C_lear"
+msgstr "Pu_lisci"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:2
+msgid "Ca_ll"
+msgstr "C_hiama"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:3
+msgid "Change _Topic..."
+msgstr "Modifica argomen_to..."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:4
+#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:3
+msgid "Chat"
+msgstr "Chat"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:5
+msgid "Contact Infor_mation"
+msgstr "_Informazioni sul contatto"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:6
+msgid "Cu_t"
+msgstr "_Taglia"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:7
+msgid "In_vite..."
+msgstr "In_vita..."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:8
+msgid "Insert _Smiley"
+msgstr "Inserisci _emoticon"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:9
+msgid "Invitation _message:"
+msgstr "_Messaggio di invito:"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:10
+msgid "Invite"
+msgstr "Invita"
+
+# (ndt) voce di menù per entrare in una chat
+#: ../libempathy-gtk/empathy-chat.glade.h:11
+#: ../libempathy-gtk/empathy-main-window.glade.h:4
+msgid "Join _New..."
+msgstr "_Entra in..."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:12
+msgid "Move Tab _Left"
+msgstr "Sposta scheda a s_inistra"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:13
+msgid "Move Tab _Right"
+msgstr "Sposta scheda a _destra"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:14
+msgid "Select who would you like to invite:"
+msgstr "Selezionare chi invitare:"
+
+# (ndt) messaggio predefinito per l'invito
+#: ../libempathy-gtk/empathy-chat.glade.h:15
+msgid "You have been invited to join a chat conference."
+msgstr "Sei stato invitato a entrare in una conferenza."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:16
+#: ../libempathy-gtk/empathy-main-window.glade.h:9
+msgid "_Add Contact..."
+msgstr "A_ggiungi contatto..."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:17
+msgid "_Add To Favorites"
+msgstr "A_ggiungi ai preferiti"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:18
+msgid "_Close"
+msgstr "_Chiudi"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:19
+#: ../libempathy-gtk/empathy-main-window.glade.h:11
+msgid "_Contents"
+msgstr "_Sommario"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:20
+msgid "_Conversation"
+msgstr "_Conversazione"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:21
+msgid "_Copy"
+msgstr "_Copia"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:22
+msgid "_Detach Tab"
+msgstr "_Distacca scheda"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:23
+#: ../libempathy-gtk/empathy-contact-list-view.c:217
+#: ../libempathy-gtk/empathy-main-window.glade.h:12
+msgid "_Edit"
+msgstr "_Modifica"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:24
+#: ../libempathy-gtk/empathy-main-window.glade.h:13
+msgid "_Help"
+msgstr "A_iuto"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:25
+msgid "_Next Tab"
+msgstr "Scheda _successiva"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:26
+msgid "_Paste"
+msgstr "_Incolla"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:27
+msgid "_Previous Tab"
+msgstr "Scheda _precedente"
+
+# (ndt) voce di menù per accedere alle opzioni relative ai canali IRC
+#: ../libempathy-gtk/empathy-chat.glade.h:28
+#: ../libempathy-gtk/empathy-main-window.glade.h:18
+msgid "_Room"
+msgstr "C_anale"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:29
+msgid "_Show Contacts"
+msgstr "_Mostra contatti"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:30
+msgid "_Tabs"
+msgstr "_Schede"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:31
+#: ../libempathy-gtk/empathy-contact-list-view.c:233
+#: ../libempathy-gtk/empathy-main-window.glade.h:19
+msgid "_View Previous Conversations"
+msgstr "Conversazioni _precedenti"
+
+#: ../libempathy-gtk/empathy-chat-view.c:441
+msgid "_Copy Link Address"
+msgstr "_Copia indirizzo collegamento"
+
+#: ../libempathy-gtk/empathy-chat-view.c:449
+msgid "_Open Link"
+msgstr "Apri c_ollegamento"
+
+#: ../libempathy-gtk/empathy-chat-window.c:699
+#, c-format
+msgid "Conversations (%d)"
+msgstr "Conversazioni (%d)"
+
+#: ../libempathy-gtk/empathy-chat-window.c:1299
+msgid "Typing a message."
+msgstr "Scrittura messaggio."
+
+#: ../libempathy-gtk/empathy-chatrooms-window.c:258
+msgid "Name"
+msgstr "Nome"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.c:276
+msgid "Room"
+msgstr "Canale"
+
+# (ndt) dovrebbe essere il nome di una colonna
+#: ../libempathy-gtk/empathy-chatrooms-window.c:285
+msgid "Auto Connect"
+msgstr "Connessione automatica"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:1
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:5
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:1
+#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:1
+msgid "Account:"
+msgstr "Account:"
+
+# (ndt) titolo dialogo
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:2
+msgid "Edit Favorite Room"
+msgstr "Modifica canale preferito"
+
+# (ndt) opzione
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:3
+msgid "Join room on start_up"
+msgstr "Entrare ne_l canale all'avvio"
+
+# (ndt) suggerimento
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:4
+msgid "Join this chat room when Empathy starts and you are connected"
+msgstr "Entra in questo canale all'avvio di Empathy e se si è connessi"
+
+# (ndt) titolo dialogo
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:5
+msgid "Manage Favorite Rooms"
+msgstr "Gestione canali preferiti"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:6
+msgid "N_ame:"
+msgstr "_Nome:"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:7
+msgid "S_erver:"
+msgstr "S_erver:"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:9
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:9
+msgid "_Room:"
+msgstr "_Canale:"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:176
+msgid "Personal Information"
+msgstr "Informazioni personali"
+
+# (ndt) titolo dialogo
+#: ../libempathy-gtk/empathy-contact-dialogs.c:179
+msgid "Edit Contact Information"
+msgstr "Modifica informazioni contatto"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:182
+msgid "Contact Information"
+msgstr "Informazioni contatto"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:277
+msgid "I would like to add you to my contact list."
+msgstr "Vorrei aggiungerti al mio elenco contatti."
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:301
+msgid "New Contact"
+msgstr "Nuovo contatto"
+
+# (ndt) pulsante
+#: ../libempathy-gtk/empathy-contact-dialogs.glade.h:1
+msgid "Decide _Later"
+msgstr "_Decidi successivamente"
+
+# (ndt) titolo dialogo
+#: ../libempathy-gtk/empathy-contact-dialogs.glade.h:2
+msgid "Subscription Request"
+msgstr "Richiesta di sottoscrizione"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:197
+msgid "_Contact"
+msgstr "_Contatto"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:201
+msgid "_Group"
+msgstr "_Gruppo"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:205
+#: ../libempathy-gtk/empathy-main-window.glade.h:10
+msgid "_Chat"
+msgstr "_Chat"
+
+# (ndt) suggerimento
+#: ../libempathy-gtk/empathy-contact-list-view.c:205
+msgid "Chat with contact"
+msgstr "Parla con un contatto"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:209
+msgid "Infor_mation"
+msgstr "Infor_mazioni"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:209
+msgid "View contact information"
+msgstr "Visualizza informazioni sul contatto"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:213
+msgid "Re_name"
+msgstr "_Rinomina"
+
+# (ndt) suggerimento
+#: ../libempathy-gtk/empathy-contact-list-view.c:213
+msgid "Rename"
+msgstr "Rinomina il contatto"
+
+# (ndt) suggerimento
+#: ../libempathy-gtk/empathy-contact-list-view.c:217
+msgid "Edit the groups and name for this contact"
+msgstr "Modifica i gruppi e il nome di questo contatto"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:221
+msgid "_Remove"
+msgstr "Ri_muovi"
+
+# (ndt) suggerimento
+#: ../libempathy-gtk/empathy-contact-list-view.c:221
+msgid "Remove contact"
+msgstr "Rimuove il contatto"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:225
+msgid "_Invite to Chat Room"
+msgstr "_Invita in un canale"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:225
+msgid "Invite to a currently open chat room"
+msgstr "Invita in un canale attualmente aperto"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:229
+msgid "_Send File..."
+msgstr "_Invia file..."
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:229
+msgid "Send a file"
+msgstr "Invia un file"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:233
+msgid "View previous conversations with this contact"
+msgstr "Visualizza le conversazioni precedenti con questo contatto"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:238
+msgid "_Call"
+msgstr "C_hiama"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:238
+msgid "Start a voice or video conversation with this contact"
+msgstr "Inizia una conversazione vocale o video con questo contatto"
+
+# (ndt) dovrebbe essere il messaggio che viene inviato quando si
+# rimuove un contatto dall'elenco
+#: ../libempathy-gtk/empathy-contact-list-view.c:1469
+msgid "Sorry, I don't want you in my contact list anymore."
+msgstr "Mi spiace, non ti voglio più nel mio elenco contatti."
+
+# (ndt) nome di una colonna
+#: ../libempathy-gtk/empathy-contact-widget.c:688
+msgid "Select"
+msgstr "Selezione"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:698
+#: ../libempathy-gtk/empathy-main-window.c:609
+msgid "Group"
+msgstr "Gruppo"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:1
+msgid "<b>Client Information</b>"
+msgstr "<b>Informazioni client</b>"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:2
+msgid "<b>Contact Details</b>"
+msgstr "<b>Dettagli contatto</b>"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:3
+msgid "<b>Contact</b>"
+msgstr "<b>Contatto</b>"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:4
+msgid "<b>Groups</b>"
+msgstr "<b>Gruppi</b>"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:6
+msgid "Alias:"
+msgstr "Pseudonimo:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:7
+msgid "Birthday:"
+msgstr "Compleanno:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:8
+msgid "Client:"
+msgstr "Client:"
+
+# (ndt) titolo dialogo
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:9
+msgid "Contact information"
+msgstr "Informazioni contatto"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:10
+msgid "Email:"
+msgstr "Email:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:11
+msgid "Fullname:"
+msgstr "Nome:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:12
+msgid "Identifier:"
+msgstr "Identificatore:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:13
+msgid "Information requested..."
+msgstr "Informazione richiesta..."
+
+# (ndt) sistema operativo
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:14
+msgid "OS:"
+msgstr "SO:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:15
+msgid ""
+"Select the groups you want this contact to appear in, you can select more "
+"than one group or no groups."
+msgstr ""
+"Selezionare il gruppo in cui inserire questo contatto. È possibile "
+"selezionarne più di uno oppure nessuno."
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:16
+msgid "Version:"
+msgstr "Versione:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:17
+msgid "Web site:"
+msgstr "Sito web:"
+
+#: ../libempathy-gtk/empathy-group-chat.c:251
+msgid "Enter the new topic you want to set for this room:"
+msgstr "Digitare il nuovo argomento per il canale:"
+
+#: ../libempathy-gtk/empathy-group-chat.c:361
+#, c-format
+msgid "%s has joined the room"
+msgstr "%s è entrato nel canale"
+
+#: ../libempathy-gtk/empathy-group-chat.c:364
+#, c-format
+msgid "%s has left the room"
+msgstr "%s è uscito dal canale"
+
+#: ../libempathy-gtk/empathy-group-chat.c:445
+#, c-format
+msgid "Topic: %s"
+msgstr "Argomento: %s"
+
+#: ../libempathy-gtk/empathy-group-chat.c:574
+#, c-format
+msgid "Topic set to: %s"
+msgstr "Argomento impostato a: %s"
+
+#: ../libempathy-gtk/empathy-group-chat.c:576
+msgid "No topic defined"
+msgstr "Nessun argomento definito"
+
+#: ../libempathy-gtk/empathy-group-chat.glade.h:1
+msgid "<b>Topic:</b>"
+msgstr "<b>Argomento:</b>"
+
+#: ../libempathy-gtk/empathy-group-chat.glade.h:2
+msgid "Group Chat"
+msgstr "Chat di gruppo"
+
+#: ../libempathy-gtk/empathy-irc-network-dialog.c:287
+msgid "new server"
+msgstr "nuovo server"
+
+#: ../libempathy-gtk/empathy-irc-network-dialog.c:512
+msgid "Server"
+msgstr "Server"
+
+#: ../libempathy-gtk/empathy-irc-network-dialog.c:527
+msgid "Port"
+msgstr "Porta"
+
+#: ../libempathy-gtk/empathy-irc-network-dialog.c:540
+msgid "SSL"
+msgstr "SSL"
+
+#: ../libempathy-gtk/empathy-log-window.c:499
+msgid "Account"
+msgstr "Account"
+
+#: ../libempathy-gtk/empathy-log-window.c:506
+msgid "Conversation"
+msgstr "Conversazione"
+
+#: ../libempathy-gtk/empathy-log-window.c:516
+msgid "Date"
+msgstr "Data"
+
+#: ../libempathy-gtk/empathy-log-window.glade.h:1
+msgid "Conversations"
+msgstr "Conversazioni"
+
+#: ../libempathy-gtk/empathy-log-window.glade.h:2
+msgid "Previous Conversations"
+msgstr "Conversazioni precedenti"
+
+#: ../libempathy-gtk/empathy-log-window.glade.h:3
+msgid "Search"
+msgstr "Cerca"
+
+# (ndt) questo è prima di una casella di testo
+# in cui inserire il criterio di ricerca
+#: ../libempathy-gtk/empathy-log-window.glade.h:4
+msgid "_For:"
+msgstr "_Per:"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.c:286
+msgid "Chat Rooms"
+msgstr "Canali chat"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:2
+msgid "Browse:"
+msgstr "Esplora:"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:3
+msgid ""
+"Enter the room name to join here or click on one or more rooms in the list."
+msgstr ""
+"Digitare il nome del canale in cui entrare o fare clic su uno o più nomi di "
+"canali nell'elenco."
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:4
+msgid ""
+"Enter the server which hosts the room, or leave it empty if the room is on "
+"the current account's server"
+msgstr ""
+"Digitare il server che ospita il canale o lasciarlo vuoto se il canale si "
+"trova nel server di questo account"
+
+# (ndt) pulsante
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:5
+msgid "Join"
+msgstr "Entra"
+
+# (ndt) titolo dialogo
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:6
+msgid "Join New"
+msgstr "Entra in un nuovo canale"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:7
+msgid "Re_fresh"
+msgstr "A_ggiorna"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:8
+msgid ""
+"This list represents all chat rooms hosted on the server you have entered."
+msgstr "L'elenco rappresenta tutti i canali presenti nel server indicato."
+
+# (ndt) suggerimento
+#: ../libempathy-gtk/empathy-main-window.c:266
+msgid "Show and edit accounts"
+msgstr "Mostra e modifica account"
+
+#: ../libempathy-gtk/empathy-main-window.c:630
+msgid "Contact"
+msgstr "Contatto"
+
+#: ../libempathy-gtk/empathy-main-window.c:813
+msgid "_Edit account"
+msgstr "Modifica _dettagli account"
+
+#: ../libempathy-gtk/empathy-main-window.c:896
+msgid "Network error"
+msgstr "Errore di rete"
+
+#: ../libempathy-gtk/empathy-main-window.c:899
+msgid "Authentication failed"
+msgstr "Autenticazione fallita"
+
+#: ../libempathy-gtk/empathy-main-window.c:902
+msgid "Encryption error"
+msgstr "Errore di cifratura"
+
+#: ../libempathy-gtk/empathy-main-window.c:905
+msgid "Name in use"
+msgstr "Nome in uso"
+
+#: ../libempathy-gtk/empathy-main-window.c:908
+msgid "Certificate not provided"
+msgstr "Certificato non fornito"
+
+#: ../libempathy-gtk/empathy-main-window.c:911
+msgid "Certificate untrusted"
+msgstr "Certificato non fidato"
+
+#: ../libempathy-gtk/empathy-main-window.c:914
+msgid "Certificate expired"
+msgstr "Certificato scaduto"
+
+#: ../libempathy-gtk/empathy-main-window.c:917
+msgid "Certificate not activated"
+msgstr "Certificato non attivato"
+
+#: ../libempathy-gtk/empathy-main-window.c:920
+msgid "Certificate hostname mismatch"
+msgstr "Corrispondenza errata nel nome host del certificato"
+
+#: ../libempathy-gtk/empathy-main-window.c:923
+msgid "Certificate fingerprint mismatch"
+msgstr "Corrispondenza errata nell'impronta del certificato"
+
+#: ../libempathy-gtk/empathy-main-window.c:926
+msgid "Certificate self signed"
+msgstr "Certificato auto-firmato"
+
+#: ../libempathy-gtk/empathy-main-window.c:929
+msgid "Certificate error"
+msgstr "Errore nel certificato"
+
+#: ../libempathy-gtk/empathy-main-window.c:932
+msgid "Unknown error"
+msgstr "Errore sconosciuto"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:1
+msgid "Contact List"
+msgstr "Elenco contatti"
+
+# (ndt) ?
+#: ../libempathy-gtk/empathy-main-window.glade.h:2
+msgid "Context"
+msgstr "Contesto"
+
+# (ndt) voce di menù
+#: ../libempathy-gtk/empathy-main-window.glade.h:3
+msgid "Join _Favorites"
+msgstr "Entra canali pre_feriti"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:5
+msgid "Manage Favorites"
+msgstr "Gestione preferiti"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:6
+msgid "Show _Offline Contacts"
+msgstr "M_ostra contatti non in linea"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:7
+#: ../megaphone/data/GNOME_Megaphone_Applet.xml.h:1
+#: ../nothere/data/GNOME_NotHere_Applet.xml.h:1
+msgid "_About"
+msgstr "I_nformazioni"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:8
+msgid "_Accounts"
+msgstr "_Account"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:14
+#: ../libempathy-gtk/empathy-status-icon.glade.h:2
+msgid "_New Conversation..."
+msgstr "_Nuova conversazione..."
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:15
+msgid "_Personal Information"
+msgstr "Informazioni _personali"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:16
+#: ../megaphone/data/GNOME_Megaphone_Applet.xml.h:3
+msgid "_Preferences"
+msgstr "Preferen_ze"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:17
+#: ../libempathy-gtk/empathy-status-icon.glade.h:3
+msgid "_Quit"
+msgstr "_Esci"
+
+# (ndt) titolo dialogo
+#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:2
+msgid "Call"
+msgstr "Chiamata"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:4
+msgid "Contact ID:"
+msgstr "ID contatto:"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:5
+msgid "New Conversation"
+msgstr "Nuova conversazione"
+
+#: ../libempathy-gtk/empathy-preferences.c:247
+msgid "Language"
+msgstr "Lingua"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:1
+msgid "<b>Appearance</b>"
+msgstr "<b>Aspetto</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:2
+msgid "<b>Audio</b>"
+msgstr "<b>Audio</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:3
+msgid "<b>Behaviour</b>"
+msgstr "<b>Comportamento</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:4
+msgid "<b>Contact List</b>"
+msgstr "<b>Elenco contatti</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:5
+msgid "<b>Enable spell checking for languages:</b>"
+msgstr "<b>Abilitare controllo ortografico per le lingue:</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:6
+msgid "<b>Options</b>"
+msgstr "<b>Opzioni</b>"
+
+# (ndt) indica il tipo di notifica
+#: ../libempathy-gtk/empathy-preferences.glade.h:7
+msgid "<b>Visual</b>"
+msgstr "<b>Visiva</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:8
+msgid ""
+"<small>The list of languages reflects only the languages for which you have "
+"a dictionary installed.</small>"
+msgstr ""
+"<small>L'elenco dei dizionari mostra solo le lingue di cui si ha un "
+"dizionario installato.</small>"
+
+# (ndt) opzione
+#: ../libempathy-gtk/empathy-preferences.glade.h:9
+msgid "Automatically _connect on startup "
+msgstr "C_onnettere automaticamente all'avvio"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:10
+msgid "Avatars are user chosen images shown in the contact list"
+msgstr ""
+"Gli avatar sono delle immagini scelte dall'utente che vengono visualizzate "
+"nell'elenco dei contatti"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:11
+msgid "Chat Th_eme:"
+msgstr "T_ema delle conversazioni:"
+
+# (ndt) opzione
+#: ../libempathy-gtk/empathy-preferences.glade.h:12
+msgid "Display notifications when contacts come _online"
+msgstr "Mostrare notifiche quando i contatti vengono in _linea"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:13
+msgid "Enable sounds when _away"
+msgstr "Abilitare i suoni quando _assente"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:14
+msgid "Enable sounds when _busy"
+msgstr "Abilitare i suoni quando _occupato"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:15
+msgid "General"
+msgstr "Generale"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:16
+msgid "Notifications"
+msgstr "Notifiche"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:17
+msgid "Preferences"
+msgstr "Preferenze"
+
+# (ndt) opzione
+#: ../libempathy-gtk/empathy-preferences.glade.h:18
+msgid "Show _avatars"
+msgstr "Mostrare _avatar"
+
+# (ndt) opzione
+#: ../libempathy-gtk/empathy-preferences.glade.h:19
+msgid "Show _smileys as images"
+msgstr "Mostrare gli _emoticon come immagini"
+
+# (ndt) opzione
+#: ../libempathy-gtk/empathy-preferences.glade.h:20
+msgid "Show co_mpact contact list"
+msgstr "Mo_strare elenco contatti compatto"
+
+# (ndt) opzione - pulsante radio
+#: ../libempathy-gtk/empathy-preferences.glade.h:21
+msgid "Sort by _name"
+msgstr "Ordinare per _nome"
+
+# (ndt) opzione - pulsante radio
+#: ../libempathy-gtk/empathy-preferences.glade.h:22
+msgid "Sort by s_tate"
+msgstr "Ordinare per s_tato"
+
+# (ndt) titolo scheda
+#: ../libempathy-gtk/empathy-preferences.glade.h:23
+msgid "Spell Checking"
+msgstr "Controllo ortografico"
+
+# (ndt) titolo scheda
+#: ../libempathy-gtk/empathy-preferences.glade.h:24
+msgid "Themes"
+msgstr "Temi"
+
+# (ndt) opzione
+#: ../libempathy-gtk/empathy-preferences.glade.h:25
+msgid "_Open new chats in separate windows"
+msgstr "A_prire nuove conversazioni in finestre separate"
+
+# (ndt) opzione
+#: ../libempathy-gtk/empathy-preferences.glade.h:26
+msgid "_Play sound when messages arrive"
+msgstr "_Emettere un suono all'arrivo dei messaggi"
+
+# (ndt) opzione: intende l'utilizzo del tema anche per le chat IRC
+#: ../libempathy-gtk/empathy-preferences.glade.h:27
+msgid "_Use for chat rooms"
+msgstr "_Usare per i canali chat"
+
+#. Custom messages
+#: ../libempathy-gtk/empathy-presence-chooser.c:691
+msgid "Custom messages..."
+msgstr "Messaggi personalizzati..."
+
+#: ../libempathy-gtk/empathy-presence-chooser.glade.h:1
+msgid "Custom message"
+msgstr "Messaggio personalizzato"
+
+#: ../libempathy-gtk/empathy-presence-chooser.glade.h:2
+msgid "Message:"
+msgstr "Messaggio:"
+
+# (ndt) opzione
+#: ../libempathy-gtk/empathy-presence-chooser.glade.h:3
+msgid "Save message"
+msgstr "Salvare messaggio"
+
+#: ../libempathy-gtk/empathy-presence-chooser.glade.h:4
+msgid "Status:"
+msgstr "Stato:"
+
+#: ../libempathy-gtk/empathy-private-chat.c:229
+#, c-format
+msgid "%s went offline"
+msgstr "%s non è più in linea"
+
+#: ../libempathy-gtk/empathy-private-chat.c:243
+#, c-format
+msgid "%s has come online"
+msgstr "%s è ora in linea"
+
+#: ../libempathy-gtk/empathy-spell-dialog.c:85
+msgid "Word"
+msgstr "Parola"
+
+#: ../libempathy-gtk/empathy-spell-dialog.c:258
+msgid "Suggestions for the word"
+msgstr "Suggerimenti per la parola"
+
+# (ndt) titolo finestra in cui ci sono le parole controllate
+#: ../libempathy-gtk/empathy-spell-dialog.glade.h:1
+msgid "Spell Checker"
+msgstr "Controllo ortografico"
+
+#: ../libempathy-gtk/empathy-spell-dialog.glade.h:2
+msgid "Suggestions for the word:"
+msgstr "Suggerimenti per la parola:"
+
+#: ../libempathy-gtk/empathy-status-icon.c:369
+#, c-format
+msgid ""
+"New message from %s:\n"
+"%s"
+msgstr ""
+"Nuovo messaggio da %s:\n"
+"%s"
+
+#: ../libempathy-gtk/empathy-status-icon.c:434
+#, c-format
+msgid ""
+"Incoming call from %s:\n"
+"%s"
+msgstr ""
+"Chiamata in arrivo da %s:\n"
+"%s"
+
+#: ../libempathy-gtk/empathy-status-icon.c:738
+#, c-format
+msgid "Subscription requested by %s"
+msgstr "Richiesta di approvazione di %s"
+
+#: ../libempathy-gtk/empathy-status-icon.c:741
+#, c-format
+msgid ""
+"\n"
+"Message: %s"
+msgstr ""
+"\n"
+"Messaggio: %s"
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:1
+msgid "Status"
+msgstr "Stato"
+
+# (ndt) voce di menù
+#: ../libempathy-gtk/empathy-status-icon.glade.h:4
+msgid "_Show Contact List"
+msgstr "Mo_stra elenco contatti"
+
+# (ndt) domenica 01 ottobre 2007
+#: ../libempathy-gtk/empathy-theme-boxes.c:780
+#: ../libempathy-gtk/empathy-theme-irc.c:297
+msgid "%A %d %B %Y"
+msgstr "%A %d %B %Y"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:78
+msgid "Classic"
+msgstr "Classico"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:79
+msgid "Simple"
+msgstr "Semplice"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:80
+msgid "Clean"
+msgstr "Pulito"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:81
+msgid "Blue"
+msgstr "Blu"
+
+# (ndt) preso da totem: non sarebbe meglio Lingua attuale ?
+#: ../libempathy-gtk/totem-subtitle-encoding.c:158
+msgid "Current Locale"
+msgstr "Localizzazione corrente"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:161
+#: ../libempathy-gtk/totem-subtitle-encoding.c:163
+#: ../libempathy-gtk/totem-subtitle-encoding.c:165
+#: ../libempathy-gtk/totem-subtitle-encoding.c:167
+msgid "Arabic"
+msgstr "Arabo"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:170
+msgid "Armenian"
+msgstr "Armeno"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:173
+#: ../libempathy-gtk/totem-subtitle-encoding.c:175
+#: ../libempathy-gtk/totem-subtitle-encoding.c:177
+msgid "Baltic"
+msgstr "Baltico"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:180
+msgid "Celtic"
+msgstr "Celtico"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:183
+#: ../libempathy-gtk/totem-subtitle-encoding.c:185
+#: ../libempathy-gtk/totem-subtitle-encoding.c:187
+#: ../libempathy-gtk/totem-subtitle-encoding.c:189
+msgid "Central European"
+msgstr "Europeo centrale"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:192
+#: ../libempathy-gtk/totem-subtitle-encoding.c:194
+#: ../libempathy-gtk/totem-subtitle-encoding.c:196
+#: ../libempathy-gtk/totem-subtitle-encoding.c:198
+msgid "Chinese Simplified"
+msgstr "Cinese semplificato"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:201
+#: ../libempathy-gtk/totem-subtitle-encoding.c:203
+#: ../libempathy-gtk/totem-subtitle-encoding.c:205
+msgid "Chinese Traditional"
+msgstr "Cinese tradizionale"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:208
+msgid "Croatian"
+msgstr "Croato"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:211
+#: ../libempathy-gtk/totem-subtitle-encoding.c:213
+#: ../libempathy-gtk/totem-subtitle-encoding.c:215
+#: ../libempathy-gtk/totem-subtitle-encoding.c:217
+#: ../libempathy-gtk/totem-subtitle-encoding.c:219
+#: ../libempathy-gtk/totem-subtitle-encoding.c:221
+msgid "Cyrillic"
+msgstr "Cirillico"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:224
+msgid "Cyrillic/Russian"
+msgstr "Cirillico/Russo"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:227
+#: ../libempathy-gtk/totem-subtitle-encoding.c:229
+msgid "Cyrillic/Ukrainian"
+msgstr "Cirillico/Ucraino"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:232
+msgid "Georgian"
+msgstr "Georgiano"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:235
+#: ../libempathy-gtk/totem-subtitle-encoding.c:237
+#: ../libempathy-gtk/totem-subtitle-encoding.c:239
+msgid "Greek"
+msgstr "Greco"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:242
+msgid "Gujarati"
+msgstr "Gujarati"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:245
+msgid "Gurmukhi"
+msgstr "Gurmukhi"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:248
+#: ../libempathy-gtk/totem-subtitle-encoding.c:250
+#: ../libempathy-gtk/totem-subtitle-encoding.c:252
+#: ../libempathy-gtk/totem-subtitle-encoding.c:254
+msgid "Hebrew"
+msgstr "Ebraico"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:257
+msgid "Hebrew Visual"
+msgstr "Ebraico visuale"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:260
+msgid "Hindi"
+msgstr "Hindi"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:263
+msgid "Icelandic"
+msgstr "Islandese"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:266
+#: ../libempathy-gtk/totem-subtitle-encoding.c:268
+#: ../libempathy-gtk/totem-subtitle-encoding.c:270
+msgid "Japanese"
+msgstr "Giapponese"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:273
+#: ../libempathy-gtk/totem-subtitle-encoding.c:275
+#: ../libempathy-gtk/totem-subtitle-encoding.c:277
+#: ../libempathy-gtk/totem-subtitle-encoding.c:279
+msgid "Korean"
+msgstr "Coreano"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:282
+msgid "Nordic"
+msgstr "Nordico"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:285
+msgid "Persian"
+msgstr "Persiano"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:288
+#: ../libempathy-gtk/totem-subtitle-encoding.c:290
+msgid "Romanian"
+msgstr "Rumeno"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:293
+msgid "South European"
+msgstr "Sud europeo"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:296
+msgid "Thai"
+msgstr "Tailandese"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:299
+#: ../libempathy-gtk/totem-subtitle-encoding.c:301
+#: ../libempathy-gtk/totem-subtitle-encoding.c:303
+#: ../libempathy-gtk/totem-subtitle-encoding.c:305
+msgid "Turkish"
+msgstr "Turco"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:308
+#: ../libempathy-gtk/totem-subtitle-encoding.c:310
+#: ../libempathy-gtk/totem-subtitle-encoding.c:312
+#: ../libempathy-gtk/totem-subtitle-encoding.c:314
+#: ../libempathy-gtk/totem-subtitle-encoding.c:316
+msgid "Unicode"
+msgstr "Unicode"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:319
+#: ../libempathy-gtk/totem-subtitle-encoding.c:321
+#: ../libempathy-gtk/totem-subtitle-encoding.c:323
+#: ../libempathy-gtk/totem-subtitle-encoding.c:325
+#: ../libempathy-gtk/totem-subtitle-encoding.c:327
+msgid "Western"
+msgstr "Occidentale"
+
+# (ndt) suggerimento
+#: ../libempathy-gtk/totem-subtitle-encoding.c:330
+#: ../libempathy-gtk/totem-subtitle-encoding.c:332
+#: ../libempathy-gtk/totem-subtitle-encoding.c:334
+msgid "Vietnamese"
+msgstr "Vietnamita"
+
+#.
+#. * vim: sw=2 ts=8 cindent noai bs=2
+#.
+#: ../megaphone/data/GNOME_Megaphone_Applet.schemas.in.h:1
+msgid ""
+"The contact to display in the applet. Empty means no contact is displayed."
+msgstr ""
+"Il contatto da visualizzare nell'applet. Se vuoto non viene visualizzato "
+"alcun contatto."
+
+#: ../megaphone/data/GNOME_Megaphone_Applet.schemas.in.h:2
+msgid "The contact's avatar token. Empty means contact has no avatar."
+msgstr "L'avatar del contatto. Se vuoto il contatto non ha alcun avatar."
+
+#: ../megaphone/data/GNOME_Megaphone_Applet.server.in.in.h:1
+msgid "Megaphone"
+msgstr "Megafono"
+
+#: ../megaphone/data/GNOME_Megaphone_Applet.server.in.in.h:2
+#: ../megaphone/src/megaphone-applet.c:419
+msgid "Talk!"
+msgstr "Parla!"
+
+#: ../megaphone/data/GNOME_Megaphone_Applet.xml.h:2
+msgid "_Information"
+msgstr "I_nformazioni"
+
+#: ../nothere/data/GNOME_NotHere_Applet.server.in.in.h:1
+msgid "Presence"
+msgstr "Presenza"
+
+#: ../nothere/data/GNOME_NotHere_Applet.server.in.in.h:2
+#: ../nothere/src/nothere-applet.c:89
+msgid "Set your own presence"
+msgstr "Imposta la propria presenza"
+
+#: ../src/empathy.c:205
+msgid "- Empathy Instant Messenger"
+msgstr "- Empathy messaggistica istantanea"
+
+#~ msgid "Call from %s"
+#~ msgstr "Chiamata da %s"
+
+#~ msgid "_New Message..."
+#~ msgstr "_Nuovo messaggio..."
+
+#~ msgid "New message"
+#~ msgstr "Nuovo messaggio"
+
+# (ndt) pulsante
+#~ msgid "Disable"
+#~ msgstr "Disabilita"
+
+#~ msgid "gtk-cancel"
+#~ msgstr "gtk-cancel"
+
+#~ msgid "gtk-ok"
+#~ msgstr "gtk-ok"
diff --git a/gnome-2-22/po/ja.po b/gnome-2-22/po/ja.po
new file mode 100644
index 000000000..ab540c1aa
--- /dev/null
+++ b/gnome-2-22/po/ja.po
@@ -0,0 +1,1739 @@
+# empathy ja.po.
+# Copyright (C) 2007,2008 Free Software Foundation, Inc.
+# This file is distributed under the same license as the 'empathy' package.
+# Takeshi AIHANA <takeshi.aihana@gmail.com>, 2007,2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: empathy gnome-2-22\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-22 00:06+0900\n"
+"PO-Revision-Date: 2008-03-22 00:05+0900\n"
+"Last-Translator: Takeshi AIHANA <takeshi.aihana@gmail.com>\n"
+"Language-Team: Japanese <gnome-translation@gnome.gr.jp>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: ../data/empathy.desktop.in.in.h:1
+msgid "Empathy Instant Messenger"
+msgstr "Empathy インスタント・メッセンジャー"
+
+#: ../data/empathy.desktop.in.in.h:2
+msgid "Send and receive instant messages"
+msgstr "インスタント・メッセージを送受信します"
+
+#: ../data/empathy.schemas.in.h:1
+msgid "Always open a separate chat window for new chats."
+msgstr "新しい仲間と会話する度に別のウィンドウを開くかどうかです。"
+
+#: ../data/empathy.schemas.in.h:2
+msgid ""
+"Character to add after nickname when using nick completion (tab) in group "
+"chat."
+msgstr ""
+"グループ・チャットであだ名を補完する際に、あだ名の後ろに追加すべき文字です。"
+
+#: ../data/empathy.schemas.in.h:3
+msgid "Chat window theme"
+msgstr "会話ウィンドウのテーマ"
+
+#: ../data/empathy.schemas.in.h:4
+msgid "Checks if Empathy should autoconnect on startup"
+msgstr "起動時に自動接続するかどうかを確認する"
+
+#: ../data/empathy.schemas.in.h:5
+msgid "Checks if NetworkManager should be used"
+msgstr "NetworkManager を利用できるか確認する"
+
+#: ../data/empathy.schemas.in.h:6
+msgid "Checks if Salut account is created"
+msgstr "Salut のアカウントを生成するかどうか"
+
+#: ../data/empathy.schemas.in.h:7
+msgid ""
+"Comma separated list of spell checker languages to use (e.g. en, fr, nl)."
+msgstr ""
+"スペルをチェックする言語をコンマで区切って指定します (例: en, fr, nl)。"
+
+#: ../data/empathy.schemas.in.h:8
+msgid "Compact contact list"
+msgstr "仲間リストを小さくする"
+
+#: ../data/empathy.schemas.in.h:9
+msgid "Contact list sort criterium"
+msgstr "仲間リストを並び替える際の条件"
+
+#: ../data/empathy.schemas.in.h:10
+msgid "Default directory to select an avatar image from"
+msgstr "アバターの画像が格納されたデフォルトのフォルダ"
+
+#: ../data/empathy.schemas.in.h:11
+msgid "Enable popup when contact is available"
+msgstr "仲間がサインインしたらポップアップする"
+
+#: ../data/empathy.schemas.in.h:12
+msgid "Enable sound when away"
+msgstr "離席中になったらサウンドを演奏する"
+
+#: ../data/empathy.schemas.in.h:13
+msgid "Enable sound when busy"
+msgstr "取り込み中になったらサウンドを演奏する"
+
+#: ../data/empathy.schemas.in.h:14
+msgid "Enable spell checker"
+msgstr "スペルをチェックする"
+
+#: ../data/empathy.schemas.in.h:15
+msgid "Hide main window"
+msgstr "メイン・ウィンドウを隠す"
+
+#: ../data/empathy.schemas.in.h:16
+msgid "Hide the main window."
+msgstr "メイン・ウィンドウを隠すかどうかです。"
+
+#: ../data/empathy.schemas.in.h:17
+msgid "Nick completed character"
+msgstr "あだ名を補完する文字"
+
+#: ../data/empathy.schemas.in.h:18
+msgid "Open new chats in separate windows"
+msgstr "新しい会話毎にウィンドウを開く"
+
+#: ../data/empathy.schemas.in.h:19
+msgid "Show avatars"
+msgstr "アバターを表示する"
+
+#: ../data/empathy.schemas.in.h:20
+msgid "Show hint about closing the main window"
+msgstr "メイン・ウィンドウを閉じる際のヒントを表示する"
+
+#: ../data/empathy.schemas.in.h:21
+msgid "Show offline contacts"
+msgstr "オフラインな仲間を表示する"
+
+#: ../data/empathy.schemas.in.h:22
+msgid "Spell checking languages"
+msgstr "スペルをチェックする言語"
+
+#: ../data/empathy.schemas.in.h:23
+msgid "The last directory that an avatar image was chosen from."
+msgstr "最後にアバターを選択した時に使用したフォルダです。"
+
+#: ../data/empathy.schemas.in.h:24
+msgid "The theme that is used to display the conversation in chat windows."
+msgstr "会話ウィンドウで使用するテーマです。"
+
+#: ../data/empathy.schemas.in.h:25
+msgid "Use graphical smileys"
+msgstr "スマイリー・アイコンを使う"
+
+#: ../data/empathy.schemas.in.h:26
+msgid "Use notification sounds"
+msgstr "状態をサウンドの演奏で通知する"
+
+#: ../data/empathy.schemas.in.h:27
+msgid "Use theme for chat rooms"
+msgstr "会話ウィンドウにテーマを適用する"
+
+#: ../data/empathy.schemas.in.h:28
+msgid ""
+"Whether or not Empathy should automatically login to your accounts on "
+"startup."
+msgstr ""
+"Empathy を起動したら自動的に自分のアカウントにログインするかどうかです。"
+
+#: ../data/empathy.schemas.in.h:29
+msgid ""
+"Whether or not the Salut account has been created on the first empathy run."
+msgstr "Empathy を初めて起動した時に Salut アカウントを生成するかどうかです。"
+
+#: ../data/empathy.schemas.in.h:30
+msgid ""
+"Whether or not the network manager should be used to automatically "
+"disconnect/reconnect."
+msgstr ""
+"NetworkManager 使って自動的にネットワークに接続したり再接続するかどうかです。"
+
+#: ../data/empathy.schemas.in.h:31
+msgid ""
+"Whether or not to check words typed against the languages you want to check "
+"with."
+msgstr ""
+"指定した言語のスペル・チェッカで入力した単語をチェックするかどうかです。"
+
+#: ../data/empathy.schemas.in.h:32
+msgid ""
+"Whether or not to convert smileys into graphical images in conversations."
+msgstr "会話ウィンドウに入力したスマイリーをアイコンに変換するかどうかです。"
+
+#: ../data/empathy.schemas.in.h:33
+msgid "Whether or not to play a sound when messages arrive."
+msgstr "メッセージを受け取ったらサウンドを演奏するかどうかです。"
+
+#: ../data/empathy.schemas.in.h:34
+msgid "Whether or not to play sounds when away."
+msgstr "状態が離席中になったらサウンドを演奏するかどうかです。"
+
+#: ../data/empathy.schemas.in.h:35
+msgid "Whether or not to play sounds when busy."
+msgstr "状態が取り込み中になったらサウンドを演奏するかどうかです。"
+
+#: ../data/empathy.schemas.in.h:36
+msgid "Whether or not to show a popup when a contact becomes available."
+msgstr "仲間がサインインしたらポップアップを表示するかどうかです。"
+
+#: ../data/empathy.schemas.in.h:37
+msgid ""
+"Whether or not to show avatars for contacts in the contact list and chat "
+"windows."
+msgstr "仲間リストと会話ウィンドウの中に仲間のアバターを表示するかどうかです。"
+
+#: ../data/empathy.schemas.in.h:38
+msgid "Whether or not to show contacts that are offline in the contact list."
+msgstr "仲間リストの中でオフラインの仲間を表示するかどうかです。"
+
+#: ../data/empathy.schemas.in.h:39
+msgid ""
+"Whether or not to show the message dialog about closing the main window with "
+"the 'x' button in the title bar."
+msgstr ""
+"タイトルバーにある 'x' ボタンをクリックしてメインウィンドウを閉じたらメッセー"
+"ジ・ダイアログを表示するかどうかです。"
+
+#: ../data/empathy.schemas.in.h:40
+msgid "Whether to show the contact list in compact mode or not."
+msgstr "仲間リストを小さく表示するかどうかです。"
+
+#: ../data/empathy.schemas.in.h:41
+msgid "Whether to use the theme for chat rooms or not."
+msgstr "会話ウィンドウにテーマを適用するかどうかです。"
+
+#: ../data/empathy.schemas.in.h:42
+msgid ""
+"Which criterium to use when sorting the contact list. Default is to use sort "
+"by the contact's name with the value \"name\". A value of \"state\" will "
+"sort the contact list by state."
+msgstr ""
+"仲間リストの中で仲間を並び替える際に使用する条件です。デフォルトは仲間の名前 "
+"(\"name\") です。他に使用可能な値: \"state\" (仲間の状態)"
+
+#: ../libempathy/empathy-tp-contact-list.c:724 ../src/empathy.c:155
+msgid "People nearby"
+msgstr "すぐ近くにいる人達"
+
+#: ../libempathy/empathy-utils.c:541
+msgid "Available"
+msgstr "在席中"
+
+#: ../libempathy/empathy-utils.c:543
+msgid "Busy"
+msgstr "取り込み中"
+
+#: ../libempathy/empathy-utils.c:546
+msgid "Away"
+msgstr "離席中"
+
+#: ../libempathy/empathy-utils.c:548
+msgid "Hidden"
+msgstr "隠れる"
+
+#: ../libempathy/empathy-utils.c:551
+msgid "Offline"
+msgstr "オフライン"
+
+#: ../libempathy-gtk/empathy-about-dialog.c:63
+msgid ""
+"Empathy is free software; you can redistribute it and/or modify it under the "
+"terms of the GNU General Public License as published by the Free Software "
+"Foundation; either version 2 of the License, or (at your option) any later "
+"version."
+msgstr ""
+"Empathy はフリーソフトウェアです;フリーソフトウェア財団が提供する GNU 一般公"
+"衆利用許諾契約書の第二版、あるいはそれ以降の版が定める条項の下で本プログラム"
+"を再頒布または変更することができます。"
+
+#: ../libempathy-gtk/empathy-about-dialog.c:67
+msgid ""
+"Empathy is distributed in the hope that it will be useful, but WITHOUT ANY "
+"WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS "
+"FOR A PARTICULAR PURPOSE. See the GNU General Public License for more "
+"details."
+msgstr ""
+"Empathy は有用とは思いますが、その頒布にあたっては市場性及び特定の目的、その"
+"適合性についての暗黙の保証を含めて、いかなる保証も行ないません。詳細について"
+"は GNU 一般公衆利用許諾契約書をご覧下さい。"
+
+#: ../libempathy-gtk/empathy-about-dialog.c:71
+msgid ""
+"You should have received a copy of the GNU General Public License along with "
+"Empathy; if not, write to the Free Software Foundation, Inc., 51 Franklin "
+"Street, Fifth Floor, Boston, MA 02110-130159 USA"
+msgstr ""
+"あなたは本プログラムと一緒に GNU 一般公衆利用許諾契約書の写しを受け取っている"
+"はずです。そうでない場合は、Free Software Foundation, Inc., 51 Franklin "
+"Street, Fifth Floor, Boston, MA 02110-130159 USA へ手紙を書いて下さい。"
+
+#: ../libempathy-gtk/empathy-about-dialog.c:99
+msgid "An Instant Messaging client for GNOME"
+msgstr "GNOME 向けのインスタント・メッセンジャー・クライアントです。"
+
+#: ../libempathy-gtk/empathy-about-dialog.c:105
+msgid "translator-credits"
+msgstr "相花 毅 <takeshi.aihana@gmail.com>"
+
+#: ../libempathy-gtk/empathy-account-chooser.c:337
+msgid "All"
+msgstr "全て"
+
+#: ../libempathy-gtk/empathy-account-widget.c:284
+#: ../libempathy-gtk/empathy-account-widget.c:329
+#, c-format
+msgid "%s:"
+msgstr "%s:"
+
+#: ../libempathy-gtk/empathy-account-widget-generic.glade.h:1
+#: ../libempathy-gtk/empathy-account-widget-icq.glade.h:1
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:1
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:1
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:1
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:1
+msgid "<b>Advanced</b>"
+msgstr "<b>拡張オプション</b>"
+
+#: ../libempathy-gtk/empathy-account-widget-generic.glade.h:2
+msgid "generic account settings"
+msgstr "アカウント全般の設定"
+
+#: ../libempathy-gtk/empathy-account-widget-icq.glade.h:2
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:3
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:2
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:2
+msgid "Forget password and clear the entry."
+msgstr "パスワードを破棄して、このエントリをクリアします"
+
+#: ../libempathy-gtk/empathy-account-widget-icq.glade.h:3
+msgid "ICQ _UIN:"
+msgstr "ICQ UIN(_U):"
+
+#: ../libempathy-gtk/empathy-account-widget-icq.glade.h:4
+msgid "ICQ account settings"
+msgstr "ICQ アカウントの設定"
+
+#: ../libempathy-gtk/empathy-account-widget-icq.glade.h:5
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:5
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:4
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:5
+msgid "Pass_word:"
+msgstr "パスワード(_W):"
+
+#: ../libempathy-gtk/empathy-account-widget-icq.glade.h:6
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:8
+msgid "_Charset:"
+msgstr "文字集合(_C):"
+
+#: ../libempathy-gtk/empathy-account-widget-icq.glade.h:7
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:11
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:5
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:10
+msgid "_Port:"
+msgstr "ポート番号(_P):"
+
+#: ../libempathy-gtk/empathy-account-widget-icq.glade.h:8
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:12
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:6
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:12
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:10
+msgid "_Server:"
+msgstr "サーバ(_S):"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.c:246
+msgid "New Network"
+msgstr "新しいネットワーク"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:1
+msgid "<b>Network</b>"
+msgstr "<b>ネットワーク</b>"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:2
+msgid "<b>Servers</b>"
+msgstr "<b>サーバ</b>"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:3
+msgid "Charset:"
+msgstr "文字集合:"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:4
+msgid "Create a new IRC network"
+msgstr "新しい IRC ネットワークを作成します"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:5
+msgid "Edit the selected IRC network"
+msgstr "選択した IRC ネットワークを編集します"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:6
+msgid "Network"
+msgstr "ネットワーク"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:7
+msgid "Network:"
+msgstr "ネットワーク:"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:8
+msgid "Nickname:"
+msgstr "あだ名:"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:9
+msgid "Password:"
+msgstr "パスワード:"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:10
+msgid "Quit message:"
+msgstr "終了時のメッセージ:"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:11
+msgid "Real name:"
+msgstr "氏名:"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:12
+msgid "Remove the selected IRC network"
+msgstr "選択した IRC ネットワークを削除します"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:13
+msgid "irc account settings"
+msgstr "irc アカウントの設定"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:2
+msgid "<b>Override server settings</b>"
+msgstr "<b>上書きするサーバの設定</b>"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:4
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:3
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:4
+msgid "Login I_D:"
+msgstr "ログイン名(_D):"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:6
+msgid "Pri_ority:"
+msgstr "優先度(_O):"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:7
+msgid "Reso_urce:"
+msgstr "リソース(_U):"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:8
+msgid "Use old SS_L"
+msgstr "古い SSL を使う(_L)"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:9
+msgid "_Encryption required (TLS/SSL)"
+msgstr "暗号化する (TLS/SSL)"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:10
+msgid "_Ignore SSL certificate errors"
+msgstr "SSL の証明書に関連するエラーは無視する(_I)"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:13
+msgid "jabber account settings"
+msgstr "Jabber アカウントの設定"
+
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:7
+msgid "msn account settings"
+msgstr "MSN アカウントの設定"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:2
+msgid "_E-mail:"
+msgstr "E-メール(_E):"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:3
+msgid "_First Name: "
+msgstr "名前(_F):"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:4
+msgid "_Jabber ID:"
+msgstr "Jabber ID(_J):"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:5
+msgid "_Last Name:"
+msgstr "名字(_L):"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:6
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:8
+msgid "_Nickname:"
+msgstr "あだ名(_N):"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:7
+msgid "_Published Name:"
+msgstr "公称(_P):"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:8
+msgid "salut account settings"
+msgstr "Salut アカウントの設定"
+
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:3
+msgid "J_apan server:"
+msgstr "日本のサーバ(_J):"
+
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:6
+msgid "Use _Yahoo Japan"
+msgstr "Yahoo Japan に接続する(_J)"
+
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:7
+msgid "Yahoo! account settings"
+msgstr "Yahoo! アカウントの設定"
+
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:9
+msgid "_Ignore conference and chatroom invitations"
+msgstr "会議とチャット部屋への勧誘を無視する(_I)"
+
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:11
+msgid "_Room List locale:"
+msgstr "部屋の一覧がある場所(_R):"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:225
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to start configuring."
+msgstr ""
+"新しいアカウントを登録するには [追加] ボタンをクリックして下さい。すると、新"
+"しいアカウントの設定画面が表示されるので必要な情報を入力して下さい。"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:229
+msgid ""
+"To add a new account, you first have to install a backend for each protocol "
+"you want to use."
+msgstr ""
+"新しいアカウントを登録するには、まず最初に利用するプロトコルのバックエンドを"
+"インストールしておいて下さい。"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:236
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:2
+msgid "<b>No Account Selected</b>"
+msgstr "<b>アカウントが選択されていません</b>"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:237
+msgid ""
+"\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want "
+"to configure in the list on the left."
+msgstr ""
+"\n"
+"\n"
+"アカウントを編集する場合は、左側の一覧にあるアカウントをクリックして下さい。"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:243
+msgid "<b>No Accounts Configured</b>"
+msgstr "<b>アカウントが登録されていません</b>"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:411
+msgid "Enabled"
+msgstr "サインイン"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:421
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:4
+msgid "Accounts"
+msgstr "アカウント"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:904
+#, c-format
+msgid ""
+"You are about to remove your %s account!\n"
+"Are you sure you want to proceed?"
+msgstr ""
+"%s というアカウントを削除しようとしています!\n"
+"本当に削除してもよろしいですか?"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:910
+msgid ""
+"Any associated conversations and chat rooms will NOT be removed if you "
+"decide to proceed.\n"
+"\n"
+"Should you decide to add the account back at a later time, they will still "
+"be available."
+msgstr ""
+"ここでアカウントの削除を続行しても、実際にそのアカウントに関連する会話や部屋"
+"は削除されません。\n"
+"\n"
+"その理由は、あとでアカウントを追加し直した時に再利用できるようにするためで"
+"す。"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:1
+msgid "<b>New Account</b>"
+msgstr "<b>新しいアカウント</b>"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:3
+msgid "<b>Settings</b>"
+msgstr "<b>設定</b>"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:5
+msgid "Cr_eate"
+msgstr "生成(_E)"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:6
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to started configuring.\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want "
+"to configure in the list on the left."
+msgstr ""
+"新しいアカウントを登録するには [追加] ボタンをクリックして下さい。すると、新"
+"しいアカウントの設定画面が表示されるので必要な情報を入力して下さい。\n"
+"\n"
+"アカウントを編集する場合は、左側の一覧にあるアカウントをクリックして編集して"
+"下さい。"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:9
+msgid "Type:"
+msgstr "種類:"
+
+#: ../libempathy-gtk/empathy-avatar-chooser.c:449
+msgid "Select Your Avatar Image"
+msgstr "アバターに使用する画像の選択"
+
+#: ../libempathy-gtk/empathy-avatar-chooser.c:452
+msgid "No Image"
+msgstr "画像なし"
+
+#: ../libempathy-gtk/empathy-avatar-chooser.c:512
+msgid "Images"
+msgstr "画像ファイル"
+
+#: ../libempathy-gtk/empathy-avatar-chooser.c:516
+msgid "All Files"
+msgstr "全てのファイル"
+
+#: ../libempathy-gtk/empathy-avatar-image.c:298
+msgid "Click to enlarge"
+msgstr "クリックすると大きくなります"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:1
+msgid "End Call"
+msgstr "呼び出しの終了"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:2
+msgid "Input"
+msgstr "入力"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:3
+msgid "Mute"
+msgstr "ミュート"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:4
+msgid "Output"
+msgstr "出力"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:5
+msgid "Send Video"
+msgstr "動画を送信する"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:6
+msgid "Start Call"
+msgstr "呼び出しの開始"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:7
+msgid "Volume"
+msgstr "音量"
+
+#: ../libempathy-gtk/empathy-chat.c:441
+msgid "Disconnected"
+msgstr "不通"
+
+#: ../libempathy-gtk/empathy-chat.c:565
+msgid "offline"
+msgstr "オフライン"
+
+#: ../libempathy-gtk/empathy-chat.c:568
+msgid "invalid contact"
+msgstr "無効な仲間です"
+
+#: ../libempathy-gtk/empathy-chat.c:571
+msgid "permission denied"
+msgstr "権限がありません"
+
+#: ../libempathy-gtk/empathy-chat.c:574
+msgid "too long message"
+msgstr "メッセージが長すぎます"
+
+#: ../libempathy-gtk/empathy-chat.c:577
+msgid "not implemented"
+msgstr "未実装です"
+
+#: ../libempathy-gtk/empathy-chat.c:580
+msgid "unknown"
+msgstr "原因不明です"
+
+#: ../libempathy-gtk/empathy-chat.c:584
+#, c-format
+msgid "Error sending message '%s': %s"
+msgstr "'%s' というメッセージを送信する際にエラー: %s"
+
+#: ../libempathy-gtk/empathy-chat.c:1041
+msgid "Insert Smiley"
+msgstr "スマイリーの挿入"
+
+#: ../libempathy-gtk/empathy-chat.c:1088
+msgid "_Check Word Spelling..."
+msgstr "スペル・チェック(_C)..."
+
+#: ../libempathy-gtk/empathy-chat.c:1545
+msgid "Connected"
+msgstr "オンライン"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:1
+msgid "C_lear"
+msgstr "クリア(_L)"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:2
+msgid "Ca_ll"
+msgstr "呼び出す(_L)"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:3
+msgid "Change _Topic..."
+msgstr "トピックの変更(_T)..."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:4
+#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:3
+msgid "Chat"
+msgstr "チャット"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:5
+msgid "Contact Infor_mation"
+msgstr "仲間の情報(_M)"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:6
+msgid "Cu_t"
+msgstr "切り取り(_T)"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:7
+msgid "In_vite..."
+msgstr "招待する(_V)..."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:8
+msgid "Insert _Smiley"
+msgstr "スマイリーの挿入(_S)"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:9
+msgid "Invitation _message:"
+msgstr "招待メッセージ(_M):"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:10
+msgid "Invite"
+msgstr "招待する"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:11
+#: ../libempathy-gtk/empathy-main-window.glade.h:4
+msgid "Join _New..."
+msgstr "新規(N)..."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:12
+msgid "Move Tab _Left"
+msgstr "タブを左へ移動(_L)"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:13
+msgid "Move Tab _Right"
+msgstr "タブを右へ移動(_R)"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:14
+msgid "Select who would you like to invite:"
+msgstr "招待する仲間を選択して下さい:"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:15
+msgid "You have been invited to join a chat conference."
+msgstr "あなたはチャット会議に参加するために招待されました。"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:16
+#: ../libempathy-gtk/empathy-main-window.glade.h:9
+msgid "_Add Contact..."
+msgstr "仲間の追加(_A)..."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:17
+msgid "_Add To Favorites"
+msgstr "お気に入りに追加する(_A)"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:18
+msgid "_Close"
+msgstr "閉じる(_C)"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:19
+#: ../libempathy-gtk/empathy-main-window.glade.h:11
+msgid "_Contents"
+msgstr "目次(_C)"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:20
+msgid "_Conversation"
+msgstr "会話(_C)"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:21
+msgid "_Copy"
+msgstr "コピー(_C)"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:22
+msgid "_Detach Tab"
+msgstr "タブの取り外し(_D)"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:23
+#: ../libempathy-gtk/empathy-contact-list-view.c:217
+#: ../libempathy-gtk/empathy-main-window.glade.h:12
+msgid "_Edit"
+msgstr "編集(_E)"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:24
+#: ../libempathy-gtk/empathy-main-window.glade.h:13
+msgid "_Help"
+msgstr "ヘルプ(_H)"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:25
+msgid "_Next Tab"
+msgstr "次のタブへ(_N)"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:26
+msgid "_Paste"
+msgstr "貼り付け(_P)"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:27
+msgid "_Previous Tab"
+msgstr "前のタブへ(_P)"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:28
+#: ../libempathy-gtk/empathy-main-window.glade.h:18
+msgid "_Room"
+msgstr "部屋(_R)"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:29
+msgid "_Show Contacts"
+msgstr "仲間の表示(_S)"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:30
+msgid "_Tabs"
+msgstr "タブ(_T)"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:31
+#: ../libempathy-gtk/empathy-contact-list-view.c:233
+#: ../libempathy-gtk/empathy-main-window.glade.h:19
+msgid "_View Previous Conversations"
+msgstr "会話の履歴を表示する(_V)"
+
+#: ../libempathy-gtk/empathy-chat-view.c:441
+msgid "_Copy Link Address"
+msgstr "リンク先のコピー(_C)"
+
+#: ../libempathy-gtk/empathy-chat-view.c:449
+msgid "_Open Link"
+msgstr "リンクを開く(_O)"
+
+#: ../libempathy-gtk/empathy-chat-window.c:699
+#, c-format
+msgid "Conversations (%d)"
+msgstr "会話 (%d)"
+
+#: ../libempathy-gtk/empathy-chat-window.c:1294
+msgid "Typing a message."
+msgstr "メッセージを入力しています"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.c:258
+msgid "Name"
+msgstr "名前"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.c:276
+msgid "Room"
+msgstr "部屋"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.c:285
+msgid "Auto Connect"
+msgstr "自動サインイン"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:1
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:5
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:1
+#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:1
+msgid "Account:"
+msgstr "アカウント:"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:2
+msgid "Edit Favorite Room"
+msgstr "お気に入りの部屋の編集"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:3
+msgid "Join room on start_up"
+msgstr "起動時に入室する"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:4
+msgid "Join this chat room when Empathy starts and you are connected"
+msgstr "Empathy を起動しサインインしたらこの部屋に入室する"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:5
+msgid "Manage Favorite Rooms"
+msgstr "お気に入りの部屋"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:6
+msgid "N_ame:"
+msgstr "名前(_A):"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:7
+msgid "S_erver:"
+msgstr "サーバ(_E):"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:9
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:9
+msgid "_Room:"
+msgstr "部屋(_R):"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:176
+msgid "Personal Information"
+msgstr "個人の情報"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:179
+msgid "Edit Contact Information"
+msgstr "仲間情報の編集"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:182
+msgid "Contact Information"
+msgstr "仲間の情報"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:277
+msgid "I would like to add you to my contact list."
+msgstr "あなたを私の仲間一覧に追加したいです"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:301
+msgid "New Contact"
+msgstr "新しい仲間"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.glade.h:1
+msgid "Decide _Later"
+msgstr "あとで決める(_L)"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.glade.h:2
+msgid "Subscription Request"
+msgstr "登録のリクエスト"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:197
+msgid "_Contact"
+msgstr "仲間(_C)"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:201
+msgid "_Group"
+msgstr "グループ(_G)"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:205
+#: ../libempathy-gtk/empathy-main-window.glade.h:10
+msgid "_Chat"
+msgstr "会話(_C)"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:205
+msgid "Chat with contact"
+msgstr "仲間とチャットする"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:209
+msgid "Infor_mation"
+msgstr "情報(_M)"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:209
+msgid "View contact information"
+msgstr "仲間の情報を表示します"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:213
+msgid "Re_name"
+msgstr "名前の変更(_N)"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:213
+msgid "Rename"
+msgstr "名前の変更"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:217
+msgid "Edit the groups and name for this contact"
+msgstr "この仲間のグループと名前を編集します"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:221
+msgid "_Remove"
+msgstr "削除(_R)"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:221
+msgid "Remove contact"
+msgstr "仲間を削除します"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:225
+msgid "_Invite to Chat Room"
+msgstr "チャット部屋へ招待する(_I)"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:225
+msgid "Invite to a currently open chat room"
+msgstr "現在開いているチャット部屋へ招待します"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:229
+msgid "_Send File..."
+msgstr "ファイルの転送(_S)..."
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:229
+msgid "Send a file"
+msgstr "ファイルを送信します"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:233
+msgid "View previous conversations with this contact"
+msgstr "この仲間と以前会話した時の内容を表示します"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:238
+msgid "_Call"
+msgstr "呼び出す(_C)"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:238
+msgid "Start a voice or video conversation with this contact"
+msgstr "この仲間と音声または映像を使って会話を始めます"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:1469
+msgid "Sorry, I don't want you in my contact list anymore."
+msgstr "すみませんが、あなたを私の仲間一覧に登録したくありません"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:688
+msgid "Select"
+msgstr "選択"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:698
+#: ../libempathy-gtk/empathy-main-window.c:609
+msgid "Group"
+msgstr "グループ"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:1
+msgid "<b>Client Information</b>"
+msgstr "<b>クライアントの情報</b>"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:2
+msgid "<b>Contact Details</b>"
+msgstr "<b>仲間の詳細</b>"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:3
+msgid "<b>Contact</b>"
+msgstr "<b>仲間</b>"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:4
+msgid "<b>Groups</b>"
+msgstr "<b>グループ</b>"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:6
+msgid "Alias:"
+msgstr "あだ名:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:7
+msgid "Birthday:"
+msgstr "誕生日:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:8
+msgid "Client:"
+msgstr "クライアント:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:9
+msgid "Contact information"
+msgstr "仲間の情報"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:10
+msgid "Email:"
+msgstr "E-メール:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:11
+msgid "Fullname:"
+msgstr "氏名:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:12
+msgid "Identifier:"
+msgstr "スクリーン名:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:13
+msgid "Information requested..."
+msgstr "情報の取得中..."
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:14
+msgid "OS:"
+msgstr "OS:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:15
+msgid ""
+"Select the groups you want this contact to appear in, you can select more "
+"than one group or no groups."
+msgstr ""
+"この仲間を登録するグループを選択して下さい (グループは1つ以上選択したり、あ"
+"るいは全く選択しなくても構いません)"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:16
+msgid "Version:"
+msgstr "バージョン:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:17
+msgid "Web site:"
+msgstr "ホームページ:"
+
+#: ../libempathy-gtk/empathy-group-chat.c:251
+msgid "Enter the new topic you want to set for this room:"
+msgstr "この部屋にセットしたい新しいトピックを入力して下さい:"
+
+#: ../libempathy-gtk/empathy-group-chat.c:361
+#, c-format
+msgid "%s has joined the room"
+msgstr "%s さんが部屋に入室しました"
+
+#: ../libempathy-gtk/empathy-group-chat.c:364
+#, c-format
+msgid "%s has left the room"
+msgstr "%s さんが部屋から退室しました"
+
+#: ../libempathy-gtk/empathy-group-chat.c:445
+#, c-format
+msgid "Topic: %s"
+msgstr "トピック: %s"
+
+#: ../libempathy-gtk/empathy-group-chat.c:574
+#, c-format
+msgid "Topic set to: %s"
+msgstr "新しいトピック: %s"
+
+#: ../libempathy-gtk/empathy-group-chat.c:576
+msgid "No topic defined"
+msgstr "トピックはありません"
+
+#: ../libempathy-gtk/empathy-group-chat.glade.h:1
+msgid "<b>Topic:</b>"
+msgstr "<b>トピック:</b>"
+
+#: ../libempathy-gtk/empathy-group-chat.glade.h:2
+msgid "Group Chat"
+msgstr "グループ・チャット"
+
+#: ../libempathy-gtk/empathy-irc-network-dialog.c:287
+msgid "new server"
+msgstr "新しいサーバ"
+
+#: ../libempathy-gtk/empathy-irc-network-dialog.c:512
+msgid "Server"
+msgstr "サーバ"
+
+#: ../libempathy-gtk/empathy-irc-network-dialog.c:527
+msgid "Port"
+msgstr "ポート番号"
+
+#: ../libempathy-gtk/empathy-irc-network-dialog.c:540
+msgid "SSL"
+msgstr "SSL"
+
+#: ../libempathy-gtk/empathy-log-window.c:499
+msgid "Account"
+msgstr "アカウント"
+
+#: ../libempathy-gtk/empathy-log-window.c:506
+msgid "Conversation"
+msgstr "会話"
+
+#: ../libempathy-gtk/empathy-log-window.c:516
+msgid "Date"
+msgstr "日付"
+
+#: ../libempathy-gtk/empathy-log-window.glade.h:1
+msgid "Conversations"
+msgstr "会話"
+
+#: ../libempathy-gtk/empathy-log-window.glade.h:2
+msgid "Previous Conversations"
+msgstr "会話の履歴"
+
+#: ../libempathy-gtk/empathy-log-window.glade.h:3
+msgid "Search"
+msgstr "検索"
+
+#: ../libempathy-gtk/empathy-log-window.glade.h:4
+msgid "_For:"
+msgstr "検索する文字(_F):"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.c:286
+msgid "Chat Rooms"
+msgstr "チャット部屋"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:2
+msgid "Browse:"
+msgstr "参照:"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:3
+msgid ""
+"Enter the room name to join here or click on one or more rooms in the list."
+msgstr ""
+"入室する部屋の名前を入力するか、下にある一覧から1つ以上の部屋をクリックして"
+"下さい"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:4
+msgid ""
+"Enter the server which hosts the room, or leave it empty if the room is on "
+"the current account's server"
+msgstr ""
+"その部屋を提供しているサーバを入力するか、またはその部屋が現在利用している"
+"サーバにある場合は空のままにして下さい"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:5
+msgid "Join"
+msgstr "入室する"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:6
+msgid "Join New"
+msgstr "新しいチャット部屋"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:7
+msgid "Re_fresh"
+msgstr "更新(_F)"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:8
+msgid ""
+"This list represents all chat rooms hosted on the server you have entered."
+msgstr ""
+"この一覧にはサーバで提供しているチャット専用の部屋が全て一覧表示されます"
+
+#: ../libempathy-gtk/empathy-main-window.c:266
+msgid "Show and edit accounts"
+msgstr "アカウントの一覧を表示して編集します"
+
+#: ../libempathy-gtk/empathy-main-window.c:630
+msgid "Contact"
+msgstr "仲間"
+
+#: ../libempathy-gtk/empathy-main-window.c:813
+msgid "_Edit account"
+msgstr "アカウントの編集(_E)"
+
+#: ../libempathy-gtk/empathy-main-window.c:896
+msgid "Network error"
+msgstr "ネットワークのエラーです"
+
+#: ../libempathy-gtk/empathy-main-window.c:899
+msgid "Authentication failed"
+msgstr "認証に失敗しました"
+
+#: ../libempathy-gtk/empathy-main-window.c:902
+msgid "Encryption error"
+msgstr "暗号化のエラーです"
+
+#: ../libempathy-gtk/empathy-main-window.c:905
+msgid "Name in use"
+msgstr "使用中の名前"
+
+#: ../libempathy-gtk/empathy-main-window.c:908
+msgid "Certificate not provided"
+msgstr "証明書がありません"
+
+#: ../libempathy-gtk/empathy-main-window.c:911
+msgid "Certificate untrusted"
+msgstr "信用のない証明書です"
+
+#: ../libempathy-gtk/empathy-main-window.c:914
+msgid "Certificate expired"
+msgstr "証明書の有効期限が切れています"
+
+#: ../libempathy-gtk/empathy-main-window.c:917
+msgid "Certificate not activated"
+msgstr "証明書は利用できません"
+
+#: ../libempathy-gtk/empathy-main-window.c:920
+msgid "Certificate hostname mismatch"
+msgstr "証明書のホスト名が一致しません"
+
+#: ../libempathy-gtk/empathy-main-window.c:923
+msgid "Certificate fingerprint mismatch"
+msgstr "証明書の指紋が一致しません"
+
+#: ../libempathy-gtk/empathy-main-window.c:926
+msgid "Certificate self signed"
+msgstr "証明書自身の署名です"
+
+#: ../libempathy-gtk/empathy-main-window.c:929
+msgid "Certificate error"
+msgstr "証明書に関連するエラーです"
+
+#: ../libempathy-gtk/empathy-main-window.c:932
+msgid "Unknown error"
+msgstr "原因不明のエラーです"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:1
+msgid "Contact List"
+msgstr "仲間リスト"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:2
+msgid "Context"
+msgstr "コンテキスト"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:3
+msgid "Join _Favorites"
+msgstr "お気に入りに追加(_F)"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:5
+msgid "Manage Favorites"
+msgstr "お気に入りの管理"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:6
+msgid "Show _Offline Contacts"
+msgstr "オフラインの仲間を表示する(_O)"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:7
+#: ../megaphone/data/GNOME_Megaphone_Applet.xml.h:1
+#: ../nothere/data/GNOME_NotHere_Applet.xml.h:1
+msgid "_About"
+msgstr "情報(_A)"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:8
+msgid "_Accounts"
+msgstr "アカウント(_A)"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:14
+#: ../libempathy-gtk/empathy-status-icon.glade.h:2
+msgid "_New Conversation..."
+msgstr "新しい会話(_N)..."
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:15
+msgid "_Personal Information"
+msgstr "個人情報(_P)"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:16
+#: ../megaphone/data/GNOME_Megaphone_Applet.xml.h:3
+msgid "_Preferences"
+msgstr "設定(_P)"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:17
+#: ../libempathy-gtk/empathy-status-icon.glade.h:3
+msgid "_Quit"
+msgstr "終了(_Q)"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:2
+msgid "Call"
+msgstr "呼び出し"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:4
+msgid "Contact ID:"
+msgstr "仲間の ID:"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:5
+msgid "New Conversation"
+msgstr "新しい会話"
+
+#: ../libempathy-gtk/empathy-preferences.c:247
+msgid "Language"
+msgstr "言語"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:1
+msgid "<b>Appearance</b>"
+msgstr "<b>外観</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:2
+msgid "<b>Audio</b>"
+msgstr "<b>サウンド</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:3
+msgid "<b>Behaviour</b>"
+msgstr "<b>ウィンドウ</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:4
+msgid "<b>Contact List</b>"
+msgstr "<b>仲間リスト</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:5
+msgid "<b>Enable spell checking for languages:</b>"
+msgstr "<b>スペルをチェックする言語:</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:6
+msgid "<b>Options</b>"
+msgstr "<b>オプション</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:7
+msgid "<b>Visual</b>"
+msgstr "<b>表示</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:8
+msgid ""
+"<small>The list of languages reflects only the languages for which you have "
+"a dictionary installed.</small>"
+msgstr ""
+"<small>この言語の一覧は辞書をインストールしている場合にのみ表示されます。</"
+"small>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:9
+msgid "Automatically _connect on startup "
+msgstr "起動したら自動的にログインする(_C)"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:10
+msgid "Avatars are user chosen images shown in the contact list"
+msgstr "相手が選択したアバターを仲間リストに表示します"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:11
+msgid "Chat Th_eme:"
+msgstr "テーマ(_E):"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:12
+msgid "Display notifications when contacts come _online"
+msgstr "仲間がオンラインになったら通知する(_O)"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:13
+msgid "Enable sounds when _away"
+msgstr "離席中になったらサウンドを演奏する(_A)"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:14
+msgid "Enable sounds when _busy"
+msgstr "取り込み中になったらサウンドを演奏する(_B)"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:15
+msgid "General"
+msgstr "全般"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:16
+msgid "Notifications"
+msgstr "通知"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:17
+msgid "Preferences"
+msgstr "設定"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:18
+msgid "Show _avatars"
+msgstr "アバターを表示する(_A)"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:19
+msgid "Show _smileys as images"
+msgstr "スマイリーをアイコンで表示する(_S)"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:20
+msgid "Show co_mpact contact list"
+msgstr "仲間リストをコンパクトにする(_M)"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:21
+msgid "Sort by _name"
+msgstr "名前で並び替える(_N)"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:22
+msgid "Sort by s_tate"
+msgstr "状態で並び替える(_T)"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:23
+msgid "Spell Checking"
+msgstr "スペルのチェック"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:24
+msgid "Themes"
+msgstr "テーマ"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:25
+msgid "_Open new chats in separate windows"
+msgstr "新しい会話の度に別のウィンドウを開く(_O)"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:26
+msgid "_Play sound when messages arrive"
+msgstr "メッセージを受け取ったらサウンドを演奏する(_P)"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:27
+msgid "_Use for chat rooms"
+msgstr "チャット部屋にもテーマを適用する(_U)"
+
+#. Custom messages
+#: ../libempathy-gtk/empathy-presence-chooser.c:691
+msgid "Custom messages..."
+msgstr "独自のメッセージ..."
+
+#: ../libempathy-gtk/empathy-presence-chooser.glade.h:1
+msgid "Custom message"
+msgstr "独自のメッセージ"
+
+#: ../libempathy-gtk/empathy-presence-chooser.glade.h:2
+msgid "Message:"
+msgstr "メッセージ:"
+
+#: ../libempathy-gtk/empathy-presence-chooser.glade.h:3
+msgid "Save message"
+msgstr "このメッセージを保存する"
+
+#: ../libempathy-gtk/empathy-presence-chooser.glade.h:4
+msgid "Status:"
+msgstr "状態:"
+
+#: ../libempathy-gtk/empathy-private-chat.c:229
+#, c-format
+msgid "%s went offline"
+msgstr "%s さんがオフラインになりました"
+
+#: ../libempathy-gtk/empathy-private-chat.c:243
+#, c-format
+msgid "%s has come online"
+msgstr "%s さんがオンラインになりました"
+
+#: ../libempathy-gtk/empathy-spell-dialog.c:85
+msgid "Word"
+msgstr "単語"
+
+#: ../libempathy-gtk/empathy-spell-dialog.c:258
+msgid "Suggestions for the word"
+msgstr "推奨する単語"
+
+#: ../libempathy-gtk/empathy-spell-dialog.glade.h:1
+msgid "Spell Checker"
+msgstr "スペルのチェック"
+
+#: ../libempathy-gtk/empathy-spell-dialog.glade.h:2
+msgid "Suggestions for the word:"
+msgstr "推奨する単語:"
+
+#: ../libempathy-gtk/empathy-status-icon.c:358
+#, c-format
+msgid ""
+"New message from %s:\n"
+"%s"
+msgstr ""
+"%s さんからの新着メッセージ:\n"
+"%s"
+
+#: ../libempathy-gtk/empathy-status-icon.c:423
+#, c-format
+msgid ""
+"Incoming call from %s:\n"
+"%s"
+msgstr ""
+"%s さんからの着信です:\n"
+"%s"
+
+#: ../libempathy-gtk/empathy-status-icon.c:727
+#, c-format
+msgid "Subscription requested by %s"
+msgstr "%s さんからのリクエスト"
+
+#: ../libempathy-gtk/empathy-status-icon.c:730
+#, c-format
+msgid ""
+"\n"
+"Message: %s"
+msgstr ""
+"\n"
+"メッセージ: %s"
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:1
+msgid "Status"
+msgstr "状態"
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:4
+msgid "_Show Contact List"
+msgstr "仲間リストの表示(_S)"
+
+#: ../libempathy-gtk/empathy-theme-boxes.c:780
+#: ../libempathy-gtk/empathy-theme-irc.c:297
+msgid "%A %d %B %Y"
+msgstr "%Y年%B%e日 %A"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:78
+msgid "Classic"
+msgstr "クラッシック"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:79
+msgid "Simple"
+msgstr "シンプル"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:80
+msgid "Clean"
+msgstr "クリーン"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:81
+msgid "Blue"
+msgstr "ブルー"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:158
+msgid "Current Locale"
+msgstr "現在のロケール"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:161
+#: ../libempathy-gtk/totem-subtitle-encoding.c:163
+#: ../libempathy-gtk/totem-subtitle-encoding.c:165
+#: ../libempathy-gtk/totem-subtitle-encoding.c:167
+msgid "Arabic"
+msgstr "アラビア語"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:170
+msgid "Armenian"
+msgstr "アルメニア語"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:173
+#: ../libempathy-gtk/totem-subtitle-encoding.c:175
+#: ../libempathy-gtk/totem-subtitle-encoding.c:177
+msgid "Baltic"
+msgstr "バルト語"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:180
+msgid "Celtic"
+msgstr "ケルト語"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:183
+#: ../libempathy-gtk/totem-subtitle-encoding.c:185
+#: ../libempathy-gtk/totem-subtitle-encoding.c:187
+#: ../libempathy-gtk/totem-subtitle-encoding.c:189
+msgid "Central European"
+msgstr "中欧"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:192
+#: ../libempathy-gtk/totem-subtitle-encoding.c:194
+#: ../libempathy-gtk/totem-subtitle-encoding.c:196
+#: ../libempathy-gtk/totem-subtitle-encoding.c:198
+msgid "Chinese Simplified"
+msgstr "簡体字中国語"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:201
+#: ../libempathy-gtk/totem-subtitle-encoding.c:203
+#: ../libempathy-gtk/totem-subtitle-encoding.c:205
+msgid "Chinese Traditional"
+msgstr "繁体字中国語"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:208
+msgid "Croatian"
+msgstr "クロアチア語"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:211
+#: ../libempathy-gtk/totem-subtitle-encoding.c:213
+#: ../libempathy-gtk/totem-subtitle-encoding.c:215
+#: ../libempathy-gtk/totem-subtitle-encoding.c:217
+#: ../libempathy-gtk/totem-subtitle-encoding.c:219
+#: ../libempathy-gtk/totem-subtitle-encoding.c:221
+msgid "Cyrillic"
+msgstr "キリル文字"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:224
+msgid "Cyrillic/Russian"
+msgstr "キリル文字/ロシア語"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:227
+#: ../libempathy-gtk/totem-subtitle-encoding.c:229
+msgid "Cyrillic/Ukrainian"
+msgstr "キリル文字/ウクライナ語"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:232
+msgid "Georgian"
+msgstr "グルジア語"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:235
+#: ../libempathy-gtk/totem-subtitle-encoding.c:237
+#: ../libempathy-gtk/totem-subtitle-encoding.c:239
+msgid "Greek"
+msgstr "ギリシア語"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:242
+msgid "Gujarati"
+msgstr "グジャラート語"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:245
+msgid "Gurmukhi"
+msgstr "グルムキー文字"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:248
+#: ../libempathy-gtk/totem-subtitle-encoding.c:250
+#: ../libempathy-gtk/totem-subtitle-encoding.c:252
+#: ../libempathy-gtk/totem-subtitle-encoding.c:254
+msgid "Hebrew"
+msgstr "ヘブライ語"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:257
+msgid "Hebrew Visual"
+msgstr "ヘブライ語 (象形)"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:260
+msgid "Hindi"
+msgstr "ヒンディー語"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:263
+msgid "Icelandic"
+msgstr "アイスランド語"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:266
+#: ../libempathy-gtk/totem-subtitle-encoding.c:268
+#: ../libempathy-gtk/totem-subtitle-encoding.c:270
+msgid "Japanese"
+msgstr "日本語"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:273
+#: ../libempathy-gtk/totem-subtitle-encoding.c:275
+#: ../libempathy-gtk/totem-subtitle-encoding.c:277
+#: ../libempathy-gtk/totem-subtitle-encoding.c:279
+msgid "Korean"
+msgstr "韓国語"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:282
+msgid "Nordic"
+msgstr "北欧"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:285
+msgid "Persian"
+msgstr "ペルシア語"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:288
+#: ../libempathy-gtk/totem-subtitle-encoding.c:290
+msgid "Romanian"
+msgstr "ルーマニア語"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:293
+msgid "South European"
+msgstr "南欧"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:296
+msgid "Thai"
+msgstr "タイ語"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:299
+#: ../libempathy-gtk/totem-subtitle-encoding.c:301
+#: ../libempathy-gtk/totem-subtitle-encoding.c:303
+#: ../libempathy-gtk/totem-subtitle-encoding.c:305
+msgid "Turkish"
+msgstr "トルコ語"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:308
+#: ../libempathy-gtk/totem-subtitle-encoding.c:310
+#: ../libempathy-gtk/totem-subtitle-encoding.c:312
+#: ../libempathy-gtk/totem-subtitle-encoding.c:314
+#: ../libempathy-gtk/totem-subtitle-encoding.c:316
+msgid "Unicode"
+msgstr "Unicode"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:319
+#: ../libempathy-gtk/totem-subtitle-encoding.c:321
+#: ../libempathy-gtk/totem-subtitle-encoding.c:323
+#: ../libempathy-gtk/totem-subtitle-encoding.c:325
+#: ../libempathy-gtk/totem-subtitle-encoding.c:327
+msgid "Western"
+msgstr "西欧"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:330
+#: ../libempathy-gtk/totem-subtitle-encoding.c:332
+#: ../libempathy-gtk/totem-subtitle-encoding.c:334
+msgid "Vietnamese"
+msgstr "ベトナム語"
+
+#.
+#. * vim: sw=2 ts=8 cindent noai bs=2
+#.
+#: ../megaphone/data/GNOME_Megaphone_Applet.schemas.in.h:1
+msgid ""
+"The contact to display in the applet. Empty means no contact is displayed."
+msgstr "アプレットの中に表示する連絡先"
+
+#: ../megaphone/data/GNOME_Megaphone_Applet.schemas.in.h:2
+msgid "The contact's avatar token. Empty means contact has no avatar."
+msgstr "連絡先のアバター"
+
+#: ../megaphone/data/GNOME_Megaphone_Applet.server.in.in.h:1
+msgid "Megaphone"
+msgstr "メガホン"
+
+#: ../megaphone/data/GNOME_Megaphone_Applet.server.in.in.h:2
+#: ../megaphone/src/megaphone-applet.c:419
+msgid "Talk!"
+msgstr "仲間と話しをしましよう!"
+
+#: ../megaphone/data/GNOME_Megaphone_Applet.xml.h:2
+msgid "_Information"
+msgstr "情報(_I)"
+
+#: ../nothere/data/GNOME_NotHere_Applet.server.in.in.h:1
+msgid "Presence"
+msgstr "在席"
+
+#: ../nothere/data/GNOME_NotHere_Applet.server.in.in.h:2
+#: ../nothere/src/nothere-applet.c:89
+msgid "Set your own presence"
+msgstr "あなたの在席情報をセットします"
+
+#: ../src/empathy.c:291
+msgid "- Empathy Instant Messenger"
+msgstr "- Empathy インスタント・メッセンジャー"
diff --git a/gnome-2-22/po/lt.po b/gnome-2-22/po/lt.po
new file mode 100644
index 000000000..001d52cef
--- /dev/null
+++ b/gnome-2-22/po/lt.po
@@ -0,0 +1,1745 @@
+# translation of lt.po to Lithuanian
+# Lithuanian translation of gossip.
+# Copyright (C) 2004-2007 Free Software Foundation, Inc.
+# This file is distributed under the same license as the gossip package.
+#
+#
+# Justina Klingaitė <justina.klingaite@gmail.com>, 2006.
+# Gintautas Miliauskas <gintas@akl.lt>, 2006.
+# Žygimantas Beručka <zygis@gnome.org>, 2004-2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: gossip HEAD\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-05-15 23:46+0200\n"
+"PO-Revision-Date: 2007-01-14 14:23+0200\n"
+"Last-Translator: Žygimantas Beručka <zygis@gnome.org>\n"
+"Language-Team: Lithuanian <komp_lt@konferencijos.lt>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%"
+"100<10 || n%100>=20) ? 1 : 2);\n"
+
+#: ../data/empathy.desktop.in.h:1
+#, fuzzy
+msgid "Empathy Instant Messenger"
+msgstr "Bendravimas žinutėmis"
+
+#: ../data/empathy.desktop.in.h:2
+msgid "Instant Messenger"
+msgstr "Bendravimas žinutėmis"
+
+#: ../data/empathy.schemas.in.h:1
+msgid "Always open a separate chat window for new chats."
+msgstr "Naujiems pokalbiams visada atverti atskirą pokalbio langą."
+
+#: ../data/empathy.schemas.in.h:2
+msgid "Chat window theme"
+msgstr "Pokalbio lango tema"
+
+#: ../data/empathy.schemas.in.h:3
+msgid ""
+"Comma separated list of spell checker languages to use (e.g. en, fr, nl)."
+msgstr ""
+"Kableliu atskirtų kalbų, kurių rašyba tikrinama, sąrašas (pvz. lt, en, fr)."
+
+#: ../data/empathy.schemas.in.h:4
+msgid "Compact contact list"
+msgstr "Kompaktiškas bičiulių sąrašas"
+
+#: ../data/empathy.schemas.in.h:5
+msgid "Contact list sort criterium"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:6
+msgid "Default directory to select an avatar image from"
+msgstr "Katalogas, iš kurio renkamas paveikslėlis"
+
+#: ../data/empathy.schemas.in.h:7
+msgid "Enable popup when contact is available"
+msgstr "Įjungti iššokantį langą, rodomą žmogui prisijungus"
+
+#: ../data/empathy.schemas.in.h:8
+msgid "Enable sound when away"
+msgstr "Atjungti garsus, kai manęs nėra"
+
+#: ../data/empathy.schemas.in.h:9
+msgid "Enable sound when busy"
+msgstr "Atjungti garsus, kai aš užsiėmęs"
+
+#: ../data/empathy.schemas.in.h:10
+msgid "Enable spell checker"
+msgstr "Įjungti rašybos tikrinimą"
+
+#: ../data/empathy.schemas.in.h:11
+msgid "Hide main window"
+msgstr "Paslėpti pagrindinį langą"
+
+#: ../data/empathy.schemas.in.h:12
+msgid "Hide the main window."
+msgstr "Paslėpti pagrindinį langą."
+
+#: ../data/empathy.schemas.in.h:13
+msgid "Open new chats in separate windows"
+msgstr "Atverti pokalbiu atskiruose languose"
+
+#: ../data/empathy.schemas.in.h:14
+msgid "Show avatars"
+msgstr "Rodyti bičiulių paveikslėlius"
+
+#: ../data/empathy.schemas.in.h:15
+msgid "Show hint about closing the main window"
+msgstr "Rodyti pranešimą apie pagrindinio lango užvėrimą"
+
+#: ../data/empathy.schemas.in.h:16
+msgid "Show offline contacts"
+msgstr "Rodyti atsijungusius bičiulius"
+
+#: ../data/empathy.schemas.in.h:17
+msgid "Spell checking languages"
+msgstr "Kalbų rašybos tikrinimas"
+
+#: ../data/empathy.schemas.in.h:18
+msgid "The last directory that an avatar image was chosen from."
+msgstr "Paskutinis katalogas, iš kurio pasirinktas paveikslėlis."
+
+#: ../data/empathy.schemas.in.h:19
+msgid "The theme that is used to display the conversation in chat windows."
+msgstr "Tema naudojama pokalbio rodymui pokalbių lange."
+
+#: ../data/empathy.schemas.in.h:20
+msgid "Use graphical smileys"
+msgstr "Naudoti grafines šypsenėles"
+
+#: ../data/empathy.schemas.in.h:21
+msgid "Use notification sounds"
+msgstr "Naudoti įspėjimo garsus"
+
+#: ../data/empathy.schemas.in.h:22
+msgid "Use theme for chat rooms"
+msgstr "Naudoti temą pokalbių kambariams"
+
+#: ../data/empathy.schemas.in.h:23
+msgid ""
+"Whether or not to check words typed against the languages you want to check "
+"with."
+msgstr "Ar tikrinti žodžių rašybą pagal pasirinktą kalbą."
+
+#: ../data/empathy.schemas.in.h:24
+msgid ""
+"Whether or not to convert smileys into graphical images in conversations."
+msgstr "Ar pokalbiuose paversti šypsenėles į grafinius paveiksliukus."
+
+#: ../data/empathy.schemas.in.h:25
+msgid "Whether or not to play a sound when messages arrive."
+msgstr "Ar sugroti garsą kai atvyksta nauja žinutė."
+
+#: ../data/empathy.schemas.in.h:26
+msgid "Whether or not to play sounds when away."
+msgstr "Ar groti garsus kai tavęs nėra."
+
+#: ../data/empathy.schemas.in.h:27
+msgid "Whether or not to play sounds when busy."
+msgstr "Ar groti garsu kai tu užsiėmęs."
+
+#: ../data/empathy.schemas.in.h:28
+msgid "Whether or not to show a popup when a contact becomes available."
+msgstr "Ar rodyti iššokantį langą, kai žmogus prisijungia prie tinklo."
+
+#: ../data/empathy.schemas.in.h:29
+msgid ""
+"Whether or not to show avatars for contacts in the contact list and chat "
+"windows."
+msgstr ""
+"Ar rodyti pašnekovų paveikslėlius kontaktų sąraše ir pokalbių languose."
+
+#: ../data/empathy.schemas.in.h:30
+msgid "Whether or not to show contacts that are offline in the contact list."
+msgstr "Ar bičiulių sąraše rodyti bičiulius, kurie yra atsijungę."
+
+#: ../data/empathy.schemas.in.h:31
+msgid ""
+"Whether or not to show the message dialog about closing the main window with "
+"the 'x' button in the title bar."
+msgstr ""
+"Ar rodyti pranešimo apie pagrindinio lango uždarymą dialogą su mygtuku „x“ "
+"antraštės juostoje."
+
+#: ../data/empathy.schemas.in.h:32
+msgid "Whether to show the contact list in compact mode or not."
+msgstr "Ar bičiulių sąrašą rodyti kompaktiniame režime ar ne."
+
+#: ../data/empathy.schemas.in.h:33
+msgid "Whether to use the theme for chat rooms or not."
+msgstr "Ar naudoti temą pokalbių kambariams ar ne."
+
+#: ../data/empathy.schemas.in.h:34
+msgid ""
+"Which criterium to use when sorting the contact list. Default is to use sort "
+"by the contact's name with the value \"name\". A value of \"state\" will "
+"sort the contact list by state."
+msgstr ""
+
+#: ../libempathy/gossip-contact.c:654 ../libempathy/gossip-presence.c:184
+#: ../libempathy/gossip-presence.c:283
+msgid "Offline"
+msgstr "Atsijungęs"
+
+#: ../libempathy/gossip-presence.c:274
+msgid "Available"
+msgstr "Esu"
+
+#: ../libempathy/gossip-presence.c:276
+msgid "Busy"
+msgstr "Užsiėmęs"
+
+#: ../libempathy/gossip-presence.c:279
+msgid "Away"
+msgstr "Manęs nėra."
+
+#: ../libempathy-gtk/empathy-main-window.c:254
+msgid "Show and edit accounts"
+msgstr "Rodyti ir taisyti abonentus"
+
+#: ../libempathy-gtk/empathy-main-window.c:456
+msgid "Group"
+msgstr "Grupė"
+
+#: ../libempathy-gtk/empathy-main-window.c:477
+msgid "Contact"
+msgstr "Bičiulis"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:1
+#, fuzzy
+msgid "Contact List - Empathy"
+msgstr "_Rodyti bičiulių sąrašą"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:2
+msgid "Context"
+msgstr "Konktestas"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:3
+msgid "Join _Favorites"
+msgstr "Prisijungti prie _mėgstamų"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:4
+#: ../libempathy-gtk/gossip-chat.glade.h:10
+msgid "Join _New..."
+msgstr "Prisijungi prie _naujo..."
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:5
+msgid "Manage Favorites..."
+msgstr "Tvarkyti mėgstamus..."
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:6
+msgid "Show _Offline Contacts"
+msgstr "Rodyti _atsijungusius bičiulius"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:7
+msgid "_About"
+msgstr "_Apie"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:8
+msgid "_Accounts"
+msgstr "_Abonentai"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:9
+#: ../libempathy-gtk/gossip-chat.glade.h:15
+msgid "_Add Contact..."
+msgstr "Pri_dėti bičiulį..."
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:10
+#: ../libempathy-gtk/gossip-contact-list.c:298
+msgid "_Chat"
+msgstr "P_okalbis"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:11
+msgid "_Contents"
+msgstr "_Turinys"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:12
+#: ../libempathy-gtk/gossip-chat.glade.h:21
+#: ../libempathy-gtk/gossip-contact-list.c:310
+msgid "_Edit"
+msgstr "_Keisti"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:13
+msgid "_Help"
+msgstr "_Žinynas"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:14
+#: ../libempathy-gtk/empathy-status-icon.glade.h:2
+msgid "_New Message..."
+msgstr "_Nauja žinutė..."
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:15
+msgid "_Personal Information"
+msgstr "_Asmeninė informacija"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:16
+msgid "_Preferences"
+msgstr "_Nustatymai"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:17
+#: ../libempathy-gtk/empathy-status-icon.glade.h:3
+msgid "_Quit"
+msgstr "Iš_eiti"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:18
+#: ../libempathy-gtk/gossip-chat.glade.h:25
+msgid "_Room"
+msgstr "_Kambarys"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:19
+#: ../libempathy-gtk/gossip-chat.glade.h:28
+#: ../libempathy-gtk/gossip-contact-list.c:326
+msgid "_View Previous Conversations"
+msgstr "Žiūrė_ti ankstesnius pokalbius"
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:1
+msgid "Status"
+msgstr "Būsena"
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:4
+msgid "_Show Contact List"
+msgstr "_Rodyti bičiulių sąrašą"
+
+#: ../libempathy-gtk/gossip-about-dialog.c:63
+#, fuzzy
+msgid ""
+"Empathy is free software; you can redistribute it and/or modify it under the "
+"terms of the GNU General Public License as published by the Free Software "
+"Foundation; either version 2 of the License, or (at your option) any later "
+"version."
+msgstr ""
+"Gossip yra laisva programinė įranga; galite ją platinti ir/ar modifikuoti "
+"GNU bendrosios viešosios licencijos sąlygomis, kurios paskelbtos Laisvosios "
+"programinės įrangos fondo; 2-osios arba (Jūsų pasirinkimu) bet kurios "
+"vėlesnės licencijos versijos sąlygomis."
+
+#: ../libempathy-gtk/gossip-about-dialog.c:67
+#, fuzzy
+msgid ""
+"Empathy is distributed in the hope that it will be useful, but WITHOUT ANY "
+"WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS "
+"FOR A PARTICULAR PURPOSE. See the GNU General Public License for more "
+"details."
+msgstr ""
+"Gossip yra platinama tikintis, kad jis bus naudinga, bet BE JOKIŲ GARANTIJŲ; "
+"netgi be numanomų PARDAVIMO arba TINKAMUMO TAM TIKRAM TIKSLUI garantijų. Dėl "
+"išsamesnės informacijos žiūrėkite GNU bendrąją viešąją licenciją."
+
+#: ../libempathy-gtk/gossip-about-dialog.c:71
+#, fuzzy
+msgid ""
+"You should have received a copy of the GNU General Public License along with "
+"Empathy; if not, write to the Free Software Foundation, Inc., 51 Franklin "
+"Street, Fifth Floor, Boston, MA 02110-130159 USA"
+msgstr ""
+"Jūs turėjote gauti GNU bendrosios viešosios licencijos kopiją kartu su "
+"Gossip; jeigu negavote, rašykite Laisvosios programinės įrangos fondui, 51 "
+"Franklin Street, Fifth Floor, Boston, MA 02110-130159 USA"
+
+#: ../libempathy-gtk/gossip-about-dialog.c:99
+msgid "An Instant Messaging client for GNOME"
+msgstr "Greitų žinučių klientas skirtas GNOME"
+
+#: ../libempathy-gtk/gossip-about-dialog.c:105
+msgid "translator-credits"
+msgstr ""
+"Žygimantas Beručka\n"
+"Justina Klingaitė"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:224
+#, fuzzy
+msgid "Disable"
+msgstr "Esu"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:227
+msgid "Enable"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:261
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:3
+msgid "<b>No Account Selected</b>"
+msgstr "<b>Abonentas nepasirinktas</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:263
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to start configuring.\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want "
+"to configure in the list on the left."
+msgstr ""
+"Norėdami pridėti naują abonentą, galite spustelėti mygtuką „Pridėti“ ir bus "
+"sukurtas naujas įrašas konfigūravimui.\n"
+"\n"
+"Jeigu nenorite pridėti abonento, paprasčiausiai spustelėkite pageidaujamą "
+"konfigūruoti abonentą sąraše kairėje pusėje."
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:272
+msgid "<b>No Accounts Configured</b>"
+msgstr "<b>Nėra sukonfigūruotų abonentų</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:274
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to start configuring."
+msgstr ""
+"Norėdami pridėti naują abonentą, galite spustelėti mygtuką „Pridėti“ ir bus "
+"sukurtas naujas įrašas konfigūravimui."
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:362
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:6
+msgid "Accounts"
+msgstr "Abonentai"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:857
+#, c-format
+msgid ""
+"You are about to remove your %s account!\n"
+"Are you sure you want to proceed?"
+msgstr ""
+"Ištrinsite abonentą %s!\n"
+"Ar tikrai norite tęsti?"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:863
+msgid ""
+"Any associated conversations and chat rooms will NOT be removed if you "
+"decide to proceed.\n"
+"\n"
+"Should you decide to add the account back at a later time, they will still "
+"be available."
+msgstr ""
+"Jei nuspręsite tęsti, susiję pokalbiai bei pokalbių kambariai nebus "
+"ištrinti.\n"
+"\n"
+"Jei vėliau vėl pridėsite abonentą, jie vis dar bus prieinami."
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:1
+msgid "<b>Account</b>"
+msgstr "<b>Abonentas</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:2
+#, fuzzy
+msgid "<b>New Account</b>"
+msgstr "<b>Abonentas</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:4
+msgid "<b>Settings</b>"
+msgstr "<b>Nustatymai</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:5
+msgid "A unique name for this account to identify it personally to you."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:7
+#, fuzzy
+msgid "Cr_eate"
+msgstr "Sukurti"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:8
+msgid "Imendio "
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:9
+msgid "Jabber"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:10
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to started configuring.\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want "
+"to configure in the list on the left."
+msgstr ""
+"Norėdami pridėti naują abonentą, galite spustelėti mygtuką „Pridėti“ ir bus "
+"sukurtas naujas įrašas konfigūravimui.\n"
+"\n"
+"Jeigu nenorite pridėti abonento, paprasčiausiai spustelėkite pageidaujamą "
+"konfigūruoti abonentą sąraše kairėje pusėje."
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:13
+msgid "_Name:"
+msgstr "_Vardas:"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:14
+msgid "_Type:"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-account-widget-generic.c:144
+#: ../libempathy-gtk/gossip-account-widget-generic.c:186
+#, c-format
+msgid "%s:"
+msgstr "%s:"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:1
+msgid ""
+"<small><b><span foreground=\"#555\">Example: user@jabber.org</span></b></"
+"small>"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:2
+msgid "Forget password and clear the entry."
+msgstr "Užmiršti slaptažodį ir išvalyri įrašą."
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:3
+msgid "Login I_D:"
+msgstr "Prisijungimo I_D:"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:4
+msgid "Pass_word:"
+msgstr "Sla_ptažodis:"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:5
+msgid "Reso_urce:"
+msgstr "Res_ursas:"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:6
+msgid "Use encryption (SS_L)"
+msgstr "Naudoti šifravimą (SS_L)"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:7
+msgid "_Port:"
+msgstr "_Prievadas:"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:8
+msgid "_Server:"
+msgstr "_Serveris:"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:9
+msgid "jabber account settings"
+msgstr "jabber abonento nustatymai"
+
+#: ../libempathy-gtk/gossip-chat.c:314
+msgid "Disconnected"
+msgstr "Neprisijungęs"
+
+#: ../libempathy-gtk/gossip-chat.c:858
+msgid "Insert Smiley"
+msgstr "Įterpti šypsniuką"
+
+#: ../libempathy-gtk/gossip-chat.c:906
+msgid "_Check Word Spelling..."
+msgstr "_Tikrinti žodžių rašybą..."
+
+#: ../libempathy-gtk/gossip-chat.c:1244
+msgid "Connected"
+msgstr "Prisijungęs"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:1
+msgid "C_lear"
+msgstr "Išva_lyti"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:2
+msgid "Change _Topic..."
+msgstr "Pakeisti _temą..."
+
+#: ../libempathy-gtk/gossip-chat.glade.h:3
+msgid "Chat"
+msgstr "Pokalbis"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:4
+msgid "Contact Infor_mation"
+msgstr "Bičiulio infor_macija"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:5
+msgid "Cu_t"
+msgstr "_Iškirpti"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:6
+msgid "In_vite..."
+msgstr "_Pakviesti..."
+
+#: ../libempathy-gtk/gossip-chat.glade.h:7
+msgid "Insert _Smiley"
+msgstr "Įterpti _šypsiuką"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:8
+msgid "Invitation _message:"
+msgstr "Pakvietimo ži_nutė:"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:9
+msgid "Invite"
+msgstr "Pakviesti"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:11
+msgid "Move Tab _Left"
+msgstr "Perkelti kortelę į _kairę"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:12
+msgid "Move Tab _Right"
+msgstr "Perkelti kortelę į _dešinę"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:13
+msgid "Select who would you like to invite:"
+msgstr "Pasirinkite ką norite pakviesti:"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:14
+msgid "You have been invited to join a chat conference."
+msgstr "Esate kviečiami prisijungti prie pokalbių konferencijos."
+
+#: ../libempathy-gtk/gossip-chat.glade.h:16
+msgid "_Add To Favorites"
+msgstr "Į_dėti į mėgstamiausius"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:17
+msgid "_Close"
+msgstr "_Užverti"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:18
+msgid "_Conversation"
+msgstr "_Pokalbis"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:19
+msgid "_Copy"
+msgstr "_Kopijuoti"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:20
+msgid "_Detach Tab"
+msgstr "A_tkabinti kortelę"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:22
+msgid "_Next Tab"
+msgstr "_Sekanti kortelė"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:23
+msgid "_Paste"
+msgstr "Į_dėti"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:24
+msgid "_Previous Tab"
+msgstr "_Ankstesnė kortelė"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:26
+msgid "_Show Contacts"
+msgstr "_Rodyti bičiulius"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:27
+msgid "_Tabs"
+msgstr "K_ortelės"
+
+#: ../libempathy-gtk/gossip-chat-view.c:544
+msgid "_Copy Link Address"
+msgstr "_Kopijuoti nuorodos adresą"
+
+#: ../libempathy-gtk/gossip-chat-view.c:552
+msgid "_Open Link"
+msgstr "_Atverti nuorodą"
+
+#: ../libempathy-gtk/gossip-chat-view.c:889
+msgid "%A %d %B %Y"
+msgstr "%A %d %B %Y"
+
+#: ../libempathy-gtk/gossip-chat-window.c:685
+#: ../libempathy-gtk/gossip-chat-window.c:715
+#, fuzzy
+msgid "New Message"
+msgid_plural "New Messages"
+msgstr[0] "Nauja žinutė"
+msgstr[1] "Nauja žinutė"
+msgstr[2] "Nauja žinutė"
+
+#: ../libempathy-gtk/gossip-chat-window.c:691
+#, fuzzy
+msgid "Chat Room"
+msgstr "Pokalbių kambariai"
+
+#: ../libempathy-gtk/gossip-chat-window.c:696
+#: ../libempathy-gtk/gossip-chat-window.c:719
+#, fuzzy, c-format
+msgid "Conversation"
+msgid_plural "Conversations (%d)"
+msgstr[0] "_Pokalbis"
+msgstr[1] "_Pokalbis"
+msgstr[2] "_Pokalbis"
+
+#: ../libempathy-gtk/gossip-chat-window.c:1295
+msgid "Typing a message."
+msgstr "Rašoma žinutė."
+
+#: ../libempathy-gtk/gossip-contact-list.c:290
+msgid "_Contact"
+msgstr "_Bičiulis"
+
+#: ../libempathy-gtk/gossip-contact-list.c:294
+msgid "_Group"
+msgstr "_Grupė"
+
+#: ../libempathy-gtk/gossip-contact-list.c:298
+msgid "Chat with contact"
+msgstr "Šnekėti su bičiuliu"
+
+#: ../libempathy-gtk/gossip-contact-list.c:302
+msgid "Infor_mation"
+msgstr "Infor_macija"
+
+#: ../libempathy-gtk/gossip-contact-list.c:302
+msgid "View contact information"
+msgstr "Žiūrėti bičiulio informaciją"
+
+#: ../libempathy-gtk/gossip-contact-list.c:306
+msgid "Re_name"
+msgstr "Pervadi_nti"
+
+#: ../libempathy-gtk/gossip-contact-list.c:306
+msgid "Rename"
+msgstr "Pervadinti"
+
+#: ../libempathy-gtk/gossip-contact-list.c:310
+msgid "Edit the groups and name for this contact"
+msgstr "Keisti šio bičiulio grupes ir vardą"
+
+#: ../libempathy-gtk/gossip-contact-list.c:314
+msgid "_Remove"
+msgstr "_Pašalinti"
+
+#: ../libempathy-gtk/gossip-contact-list.c:314
+msgid "Remove contact"
+msgstr "Pašalinti bičiulį"
+
+#: ../libempathy-gtk/gossip-contact-list.c:318
+msgid "_Invite to Chat Room"
+msgstr "Pa_kviesti į pokalbių kambarį"
+
+#: ../libempathy-gtk/gossip-contact-list.c:318
+msgid "Invite to a currently open chat room"
+msgstr "Pakviesti į dabar atvertą pokalbių kambarį"
+
+#: ../libempathy-gtk/gossip-contact-list.c:322
+msgid "_Send File..."
+msgstr "_Siųsti rinkmeną..."
+
+#: ../libempathy-gtk/gossip-contact-list.c:322
+msgid "Send a file"
+msgstr "Siųsti rinkmeną"
+
+#: ../libempathy-gtk/gossip-contact-list.c:326
+msgid "View previous conversations with this contact"
+msgstr "Žiūrėti ankstesnius pokalbius su šiuo bičiuliu"
+
+#: ../libempathy-gtk/gossip-preferences.c:250
+msgid "Language"
+msgstr "Kalba"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:1
+msgid "<b>Appearance</b>"
+msgstr "<b>Išvaizda</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:2
+msgid "<b>Audio</b>"
+msgstr "<b>Garsai</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:3
+msgid "<b>Behaviour</b>"
+msgstr "<b>Elgsena</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:4
+#, fuzzy
+msgid "<b>Contact List</b>"
+msgstr "<b>Būsena</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:5
+msgid "<b>Languages</b>"
+msgstr "<b>Kalbos</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:6
+msgid "<b>Options</b>"
+msgstr "<b>Parinktys</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:7
+msgid "<b>Visual</b>"
+msgstr "<b>Vaizdas</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:8
+msgid ""
+"<small>The list of languages reflects only the languages for which you have "
+"a dictionary installed.</small>"
+msgstr ""
+"<small>Šiame kalbų sąraše yra tik tos kalbos, kurių žodynus turite įdiegę.</"
+"small>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:9
+msgid "Avatars are user chosen images shown in the contact list"
+msgstr "Paveikslėliai, pasirinkti naudotojų, rodomi bičiulių sąraše."
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:10
+msgid "Chat Th_eme:"
+msgstr "Pokalbio t_ema:"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:11
+msgid "Display notifications when contacts come _online"
+msgstr "Rodyti pranešimus, kai bičiuliai prisijungia"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:12
+msgid "Enable sounds when _away"
+msgstr "Įjungti garsus, kai m_anęs nėra"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:13
+msgid "Enable sounds when _busy"
+msgstr "Įjungti garsus, kai aš _užsiėmęs"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:14
+msgid "General"
+msgstr "Bendra"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:15
+msgid "Notifications"
+msgstr "Pranešimai"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:16
+msgid "Preferences"
+msgstr "Nustatymai"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:17
+msgid "Show _avatars"
+msgstr "Rodyti _paveikslėlius"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:18
+msgid "Show _smileys as images"
+msgstr "Versti šyp_senėles į grafinius paveiksliukus"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:19
+msgid "Show co_mpact contact list"
+msgstr "Rodyti ko_mpaktišką bičiulių sąrašą"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:20
+msgid "Sort by _name"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:21
+msgid "Sort by s_tate"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:22
+msgid "Spell Checking"
+msgstr "Rašybos tikrinimas"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:23
+msgid "Themes"
+msgstr "Temos"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:24
+msgid "_Enable spell checking"
+msgstr "Įj_ungti rašybos tikrinimą"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:25
+msgid "_Open new chats in separate windows"
+msgstr "_Atverti naujus pokalbius atskiruose languose"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:26
+msgid "_Play sound when messages arrive"
+msgstr "_Gavus žinutę sugroti garsą"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:27
+msgid "_Use for chat rooms"
+msgstr "_Naudoti pokalbių kambariams"
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:702
+msgid "Custom message..."
+msgstr "Nurodyta žinutė..."
+
+#. Clear list
+#: ../libempathy-gtk/gossip-presence-chooser.c:724
+msgid "Clear List..."
+msgstr "Išvalyti sąrašą..."
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:803
+msgid "Are you sure you want to clear the list?"
+msgstr "Ar tikrai norite išvalyti sąrašą?"
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:807
+msgid ""
+"This will remove any custom messages you have added to the list of preset "
+"status messages."
+msgstr "Visos žinutės iš greitų būsenos žinučių sąrašo bus ištrintos."
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:812
+msgid "Clear List"
+msgstr "Išvalyti sąrašą"
+
+#: ../libempathy-gtk/gossip-presence-chooser.glade.h:1
+msgid "Enter status message:"
+msgstr "Įveskite būsenos žinutę:"
+
+#: ../libempathy-gtk/gossip-presence-chooser.glade.h:2
+msgid "Status Message Presets"
+msgstr "Būsenos žinučių šablonai"
+
+#: ../libempathy-gtk/gossip-presence-chooser.glade.h:3
+msgid "_Add to status message list"
+msgstr "Į_dėti į būsenų žinučių sąrašą"
+
+#: ../libempathy-gtk/gossip-private-chat.c:198
+#, c-format
+msgid "%s went offline"
+msgstr "%s atsijungė"
+
+#: ../libempathy-gtk/gossip-private-chat.c:212
+#, c-format
+msgid "%s has come online"
+msgstr "%s prisijungė"
+
+#: ../libempathy-gtk/gossip-theme-manager.c:87
+msgid "Classic"
+msgstr "Klasikinė"
+
+#: ../libempathy-gtk/gossip-theme-manager.c:88
+msgid "Simple"
+msgstr "Paprasta"
+
+#: ../libempathy-gtk/gossip-theme-manager.c:89
+msgid "Clean"
+msgstr "Tvarkinga"
+
+#: ../libempathy-gtk/gossip-theme-manager.c:90
+msgid "Blue"
+msgstr "Mėlyna"
+
+#: ../src/empathy-main.c:145
+msgid "Don't connect on startup"
+msgstr "Paleidimo metu neprisijungti"
+
+#: ../src/empathy-main.c:155
+#, fuzzy
+msgid "- Empathy Instant Messenger"
+msgstr "- Greitų žinučių programa „Gossip“"
+
+#~ msgid "Gossip Instant Messenger"
+#~ msgstr "Greitų žinučių programa „Gossip“"
+
+#~ msgid "Normal"
+#~ msgstr "Normalus"
+
+#~ msgid "Joining"
+#~ msgstr "Jungiamasi"
+
+#~ msgid "Active"
+#~ msgstr "Aktyvus"
+
+#~ msgid "Inactive"
+#~ msgstr "Neaktyvus"
+
+#~ msgid "Unknown"
+#~ msgstr "Nežinoma"
+
+#~ msgid "Error"
+#~ msgstr "Klaida"
+
+#~ msgid "Moderator"
+#~ msgid_plural "Moderators"
+#~ msgstr[0] "Moderatorius"
+#~ msgstr[1] "Moderatoriai"
+#~ msgstr[2] "Moderatorių"
+
+#~ msgid "Participant"
+#~ msgid_plural "Participants"
+#~ msgstr[0] "Dalyvis"
+#~ msgstr[1] "Dalyviai"
+#~ msgstr[2] "Dalyvių"
+
+#~ msgid "Visitor"
+#~ msgid_plural "Visitors"
+#~ msgstr[0] "Lankytojas"
+#~ msgstr[1] "Lankytojai"
+#~ msgstr[2] "Lankytojų"
+
+#~ msgid "No role"
+#~ msgstr "Nėra vaidmens"
+
+#~ msgid "Owner"
+#~ msgid_plural "Owners"
+#~ msgstr[0] "Sąvininkas"
+#~ msgstr[1] "Sąvininkai"
+#~ msgstr[2] "Sąvininkų"
+
+#~ msgid "Administrator"
+#~ msgid_plural "Administrators"
+#~ msgstr[0] "Administratorius"
+#~ msgstr[1] "Administratoriai"
+#~ msgstr[2] "Administratorių"
+
+#~ msgid "Member"
+#~ msgid_plural "Members"
+#~ msgstr[0] "Narys"
+#~ msgstr[1] "Nariai"
+#~ msgstr[2] "Narių"
+
+#~ msgid "Outcast"
+#~ msgid_plural "Outcasts"
+#~ msgstr[0] "Benamis"
+#~ msgstr[1] "Benamiai"
+#~ msgstr[2] "Benamių"
+
+#~ msgid "No affiliation"
+#~ msgstr "Ne narys"
+
+#~ msgid "The nickname you have chosen is already in use."
+#~ msgstr "Toks slapyvardis jau naudojamas."
+
+#~ msgid "The chat room you tried to join requires a password."
+#~ msgstr "Prisijungimui prie šio kambario reikalingas slaptažodis."
+
+#~ msgid "The remote conference server did not respond in a sensible time."
+#~ msgstr "Nutolęs konferencijos serveris per ilgai neatsakė."
+
+#~ msgid "The conference server you tried to join could not be found."
+#~ msgstr "Konferencijos serveris, prie kurio bandėte prisijungti, nerastas."
+
+#~ msgid "An unknown error occurred, check your details are correct."
+#~ msgstr "Įvyko nežinoma klaida. Patikrinkite, ar informacija teisinga."
+
+#~ msgid "Joining the chatroom was canceled."
+#~ msgstr "Prisijungimas prie pokalbių kambario buvo atšauktas."
+
+#~ msgid "Unavailable"
+#~ msgstr "Neprieinamas"
+
+#~ msgid "An unknown error occurred."
+#~ msgstr "Iškilo nežinoma klaida."
+
+#~ msgid "Connection refused."
+#~ msgstr "Susijungimas atmestas."
+
+#~ msgid "Server address could not be resolved."
+#~ msgstr "Nepavyko rasti serverio adreso."
+
+#~ msgid "Connection timed out."
+#~ msgstr "Prisijungimas dėl neaktyvumo nutrauktas."
+
+#~ msgid "Authentication failed."
+#~ msgstr "Autentikuotis nepavyko."
+
+#~ msgid "The username you are trying already exists."
+#~ msgstr "Pasirinktas naudotojo vardas jau užimtas."
+
+#~ msgid "The username you are trying is not valid."
+#~ msgstr "Pasirinktas naudotojo vardas netinkamas."
+
+#~ msgid "This feature is unavailable."
+#~ msgstr "Šios funkcijos nėra."
+
+#~ msgid "This feature is unauthorized."
+#~ msgstr "Ši funkcija neleistina."
+
+#~ msgid "A specific protocol error occurred that was unexpected."
+#~ msgstr "Iškilo netikėta specifinė protokolo klaida."
+
+#~ msgid "new account"
+#~ msgstr "naujas abonentas"
+
+#~ msgid "Home"
+#~ msgstr "Namai"
+
+#~ msgid "Couldn't send message!"
+#~ msgstr "Nepavyko išsiųsti žinutės!"
+
+#~ msgid "Connection could not be opened"
+#~ msgstr "Nepavyko atverti ryšio"
+
+#~ msgid "Service has gone and is no longer available"
+#~ msgstr "Paslauga dingo ir daugiau neteikiama"
+
+#~ msgid "Bad or malformed request to this service"
+#~ msgstr "Neteisinga paslaugos užklausa"
+
+#~ msgid "Unauthorized request to this service"
+#~ msgstr "Neleistina paslaugos užklausa"
+
+#~ msgid "Payment is required for this service"
+#~ msgstr "Už šią paslaugą reikia apmokėti"
+
+#~ msgid "This service is forbidden"
+#~ msgstr "Ši paslauga uždrausta"
+
+#~ msgid "This service is unavailable or not found"
+#~ msgstr "Ši paslauga neteikiama arba nerasta"
+
+#~ msgid "Unacceptable request sent to this services"
+#~ msgstr "Neprieinama užklausa nusiųsta į šią paslaugą"
+
+#~ msgid "Registration is required"
+#~ msgstr "Būtina registracija"
+
+#~ msgid "There was a conflict of interest trying to use this service"
+#~ msgstr "Interesų susikirtimas bandant naudoti šią paslaugą"
+
+#~ msgid "There was an internal service error"
+#~ msgstr "Vidinė paslaugos klaida"
+
+#~ msgid "This feature is not implemented"
+#~ msgstr "Ši funkcija nesukurta"
+
+#, fuzzy
+#~ msgid "The remote service timed out"
+#~ msgstr "Pašalinimo paslaugos laikas baigėsi"
+
+#~ msgid "Stop"
+#~ msgstr "Sustabdyti"
+
+#~ msgid "Disconnect"
+#~ msgstr "Atsijungti"
+
+#~ msgid "Connect"
+#~ msgstr "Prisijungti"
+
+#~ msgid "Successfully registered your new account settings."
+#~ msgstr "Naujo abonento nustatymai sėkmingai užregistruoti."
+
+#~ msgid "You should now be able to connect to your new account."
+#~ msgstr "Dabar turėtumėte galėti prisijungti naujuoju abonentu."
+
+#~ msgid "Failed to register your new account settings."
+#~ msgstr "Nepavyko užregistruoti naujo abonento nustatymų."
+
+#~ msgid "Successfully changed your account password."
+#~ msgstr "Naujo abonento slaptažodis sėkmingai pakeistas."
+
+#~ msgid "You should now be able to connect with your new password."
+#~ msgstr "Dabar turėtumėte galėti prisijungti su naujuoju slaptažodžiu."
+
+#~ msgid "Failed to change your account password."
+#~ msgstr "Nepavyko pakeisti Jūsų abonento slaptažodžio."
+
+#~ msgid ""
+#~ "Please enter a new password for this account:\n"
+#~ "%s"
+#~ msgstr ""
+#~ "Įveskite naują šio abonento slaptažodį:\n"
+#~ "%s"
+
+#~ msgid "No information is available for this contact."
+#~ msgstr "Šio bičiulio informacija neprieinama."
+
+#~ msgid "Information requested, please wait..."
+#~ msgstr "Informacija užklausta, prašome palaukti..."
+
+#~ msgid "I would like to add you to my contact list."
+#~ msgstr "Norėčiau Jus įtraukti į savo bičiulių sąrašą."
+
+#~ msgid "To summarize:"
+#~ msgstr "Apibendrinti:"
+
+#~ msgid "%d new message"
+#~ msgid_plural "%d new messages"
+#~ msgstr[0] "%d nauja žinutė"
+#~ msgstr[1] "%d naujos žinutės"
+#~ msgstr[2] "%d naujų žinučių"
+
+#~ msgid "%d subscription request"
+#~ msgid_plural "%d subscription requests"
+#~ msgstr[0] "%d užsisakymo prašymas"
+#~ msgstr[1] "%d užsisakymo prašymai"
+#~ msgstr[2] "%d užsisakymo prašymų"
+
+#~ msgid "%d file transfer request"
+#~ msgid_plural "%d file transfer requests"
+#~ msgstr[0] "%d rinkmenų siuntimo užklausa"
+#~ msgstr[1] "%d rinkmenų siuntimo užklausos"
+#~ msgstr[2] "%d rinkmenų siuntimo užklausų"
+
+#~ msgid "%d server message"
+#~ msgid_plural "%d server messages"
+#~ msgstr[0] "%d serverio pranešimas"
+#~ msgstr[1] "%d serverio pranešimai"
+#~ msgstr[2] "%d serverio pranešimų"
+
+#~ msgid "%d error"
+#~ msgid_plural "%d errors"
+#~ msgstr[0] "%d klaida"
+#~ msgstr[1] "%d klaidos"
+#~ msgstr[2] "%d klaidų"
+
+#~ msgid "If you quit, you will lose all unread information."
+#~ msgstr "Jeigu užversite, prarasite visą neperskaitytą informaciją."
+
+#~ msgid "Gossip is still running, it is just hidden."
+#~ msgstr "Gossip vis dar veikia, ji tiesiog paslėpta."
+
+#~ msgid "Click on the notification area icon to show Gossip."
+#~ msgstr ""
+#~ "Spragtelėkite pranešimų vietoje esančią piktogramą norėdami pamatyti "
+#~ "Gossip."
+
+#~ msgid "You were about to quit!"
+#~ msgstr "Ketinate užverti programą!"
+
+#~ msgid ""
+#~ "Since no system or notification tray has been found, this action would "
+#~ "normally quit Gossip.\n"
+#~ "\n"
+#~ "This is just a reminder, from now on, Gossip will quit when performing "
+#~ "this action unless you uncheck the option below."
+#~ msgstr ""
+#~ "Kadangi nerasta sistemos ar pranešimų vietos skydelių, šiuo veiksmu "
+#~ "Gossip uždaroma.\n"
+#~ "\n"
+#~ "Tai tik priminimas, nuo dabar, atliekant šį veiksmą Gossip bus uždaroma, "
+#~ "nebent išjungsite žemiau esančią parinktį."
+
+#~ msgid "Edit Account _Details"
+#~ msgstr "Keisti abonento _informaciją"
+
+#~ msgid "Click to enlarge"
+#~ msgstr "Spauskite padidinti"
+
+#~ msgid "Word"
+#~ msgstr "Žodis"
+
+#~ msgid "Select who would you like to invite to room:"
+#~ msgstr "Pasirinkite ką norite pakviesti į kabarį:"
+
+#~ msgid "Select which room you would like to invite:"
+#~ msgstr "Pasirinkite į kurį kambarį norite pasiekti:"
+
+#~ msgid "New message from %s"
+#~ msgstr "Nauja žinutė iš %s"
+
+#~ msgid "Your invitation has been declined"
+#~ msgstr "Pakvietimo buvo atsisakyta"
+
+#~ msgid "Accept"
+#~ msgstr "Priimti"
+
+#~ msgid "Decline"
+#~ msgstr "Atsisakyti"
+
+#~ msgid "Name"
+#~ msgstr "Vardas"
+
+#~ msgid "Room"
+#~ msgstr "Kambarys"
+
+#~ msgid "Auto Connect"
+#~ msgstr "Automatiškai prisijungti"
+
+#~ msgid "Information requested..."
+#~ msgstr "Informacija užklausta..."
+
+#~ msgid "Do you want to remove this contact from your roster?"
+#~ msgstr "Ar norite pašalinti bičiulį iš sąrašo?"
+
+#~ msgid ""
+#~ "Please enter a new name for the group:\n"
+#~ "%s"
+#~ msgstr ""
+#~ "Įveskite naują pavadinimą grupei:\n"
+#~ "%s"
+
+#~ msgid "Select"
+#~ msgstr "Rinktis"
+
+#~ msgid "Unsorted"
+#~ msgstr "Nesurūšiuota"
+
+#~ msgid ""
+#~ "Set the alias you want to use for:\n"
+#~ "<b>%s</b>\n"
+#~ "\n"
+#~ "You can retrieve contact information from the server."
+#~ msgstr ""
+#~ "Nurodykite alternatyvų vardą norimą naudoti:\n"
+#~ "<b>%s</b>\n"
+#~ "\n"
+#~ "Galite gauti bičiulio inforamciją iš serverio."
+
+#~ msgid "New file transfer request from %s"
+#~ msgstr "Nauja rinkmenos siuntimo užklausa iš %s"
+
+#~ msgid "File transfer is not supported by both parties."
+#~ msgstr "Rinkmenų siuntimas nepalaikomas abiejų pusių."
+
+#~ msgid "Your file transfer offer declined."
+#~ msgstr "Rinkmenos siuntimo atsisakyta."
+
+#~ msgid "The other user decided not to continue."
+#~ msgstr "Kitas naudotojas nusprendė nebetęsti."
+
+#~ msgid "Unknown error occurred during file transfer."
+#~ msgstr "Rinkmenos siuntimo metu iškilo nežinoma klaida."
+
+#~ msgid "%s would like to send you a file."
+#~ msgstr "%s nori Jums atsiųsti rinkmeną."
+
+#~ msgid "Someone would like to send you a file."
+#~ msgstr "Kažkas nori Jums atsiųsti rinkmeną."
+
+#~ msgid "Select a file"
+#~ msgstr "Pasirinkite rinkmeną"
+
+#~ msgid "Connecting..."
+#~ msgstr "Jungiamasi..."
+
+#~ msgid "Retry connection"
+#~ msgstr "Prisijungti iš naujo"
+
+#~ msgid "Invited %s to join this chat conference."
+#~ msgstr "%s pakviestas prisijungti prie šios pokalbio konferencijos."
+
+#~ msgid "%s has set the topic: %s"
+#~ msgstr "%s nustatė temą: %s"
+
+#~ msgid "Enter the new topic you want to set for this room:"
+#~ msgstr "Įveskite naują šio kambario temą:"
+
+#~ msgid "%s has joined the room"
+#~ msgstr "%s įėjo į kambarį"
+
+#~ msgid "%s has left the room"
+#~ msgstr "%s išėjo iš kambario"
+
+#~ msgid "Topic: %s"
+#~ msgstr "Tema: %s"
+
+#~ msgid "Account"
+#~ msgstr "Abonentas"
+
+#~ msgid "Conversation With"
+#~ msgstr "Pokalbis su"
+
+#~ msgid "Date"
+#~ msgstr "Data"
+
+#~ msgid "Allow multiple instances of the application to run at the same time"
+#~ msgstr "Leisti tuo pačiu metu veikti keletui programos egzempliorių"
+
+#~ msgid "List the available accounts"
+#~ msgstr "Prieinamų abonentų sąrašas"
+
+#~ msgid "Which account to connect to on startup"
+#~ msgstr "Prie kurio abonento prisijungti paleidimo metu"
+
+#~ msgid "ACCOUNT-NAME"
+#~ msgstr "ABONEMENTO-VARDAS"
+
+#~ msgid "You can not use --no-connect together with --account"
+#~ msgstr "Negalite naudoti --no-connect kartu su --account"
+
+#~ msgid "No accounts available."
+#~ msgstr "Nėra prieinamų abonentų."
+
+#~ msgid "Available accounts:"
+#~ msgstr "Prieinami abonentai:"
+
+#~ msgid "[default]"
+#~ msgstr "[numatytasis]"
+
+#~ msgid "There is no account with the name '%s'."
+#~ msgstr "Abonento vardu „%s“ nėra."
+
+#~ msgid "Join"
+#~ msgstr "Prisijungti"
+
+#~ msgid "Create"
+#~ msgstr "Sukurti"
+
+#~ msgid "Chat Rooms"
+#~ msgstr "Pokalbių kambariai"
+
+#~ msgid "Found %d conference rooms"
+#~ msgstr "Rasta %d konferencinių kambarių"
+
+#~ msgid "Browsing for conference rooms, please wait..."
+#~ msgstr "Ieškoma konferencinių kambarių, palaukite..."
+
+#~ msgid "Browsing cancelled!"
+#~ msgstr "Paieška atšaukta!"
+
+#~ msgid "Default"
+#~ msgstr "Numatytasis"
+
+#~ msgid "Chat!"
+#~ msgstr "Pokalbis!"
+
+#~ msgid "%s wants to be added to your contact list."
+#~ msgstr "%s nori būti įtrauktas į bičiulių sąrašą."
+
+#~ msgid "Someone wants to be added to your contact list."
+#~ msgstr "Kažkas nori būti įtrauktas į bičiulių sąrašą."
+
+#~ msgid "Subscription request"
+#~ msgstr "Užsisakymo prašymas"
+
+#~ msgid "Show"
+#~ msgstr "Rodyti"
+
+#~ msgid "Contact Information"
+#~ msgstr "Bičiulio informacija"
+
+#~ msgid "Subject: %s"
+#~ msgstr "Tema: %s"
+
+#~ msgid "Suggestions for the word"
+#~ msgstr "Žodžio pasiūlymas"
+
+#~ msgid "New subscription request from %s"
+#~ msgstr "Naujas užsisakymo prašymas iš %s"
+
+#~ msgid "Do you want to add this person to your contact list?"
+#~ msgstr "Ar norite įtraukti šį asmenį į bičiulių sąrašą?"
+
+#~ msgid "Do you want to add %s to your contact list?"
+#~ msgstr "Ar norite įtraukti %s į bičiulių sąrašą?"
+
+#~ msgid "Please enter your %s account password"
+#~ msgstr "Įveskite abonento %s slaptažodį"
+
+#, fuzzy
+#~ msgid "Logging in to account '%s'"
+#~ msgstr "Registruojamasi su: %s"
+
+#~ msgid "Remember Password?"
+#~ msgstr "Atsiminti slaptažodį?"
+
+#~ msgid "Do not show this again"
+#~ msgstr "Daugiau to nerodyti"
+
+#~ msgid "Could not display the help contents."
+#~ msgstr "Nepavyko parodyti žinyno turinio."
+
+#~ msgid "Select Your Avatar Image"
+#~ msgstr "Pasirinkite savo paveikslėlį"
+
+#~ msgid "No Image"
+#~ msgstr "Paveikslėlio nėra"
+
+#~ msgid "Cancel"
+#~ msgstr "Atšaukti"
+
+#~ msgid "OK"
+#~ msgstr "Gerai"
+
+#~ msgid "The server does not seem to be responding."
+#~ msgstr "Serveris neatsako."
+
+#~ msgid "Try again later."
+#~ msgstr "Bandykite vėliau."
+
+#~ msgid "Change"
+#~ msgstr "Pakeisti"
+
+#~ msgid "Contact goes offline"
+#~ msgstr "Bičiulis atsijungia"
+
+#~ msgid "Contact goes online"
+#~ msgstr "Bičiulis prisijungia"
+
+#~ msgid "Contact ID:"
+#~ msgstr "Bičiulio ID:"
+
+#~ msgid "Do you want to accept this file?"
+#~ msgstr "Ar norite priimti šią rinkmeną?"
+
+#~ msgid "File Transfer Request"
+#~ msgstr "Rinkmenos siuntimo užklausa"
+
+#~ msgid "File name:"
+#~ msgstr "Rinkmenos vardas:"
+
+#~ msgid "File size:"
+#~ msgstr "Rinkmenos dydis:"
+
+#~ msgid "Not supported yet"
+#~ msgstr "Dar nepalaikoma."
+
+#~ msgid "This person wishes to send you this file:"
+#~ msgstr "Šis asmuo nori Jums atsiųsti šią rinkmeną:"
+
+#~ msgid "Web site:"
+#~ msgstr "Tinklapis:"
+
+#~ msgid "_Accept"
+#~ msgstr "_Priimti"
+
+#~ msgid "_Deny"
+#~ msgstr "_Atmesti"
+
+#~ msgid "<b>Topic:</b>"
+#~ msgstr "<b>Tema:</b>"
+
+#~ msgid "Account:"
+#~ msgstr "Abonentas:"
+
+#~ msgid "Browse:"
+#~ msgstr "Naršyti:"
+
+#~ msgid "Edit Favorite Room"
+#~ msgstr "Taisyti mėgiamą kambarį"
+
+#~ msgid ""
+#~ "Enter the room name to join here or click on one or more rooms in the "
+#~ "list."
+#~ msgstr ""
+#~ "Įveskite kambario pavadinimą arba spustelėkite vieną ar daugiau kambarių "
+#~ "sąraše."
+
+#~ msgid "Group Chat"
+#~ msgstr "Grupinis pokalbis"
+
+#~ msgid "Join New"
+#~ msgstr "Prisijungi prie naujo"
+
+#~ msgid "Join room on start_up"
+#~ msgstr "Įeiti į kambarį paleidimo met_u"
+
+#~ msgid "Join this chat room when Gossip starts and you are connected"
+#~ msgstr ""
+#~ "Įeiti į šį pokalbių kambarį, kai paleidžiamas Gossip ir prisijungus."
+
+#~ msgid "Manage Favorite Rooms"
+#~ msgstr "Tvarkyti mėgiamus kambarius"
+
+#~ msgid "N_ame:"
+#~ msgstr "V_ardas:"
+
+#~ msgid "Re_fresh"
+#~ msgstr "At_naujinti"
+
+#~ msgid "S_erver:"
+#~ msgstr "S_erveris:"
+
+#~ msgid ""
+#~ "This list represents all chat rooms hosted on the server you have entered."
+#~ msgstr ""
+#~ "Šiame sąraše pateikiami visi pokalbių kambariai esantys šiame serveryje."
+
+#~ msgid "_Nickname:"
+#~ msgstr "_Slapyvardis:"
+
+#~ msgid "_Room:"
+#~ msgstr "_Kambarys:"
+
+#~ msgid "-"
+#~ msgstr "-"
+
+#~ msgid "<b>About</b>"
+#~ msgstr "<b>Apie</b>"
+
+#~ msgid "<b>Client Information</b>"
+#~ msgstr "<b>Kliento informacija</b>"
+
+#~ msgid "<b>Groups</b>"
+#~ msgstr "<b>Grupės</b>"
+
+#~ msgid "<b>Name</b>"
+#~ msgstr "<b>Vardas</b>"
+
+#~ msgid "<b>Personal Details</b>"
+#~ msgstr "<b>Asmeninė informacija</b>"
+
+#~ msgid "<b>Subscription</b>"
+#~ msgstr "<b>Abonentas</b>"
+
+#~ msgid "<span size=\"smaller\">Example: Mikael or user@server.org</span>"
+#~ msgstr ""
+#~ "<span size=\"smaller\">Pavyzdys: Jonas arba naudotojas@akl.lt</span>"
+
+#~ msgid "Accou_nt:"
+#~ msgstr "Abo_nentas:"
+
+#, fuzzy
+#~ msgid "Add Contact"
+#~ msgstr "Pri_dėti bičiulį..."
+
+#~ msgid "Alia_s:"
+#~ msgstr "Alternatyvu_s vardas:"
+
+#~ msgid "Avatar:"
+#~ msgstr "Paveikslėlis:"
+
+#~ msgid "Birthday:"
+#~ msgstr "Gimtadienis:"
+
+#~ msgid "C_hange"
+#~ msgstr "Pa_keisti"
+
+#~ msgid "Ch_at"
+#~ msgstr "Pok_albis"
+
+#~ msgid "Client:"
+#~ msgstr "Klientas:"
+
+#~ msgid "Con_tact:"
+#~ msgstr "_Bičiulis:"
+
+#~ msgid "Connect on S_tartup"
+#~ msgstr "Prisij_ungti paleidimo metu"
+
+#~ msgid "Contacts"
+#~ msgstr "Bičiuliai"
+
+#~ msgid "Country:"
+#~ msgstr "Šalis:"
+
+#~ msgid "Decide _Later"
+#~ msgstr "Nuspręsti vė_liau"
+
+#~ msgid "Edit Contact"
+#~ msgstr "Keisti bičiulį"
+
+#~ msgid "Edit Groups"
+#~ msgstr "Keisti grupes"
+
+#~ msgid "Email:"
+#~ msgstr "El. paštas:"
+
+#~ msgid "ID:"
+#~ msgstr "ID:"
+
+#~ msgid ""
+#~ "If you chose to decide later you will be asked the next time you log on."
+#~ msgstr ""
+#~ "Jeigu pasirinksite nuspręsti vėliau, bus paklausta kito prisijungimo metu."
+
+#~ msgid "Name:"
+#~ msgstr "Vardas:"
+
+#~ msgid "OS:"
+#~ msgstr "OS:"
+
+#~ msgid "Personal Details"
+#~ msgstr "Asmeninė informacija"
+
+#~ msgid "R_egister"
+#~ msgstr "R_egistruotis"
+
+#~ msgid "Search"
+#~ msgstr "Ieškoti"
+
+#~ msgid ""
+#~ "Select the groups you want this contact to appear in, you can select more "
+#~ "than one group or no groups."
+#~ msgstr ""
+#~ "Pasirinkite grupes, kuriose rodyti šį bičiulį. Galite pasirinkti daugiau "
+#~ "nei vieną grupę arba nei vienos grupės."
+
+#~ msgid ""
+#~ "Set the alias you want to use for:\n"
+#~ "<b>foo@bar.baz</b>\n"
+#~ "\n"
+#~ "You can retrieve contact information from the server. "
+#~ msgstr ""
+#~ "Nurodykite alternatyvų vardą, kurį norite naudoti:\n"
+#~ "<b>foo@bar.baz</b>\n"
+#~ "\n"
+#~ "Bičiulio informaciją galite gauti iš serverio."
+
+#~ msgid "Spell Checker"
+#~ msgstr "Rašybos tikrinimas"
+
+#~ msgid "Subscription Request"
+#~ msgstr "Užsisakymo prašymas"
+
+#~ msgid "Suggestions for the word:"
+#~ msgstr "Žodžio pasiūlymai:"
+
+#~ msgid ""
+#~ "This acts as a filter to the contact list below. You can use segments of "
+#~ "contact's name or ID, for example, \"jabber.org\" will list everyone "
+#~ "using that server"
+#~ msgstr ""
+#~ "Tai veikia kaip žemiau esančio kontaktų sąrašo filtras. Galite naudoti "
+#~ "bičiulio vardo ar ID dalis. Pvz., „akl.lt“ parodys visų, naudojančių šį "
+#~ "serverį, sąrašą."
+
+#~ msgid "This is the name that will be used on your roster for this contact"
+#~ msgstr "Tai vardas, kuris bus naudojamas šiam bičiuliui bičiulių sąraše"
+
+#~ msgid "This name will be used to identify you in chat windows"
+#~ msgstr "Šis vardas bus Jūsų tapatybė pokalbių languose"
+
+#~ msgid ""
+#~ "This name will be used to identify you when new contacts lookup your "
+#~ "details"
+#~ msgstr ""
+#~ "Šis vardas bus naudojamas Jūsų tapatybė, kai nauji bičiuliai žiūrės "
+#~ "informaciją apie Jus"
+
+#~ msgid "Use default name here from the contact's VCard."
+#~ msgstr "Čia naudoti numatytąjį vardą iš bičiulio VCard."
+
+#~ msgid "Use system pro_xy"
+#~ msgstr "Naudoti sistemos tarpinį ser_verį"
+
+#~ msgid "Version:"
+#~ msgstr "Versija:"
+
+#~ msgid "View Previous Conversations"
+#~ msgstr "Žiūrėti ankstesnius pokalbius"
+
+#~ msgid "Which account do you want to use?"
+#~ msgstr "Kokį abonentą norite naudoti?"
+
+#~ msgid "You are not subscribed to this contact."
+#~ msgstr "Šio bičiulio nesekate."
+
+#~ msgid "_Birthday:"
+#~ msgstr "_Gimtadienis:"
+
+#~ msgid "_Connect"
+#~ msgstr "_Prisijungti"
+
+#~ msgid "_Description:"
+#~ msgstr "_Aprašymas:"
+
+#~ msgid "_Disconnect"
+#~ msgstr "_Atsijungti"
+
+#~ msgid "_Email:"
+#~ msgstr "_El. paštas:"
+
+#~ msgid ""
+#~ "_Enter the name or contact ID of the person you want to chat to below:"
+#~ msgstr ""
+#~ "Ž_emiau įveskite asmens, su kuriuo norite kalbėti, vardą ar bičiulio ID:"
+
+#~ msgid "_For:"
+#~ msgstr "_Kam:"
+
+#, fuzzy
+#~ msgid "_Full Name:"
+#~ msgstr "_Vardas:"
+
+#~ msgid "_Group:"
+#~ msgstr "_Grupė:"
+
+#, fuzzy
+#~ msgid "_Nick Name:"
+#~ msgstr "_Slapyvardis:"
+
+#, fuzzy
+#~ msgid "_Password:"
+#~ msgstr "Sla_ptažodis:"
+
+#, fuzzy
+#~ msgid "_Quit Message:"
+#~ msgstr "Nauja žinutė"
+
+#~ msgid "_Retrieve"
+#~ msgstr "_Gauti"
+
+#~ msgid "_Subscribe"
+#~ msgstr "_Užsisakyti"
+
+#~ msgid "_Web site:"
+#~ msgstr "_Tinklapis:"
+
+#, fuzzy
+#~ msgid "irc account settings"
+#~ msgstr "jabber abonento nustatymai"
+
+#, fuzzy
+#~ msgid "msn account settings"
+#~ msgstr "jabber abonento nustatymai"
+
+#~ msgid "Protocol:"
+#~ msgstr "Protokolas:"
+
+#~ msgid "Choose the protocol"
+#~ msgstr "Pasirinkite protokolą"
+
+#~ msgid "Gossip"
+#~ msgstr "Gossip"
diff --git a/gnome-2-22/po/ml.po b/gnome-2-22/po/ml.po
new file mode 100644
index 000000000..2f54c0d84
--- /dev/null
+++ b/gnome-2-22/po/ml.po
@@ -0,0 +1,1124 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FSF-India <locale@gnu.org.in>, 2003.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version:gossip\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-05-15 23:46+0200\n"
+"PO-Revision-Date: 2003-07-05 10:29+0530\n"
+"Last-Translator: FSF-India <locale@gnu.org.in>\n"
+"Language-Team: Malayalam <locale@gnu.org.in>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../data/empathy.desktop.in.h:1
+#, fuzzy
+msgid "Empathy Instant Messenger"
+msgstr "സന്ദേശം:"
+
+#: ../data/empathy.desktop.in.h:2
+msgid "Instant Messenger"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:1
+msgid "Always open a separate chat window for new chats."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:2
+msgid "Chat window theme"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:3
+msgid ""
+"Comma separated list of spell checker languages to use (e.g. en, fr, nl)."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:4
+msgid "Compact contact list"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:5
+msgid "Contact list sort criterium"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:6
+msgid "Default directory to select an avatar image from"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:7
+msgid "Enable popup when contact is available"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:8
+msgid "Enable sound when away"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:9
+msgid "Enable sound when busy"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:10
+msgid "Enable spell checker"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:11
+msgid "Hide main window"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:12
+msgid "Hide the main window."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:13
+msgid "Open new chats in separate windows"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:14
+msgid "Show avatars"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:15
+msgid "Show hint about closing the main window"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:16
+msgid "Show offline contacts"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:17
+msgid "Spell checking languages"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:18
+msgid "The last directory that an avatar image was chosen from."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:19
+msgid "The theme that is used to display the conversation in chat windows."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:20
+msgid "Use graphical smileys"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:21
+msgid "Use notification sounds"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:22
+msgid "Use theme for chat rooms"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:23
+msgid ""
+"Whether or not to check words typed against the languages you want to check "
+"with."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:24
+msgid ""
+"Whether or not to convert smileys into graphical images in conversations."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:25
+msgid "Whether or not to play a sound when messages arrive."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:26
+msgid "Whether or not to play sounds when away."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:27
+msgid "Whether or not to play sounds when busy."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:28
+msgid "Whether or not to show a popup when a contact becomes available."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:29
+msgid ""
+"Whether or not to show avatars for contacts in the contact list and chat "
+"windows."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:30
+msgid "Whether or not to show contacts that are offline in the contact list."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:31
+msgid ""
+"Whether or not to show the message dialog about closing the main window with "
+"the 'x' button in the title bar."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:32
+msgid "Whether to show the contact list in compact mode or not."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:33
+msgid "Whether to use the theme for chat rooms or not."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:34
+msgid ""
+"Which criterium to use when sorting the contact list. Default is to use sort "
+"by the contact's name with the value \"name\". A value of \"state\" will "
+"sort the contact list by state."
+msgstr ""
+
+#: ../libempathy/gossip-contact.c:654 ../libempathy/gossip-presence.c:184
+#: ../libempathy/gossip-presence.c:283
+#, fuzzy
+msgid "Offline"
+msgstr "കാര്യാലയം"
+
+#: ../libempathy/gossip-presence.c:274
+#, fuzzy
+msgid "Available"
+msgstr "ലഭ്യത"
+
+#: ../libempathy/gossip-presence.c:276
+msgid "Busy"
+msgstr "തിരക്ക്"
+
+#: ../libempathy/gossip-presence.c:279
+msgid "Away"
+msgstr "ദൂരെ"
+
+#: ../libempathy-gtk/empathy-main-window.c:254
+msgid "Show and edit accounts"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.c:456
+msgid "Group"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.c:477
+#, fuzzy
+msgid "Contact"
+msgstr "ഘടിപ്പിക്കുക"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:1
+msgid "Contact List - Empathy"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:2
+#, fuzzy
+msgid "Context"
+msgstr "ഘടിപ്പിക്കുക"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:3
+msgid "Join _Favorites"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:4
+#: ../libempathy-gtk/gossip-chat.glade.h:10
+msgid "Join _New..."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:5
+msgid "Manage Favorites..."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:6
+msgid "Show _Offline Contacts"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:7
+msgid "_About"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:8
+msgid "_Accounts"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:9
+#: ../libempathy-gtk/gossip-chat.glade.h:15
+msgid "_Add Contact..."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:10
+#: ../libempathy-gtk/gossip-contact-list.c:298
+msgid "_Chat"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:11
+#, fuzzy
+msgid "_Contents"
+msgstr "ഘടിപ്പിക്കുക"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:12
+#: ../libempathy-gtk/gossip-chat.glade.h:21
+#: ../libempathy-gtk/gossip-contact-list.c:310
+#, fuzzy
+msgid "_Edit"
+msgstr "പുറത്ത് കടക്കുക"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:13
+msgid "_Help"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:14
+#: ../libempathy-gtk/empathy-status-icon.glade.h:2
+msgid "_New Message..."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:15
+msgid "_Personal Information"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:16
+#, fuzzy
+msgid "_Preferences"
+msgstr "മുന്‍ഗണനകള്‍"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:17
+#: ../libempathy-gtk/empathy-status-icon.glade.h:3
+msgid "_Quit"
+msgstr "പുറത്ത് കടക്കുക"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:18
+#: ../libempathy-gtk/gossip-chat.glade.h:25
+msgid "_Room"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:19
+#: ../libempathy-gtk/gossip-chat.glade.h:28
+#: ../libempathy-gtk/gossip-contact-list.c:326
+msgid "_View Previous Conversations"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:1
+#, fuzzy
+msgid "Status"
+msgstr "<b>അവസ്ഥ</b>"
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:4
+msgid "_Show Contact List"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-about-dialog.c:63
+msgid ""
+"Empathy is free software; you can redistribute it and/or modify it under the "
+"terms of the GNU General Public License as published by the Free Software "
+"Foundation; either version 2 of the License, or (at your option) any later "
+"version."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-about-dialog.c:67
+msgid ""
+"Empathy is distributed in the hope that it will be useful, but WITHOUT ANY "
+"WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS "
+"FOR A PARTICULAR PURPOSE. See the GNU General Public License for more "
+"details."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-about-dialog.c:71
+msgid ""
+"You should have received a copy of the GNU General Public License along with "
+"Empathy; if not, write to the Free Software Foundation, Inc., 51 Franklin "
+"Street, Fifth Floor, Boston, MA 02110-130159 USA"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-about-dialog.c:99
+msgid "An Instant Messaging client for GNOME"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-about-dialog.c:105
+#, fuzzy
+msgid "translator-credits"
+msgstr "എഫ്.എസ്.എഫ് - ഇന്ത്യ"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:224
+#, fuzzy
+msgid "Disable"
+msgstr "ലഭ്യത"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:227
+msgid "Enable"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:261
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:3
+msgid "<b>No Account Selected</b>"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:263
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to start configuring.\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want "
+"to configure in the list on the left."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:272
+msgid "<b>No Accounts Configured</b>"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:274
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to start configuring."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:362
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:6
+msgid "Accounts"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:857
+#, c-format
+msgid ""
+"You are about to remove your %s account!\n"
+"Are you sure you want to proceed?"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:863
+msgid ""
+"Any associated conversations and chat rooms will NOT be removed if you "
+"decide to proceed.\n"
+"\n"
+"Should you decide to add the account back at a later time, they will still "
+"be available."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:1
+msgid "<b>Account</b>"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:2
+#, fuzzy
+msgid "<b>New Account</b>"
+msgstr "ഘടിപ്പിക്കുക"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:4
+#, fuzzy
+msgid "<b>Settings</b>"
+msgstr "<b>അവസ്ഥ</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:5
+msgid "A unique name for this account to identify it personally to you."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:7
+msgid "Cr_eate"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:8
+msgid "Imendio "
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:9
+msgid "Jabber"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:10
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to started configuring.\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want "
+"to configure in the list on the left."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:13
+#, fuzzy
+msgid "_Name:"
+msgstr "നാമം:"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:14
+msgid "_Type:"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-account-widget-generic.c:144
+#: ../libempathy-gtk/gossip-account-widget-generic.c:186
+#, c-format
+msgid "%s:"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:1
+msgid ""
+"<small><b><span foreground=\"#555\">Example: user@jabber.org</span></b></"
+"small>"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:2
+msgid "Forget password and clear the entry."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:3
+msgid "Login I_D:"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:4
+#, fuzzy
+msgid "Pass_word:"
+msgstr "അടയാളവാക്ക്:"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:5
+msgid "Reso_urce:"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:6
+msgid "Use encryption (SS_L)"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:7
+#, fuzzy
+msgid "_Port:"
+msgstr "വഴി:"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:8
+msgid "_Server:"
+msgstr "സ‍ര്‍വ്വര്:"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:9
+msgid "jabber account settings"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.c:314
+#, fuzzy
+msgid "Disconnected"
+msgstr "ഘടിപ്പിക്കുക"
+
+#: ../libempathy-gtk/gossip-chat.c:858
+msgid "Insert Smiley"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.c:906
+msgid "_Check Word Spelling..."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.c:1244
+#, fuzzy
+msgid "Connected"
+msgstr "ഘടിപ്പിക്കുക"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:1
+msgid "C_lear"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:2
+msgid "Change _Topic..."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:3
+msgid "Chat"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:4
+msgid "Contact Infor_mation"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:5
+msgid "Cu_t"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:6
+msgid "In_vite..."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:7
+msgid "Insert _Smiley"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:8
+#, fuzzy
+msgid "Invitation _message:"
+msgstr "സന്ദേശം:"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:9
+msgid "Invite"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:11
+msgid "Move Tab _Left"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:12
+msgid "Move Tab _Right"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:13
+msgid "Select who would you like to invite:"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:14
+msgid "You have been invited to join a chat conference."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:16
+msgid "_Add To Favorites"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:17
+msgid "_Close"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:18
+msgid "_Conversation"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:19
+msgid "_Copy"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:20
+msgid "_Detach Tab"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:22
+msgid "_Next Tab"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:23
+msgid "_Paste"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:24
+msgid "_Previous Tab"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:26
+msgid "_Show Contacts"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:27
+msgid "_Tabs"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat-view.c:544
+msgid "_Copy Link Address"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat-view.c:552
+msgid "_Open Link"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat-view.c:889
+msgid "%A %d %B %Y"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat-window.c:685
+#: ../libempathy-gtk/gossip-chat-window.c:715
+#, fuzzy
+msgid "New Message"
+msgid_plural "New Messages"
+msgstr[0] "സന്ദേശം:"
+msgstr[1] "സന്ദേശം:"
+
+#: ../libempathy-gtk/gossip-chat-window.c:691
+msgid "Chat Room"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat-window.c:696
+#: ../libempathy-gtk/gossip-chat-window.c:719
+#, fuzzy, c-format
+msgid "Conversation"
+msgid_plural "Conversations (%d)"
+msgstr[0] "ഘടിപ്പിക്കുക"
+msgstr[1] "ഘടിപ്പിക്കുക"
+
+#: ../libempathy-gtk/gossip-chat-window.c:1295
+msgid "Typing a message."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-contact-list.c:290
+#, fuzzy
+msgid "_Contact"
+msgstr "ഘടിപ്പിക്കുക"
+
+#: ../libempathy-gtk/gossip-contact-list.c:294
+msgid "_Group"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-contact-list.c:298
+msgid "Chat with contact"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-contact-list.c:302
+#, fuzzy
+msgid "Infor_mation"
+msgstr "ഘടിപ്പിക്കുക"
+
+#: ../libempathy-gtk/gossip-contact-list.c:302
+msgid "View contact information"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-contact-list.c:306
+#, fuzzy
+msgid "Re_name"
+msgstr "നാമം:"
+
+#: ../libempathy-gtk/gossip-contact-list.c:306
+msgid "Rename"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-contact-list.c:310
+msgid "Edit the groups and name for this contact"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-contact-list.c:314
+#, fuzzy
+msgid "_Remove"
+msgstr "നീക്കുക"
+
+#: ../libempathy-gtk/gossip-contact-list.c:314
+#, fuzzy
+msgid "Remove contact"
+msgstr "നീക്കുക"
+
+#: ../libempathy-gtk/gossip-contact-list.c:318
+msgid "_Invite to Chat Room"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-contact-list.c:318
+msgid "Invite to a currently open chat room"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-contact-list.c:322
+msgid "_Send File..."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-contact-list.c:322
+#, fuzzy
+msgid "Send a file"
+msgstr "തള്ളിക്കളയുക"
+
+#: ../libempathy-gtk/gossip-contact-list.c:326
+msgid "View previous conversations with this contact"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.c:250
+msgid "Language"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:1
+msgid "<b>Appearance</b>"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:2
+#, fuzzy
+msgid "<b>Audio</b>"
+msgstr "<b>അവസ്ഥ</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:3
+#, fuzzy
+msgid "<b>Behaviour</b>"
+msgstr "<b>അവസ്ഥ</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:4
+#, fuzzy
+msgid "<b>Contact List</b>"
+msgstr "<b>അവസ്ഥ</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:5
+msgid "<b>Languages</b>"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:6
+#, fuzzy
+msgid "<b>Options</b>"
+msgstr "ഘടിപ്പിക്കുക"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:7
+#, fuzzy
+msgid "<b>Visual</b>"
+msgstr "<b>അവസ്ഥ</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:8
+msgid ""
+"<small>The list of languages reflects only the languages for which you have "
+"a dictionary installed.</small>"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:9
+msgid "Avatars are user chosen images shown in the contact list"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:10
+msgid "Chat Th_eme:"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:11
+msgid "Display notifications when contacts come _online"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:12
+msgid "Enable sounds when _away"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:13
+msgid "Enable sounds when _busy"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:14
+msgid "General"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:15
+msgid "Notifications"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:16
+#, fuzzy
+msgid "Preferences"
+msgstr "മുന്‍ഗണനകള്‍"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:17
+msgid "Show _avatars"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:18
+msgid "Show _smileys as images"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:19
+msgid "Show co_mpact contact list"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:20
+msgid "Sort by _name"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:21
+msgid "Sort by s_tate"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:22
+msgid "Spell Checking"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:23
+msgid "Themes"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:24
+msgid "_Enable spell checking"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:25
+msgid "_Open new chats in separate windows"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:26
+msgid "_Play sound when messages arrive"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:27
+msgid "_Use for chat rooms"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:702
+msgid "Custom message..."
+msgstr ""
+
+#. Clear list
+#: ../libempathy-gtk/gossip-presence-chooser.c:724
+msgid "Clear List..."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:803
+msgid "Are you sure you want to clear the list?"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:807
+msgid ""
+"This will remove any custom messages you have added to the list of preset "
+"status messages."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:812
+msgid "Clear List"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-presence-chooser.glade.h:1
+#, fuzzy
+msgid "Enter status message:"
+msgstr "സന്ദേശം:"
+
+#: ../libempathy-gtk/gossip-presence-chooser.glade.h:2
+#, fuzzy
+msgid "Status Message Presets"
+msgstr "സന്ദേശം:"
+
+#: ../libempathy-gtk/gossip-presence-chooser.glade.h:3
+#, fuzzy
+msgid "_Add to status message list"
+msgstr "സന്ദേശം:"
+
+#: ../libempathy-gtk/gossip-private-chat.c:198
+#, c-format
+msgid "%s went offline"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-private-chat.c:212
+#, c-format
+msgid "%s has come online"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-theme-manager.c:87
+msgid "Classic"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-theme-manager.c:88
+msgid "Simple"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-theme-manager.c:89
+msgid "Clean"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-theme-manager.c:90
+msgid "Blue"
+msgstr ""
+
+#: ../src/empathy-main.c:145
+msgid "Don't connect on startup"
+msgstr ""
+
+#: ../src/empathy-main.c:155
+#, fuzzy
+msgid "- Empathy Instant Messenger"
+msgstr "സന്ദേശം:"
+
+#, fuzzy
+#~ msgid "Unknown"
+#~ msgstr "അറിയാത്ത ഏതോ പ്രശ്നം"
+
+#, fuzzy
+#~ msgid "An unknown error occurred, check your details are correct."
+#~ msgstr "അറിയാത്ത ഏതോ പ്രശ്നം"
+
+#, fuzzy
+#~ msgid "Unavailable"
+#~ msgstr "ലഭ്യത"
+
+#, fuzzy
+#~ msgid "An unknown error occurred."
+#~ msgstr "അറിയാത്ത ഏതോ പ്രശ്നം"
+
+#, fuzzy
+#~ msgid "Connection refused."
+#~ msgstr "ഘടിപ്പിക്കുക"
+
+#, fuzzy
+#~ msgid "Connection timed out."
+#~ msgstr "ഘടിപ്പിക്കുക"
+
+#, fuzzy
+#~ msgid "Disconnect"
+#~ msgstr "ഘടിപ്പിക്കുക"
+
+#, fuzzy
+#~ msgid "Connect"
+#~ msgstr "ഘടിപ്പിക്കുക"
+
+#, fuzzy
+#~ msgid "%d new message"
+#~ msgid_plural "%d new messages"
+#~ msgstr[0] "സന്ദേശം:"
+#~ msgstr[1] "സന്ദേശം:"
+
+#, fuzzy
+#~ msgid "Name"
+#~ msgstr "നാമം:"
+
+#, fuzzy
+#~ msgid "Auto Connect"
+#~ msgstr "ഘടിപ്പിക്കുക"
+
+#, fuzzy
+#~ msgid "Information requested..."
+#~ msgstr "ഘടിപ്പിക്കുക"
+
+#, fuzzy
+#~ msgid "Select"
+#~ msgstr "തള്ളിക്കളയുക"
+
+#, fuzzy
+#~ msgid "Unknown error occurred during file transfer."
+#~ msgstr "അറിയാത്ത ഏതോ പ്രശ്നം"
+
+#, fuzzy
+#~ msgid "Select a file"
+#~ msgstr "തള്ളിക്കളയുക"
+
+#, fuzzy
+#~ msgid "Connecting..."
+#~ msgstr "ഘടിപ്പിക്കുക"
+
+#, fuzzy
+#~ msgid "Retry connection"
+#~ msgstr "ഘടിപ്പിക്കുക"
+
+#, fuzzy
+#~ msgid "_Deny"
+#~ msgstr "അയ‍യ്‍ക്കുക"
+
+#, fuzzy
+#~ msgid "<b>Topic:</b>"
+#~ msgstr "<b>അവസ്ഥ</b>"
+
+#, fuzzy
+#~ msgid "N_ame:"
+#~ msgstr "നാമം:"
+
+#, fuzzy
+#~ msgid "S_erver:"
+#~ msgstr "സ‍ര്‍വ്വര്:"
+
+#, fuzzy
+#~ msgid "<b>Groups</b>"
+#~ msgstr "<b>അവസ്ഥ</b>"
+
+#, fuzzy
+#~ msgid "<b>Name</b>"
+#~ msgstr "<b>അവസ്ഥ</b>"
+
+#, fuzzy
+#~ msgid "<b>Subscription</b>"
+#~ msgstr "ഘടിപ്പിക്കുക"
+
+#, fuzzy
+#~ msgid "Con_tact:"
+#~ msgstr "ഘടിപ്പിക്കുക"
+
+#, fuzzy
+#~ msgid "Connect on S_tartup"
+#~ msgstr "ഘടിപ്പിക്കുക"
+
+#, fuzzy
+#~ msgid "Contacts"
+#~ msgstr "ഘടിപ്പിക്കുക"
+
+#, fuzzy
+#~ msgid "Edit Contact"
+#~ msgstr "ഘടിപ്പിക്കുക"
+
+#~ msgid "Email:"
+#~ msgstr "ഇ-മെയില്:"
+
+#~ msgid "Name:"
+#~ msgstr "നാമം:"
+
+#, fuzzy
+#~ msgid "_Connect"
+#~ msgstr "ഘടിപ്പിക്കുക"
+
+#, fuzzy
+#~ msgid "_Email:"
+#~ msgstr "ഇ-മെയില്:"
+
+#, fuzzy
+#~ msgid "_For:"
+#~ msgstr "വഴി:"
+
+#, fuzzy
+#~ msgid "_Full Name:"
+#~ msgstr "നാമം:"
+
+#, fuzzy
+#~ msgid "_Nick Name:"
+#~ msgstr "നാമം:"
+
+#, fuzzy
+#~ msgid "_Password:"
+#~ msgstr "അടയാളവാക്ക്:"
+
+#, fuzzy
+#~ msgid "_Quit Message:"
+#~ msgstr "സന്ദേശം:"
+
+#, fuzzy
+#~ msgid "Preset status messages"
+#~ msgstr "സന്ദേശം:"
+
+#, fuzzy
+#~ msgid "Preset status messages."
+#~ msgstr "സന്ദേശം:"
+
+#, fuzzy
+#~ msgid "Na_me:"
+#~ msgstr "നാമം:"
+
+#~ msgid " "
+#~ msgstr " "
+
+#, fuzzy
+#~ msgid "Port:"
+#~ msgstr "വഴി:"
+
+#, fuzzy
+#~ msgid "Server:"
+#~ msgstr "സ‍ര്‍വ്വര്:"
+
+#, fuzzy
+#~ msgid "_No"
+#~ msgstr "അല്ല"
+
+#, fuzzy
+#~ msgid "_Yes"
+#~ msgstr "അതെ"
+
+#, fuzzy
+#~ msgid "Send Message"
+#~ msgstr "സന്ദേശം:"
+
+#, fuzzy
+#~ msgid "Available..."
+#~ msgstr "ലഭ്യത"
+
+#, fuzzy
+#~ msgid "Busy..."
+#~ msgstr "തിരക്ക്"
+
+#, fuzzy
+#~ msgid "Away..."
+#~ msgstr "ദൂരെ"
+
+#, fuzzy
+#~ msgid "Por_t:"
+#~ msgstr "വഴി:"
+
+#, fuzzy
+#~ msgid "Gossip - Preferences"
+#~ msgstr "മുന്‍ഗണനകള്‍"
+
+#~ msgid "*"
+#~ msgstr "*"
+
+#~ msgid "To:"
+#~ msgstr "വരെ:"
+
+#~ msgid "_Reply..."
+#~ msgstr "മറുപടി..."
+
+#~ msgid "_Send"
+#~ msgstr "അയ‍യ്‍ക്കുക"
+
+#~ msgid "C_onnect"
+#~ msgstr "ഘടിപ്പിക്കുക"
+
+#~ msgid "_Add"
+#~ msgstr "ചേര്ക്കുക"
+
+#, fuzzy
+#~ msgid "Sound"
+#~ msgstr "അയ‍യ്‍ക്കുക"
+
+#, fuzzy
+#~ msgid "translator_credits_old"
+#~ msgstr "എഫ്.എസ്.എഫ് - ഇന്ത്യ <gnu@gnu.org.in>"
+
+#~ msgid "Others"
+#~ msgstr "മറ്റുള്ളവ"
+
+#~ msgid "minutes"
+#~ msgstr "മിനിട്ട്"
diff --git a/gnome-2-22/po/ms.po b/gnome-2-22/po/ms.po
new file mode 100644
index 000000000..46701a827
--- /dev/null
+++ b/gnome-2-22/po/ms.po
@@ -0,0 +1,1982 @@
+# GnomeICU Malay Translation
+# Copyright (C) 2001-2003 Free Software Foundation, Inc.
+# 1. Khairulanuar Abd Majid <khairul@ikhlas.com>, 2001, 2002.
+# 2. Hasbullah Bin Pit <sebol@ikhlas.com> 2002,2003
+msgid ""
+msgstr ""
+"Project-Id-Version: gnomeicu 0.95.5\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-05-15 23:46+0200\n"
+"PO-Revision-Date: 2003-11-30 00:07+0730\n"
+"Last-Translator: Hasbullah Bin Pit <sebol@ikhlas.com>\n"
+"Language-Team: Bahasa Melayu <gabai-penyumbang@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../data/empathy.desktop.in.h:1
+#, fuzzy
+msgid "Empathy Instant Messenger"
+msgstr "Pesanan Segera"
+
+#: ../data/empathy.desktop.in.h:2
+msgid "Instant Messenger"
+msgstr "Pesanan Segera"
+
+#: ../data/empathy.schemas.in.h:1
+msgid "Always open a separate chat window for new chats."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:2
+msgid "Chat window theme"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:3
+msgid ""
+"Comma separated list of spell checker languages to use (e.g. en, fr, nl)."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:4
+#, fuzzy
+msgid "Compact contact list"
+msgstr "Tambah ke senarai kenalan"
+
+#: ../data/empathy.schemas.in.h:5
+msgid "Contact list sort criterium"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:6
+msgid "Default directory to select an avatar image from"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:7
+msgid "Enable popup when contact is available"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:8
+#, fuzzy
+msgid "Enable sound when away"
+msgstr "Matikan bunyi ketika _away"
+
+#: ../data/empathy.schemas.in.h:9
+#, fuzzy
+msgid "Enable sound when busy"
+msgstr "Matikan bunyi ketika _sibuk"
+
+#: ../data/empathy.schemas.in.h:10
+#, fuzzy
+msgid "Enable spell checker"
+msgstr "Gossip - Kirim Mesej"
+
+#: ../data/empathy.schemas.in.h:11
+#, fuzzy
+msgid "Hide main window"
+msgstr "Lebar bagi tetingkap utama"
+
+#: ../data/empathy.schemas.in.h:12
+#, fuzzy
+msgid "Hide the main window."
+msgstr "Lebar bagi tetingkap utama"
+
+#: ../data/empathy.schemas.in.h:13
+msgid "Open new chats in separate windows"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:14
+#, fuzzy
+msgid "Show avatars"
+msgstr "_Papar Senarai Kenalan"
+
+#: ../data/empathy.schemas.in.h:15
+#, fuzzy
+msgid "Show hint about closing the main window"
+msgstr "Tinggi bagi tetingkap utama."
+
+#: ../data/empathy.schemas.in.h:16
+msgid "Show offline contacts"
+msgstr "Papar kenalan luartalian"
+
+#: ../data/empathy.schemas.in.h:17
+msgid "Spell checking languages"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:18
+msgid "The last directory that an avatar image was chosen from."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:19
+msgid "The theme that is used to display the conversation in chat windows."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:20
+msgid "Use graphical smileys"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:21
+msgid "Use notification sounds"
+msgstr "Guna bunyi pemakluman"
+
+#: ../data/empathy.schemas.in.h:22
+msgid "Use theme for chat rooms"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:23
+msgid ""
+"Whether or not to check words typed against the languages you want to check "
+"with."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:24
+msgid ""
+"Whether or not to convert smileys into graphical images in conversations."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:25
+msgid "Whether or not to play a sound when messages arrive."
+msgstr "Samada memainkan bunyi ketika mesej tiba atau tidak."
+
+#: ../data/empathy.schemas.in.h:26
+msgid "Whether or not to play sounds when away."
+msgstr "Samada memainkan bunyi ketika away atau tidak."
+
+#: ../data/empathy.schemas.in.h:27
+msgid "Whether or not to play sounds when busy."
+msgstr "Samada memainkan bunyi ketika sibuk atau tidak."
+
+#: ../data/empathy.schemas.in.h:28
+#, fuzzy
+msgid "Whether or not to show a popup when a contact becomes available."
+msgstr "Samada memainkan bunyi ketika mesej tiba atau tidak."
+
+#: ../data/empathy.schemas.in.h:29
+#, fuzzy
+msgid ""
+"Whether or not to show avatars for contacts in the contact list and chat "
+"windows."
+msgstr "Samada memapar senarai kenalan yang luartalian pada senarai kenalan."
+
+#: ../data/empathy.schemas.in.h:30
+msgid "Whether or not to show contacts that are offline in the contact list."
+msgstr "Samada memapar senarai kenalan yang luartalian pada senarai kenalan."
+
+#: ../data/empathy.schemas.in.h:31
+msgid ""
+"Whether or not to show the message dialog about closing the main window with "
+"the 'x' button in the title bar."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:32
+#, fuzzy
+msgid "Whether to show the contact list in compact mode or not."
+msgstr "Samada memapar senarai kenalan yang luartalian pada senarai kenalan."
+
+#: ../data/empathy.schemas.in.h:33
+msgid "Whether to use the theme for chat rooms or not."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:34
+msgid ""
+"Which criterium to use when sorting the contact list. Default is to use sort "
+"by the contact's name with the value \"name\". A value of \"state\" will "
+"sort the contact list by state."
+msgstr ""
+
+#: ../libempathy/gossip-contact.c:654 ../libempathy/gossip-presence.c:184
+#: ../libempathy/gossip-presence.c:283
+msgid "Offline"
+msgstr "Luar Talian"
+
+#: ../libempathy/gossip-presence.c:274
+msgid "Available"
+msgstr "Ada"
+
+#: ../libempathy/gossip-presence.c:276
+msgid "Busy"
+msgstr "Sibuk"
+
+#: ../libempathy/gossip-presence.c:279
+msgid "Away"
+msgstr "Away"
+
+#: ../libempathy-gtk/empathy-main-window.c:254
+#, fuzzy
+msgid "Show and edit accounts"
+msgstr "_Papar Senarai Kenalan"
+
+#: ../libempathy-gtk/empathy-main-window.c:456
+msgid "Group"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.c:477
+#, fuzzy
+msgid "Contact"
+msgstr "_Tambah Kenalan..."
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:1
+#, fuzzy
+msgid "Contact List - Empathy"
+msgstr "_Sorok Senarai Kenalan"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:2
+#, fuzzy
+msgid "Context"
+msgstr "Sambung"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:3
+#, fuzzy
+msgid "Join _Favorites"
+msgstr "_Edit Kegemaran..."
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:4
+#: ../libempathy-gtk/gossip-chat.glade.h:10
+msgid "Join _New..."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:5
+msgid "Manage Favorites..."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:6
+msgid "Show _Offline Contacts"
+msgstr "Papar Kenalan _Luartalian"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:7
+#, fuzzy
+msgid "_About"
+msgstr "_Terima"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:8
+#, fuzzy
+msgid "_Accounts"
+msgstr "_Terima"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:9
+#: ../libempathy-gtk/gossip-chat.glade.h:15
+msgid "_Add Contact..."
+msgstr "_Tambah Kenalan..."
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:10
+#: ../libempathy-gtk/gossip-contact-list.c:298
+msgid "_Chat"
+msgstr "_Chat"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:11
+#, fuzzy
+msgid "_Contents"
+msgstr "Sambung"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:12
+#: ../libempathy-gtk/gossip-chat.glade.h:21
+#: ../libempathy-gtk/gossip-contact-list.c:310
+#, fuzzy
+msgid "_Edit"
+msgstr "_Keluar"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:13
+msgid "_Help"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:14
+#: ../libempathy-gtk/empathy-status-icon.glade.h:2
+#, fuzzy
+msgid "_New Message..."
+msgstr "Kirim _Mesej..."
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:15
+#, fuzzy
+msgid "_Personal Information"
+msgstr "Maklumat peribadi"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:16
+msgid "_Preferences"
+msgstr "Ke_utamaan"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:17
+#: ../libempathy-gtk/empathy-status-icon.glade.h:3
+msgid "_Quit"
+msgstr "_Keluar"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:18
+#: ../libempathy-gtk/gossip-chat.glade.h:25
+#, fuzzy
+msgid "_Room"
+msgstr "_Bilik:"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:19
+#: ../libempathy-gtk/gossip-chat.glade.h:28
+#: ../libempathy-gtk/gossip-contact-list.c:326
+#, fuzzy
+msgid "_View Previous Conversations"
+msgstr "Per_bualan"
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:1
+#, fuzzy
+msgid "Status"
+msgstr "Mesej Status"
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:4
+msgid "_Show Contact List"
+msgstr "_Papar Senarai Kenalan"
+
+#: ../libempathy-gtk/gossip-about-dialog.c:63
+msgid ""
+"Empathy is free software; you can redistribute it and/or modify it under the "
+"terms of the GNU General Public License as published by the Free Software "
+"Foundation; either version 2 of the License, or (at your option) any later "
+"version."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-about-dialog.c:67
+msgid ""
+"Empathy is distributed in the hope that it will be useful, but WITHOUT ANY "
+"WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS "
+"FOR A PARTICULAR PURPOSE. See the GNU General Public License for more "
+"details."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-about-dialog.c:71
+msgid ""
+"You should have received a copy of the GNU General Public License along with "
+"Empathy; if not, write to the Free Software Foundation, Inc., 51 Franklin "
+"Street, Fifth Floor, Boston, MA 02110-130159 USA"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-about-dialog.c:99
+#, fuzzy
+msgid "An Instant Messaging client for GNOME"
+msgstr "Klien Jabber bagi GNOME"
+
+#: ../libempathy-gtk/gossip-about-dialog.c:105
+#, fuzzy
+msgid "translator-credits"
+msgstr ""
+"Khairulanuar Abd Majid\n"
+"Hasbullah Bin Pit"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:224
+#, fuzzy
+msgid "Disable"
+msgstr "Ada"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:227
+msgid "Enable"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:261
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:3
+#, fuzzy
+msgid "<b>No Account Selected</b>"
+msgstr "<b>Kegemaran:</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:263
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to start configuring.\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want "
+"to configure in the list on the left."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:272
+#, fuzzy
+msgid "<b>No Accounts Configured</b>"
+msgstr "<b>Kegemaran:</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:274
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to start configuring."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:362
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:6
+#, fuzzy
+msgid "Accounts"
+msgstr "Akaun Jabber"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:857
+#, c-format
+msgid ""
+"You are about to remove your %s account!\n"
+"Are you sure you want to proceed?"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:863
+msgid ""
+"Any associated conversations and chat rooms will NOT be removed if you "
+"decide to proceed.\n"
+"\n"
+"Should you decide to add the account back at a later time, they will still "
+"be available."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:1
+#, fuzzy
+msgid "<b>Account</b>"
+msgstr "<b>Kegemaran:</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:2
+#, fuzzy
+msgid "<b>New Account</b>"
+msgstr "<b>Kegemaran:</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:4
+#, fuzzy
+msgid "<b>Settings</b>"
+msgstr "Mesej Status"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:5
+msgid "A unique name for this account to identify it personally to you."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:7
+#, fuzzy
+msgid "Cr_eate"
+msgstr "Chat"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:8
+msgid "Imendio "
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:9
+msgid "Jabber"
+msgstr "Jabber"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:10
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to started configuring.\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want "
+"to configure in the list on the left."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:13
+#, fuzzy
+msgid "_Name:"
+msgstr "Nama:"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:14
+#, fuzzy
+msgid "_Type:"
+msgstr "_Topik:"
+
+#: ../libempathy-gtk/gossip-account-widget-generic.c:144
+#: ../libempathy-gtk/gossip-account-widget-generic.c:186
+#, c-format
+msgid "%s:"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:1
+#, fuzzy
+msgid ""
+"<small><b><span foreground=\"#555\">Example: user@jabber.org</span></b></"
+"small>"
+msgstr "<span size=\"smaller\">Contoh: sebol@jabber.org</span>"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:2
+msgid "Forget password and clear the entry."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:3
+msgid "Login I_D:"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:4
+#, fuzzy
+msgid "Pass_word:"
+msgstr "_Katalaluan:"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:5
+#, fuzzy
+msgid "Reso_urce:"
+msgstr "_Sumber:"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:6
+#, fuzzy
+msgid "Use encryption (SS_L)"
+msgstr "Guna peng_enkripsian (SSL)"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:7
+#, fuzzy
+msgid "_Port:"
+msgstr "_Liang:"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:8
+msgid "_Server:"
+msgstr "_Pelayan:"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:9
+msgid "jabber account settings"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.c:314
+#, fuzzy
+msgid "Disconnected"
+msgstr "_Putus"
+
+#: ../libempathy-gtk/gossip-chat.c:858
+msgid "Insert Smiley"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.c:906
+msgid "_Check Word Spelling..."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.c:1244
+#, fuzzy
+msgid "Connected"
+msgstr "Sambung"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:1
+msgid "C_lear"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:2
+msgid "Change _Topic..."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:3
+msgid "Chat"
+msgstr "Chat"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:4
+#, fuzzy
+msgid "Contact Infor_mation"
+msgstr "_Maklumat Kenalan"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:5
+#, fuzzy
+msgid "Cu_t"
+msgstr "Chat"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:6
+#, fuzzy
+msgid "In_vite..."
+msgstr "_Daftar..."
+
+#: ../libempathy-gtk/gossip-chat.glade.h:7
+msgid "Insert _Smiley"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:8
+#, fuzzy
+msgid "Invitation _message:"
+msgstr "Mesej status:"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:9
+msgid "Invite"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:11
+msgid "Move Tab _Left"
+msgstr "Alih Tab ke Ki_ri"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:12
+msgid "Move Tab _Right"
+msgstr "Alih Tab ke Ka_nan"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:13
+msgid "Select who would you like to invite:"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:14
+msgid "You have been invited to join a chat conference."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:16
+#, fuzzy
+msgid "_Add To Favorites"
+msgstr "_Edit Kegemaran..."
+
+#: ../libempathy-gtk/gossip-chat.glade.h:17
+msgid "_Close"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:18
+msgid "_Conversation"
+msgstr "Per_bualan"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:19
+msgid "_Copy"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:20
+msgid "_Detach Tab"
+msgstr "_Leraikan Tab"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:22
+msgid "_Next Tab"
+msgstr "Tab _Berikutnya"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:23
+msgid "_Paste"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:24
+msgid "_Previous Tab"
+msgstr "Tab _Terdahulu"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:26
+#, fuzzy
+msgid "_Show Contacts"
+msgstr "_Papar Senarai Kenalan"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:27
+msgid "_Tabs"
+msgstr "_Tab"
+
+#: ../libempathy-gtk/gossip-chat-view.c:544
+msgid "_Copy Link Address"
+msgstr "_Salin Alamat Pautan"
+
+#: ../libempathy-gtk/gossip-chat-view.c:552
+msgid "_Open Link"
+msgstr "_Buka Pautan"
+
+#: ../libempathy-gtk/gossip-chat-view.c:889
+msgid "%A %d %B %Y"
+msgstr "%A %d %B %Y"
+
+#: ../libempathy-gtk/gossip-chat-window.c:685
+#: ../libempathy-gtk/gossip-chat-window.c:715
+#, fuzzy
+msgid "New Message"
+msgid_plural "New Messages"
+msgstr[0] "Kirim _Mesej..."
+msgstr[1] "Kirim _Mesej..."
+
+#: ../libempathy-gtk/gossip-chat-window.c:691
+#, fuzzy
+msgid "Chat Room"
+msgstr "Gossip - Chat"
+
+#: ../libempathy-gtk/gossip-chat-window.c:696
+#: ../libempathy-gtk/gossip-chat-window.c:719
+#, fuzzy, c-format
+msgid "Conversation"
+msgid_plural "Conversations (%d)"
+msgstr[0] "Per_bualan"
+msgstr[1] "Per_bualan"
+
+#: ../libempathy-gtk/gossip-chat-window.c:1295
+#, fuzzy
+msgid "Typing a message."
+msgstr "Mesej sibuk"
+
+#: ../libempathy-gtk/gossip-contact-list.c:290
+#, fuzzy
+msgid "_Contact"
+msgstr "_Tambah Kenalan..."
+
+#: ../libempathy-gtk/gossip-contact-list.c:294
+#, fuzzy
+msgid "_Group"
+msgstr "Gossip - Chat"
+
+#: ../libempathy-gtk/gossip-contact-list.c:298
+#, fuzzy
+msgid "Chat with contact"
+msgstr "Tambah kenalan"
+
+#: ../libempathy-gtk/gossip-contact-list.c:302
+#, fuzzy
+msgid "Infor_mation"
+msgstr "_Maklumat Kenalan"
+
+#: ../libempathy-gtk/gossip-contact-list.c:302
+#, fuzzy
+msgid "View contact information"
+msgstr "Maklumat kenalan"
+
+#: ../libempathy-gtk/gossip-contact-list.c:306
+#, fuzzy
+msgid "Re_name"
+msgstr "/_Tukarnama kumpulan"
+
+#: ../libempathy-gtk/gossip-contact-list.c:306
+#, fuzzy
+msgid "Rename"
+msgstr "Nama _pengguna:"
+
+#: ../libempathy-gtk/gossip-contact-list.c:310
+#, fuzzy
+msgid "Edit the groups and name for this contact"
+msgstr ""
+"Sila masukkan gelaran baru bagi kenalan\n"
+" %s"
+
+#: ../libempathy-gtk/gossip-contact-list.c:314
+msgid "_Remove"
+msgstr "_Buang"
+
+#: ../libempathy-gtk/gossip-contact-list.c:314
+#, fuzzy
+msgid "Remove contact"
+msgstr "/_Buang kenalan"
+
+#: ../libempathy-gtk/gossip-contact-list.c:318
+#, fuzzy
+msgid "_Invite to Chat Room"
+msgstr "Gossip - Edit Chat Kumpulan"
+
+#: ../libempathy-gtk/gossip-contact-list.c:318
+msgid "Invite to a currently open chat room"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-contact-list.c:322
+#, fuzzy
+msgid "_Send File..."
+msgstr "Kirim _Mesej..."
+
+#: ../libempathy-gtk/gossip-contact-list.c:322
+#, fuzzy
+msgid "Send a file"
+msgstr "Kirim _Mesej..."
+
+#: ../libempathy-gtk/gossip-contact-list.c:326
+#, fuzzy
+msgid "View previous conversations with this contact"
+msgstr "Per_bualan"
+
+#: ../libempathy-gtk/gossip-preferences.c:250
+msgid "Language"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:1
+#, fuzzy
+msgid "<b>Appearance</b>"
+msgstr "Penampilan"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:2
+#, fuzzy
+msgid "<b>Audio</b>"
+msgstr "<b>Kegemaran:</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:3
+#, fuzzy
+msgid "<b>Behaviour</b>"
+msgstr "<b>Kegemaran:</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:4
+#, fuzzy
+msgid "<b>Contact List</b>"
+msgstr "Mesej Status"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:5
+msgid "<b>Languages</b>"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:6
+#, fuzzy
+msgid "<b>Options</b>"
+msgstr "Sambung"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:7
+#, fuzzy
+msgid "<b>Visual</b>"
+msgstr "<b>Kegemaran:</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:8
+msgid ""
+"<small>The list of languages reflects only the languages for which you have "
+"a dictionary installed.</small>"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:9
+msgid "Avatars are user chosen images shown in the contact list"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:10
+#, fuzzy
+msgid "Chat Th_eme:"
+msgstr "_Nama chat:"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:11
+msgid "Display notifications when contacts come _online"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:12
+#, fuzzy
+msgid "Enable sounds when _away"
+msgstr "Matikan bunyi ketika _away"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:13
+#, fuzzy
+msgid "Enable sounds when _busy"
+msgstr "Matikan bunyi ketika _sibuk"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:14
+msgid "General"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:15
+#, fuzzy
+msgid "Notifications"
+msgstr "Guna bunyi pemakluman"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:16
+#, fuzzy
+msgid "Preferences"
+msgstr "Ke_utamaan"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:17
+msgid "Show _avatars"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:18
+#, fuzzy
+msgid "Show _smileys as images"
+msgstr "Tukar _smiley ke imej grafik"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:19
+#, fuzzy
+msgid "Show co_mpact contact list"
+msgstr "_Papar Senarai Kenalan"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:20
+msgid "Sort by _name"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:21
+msgid "Sort by s_tate"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:22
+msgid "Spell Checking"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:23
+msgid "Themes"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:24
+msgid "_Enable spell checking"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:25
+msgid "_Open new chats in separate windows"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:26
+#, fuzzy
+msgid "_Play sound when messages arrive"
+msgstr "Mainkan bunyi bila mesej tiba"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:27
+#, fuzzy
+msgid "_Use for chat rooms"
+msgstr "Gossip - Edit Chat Kumpulan"
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:702
+#, fuzzy
+msgid "Custom message..."
+msgstr "Mesej Tersendiri..."
+
+#. Clear list
+#: ../libempathy-gtk/gossip-presence-chooser.c:724
+#, fuzzy
+msgid "Clear List..."
+msgstr "_Edit Kegemaran..."
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:803
+#, fuzzy
+msgid "Are you sure you want to clear the list?"
+msgstr "Adakah anda ingin menerima permintaan?"
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:807
+msgid ""
+"This will remove any custom messages you have added to the list of preset "
+"status messages."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:812
+msgid "Clear List"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-presence-chooser.glade.h:1
+#, fuzzy
+msgid "Enter status message:"
+msgstr "Mesej status:"
+
+#: ../libempathy-gtk/gossip-presence-chooser.glade.h:2
+#, fuzzy
+msgid "Status Message Presets"
+msgstr "Mesej Status"
+
+#: ../libempathy-gtk/gossip-presence-chooser.glade.h:3
+#, fuzzy
+msgid "_Add to status message list"
+msgstr "Mesej status:"
+
+#: ../libempathy-gtk/gossip-private-chat.c:198
+#, c-format
+msgid "%s went offline"
+msgstr "%s telah luartalian"
+
+#: ../libempathy-gtk/gossip-private-chat.c:212
+#, fuzzy, c-format
+msgid "%s has come online"
+msgstr "%s sedang dalamtalian"
+
+#: ../libempathy-gtk/gossip-theme-manager.c:87
+msgid "Classic"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-theme-manager.c:88
+msgid "Simple"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-theme-manager.c:89
+#, fuzzy
+msgid "Clean"
+msgstr "Klien:"
+
+#: ../libempathy-gtk/gossip-theme-manager.c:90
+msgid "Blue"
+msgstr ""
+
+#: ../src/empathy-main.c:145
+msgid "Don't connect on startup"
+msgstr "Jangan sambung pada permulaan"
+
+#: ../src/empathy-main.c:155
+#, fuzzy
+msgid "- Empathy Instant Messenger"
+msgstr "Pesanan Segera"
+
+#, fuzzy
+#~ msgid "Gossip Instant Messenger"
+#~ msgstr "Pesanan Segera"
+
+#, fuzzy
+#~ msgid "Joining"
+#~ msgstr "_Sertai"
+
+#, fuzzy
+#~ msgid "Unknown"
+#~ msgstr "Ralat tidak diketahui"
+
+#, fuzzy
+#~ msgid "No affiliation"
+#~ msgstr "Guna bunyi pemakluman"
+
+#, fuzzy
+#~ msgid "An unknown error occurred, check your details are correct."
+#~ msgstr "Ralat tidak diketahui"
+
+#, fuzzy
+#~ msgid "Unavailable"
+#~ msgstr "Ada"
+
+#, fuzzy
+#~ msgid "An unknown error occurred."
+#~ msgstr "Ralat tidak diketahui"
+
+#, fuzzy
+#~ msgid "Connection refused."
+#~ msgstr "Sambung"
+
+#, fuzzy
+#~ msgid "Connection timed out."
+#~ msgstr "Sambung"
+
+#, fuzzy
+#~ msgid "This feature is unavailable."
+#~ msgstr "Pelayan mungkin kini tidak berfungsi."
+
+#, fuzzy
+#~ msgid "new account"
+#~ msgstr "Akaun Jabber"
+
+#~ msgid "Home"
+#~ msgstr "Rumah"
+
+#, fuzzy
+#~ msgid "This service is unavailable or not found"
+#~ msgstr "Pelayan mungkin kini tidak berfungsi."
+
+#, fuzzy
+#~ msgid "Registration is required"
+#~ msgstr "Mendaftar akaun"
+
+#, fuzzy
+#~ msgid "This feature is not implemented"
+#~ msgstr "Pelayan mungkin kini tidak berfungsi."
+
+#, fuzzy
+#~ msgid "Disconnect"
+#~ msgstr "_Putus"
+
+#~ msgid "Connect"
+#~ msgstr "Sambung"
+
+#, fuzzy
+#~ msgid "Successfully registered your new account settings."
+#~ msgstr "Berjaya mendaftar akaun"
+
+#, fuzzy
+#~ msgid "Failed to register your new account settings."
+#~ msgstr "Gagal mendaftar akaun"
+
+#, fuzzy
+#~ msgid "Successfully changed your account password."
+#~ msgstr "Sila masukkan katalaluan anda:"
+
+#, fuzzy
+#~ msgid "Failed to change your account password."
+#~ msgstr "Sila masukkan katalaluan anda:"
+
+#, fuzzy
+#~ msgid ""
+#~ "Please enter a new password for this account:\n"
+#~ "%s"
+#~ msgstr ""
+#~ "Sila masukkan nama baru bagi kumpulan\n"
+#~ "%s"
+
+#, fuzzy
+#~ msgid "Information requested, please wait..."
+#~ msgstr "<b>Maklumat dipinta, Sila tunggu...</b>"
+
+#~ msgid "I would like to add you to my contact list."
+#~ msgstr "Saya ingin menambah anda ke senarai kenalan saya."
+
+#, fuzzy
+#~ msgid "%d new message"
+#~ msgid_plural "%d new messages"
+#~ msgstr[0] "Kirim _Mesej..."
+#~ msgstr[1] "Kirim _Mesej..."
+
+#, fuzzy
+#~ msgid "%d server message"
+#~ msgid_plural "%d server messages"
+#~ msgstr[0] "Mesej permintaan"
+#~ msgstr[1] "Mesej permintaan"
+
+#, fuzzy
+#~ msgid "Edit Account _Details"
+#~ msgstr "Edit Maklumat Akaun"
+
+#~ msgid "New message from %s"
+#~ msgstr "Mesej baru dari %s"
+
+#, fuzzy
+#~ msgid "Accept"
+#~ msgstr "_Terima"
+
+#, fuzzy
+#~ msgid "Name"
+#~ msgstr "Nama:"
+
+#, fuzzy
+#~ msgid "Room"
+#~ msgstr "_Bilik:"
+
+#, fuzzy
+#~ msgid "Auto Connect"
+#~ msgstr "Sambung"
+
+#, fuzzy
+#~ msgid "Information requested..."
+#~ msgstr "<b>Maklumat dipinta, Sila tunggu...</b>"
+
+#, fuzzy
+#~ msgid "Do you want to remove this contact from your roster?"
+#~ msgstr ""
+#~ "Anda pasti untuk membuang kenalan\n"
+#~ "%s\n"
+#~ " dari senarai kenalan anda?"
+
+#, fuzzy
+#~ msgid ""
+#~ "Please enter a new name for the group:\n"
+#~ "%s"
+#~ msgstr ""
+#~ "Sila masukkan nama baru bagi kumpulan\n"
+#~ "%s"
+
+#~ msgid "Unsorted"
+#~ msgstr "Tidak Diisih"
+
+#, fuzzy
+#~ msgid "Unknown error occurred during file transfer."
+#~ msgstr "Ralat tidak diketahui"
+
+#, fuzzy
+#~ msgid "%s would like to send you a file."
+#~ msgstr "Saya ingin menambah anda ke senarai kenalan saya."
+
+#, fuzzy
+#~ msgid "Someone would like to send you a file."
+#~ msgstr "Saya ingin menambah anda ke senarai kenalan saya."
+
+#, fuzzy
+#~ msgid "Connecting..."
+#~ msgstr "_Sambung"
+
+#, fuzzy
+#~ msgid "Retry connection"
+#~ msgstr "Sambung"
+
+#, fuzzy
+#~ msgid "Enter the new topic you want to set for this room:"
+#~ msgstr "Nama gelaran apa yang anda ingin gunakan bagi kenalan ini?"
+
+#, fuzzy
+#~ msgid "Topic: %s"
+#~ msgstr "_Topik:"
+
+#, fuzzy
+#~ msgid "Account"
+#~ msgstr "Akaun Jabber"
+
+#, fuzzy
+#~ msgid "Conversation With"
+#~ msgstr "Per_bualan"
+
+#~ msgid "List the available accounts"
+#~ msgstr "Senarai akaun yang ada"
+
+#~ msgid "Which account to connect to on startup"
+#~ msgstr "Akaun mana untuk disambung pada permulaan"
+
+#~ msgid "ACCOUNT-NAME"
+#~ msgstr "NAMA-AKAUN"
+
+#~ msgid "Available accounts:"
+#~ msgstr "Akaun yang ada:"
+
+#~ msgid "[default]"
+#~ msgstr "[default]"
+
+#~ msgid "There is no account with the name '%s'."
+#~ msgstr "Tiada akaun dengan nama '%s'."
+
+#, fuzzy
+#~ msgid "Join"
+#~ msgstr "_Sertai"
+
+#, fuzzy
+#~ msgid "Create"
+#~ msgstr "Chat"
+
+#, fuzzy
+#~ msgid "Chat Rooms"
+#~ msgstr "Gossip - Chat"
+
+#, fuzzy
+#~ msgid "Browsing for conference rooms, please wait..."
+#~ msgstr "<b>Maklumat dipinta, Sila tunggu...</b>"
+
+#, fuzzy
+#~ msgid "Default"
+#~ msgstr "[default]"
+
+#, fuzzy
+#~ msgid "Chat!"
+#~ msgstr "Chat"
+
+#, fuzzy
+#~ msgid "%s wants to be added to your contact list."
+#~ msgstr "%s akan ditambah ke senarai kenalan anda."
+
+#, fuzzy
+#~ msgid "Someone wants to be added to your contact list."
+#~ msgstr "%s akan ditambah ke senarai kenalan anda."
+
+#, fuzzy
+#~ msgid "Subscription request"
+#~ msgstr "Menghantar permintaan"
+
+#, fuzzy
+#~ msgid "Contact Information"
+#~ msgstr "_Maklumat Kenalan"
+
+#, fuzzy
+#~ msgid "Do you want to add this person to your contact list?"
+#~ msgstr ""
+#~ "Anda pasti untuk membuang kenalan\n"
+#~ "%s\n"
+#~ " dari senarai kenalan anda?"
+
+#, fuzzy
+#~ msgid "Do you want to add %s to your contact list?"
+#~ msgstr ""
+#~ "Anda pasti untuk membuang kenalan\n"
+#~ "%s\n"
+#~ " dari senarai kenalan anda?"
+
+#, fuzzy
+#~ msgid "Please enter your %s account password"
+#~ msgstr "Sila masukkan katalaluan anda:"
+
+#~ msgid "Remember Password?"
+#~ msgstr "Ingat katalaluan?"
+
+#, fuzzy
+#~ msgid "Change"
+#~ msgstr "Chat"
+
+#, fuzzy
+#~ msgid "Contact goes online"
+#~ msgstr "%s sedang dalamtalian"
+
+#, fuzzy
+#~ msgid "Do you want to accept this file?"
+#~ msgstr "Adakah anda ingin menerima permintaan?"
+
+#, fuzzy
+#~ msgid "File name:"
+#~ msgstr "Nama _pengguna:"
+
+#, fuzzy
+#~ msgid "File size:"
+#~ msgstr "Tapak Web:"
+
+#~ msgid "Web site:"
+#~ msgstr "Tapak Web:"
+
+#~ msgid "_Accept"
+#~ msgstr "_Terima"
+
+#~ msgid "_Deny"
+#~ msgstr "_Dinafikan"
+
+#, fuzzy
+#~ msgid "<b>Topic:</b>"
+#~ msgstr "<b>Kegemaran:</b>"
+
+#, fuzzy
+#~ msgid "Account:"
+#~ msgstr "Akaun Jabber"
+
+#, fuzzy
+#~ msgid "Edit Favorite Room"
+#~ msgstr "Gossip - Edit Chat Kumpulan"
+
+#, fuzzy
+#~ msgid "Group Chat"
+#~ msgstr "Gossip - Chat"
+
+#, fuzzy
+#~ msgid "Join New"
+#~ msgstr "_Sertai"
+
+#, fuzzy
+#~ msgid "Join room on start_up"
+#~ msgstr "Jangan sambung pada permulaan"
+
+#, fuzzy
+#~ msgid "N_ame:"
+#~ msgstr "Nama:"
+
+#, fuzzy
+#~ msgid "S_erver:"
+#~ msgstr "Pelayan:"
+
+#~ msgid "_Nickname:"
+#~ msgstr "_Gelaran:"
+
+#~ msgid "_Room:"
+#~ msgstr "_Bilik:"
+
+#, fuzzy
+#~ msgid "<b>About</b>"
+#~ msgstr "<b>Kegemaran:</b>"
+
+#, fuzzy
+#~ msgid "<b>Client Information</b>"
+#~ msgstr "Maklumat klien"
+
+#, fuzzy
+#~ msgid "<b>Groups</b>"
+#~ msgstr "<b>Kegemaran:</b>"
+
+#, fuzzy
+#~ msgid "<b>Name</b>"
+#~ msgstr "Mesej Status"
+
+#, fuzzy
+#~ msgid "<b>Personal Details</b>"
+#~ msgstr "<b>Tetapan Akaun</b>"
+
+#, fuzzy
+#~ msgid "<b>Subscription</b>"
+#~ msgstr "Sambung"
+
+#, fuzzy
+#~ msgid "<span size=\"smaller\">Example: Mikael or user@server.org</span>"
+#~ msgstr "<span size=\"smaller\">Contoh: sebol@jabber.org</span>"
+
+#, fuzzy
+#~ msgid "Accou_nt:"
+#~ msgstr "Akaun Jabber"
+
+#, fuzzy
+#~ msgid "Add Contact"
+#~ msgstr "_Tambah Kenalan..."
+
+#, fuzzy
+#~ msgid "Ch_at"
+#~ msgstr "Chat"
+
+#~ msgid "Client:"
+#~ msgstr "Klien:"
+
+#, fuzzy
+#~ msgid "Con_tact:"
+#~ msgstr "_Tambah Kenalan..."
+
+#, fuzzy
+#~ msgid "Connect on S_tartup"
+#~ msgstr "Jangan sambung pada permulaan"
+
+#, fuzzy
+#~ msgid "Contacts"
+#~ msgstr "_Tambah Kenalan..."
+
+#~ msgid "Country:"
+#~ msgstr "Negara:"
+
+#, fuzzy
+#~ msgid "Edit Contact"
+#~ msgstr "_Tambah Kenalan..."
+
+#, fuzzy
+#~ msgid "Edit Groups"
+#~ msgstr "Gossip - Edit Chat Kumpulan"
+
+#~ msgid "Email:"
+#~ msgstr "Emel:"
+
+#, fuzzy
+#~ msgid "ID:"
+#~ msgstr "JID"
+
+#~ msgid "Name:"
+#~ msgstr "Nama:"
+
+#~ msgid "OS:"
+#~ msgstr "OS:"
+
+#, fuzzy
+#~ msgid "Personal Details"
+#~ msgstr "<b>Tetapan Akaun</b>"
+
+#, fuzzy
+#~ msgid "R_egister"
+#~ msgstr "_Daftar..."
+
+#, fuzzy
+#~ msgid "Search"
+#~ msgstr "_Cari:"
+
+#, fuzzy
+#~ msgid "Spell Checker"
+#~ msgstr "Gossip - Kirim Mesej"
+
+#, fuzzy
+#~ msgid "This is the name that will be used on your roster for this contact"
+#~ msgstr "Nama gelaran apa yang anda ingin gunakan bagi kenalan ini?"
+
+#~ msgid "Version:"
+#~ msgstr "Versi:"
+
+#, fuzzy
+#~ msgid "View Previous Conversations"
+#~ msgstr "Per_bualan"
+
+#, fuzzy
+#~ msgid "Which account do you want to use?"
+#~ msgstr "Apakah namapengguna anda ingin gunakan?"
+
+#, fuzzy
+#~ msgid "_Connect"
+#~ msgstr "Sambung"
+
+#, fuzzy
+#~ msgid "_Description:"
+#~ msgstr "Keterangan"
+
+#~ msgid "_Disconnect"
+#~ msgstr "_Putus"
+
+#, fuzzy
+#~ msgid "_Email:"
+#~ msgstr "Emel:"
+
+#, fuzzy
+#~ msgid ""
+#~ "_Enter the name or contact ID of the person you want to chat to below:"
+#~ msgstr "Masukka ID pengguna bagi orang yang anda ingin kirim mesej chat."
+
+#, fuzzy
+#~ msgid "_For:"
+#~ msgstr "_Liang:"
+
+#, fuzzy
+#~ msgid "_Full Name:"
+#~ msgstr "Nama:"
+
+#, fuzzy
+#~ msgid "_Group:"
+#~ msgstr "Gossip - Chat"
+
+#, fuzzy
+#~ msgid "_Nick Name:"
+#~ msgstr "_Gelaran:"
+
+#, fuzzy
+#~ msgid "_Password:"
+#~ msgstr "_Katalaluan:"
+
+#, fuzzy
+#~ msgid "_Quit Message:"
+#~ msgstr "Mesej _Status"
+
+#, fuzzy
+#~ msgid "_Retrieve"
+#~ msgstr "_Buang"
+
+#, fuzzy
+#~ msgid "_Web site:"
+#~ msgstr "Tapak Web:"
+
+#, fuzzy
+#~ msgid "Preset status messages"
+#~ msgstr "Mesej status:"
+
+#, fuzzy
+#~ msgid "Preset status messages."
+#~ msgstr "Mesej status:"
+
+#, fuzzy
+#~ msgid "Connecting"
+#~ msgstr "Sambung"
+
+#~ msgid "%s will be added to your contact list."
+#~ msgstr "%s akan ditambah ke senarai kenalan anda."
+
+#, fuzzy
+#~ msgid "%s ID of new contact:"
+#~ msgstr "ID _Jabber bagi kenalan baru:"
+
+#, fuzzy
+#~ msgid ""
+#~ "Please enter your invitation message to:\n"
+#~ "%s"
+#~ msgstr "Sila masukkan katalaluan anda:"
+
+#~ msgid "Contact Information for %s"
+#~ msgstr "Maklumat Kenalan bagi %s"
+
+#, fuzzy
+#~ msgid "/Contact Infor_mation"
+#~ msgstr "/_Maklumat Kenalan"
+
+#, fuzzy
+#~ msgid "/Re_name Contact"
+#~ msgstr "/_Tukarnama kenalan"
+
+#, fuzzy
+#~ msgid "/_Edit Groups"
+#~ msgstr "Gossip - Edit Chat Kumpulan"
+
+#, fuzzy
+#~ msgid "/_View Previous Conversations"
+#~ msgstr "Per_bualan"
+
+#~ msgid ""
+#~ "Please enter a new nickname for the contact\n"
+#~ "%s"
+#~ msgstr ""
+#~ "Sila masukkan gelaran baru bagi kenalan\n"
+#~ " %s"
+
+#~ msgid "Conversation Log"
+#~ msgstr "Log Perbualan"
+
+#~ msgid "Registering account"
+#~ msgstr "Mendaftar akaun"
+
+#, fuzzy
+#~ msgid "Respond"
+#~ msgstr "Sebab:"
+
+#, fuzzy
+#~ msgid "Add to _favourites"
+#~ msgstr "_Edit Kegemaran..."
+
+#, fuzzy
+#~ msgid "Na_me:"
+#~ msgstr "Nama:"
+
+#, fuzzy
+#~ msgid "New Chat Room"
+#~ msgstr "Gossip - Chat"
+
+#~ msgid " "
+#~ msgstr " "
+
+#, fuzzy
+#~ msgid "<b>Information requested, please wait...</b>"
+#~ msgstr "<b>Maklumat dipinta, Sila tunggu...</b>"
+
+#, fuzzy
+#~ msgid "<span size=\"smaller\">Example:</span>"
+#~ msgstr "<span size=\"smaller\">Contoh: sebol@jabber.org</span>"
+
+#, fuzzy
+#~ msgid "Chat Rooms..."
+#~ msgstr "Gossip - Chat"
+
+#, fuzzy
+#~ msgid "Do you already have an account set up on a server?"
+#~ msgstr "Adakah anda sudah mempunyai akaun pada pelayan Jabber?"
+
+#, fuzzy
+#~ msgid "Enter the port used in the connection for this account"
+#~ msgstr ""
+#~ "Sila masukkan gelaran baru bagi kenalan\n"
+#~ " %s"
+
+#, fuzzy
+#~ msgid "Enter the server used in the connection for this account"
+#~ msgstr ""
+#~ "Sila masukkan gelaran baru bagi kenalan\n"
+#~ " %s"
+
+#, fuzzy
+#~ msgid "Finished"
+#~ msgstr "Tetapan Selesai"
+
+#~ msgid "Gossip"
+#~ msgstr "Gossip"
+
+#~ msgid ""
+#~ "Gossip is a modern client for the Jabber Instant Messaging system.\n"
+#~ "\n"
+#~ "This assistant will help you configure Gossip and connect you to your "
+#~ "favorite Jabber server.\n"
+#~ "\n"
+#~ "To get started, just click \"Forward\"."
+#~ msgstr ""
+#~ "Gossip adalah klien moden bagi sistem Pesanan Segera Jabber.\n"
+#~ "\n"
+#~ "Pembantu ini akan membantu anda mengkonfigurasikan Gossip dan sambungkan "
+#~ "anda ke pelayan Jabber kegemaran anda.\n"
+#~ "\n"
+#~ "Untuk bermula, hanya klik \"Maju\"."
+
+#~ msgid "In which group do you want to place this contact?"
+#~ msgstr "Dalam kumpulan mana anda ingin letak kenalan ini?"
+
+#~ msgid "Jabber ID:"
+#~ msgstr "ID Jabber:"
+
+#, fuzzy
+#~ msgid "Nickname:"
+#~ msgstr "_Gelaran:"
+
+#, fuzzy
+#~ msgid "Port:"
+#~ msgstr "_Liang:"
+
+#, fuzzy
+#~ msgid "Registering Account"
+#~ msgstr "Mendaftar akaun"
+
+#, fuzzy
+#~ msgid "Resource:"
+#~ msgstr "_Sumber:"
+
+#~ msgid "Server:"
+#~ msgstr "Pelayan:"
+
+#, fuzzy
+#~ msgid "Web Site:"
+#~ msgstr "Tapak Web:"
+
+#~ msgid "Welcome to Gossip"
+#~ msgstr "Selamat Datang ke Gossip"
+
+#~ msgid "What instant messaging system does the contact use?"
+#~ msgstr "Apa sistem pesanan segera yang anda gunakan yg kenalan ini gunakan?"
+
+#~ msgid "What is your name?"
+#~ msgstr "Apakah nama anda?"
+
+#, fuzzy
+#~ msgid "What password do you want to use?"
+#~ msgstr "Apakah pelayan anda ingin gunakan?"
+
+#~ msgid "What username do you use?"
+#~ msgstr "Apakah namapengguna anda gunakan?"
+
+#~ msgid "What username do you want to use?"
+#~ msgstr "Apakah namapengguna anda ingin gunakan?"
+
+#, fuzzy
+#~ msgid "Which account do you want to add this contact to?"
+#~ msgstr "Dalam kumpulan mana anda ingin letak kenalan ini?"
+
+#, fuzzy
+#~ msgid ""
+#~ "You can change your account settings later by selecting the Edit-"
+#~ ">Accounts menu item."
+#~ msgstr ""
+#~ "Gossip kini dikonfigurasikan untuk sistem anda.\n"
+#~ "Anda boleh menukar tetapan akaun anda kemudian hari, dengan memilih item "
+#~ "menu Chat->Sambung... ."
+
+#, fuzzy
+#~ msgid "Your Account"
+#~ msgstr "Akaun Jabber"
+
+#~ msgid "Your Identity"
+#~ msgstr "Indentiti Anda"
+
+#, fuzzy
+#~ msgid "_No"
+#~ msgstr "Tidak"
+
+#~ msgid "_Search..."
+#~ msgstr "_Cari:"
+
+#, fuzzy
+#~ msgid "_Yes"
+#~ msgstr "Ya"
+
+#~ msgid "Be silent when away"
+#~ msgstr "Senyap bila away"
+
+#~ msgid "Be silent when busy"
+#~ msgstr "Senyap bila sibuk"
+
+#~ msgid "Height of main window"
+#~ msgstr "Tinggi tetingkap utama"
+
+#, fuzzy
+#~ msgid "The X position of the main window."
+#~ msgstr "Lebar bagi tetingkap utama."
+
+#, fuzzy
+#~ msgid "The Y position of the main window."
+#~ msgstr "Lebar bagi tetingkap utama."
+
+#~ msgid "The width of the main window."
+#~ msgstr "Lebar bagi tetingkap utama."
+
+#, fuzzy
+#~ msgid "Width of the main window"
+#~ msgstr "Lebar bagi tetingkap utama"
+
+#, fuzzy
+#~ msgid "X position of main window"
+#~ msgstr "Lebar bagi tetingkap utama"
+
+#, fuzzy
+#~ msgid "Y position of main window"
+#~ msgstr "Lebar bagi tetingkap utama"
+
+#, fuzzy
+#~ msgid "Gossip, Instant Messaging Client"
+#~ msgstr "Klien Jabber bagi GNOME"
+
+#, fuzzy
+#~ msgid "Close this chat window"
+#~ msgstr "Lebar bagi tetingkap utama"
+
+#, fuzzy
+#~ msgid "Requested Information"
+#~ msgstr "Maklumat _Akaun"
+
+#, fuzzy
+#~ msgid "Send Message"
+#~ msgstr "Mesej Status"
+
+#, fuzzy
+#~ msgid "%s has gone offline"
+#~ msgstr "%s telah luartalian"
+
+#, fuzzy
+#~ msgid "Available..."
+#~ msgstr "Ada"
+
+#, fuzzy
+#~ msgid "Busy..."
+#~ msgstr "Sibuk"
+
+#, fuzzy
+#~ msgid "Away..."
+#~ msgstr "Away"
+
+#~ msgid "Contact _Information"
+#~ msgstr "_Maklumat Kenalan"
+
+#, fuzzy
+#~ msgid "Gossip - Accounts"
+#~ msgstr "Gossip - Chat Kumpulan"
+
+#, fuzzy
+#~ msgid "Join _Group Chat..."
+#~ msgstr " _Sertai Chat Kumpulan..."
+
+#, fuzzy
+#~ msgid "Por_t:"
+#~ msgstr "_Liang:"
+
+#, fuzzy
+#~ msgid "Requested information."
+#~ msgstr "Maklumat klien"
+
+#, fuzzy
+#~ msgid "Could not find the server you wanted to use"
+#~ msgstr "Apakah pelayan anda ingin gunakan?"
+
+#, fuzzy
+#~ msgid "Connection to the server failed."
+#~ msgstr "<b>Sambung ke pelayan</b>"
+
+#, fuzzy
+#~ msgid "Account ID"
+#~ msgstr "Maklumat _Akaun"
+
+#~ msgid "%sChat - %s"
+#~ msgstr "%sChat - %s"
+
+#~ msgid "/Show _Log"
+#~ msgstr "/Papar log"
+
+#, fuzzy
+#~ msgid "Persian"
+#~ msgstr "Versi:"
+
+#, fuzzy
+#~ msgid "Latvian"
+#~ msgstr "Makan"
+
+#, fuzzy
+#~ msgid "View Lo_g"
+#~ msgstr "Lo_g"
+
+#~ msgid "Gossip - Group Chat"
+#~ msgstr "Gossip - Chat Kumpulan"
+
+#, fuzzy
+#~ msgid "Gossip - Add contact"
+#~ msgstr "Tambah kenalan"
+
+#, fuzzy
+#~ msgid "Gossip - Contact Information"
+#~ msgstr "_Maklumat Kenalan"
+
+#, fuzzy
+#~ msgid "Gossip - Edit Groups"
+#~ msgstr "Gossip - Edit Chat Kumpulan"
+
+#, fuzzy
+#~ msgid "Gossip - New Account"
+#~ msgstr "Gossip - Chat Kumpulan"
+
+#, fuzzy
+#~ msgid "Gossip - New Message"
+#~ msgstr "Gossip - Kirim Mesej"
+
+#, fuzzy
+#~ msgid "Gossip - Personal Details"
+#~ msgstr "Gossip - Kirim Mesej"
+
+#, fuzzy
+#~ msgid "Gossip - Preferences"
+#~ msgstr "Keutamaan"
+
+#, fuzzy
+#~ msgid "Gossip - Status Message"
+#~ msgstr "Gossip - Kirim Mesej"
+
+#~ msgid "What request message do you want to send to %s?"
+#~ msgstr "Mesej permintaan apa yang anda ingin kirim ke %s?"
+
+#~ msgid "Make sure that your account information is correct."
+#~ msgstr "Pastikan maklumat akaun anda betul"
+
+#~ msgid "%s wants to be notified of your presence."
+#~ msgstr "%s ingin dimaklumkan dengan kehadiran anda"
+
+#~ msgid "You were disconnected from the server. Do you want to reconnect?"
+#~ msgstr "Anda diputuskan drpd pelayan. Adakah anda ingin ulangsambung?"
+
+#, fuzzy
+#~ msgid ""
+#~ "Make sure that your account information is correct. The server may also "
+#~ "currently be unavailable."
+#~ msgstr "Pastikan maklumat akaun anda betul"
+
+#~ msgid "An error occurred when chatting with %s."
+#~ msgstr "Ralat berlaku bila berchat dengan %s."
+
+#~ msgid "Details:"
+#~ msgstr "Perincian:"
+
+#~ msgid "Unable to enter the group chat %s."
+#~ msgstr "Tak dapat masuk ke chat kumpulan %s."
+
+#~ msgid "Gossip will now try to use your account:"
+#~ msgstr "Gossip kini akan cuba menggunakan akaun anda:"
+
+#~ msgid "Gossip will now try to register the account:"
+#~ msgstr "Gossip kini akan cuba mendaftarkan akaun:"
+
+#~ msgid "*"
+#~ msgstr "*"
+
+#~ msgid "From:"
+#~ msgstr "Dari:"
+
+#~ msgid "Gossip - Received Message"
+#~ msgstr "Gossip - Mesej Diterima"
+
+#~ msgid "To:"
+#~ msgstr "Ke:"
+
+#~ msgid "_Reply..."
+#~ msgstr "_Balas..."
+
+#~ msgid "_Send"
+#~ msgstr "_Kirim"
+
+#~ msgid "C_onnect"
+#~ msgstr "_Sambung"
+
+#~ msgid " "
+#~ msgstr " "
+
+#~ msgid "<b>Available chat rooms</b>"
+#~ msgstr "<b>Bilik chat yang ada</b>"
+
+#~ msgid "<b>Chat room information</b>"
+#~ msgstr "<b>Maklumat bilik chat</b>"
+
+#~ msgid "Gossip - Join Group Chat"
+#~ msgstr "Gossip - Sertai Chat Kumpulan"
+
+#~ msgid "N_ickname:"
+#~ msgstr "_Gelaran:"
+
+#~ msgid ""
+#~ "Pick a favorite, or enter nickname, server name, and the name of the chat "
+#~ "room to enter."
+#~ msgstr ""
+#~ "Pilih kegemaran, atau masukkan nama gelaran, nama pelayan, dan nama bagi "
+#~ "bilik chat untuk dimasuki."
+
+#~ msgid "R_emove"
+#~ msgstr "_Buang"
+
+#~ msgid "_Add"
+#~ msgstr "_Tambah"
+
+#~ msgid " "
+#~ msgstr " "
+
+#~ msgid "<i>Information not available</i>"
+#~ msgstr "<i>Maklumat tidak ada</i>"
+
+#~ msgid "Choose a Server"
+#~ msgstr "Pilih Pelayan"
+
+#~ msgid "Choose from list:"
+#~ msgstr "Pilih dari senarai:"
+
+#~ msgid "Information about ..."
+#~ msgstr "Maklumat perihal ...."
+
+#~ msgid "Jabber.com"
+#~ msgstr "Jabber.com"
+
+#~ msgid "Jabber.org"
+#~ msgstr "Jabber.org"
+
+#~ msgid "On what server do you have a Jabber account?"
+#~ msgstr "Pada pelayan apa yg anda mempunyai akaun jabber?"
+
+#~ msgid "Sound"
+#~ msgstr "Bunyi"
+
+#~ msgid "Use a different server"
+#~ msgstr "Guna pengenkodan lain"
+
+#~ msgid "What request message do you want to send to ...?"
+#~ msgstr "Mesej permintaan apa yang anda ingin kirim ..?"
+
+#, fuzzy
+#~ msgid "About Gossip"
+#~ msgstr "Gossip"
+
+#, fuzzy
+#~ msgid "translator_credits_old"
+#~ msgstr ""
+#~ "Khairulanuar Abd Majid <khairul@ikhlas.com>\n"
+#~ "Hasbullah Bin Pit <sebol@ikhlas.com>, Merlimau."
+
+#~ msgid "Gossip Website"
+#~ msgstr "Tapak Web Gossip"
+
+#~ msgid "Gossip, Jabber Client"
+#~ msgstr "Gossip, Klien Jabber"
+
+#~ msgid "About to leave..."
+#~ msgstr "Akan keluar..."
+
+#~ msgid "Autoaway message"
+#~ msgstr "Mesej auto away"
+
+#~ msgid "Away messages"
+#~ msgstr "Mesej away"
+
+#~ msgid "Message to show before going away"
+#~ msgstr "Mesej untuk dipapar sebelum away"
+
+#~ msgid "Not at the computer"
+#~ msgstr "Tiada di sisi komputer"
+
+#~ msgid "Just about to leave..."
+#~ msgstr "Baru nak keluar..."
+
+#~ msgid "Custom Busy Message..."
+#~ msgstr "Mesej Sibuk Tersendiri..."
+
+#~ msgid "Leave..."
+#~ msgstr "Keluar..."
+
+#~ msgid "New Busy Message"
+#~ msgstr "Mesej Sibuk Baru"
+
+#~ msgid "New Away Message"
+#~ msgstr "Mesej Away Baru"
+
+#~ msgid "Working"
+#~ msgstr "Bekerja"
+
+#~ msgid "Sleeping"
+#~ msgstr "Tidur"
+
+#~ msgid "Enter the new message:"
+#~ msgstr "Masukkan mesej baru:"
+
+#~ msgid "Leave"
+#~ msgstr "Keluar"
+
+#~ msgid "Preset messages for quickly setting away status."
+#~ msgstr "Mesej preset bagi penetapan cepat status away."
+
+#~ msgid "Preset messages for quickly setting busy status."
+#~ msgstr "Mesej preset bagi penetapan cepat status sibuk"
+
+#~ msgid "Reason for being busy:"
+#~ msgstr "Alasan menjadi sibuk:"
+
+#~ msgid "Reason for leaving:"
+#~ msgstr "Alasan keluar:"
diff --git a/gnome-2-22/po/nb.po b/gnome-2-22/po/nb.po
new file mode 100644
index 000000000..3a437dde1
--- /dev/null
+++ b/gnome-2-22/po/nb.po
@@ -0,0 +1,1399 @@
+# Norwegian (bokmål) translation of empathy.
+# Copyright © 2003-2005 Free Software Foundation, Inc.
+# Kjartan Maraas <kmaraas@gnome.org>, 2003-2008.
+# Sigurd Gartmann <sigurdga@yahoo-inc.com>, 2005, 2006.
+msgid ""
+msgstr ""
+"Project-Id-Version: empathy 0.21.x\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-12-19 14:31+0100\n"
+"PO-Revision-Date: 2008-01-03 21:12+0100\n"
+"Last-Translator: Kjartan Maraas <kmaraas@gnome.org>\n"
+"Language-Team: Norwegian <i18n-nb@lister.ping.uio.no>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: ../data/empathy.desktop.in.in.h:1
+msgid "Empathy Instant Messenger"
+msgstr "Empathy lynmelder"
+
+#: ../data/empathy.desktop.in.in.h:2
+msgid "Send and receive instant messages"
+msgstr "Send og motta lynmeldinger"
+
+#: ../data/empathy.schemas.in.h:1
+msgid "Always open a separate chat window for new chats."
+msgstr "Alltid åpne et eget vindu til nye samtaler."
+
+#: ../data/empathy.schemas.in.h:2
+msgid ""
+"Character to add after nickname when using nick completion (tab) in group "
+"chat."
+msgstr "Tegn som skal legges til etter kallenavn når fullføring av kallenavn med tabulator benyttes i gruppeprat."
+
+#: ../data/empathy.schemas.in.h:3
+msgid "Chat window theme"
+msgstr "Tema for samtalevindu"
+
+#: ../data/empathy.schemas.in.h:4
+msgid "Checks if NetworkManager should be used"
+msgstr "Sjekker om NetworkManager skal brukes"
+
+#: ../data/empathy.schemas.in.h:5
+msgid "Checks if Salut account is created"
+msgstr "Sjekker om Salut-konto er opprettet"
+
+#: ../data/empathy.schemas.in.h:6
+msgid ""
+"Comma separated list of spell checker languages to use (e.g. en, fr, nl)."
+msgstr ""
+"Kommaseparert liste over stavekontrollspråk som skal brukes (f.eks no, en, "
+"fr, nl)."
+
+#: ../data/empathy.schemas.in.h:7
+msgid "Compact contact list"
+msgstr "Kompakt kontaktliste"
+
+#: ../data/empathy.schemas.in.h:8
+msgid "Contact list sort criterium"
+msgstr "Sorteringskriterier for kontaktliste"
+
+#: ../data/empathy.schemas.in.h:9
+msgid "Default directory to select an avatar image from"
+msgstr "Forvalgt mappe for personbilde"
+
+#: ../data/empathy.schemas.in.h:10
+msgid "Enable popup when contact is available"
+msgstr "Vis oppsprettmeldinger for kontakter som blir tilgjengelige"
+
+#: ../data/empathy.schemas.in.h:11
+msgid "Enable sound when away"
+msgstr "Spill av lyd når du er borte"
+
+#: ../data/empathy.schemas.in.h:12
+msgid "Enable sound when busy"
+msgstr "Slå av lyder når du er _opptatt"
+
+#: ../data/empathy.schemas.in.h:13
+msgid "Enable spell checker"
+msgstr "Bruk stavekontroll"
+
+#: ../data/empathy.schemas.in.h:14
+msgid "Hide main window"
+msgstr "Skjul hovedvinduet"
+
+#: ../data/empathy.schemas.in.h:15
+msgid "Hide the main window."
+msgstr "Skjul hovedvinduet."
+
+#: ../data/empathy.schemas.in.h:16
+msgid "Nick completed character"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:17
+msgid "Open new chats in separate windows"
+msgstr "Åpne nye samtaler i egne vinduer"
+
+#: ../data/empathy.schemas.in.h:18
+msgid "Show avatars"
+msgstr "Vis personbilder"
+
+#: ../data/empathy.schemas.in.h:19
+msgid "Show hint about closing the main window"
+msgstr "Vis hint om lukking av hovedvinduet"
+
+#: ../data/empathy.schemas.in.h:20
+msgid "Show offline contacts"
+msgstr "Vis frakoblede kontakter"
+
+#: ../data/empathy.schemas.in.h:21
+msgid "Spell checking languages"
+msgstr "Stavekontrollspråk"
+
+#: ../data/empathy.schemas.in.h:22
+msgid "The last directory that an avatar image was chosen from."
+msgstr "Den forrige mappen et personbilde ble valgt fra."
+
+#: ../data/empathy.schemas.in.h:23
+msgid "The theme that is used to display the conversation in chat windows."
+msgstr "Temaet som brukes til å vise samtaler."
+
+#: ../data/empathy.schemas.in.h:24
+msgid "Use graphical smileys"
+msgstr "Vis smilefjes grafisk"
+
+#: ../data/empathy.schemas.in.h:25
+msgid "Use notification sounds"
+msgstr "Bruk varslingslyder"
+
+#: ../data/empathy.schemas.in.h:26
+msgid "Use theme for chat rooms"
+msgstr "Bruk tema for samtalerom"
+
+#: ../data/empathy.schemas.in.h:27
+msgid ""
+"Whether or not the Salut account has been created on the first empathy run."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:28
+msgid ""
+"Whether or not the network manager should be used to automatically "
+"disconnect/reconnect."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:29
+msgid ""
+"Whether or not to check words typed against the languages you want to check "
+"with."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:30
+msgid ""
+"Whether or not to convert smileys into graphical images in conversations."
+msgstr "Om smilefjes skal konverteres til grafikk i samtaler."
+
+#: ../data/empathy.schemas.in.h:31
+msgid "Whether or not to play a sound when messages arrive."
+msgstr "Om lyder skal spilles av når meldinger kommer inn."
+
+#: ../data/empathy.schemas.in.h:32
+msgid "Whether or not to play sounds when away."
+msgstr "Om lyder skal spilles av når borte."
+
+#: ../data/empathy.schemas.in.h:33
+msgid "Whether or not to play sounds when busy."
+msgstr "Om lyder skal spilles av når opptatt."
+
+#: ../data/empathy.schemas.in.h:34
+msgid "Whether or not to show a popup when a contact becomes available."
+msgstr "Om det skal informeres om at kontakter blir tilgjengelige."
+
+#: ../data/empathy.schemas.in.h:35
+msgid ""
+"Whether or not to show avatars for contacts in the contact list and chat "
+"windows."
+msgstr "Om bilder av kontakter skal vises i kontaktlisten og samtalevinduer."
+
+#: ../data/empathy.schemas.in.h:36
+msgid "Whether or not to show contacts that are offline in the contact list."
+msgstr "Om kontakter som er frakoblet skal vises i kontaktlisten."
+
+#: ../data/empathy.schemas.in.h:37
+msgid ""
+"Whether or not to show the message dialog about closing the main window with "
+"the 'x' button in the title bar."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:38
+msgid "Whether to show the contact list in compact mode or not."
+msgstr "Om kontaktlisten skal vises i kompakt modus."
+
+#: ../data/empathy.schemas.in.h:39
+msgid "Whether to use the theme for chat rooms or not."
+msgstr "Om tema skal brukes for praterom eller ikke."
+
+#: ../data/empathy.schemas.in.h:40
+msgid ""
+"Which criterium to use when sorting the contact list. Default is to use sort "
+"by the contact's name with the value \"name\". A value of \"state\" will "
+"sort the contact list by state."
+msgstr ""
+
+#: ../libempathy/empathy-presence.c:185 ../libempathy/empathy-presence.c:285
+msgid "Offline"
+msgstr "Frakoblet"
+
+#: ../libempathy/empathy-presence.c:275
+msgid "Available"
+msgstr "Tilgjengelig"
+
+#: ../libempathy/empathy-presence.c:277
+msgid "Busy"
+msgstr "Opptatt"
+
+#: ../libempathy/empathy-presence.c:280
+msgid "Away"
+msgstr "Borte"
+
+#: ../libempathy/empathy-presence.c:282
+msgid "Hidden"
+msgstr "Skjult"
+
+#: ../libempathy/empathy-tp-contact-list.c:729 ../src/empathy.c:152
+msgid "People nearby"
+msgstr "Personer i nærheten"
+
+#: ../libempathy-gtk/empathy-about-dialog.c:63
+msgid ""
+"Empathy is free software; you can redistribute it and/or modify it under the "
+"terms of the GNU General Public License as published by the Free Software "
+"Foundation; either version 2 of the License, or (at your option) any later "
+"version."
+msgstr ""
+"Empathy er fri programvare. Du kan redistribuere og/eller endre programmet "
+"under betingelsene gitt i GNU General Public License som utgitt av Free "
+"Software Foundation; enten versjon 2 av lisensen, eller (hvis du ønsker det) "
+"enhver senere versjon."
+
+#: ../libempathy-gtk/empathy-about-dialog.c:67
+msgid ""
+"Empathy is distributed in the hope that it will be useful, but WITHOUT ANY "
+"WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS "
+"FOR A PARTICULAR PURPOSE. See the GNU General Public License for more "
+"details."
+msgstr ""
+"Empathy distribueres i håp om at programmet er nyttig, men UTEN NOEN "
+"GARANTI, ikke engang implisitt garanti om at det er SALGBART eller PASSER ET "
+"BESTEMT FORMÅL. Se GNU General Public License for detaljer."
+
+#: ../libempathy-gtk/empathy-about-dialog.c:71
+msgid ""
+"You should have received a copy of the GNU General Public License along with "
+"Empathy; if not, write to the Free Software Foundation, Inc., 51 Franklin "
+"Street, Fifth Floor, Boston, MA 02110-130159 USA"
+msgstr ""
+"Du skal ha mottatt en kopi av GNU General Public License sammen med Empathy. "
+"Hvis ikke så skriv til Free Software Foundation, Inc., 51 Franklin Street, "
+"Fifth Floor, Boston, MA 02110-1301159, USA."
+
+#: ../libempathy-gtk/empathy-about-dialog.c:99
+msgid "An Instant Messaging client for GNOME"
+msgstr "En meldingsklient for GNOME"
+
+#: ../libempathy-gtk/empathy-about-dialog.c:105
+msgid "translator-credits"
+msgstr ""
+"Kjartan Maraas\n"
+"Sigurd Gartmann\n"
+"Espen Stefansen"
+
+#: ../libempathy-gtk/empathy-account-chooser.c:337
+msgid "All"
+msgstr "Alle"
+
+#: ../libempathy-gtk/empathy-account-widget-generic.c:146
+#: ../libempathy-gtk/empathy-account-widget-generic.c:208
+#, c-format
+msgid "%s:"
+msgstr "%s:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:1
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:1
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:1
+msgid "<b>Advanced</b>"
+msgstr "<b>Avansert</b>"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:2
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:2
+msgid "Forget password and clear the entry."
+msgstr "Glem passord og tøm oppføringen."
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:3
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:3
+msgid "Login I_D:"
+msgstr "InnloggingsI_D:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:4
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:4
+msgid "Pass_word:"
+msgstr "_Passord:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:5
+msgid "Priority:"
+msgstr "Prioritet:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:6
+msgid "Reso_urce:"
+msgstr "_Ressurs:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:7
+msgid "Use encryption (SS_L)"
+msgstr "Bruk kryptering (SS_L)"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:8
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:5
+msgid "_Port:"
+msgstr "_Port:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:9
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:6
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:10
+msgid "_Server:"
+msgstr "_Tjener:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:10
+msgid "jabber account settings"
+msgstr "innstillinger for jabber-konto"
+
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:7
+msgid "msn account settings"
+msgstr "innstillinger for msn-konto"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:2
+msgid "_E-mail:"
+msgstr "_E-post:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:3
+msgid "_First Name: "
+msgstr "_Fornavn:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:4
+msgid "_Jabber ID:"
+msgstr "_Jabber-ID:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:5
+msgid "_Last Name:"
+msgstr "_Etternavn:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:6
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:8
+msgid "_Nickname:"
+msgstr "Kalle_navn:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:7
+msgid "_Published Name:"
+msgstr "_Publisert navn:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:8
+msgid "salut account settings"
+msgstr "innstillinger for salut-konto"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:219
+msgid "Disable"
+msgstr "Slå av"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:222
+msgid "Enable"
+msgstr "Slå på"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:257
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to start configuring."
+msgstr "Klikk på «Legg til»-knappen for å opprette og konfigurere en ny konto."
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:261
+msgid ""
+"To add a new account, you first have to install a backend for each protocol "
+"you want to use."
+msgstr "Du må installere en motor for hver protokoll du ønsker å bruke før du legger til en ny konto."
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:268
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:2
+msgid "<b>No Account Selected</b>"
+msgstr "<b>Ingen konto valgt</b>"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:269
+msgid ""
+"\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want "
+"to configure in the list on the left."
+msgstr "\n\nHvis du ikke ønsker å legge til en konto kan du bare klikke på kontoen du ønsker å konfigurere i listen til venstre."
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:275
+msgid "<b>No Accounts Configured</b>"
+msgstr "<b>Ingen kontoer er satt opp</b>"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:402
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:4
+msgid "Accounts"
+msgstr "Kontoer"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:899
+#, c-format
+msgid ""
+"You are about to remove your %s account!\n"
+"Are you sure you want to proceed?"
+msgstr ""
+"Du holder på å fjerne din %s-konto!\n"
+"Er du sikker på at du vil dette?"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:905
+msgid ""
+"Any associated conversations and chat rooms will NOT be removed if you "
+"decide to proceed.\n"
+"\n"
+"Should you decide to add the account back at a later time, they will still "
+"be available."
+msgstr ""
+"Tilknyttede samtaler og samtalegrupper vil IKKE fjernes hvis du velger å "
+"fortsette.\n"
+"\n"
+"Skulle du velge å legge til kontoen senere, vil de bli tilgjengelige igjen."
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:1
+msgid "<b>New Account</b>"
+msgstr "<b>Ny konto</b>"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:3
+msgid "<b>Settings</b>"
+msgstr "<b>Innstillinger</b>"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:5
+msgid "Cr_eate"
+msgstr "Oppr_ett"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:6
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to started configuring.\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want "
+"to configure in the list on the left."
+msgstr ""
+"Klikk på «Legg til»-knappen for å legge til en ny konto. En ny oppføring vil bli klargjort for redigering.\n"
+"\n"
+"Hvis du ikke ønsker å legge til en konto kan du klikke på kontoen du ønsker å redigere i listen til venstre."
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:9
+msgid "Type:"
+msgstr "Type:"
+
+#: ../libempathy-gtk/empathy-avatar-chooser.c:448
+msgid "Select Your Avatar Image"
+msgstr "Velg personbilde"
+
+#: ../libempathy-gtk/empathy-avatar-chooser.c:451
+msgid "No Image"
+msgstr "Ingen bilde"
+
+#: ../libempathy-gtk/empathy-avatar-chooser.c:511
+msgid "Images"
+msgstr "Bilder"
+
+#: ../libempathy-gtk/empathy-avatar-chooser.c:515
+msgid "All Files"
+msgstr "Alle filer"
+
+#: ../libempathy-gtk/empathy-avatar-image.c:298
+msgid "Click to enlarge"
+msgstr "Klikk for å forstørre"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:1
+msgid "Call"
+msgstr "Ring"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:2
+msgid "Input"
+msgstr "Inndata"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:3
+msgid "Mute"
+msgstr "Demp"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:4
+msgid "Output"
+msgstr "Utdata"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:5
+msgid "Send Video"
+msgstr "Send video"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:6
+msgid "Volume"
+msgstr "Volum"
+
+#: ../libempathy-gtk/empathy-chat.c:436
+msgid "Disconnected"
+msgstr "Koblet fra"
+
+#: ../libempathy-gtk/empathy-chat.c:556
+msgid "offline"
+msgstr "frakoblet"
+
+#: ../libempathy-gtk/empathy-chat.c:559
+msgid "invalid contact"
+msgstr "ugyldig kontakt"
+
+#: ../libempathy-gtk/empathy-chat.c:562
+msgid "permission denied"
+msgstr "tilgang nektet"
+
+#: ../libempathy-gtk/empathy-chat.c:565
+msgid "too long message"
+msgstr "meldingen er for lang"
+
+#: ../libempathy-gtk/empathy-chat.c:568
+msgid "not implemented"
+msgstr "ikke implementert"
+
+#: ../libempathy-gtk/empathy-chat.c:571
+msgid "unknown"
+msgstr "ukjent"
+
+#: ../libempathy-gtk/empathy-chat.c:575
+#, c-format
+msgid "Error sending message '%s': %s"
+msgstr "Feil ved sending av melding «%s»: %s"
+
+#: ../libempathy-gtk/empathy-chat.c:1032
+msgid "Insert Smiley"
+msgstr "Sett inn smilefjes"
+
+#: ../libempathy-gtk/empathy-chat.c:1079
+msgid "_Check Word Spelling..."
+msgstr "_Stavekontroll ..."
+
+#: ../libempathy-gtk/empathy-chat.c:1508
+msgid "Connected"
+msgstr "Koblet til"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:1
+msgid "C_lear"
+msgstr "T_øm"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:2
+msgid "Ca_ll"
+msgstr "R_ing"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:3
+msgid "Change _Topic..."
+msgstr "Endre _emne ..."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:4
+msgid "Chat"
+msgstr "Prat"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:5
+msgid "Contact Infor_mation"
+msgstr "Kontakt_informasjon"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:6
+msgid "Cu_t"
+msgstr "Klipp _ut"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:7
+msgid "In_vite..."
+msgstr "In_viter ..."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:8
+msgid "Insert _Smiley"
+msgstr "Sett inn _smilefjes"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:9
+msgid "Invitation _message:"
+msgstr "Invitasjons_melding:"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:10
+msgid "Invite"
+msgstr "Inviter"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:11
+#: ../libempathy-gtk/empathy-main-window.glade.h:4
+msgid "Join _New..."
+msgstr "Bli med i _ny ..."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:12
+msgid "Move Tab _Left"
+msgstr "Flytt fane til _venstre"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:13
+msgid "Move Tab _Right"
+msgstr "Flytt fane til _høyre"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:14
+msgid "Select who would you like to invite:"
+msgstr "Velg de du vil invitere:"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:15
+msgid "You have been invited to join a chat conference."
+msgstr "Du er invitert til en konferansesamtale."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:16
+#: ../libempathy-gtk/empathy-main-window.glade.h:9
+msgid "_Add Contact..."
+msgstr "_Legg til kontakt ..."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:17
+msgid "_Add To Favorites"
+msgstr "_Legg til i favoritter"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:18
+msgid "_Close"
+msgstr "_Lukk"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:19
+#: ../libempathy-gtk/empathy-main-window.glade.h:11
+msgid "_Contents"
+msgstr "_Innhold"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:20
+msgid "_Conversation"
+msgstr "_Samtale"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:21
+msgid "_Copy"
+msgstr "_Kopier"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:22
+msgid "_Detach Tab"
+msgstr "_Løsne fane"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:23
+#: ../libempathy-gtk/empathy-contact-list-view.c:218
+#: ../libempathy-gtk/empathy-main-window.glade.h:12
+msgid "_Edit"
+msgstr "_Rediger"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:24
+#: ../libempathy-gtk/empathy-main-window.glade.h:13
+msgid "_Help"
+msgstr "_Hjelp"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:25
+msgid "_Next Tab"
+msgstr "_Neste fane"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:26
+msgid "_Paste"
+msgstr "_Lim inn"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:27
+msgid "_Previous Tab"
+msgstr "_Forrige fane"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:28
+#: ../libempathy-gtk/empathy-main-window.glade.h:18
+msgid "_Room"
+msgstr "_Rom"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:29
+msgid "_Show Contacts"
+msgstr "_Vis kontakter"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:30
+msgid "_Tabs"
+msgstr "_Faner"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:31
+#: ../libempathy-gtk/empathy-contact-list-view.c:234
+#: ../libempathy-gtk/empathy-main-window.glade.h:19
+msgid "_View Previous Conversations"
+msgstr "_Vis tidligere samtaler"
+
+#: ../libempathy-gtk/empathy-chat-view.c:469
+msgid "_Copy Link Address"
+msgstr "_Kopier lenkens adresse"
+
+#: ../libempathy-gtk/empathy-chat-view.c:477
+msgid "_Open Link"
+msgstr "_Åpne lenke"
+
+#: ../libempathy-gtk/empathy-chat-view.c:755
+msgid "%A %d %B %Y"
+msgstr "%A %d %B %Y"
+
+#: ../libempathy-gtk/empathy-chat-window.c:709
+#, c-format
+msgid "Conversations (%d)"
+msgstr "Samtaler (%d)"
+
+#: ../libempathy-gtk/empathy-chat-window.c:1309
+msgid "Typing a message."
+msgstr "Skriver en melding"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.c:258
+msgid "Name"
+msgstr "Navn"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.c:276
+msgid "Room"
+msgstr "Rom"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.c:285
+msgid "Auto Connect"
+msgstr "Automatisk tilkobling"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:1
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:5
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:1
+#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:1
+msgid "Account:"
+msgstr "Konto:"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:2
+msgid "Edit Favorite Room"
+msgstr "Endre favorittrom"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:3
+msgid "Join room on start_up"
+msgstr "Bli med i rom ved oppstart"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:4
+msgid "Join this chat room when Empathy starts and you are connected"
+msgstr "Bli med i dette samtalerommet når Empathy starter opp og du blir koblet til"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:5
+msgid "Manage Favorite Rooms"
+msgstr "Håndter favorittrom"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:6
+msgid "N_ame:"
+msgstr "_Navn:"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:7
+msgid "S_erver:"
+msgstr "_Tjener:"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:9
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:9
+msgid "_Room:"
+msgstr "_Rom:"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:176
+msgid "Personal Information"
+msgstr "Personlig informasjon"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:179
+msgid "Edit Contact Information"
+msgstr "Endre kontaktinformasjon"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:182
+msgid "Contact Information"
+msgstr "Kontaktinformasjon"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:277
+msgid "I would like to add you to my contact list."
+msgstr "Jeg ønsker å legge deg til i min kontaktliste."
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:301
+msgid "New Contact"
+msgstr "Ny kontakt"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.glade.h:1
+msgid "Decide _Later"
+msgstr "A_vgjør senere"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.glade.h:2
+msgid "Subscription Request"
+msgstr "Abonnementsforespørsel"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:198
+msgid "_Contact"
+msgstr "_Kontakt"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:202
+msgid "_Group"
+msgstr "_Gruppe"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:206
+#: ../libempathy-gtk/empathy-main-window.glade.h:10
+msgid "_Chat"
+msgstr "_Prat"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:206
+msgid "Chat with contact"
+msgstr "Snakk med kontakt"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:210
+msgid "Infor_mation"
+msgstr "Infor_masjon"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:210
+msgid "View contact information"
+msgstr "Vis kontaktinformasjon"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:214
+msgid "Re_name"
+msgstr "E_ndre navn"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:214
+msgid "Rename"
+msgstr "Endre navn"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:218
+msgid "Edit the groups and name for this contact"
+msgstr "Rediger grupper og navn for denne kontakten"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:222
+msgid "_Remove"
+msgstr "Fje_rn"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:222
+msgid "Remove contact"
+msgstr "Fjern kontakt"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:226
+msgid "_Invite to Chat Room"
+msgstr "_Inviter til samtalerom"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:226
+msgid "Invite to a currently open chat room"
+msgstr "Inviter til et eksisterende praterom"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:230
+msgid "_Send File..."
+msgstr "_Send fil ..."
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:230
+msgid "Send a file"
+msgstr "Send en fil"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:234
+msgid "View previous conversations with this contact"
+msgstr "Vis tidligere samtaler med denne kontakten"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:239
+msgid "_Call"
+msgstr "_Ring"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:239
+msgid "Start a voice or video conversation with this contact"
+msgstr "Start stemme- eller videosamtale med denne kontakten"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:1423
+msgid "Sorry, I don't want you in my contact list anymore."
+msgstr "Beklager, men jeg vil ikke ha deg på kontaktlisten min lenger."
+
+#: ../libempathy-gtk/empathy-contact-widget.c:662
+msgid "Select"
+msgstr "Velg"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:672
+#: ../libempathy-gtk/empathy-main-window.c:609
+msgid "Group"
+msgstr "Gruppe"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:1
+msgid "<b>Client Information</b>"
+msgstr "<b>Klientinformasjon</b>"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:2
+msgid "<b>Contact Details</b>"
+msgstr "<b>Kontaktdetaljer</b>"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:3
+msgid "<b>Contact</b>"
+msgstr "<b>Kontakt</b>"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:4
+msgid "<b>Groups</b>"
+msgstr "<b>Grupper</b>"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:6
+msgid "Alias:"
+msgstr "Alias:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:7
+msgid "Birthday:"
+msgstr "Fødselsdag:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:8
+msgid "Client:"
+msgstr "Klient:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:9
+msgid "Contact information"
+msgstr "Kontaktinformasjon"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:10
+msgid "Email:"
+msgstr "E-post:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:11
+msgid "Fullname:"
+msgstr "Fullt navn:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:12
+msgid "Identifier:"
+msgstr "Identifikator:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:13
+msgid "Information requested..."
+msgstr "Informasjon forespurt ..."
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:14
+msgid "OS:"
+msgstr "OS:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:15
+msgid ""
+"Select the groups you want this contact to appear in, you can select more "
+"than one group or no groups."
+msgstr "Velg gruppen du ønsker at denne kontakten skal vises i. Du kan velge flere eller ingen."
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:16
+msgid "Version:"
+msgstr "Versjon:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:17
+msgid "Web site:"
+msgstr "Nettsted:"
+
+#: ../libempathy-gtk/empathy-group-chat.c:251
+msgid "Enter the new topic you want to set for this room:"
+msgstr "Oppgi et emne du vil sette for dette rommet:"
+
+#: ../libempathy-gtk/empathy-group-chat.c:364
+#, c-format
+msgid "%s has joined the room"
+msgstr "%s har blitt med i rommet"
+
+#: ../libempathy-gtk/empathy-group-chat.c:367
+#, c-format
+msgid "%s has left the room"
+msgstr "%s har forlatt rommet"
+
+#: ../libempathy-gtk/empathy-group-chat.c:447
+#, c-format
+msgid "Topic: %s"
+msgstr "Emne: %s"
+
+#: ../libempathy-gtk/empathy-group-chat.c:569
+#, c-format
+msgid "Topic set to: %s"
+msgstr "Emnet er satt til: %s"
+
+#: ../libempathy-gtk/empathy-group-chat.c:571
+msgid "No topic defined"
+msgstr "Emne ikke definert"
+
+#: ../libempathy-gtk/empathy-group-chat.glade.h:1
+msgid "<b>Topic:</b>"
+msgstr "<b>Emne:</b>"
+
+#: ../libempathy-gtk/empathy-group-chat.glade.h:2
+msgid "Group Chat"
+msgstr "Gruppesamtale"
+
+#: ../libempathy-gtk/empathy-log-window.c:497
+msgid "Account"
+msgstr "Konto"
+
+#: ../libempathy-gtk/empathy-log-window.c:504
+msgid "Conversation"
+msgstr "Samtale"
+
+#: ../libempathy-gtk/empathy-log-window.c:514
+msgid "Date"
+msgstr "Dato"
+
+#: ../libempathy-gtk/empathy-log-window.glade.h:1
+msgid "Conversations"
+msgstr "Samtaler"
+
+#: ../libempathy-gtk/empathy-log-window.glade.h:2
+msgid "Previous Conversations"
+msgstr "Tidligere samtaler"
+
+#: ../libempathy-gtk/empathy-log-window.glade.h:3
+msgid "Search"
+msgstr "Søk"
+
+#: ../libempathy-gtk/empathy-log-window.glade.h:4
+msgid "_For:"
+msgstr "_For:"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.c:286
+msgid "Chat Rooms"
+msgstr "Samtalerom"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:2
+msgid "Browse:"
+msgstr "Bla gjennom:"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:3
+msgid ""
+"Enter the room name to join here or click on one or more rooms in the list."
+msgstr "Oppgi navn på rom du vil bli med i eller klikk på ett eller flere rom på listen."
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:4
+msgid ""
+"Enter the server which hosts the room, or leave it empty if the room is on "
+"the current account's server"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:5
+msgid "Join"
+msgstr "Bli med"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:6
+msgid "Join New"
+msgstr "Bli med i ny"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:7
+msgid "Re_fresh"
+msgstr "Opp_dater"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:8
+msgid ""
+"This list represents all chat rooms hosted on the server you have entered."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.c:266
+msgid "Show and edit accounts"
+msgstr "Vis og rediger kontoer"
+
+#: ../libempathy-gtk/empathy-main-window.c:630
+msgid "Contact"
+msgstr "Kontakt"
+
+#: ../libempathy-gtk/empathy-main-window.c:813
+msgid "Edit Account _Details"
+msgstr "Rediger _kontoinformasjon"
+
+#: ../libempathy-gtk/empathy-main-window.c:896
+msgid "Network error"
+msgstr "Nettverksfeil"
+
+#: ../libempathy-gtk/empathy-main-window.c:899
+msgid "Authentication failed"
+msgstr "Autentiseringen feilet"
+
+#: ../libempathy-gtk/empathy-main-window.c:902
+msgid "Encryption error"
+msgstr "Krypteringsfeil"
+
+#: ../libempathy-gtk/empathy-main-window.c:905
+msgid "Name in use"
+msgstr "Navn i bruk"
+
+#: ../libempathy-gtk/empathy-main-window.c:908
+msgid "Certificate not provided"
+msgstr "Sertifikat ikke oppgitt"
+
+#: ../libempathy-gtk/empathy-main-window.c:911
+msgid "Certificate untrusted"
+msgstr "Stoler ikke på sertifikat"
+
+#: ../libempathy-gtk/empathy-main-window.c:914
+msgid "Certificate expired"
+msgstr "Sertifikat utgått"
+
+#: ../libempathy-gtk/empathy-main-window.c:917
+msgid "Certificate not activated"
+msgstr "Sertifikat ikke aktivert"
+
+#: ../libempathy-gtk/empathy-main-window.c:920
+msgid "Certificate hostname mismatch"
+msgstr "Feil vertsnavn i forhold til sertifikat"
+
+#: ../libempathy-gtk/empathy-main-window.c:923
+msgid "Certificate fingerprint mismatch"
+msgstr "Fingeravtrykk stemmer ikke for sertifikat"
+
+#: ../libempathy-gtk/empathy-main-window.c:926
+msgid "Certificate self signed"
+msgstr "Selvsignert sertifikat"
+
+#: ../libempathy-gtk/empathy-main-window.c:929
+msgid "Certificate error"
+msgstr "Sertifikatsfeil"
+
+#: ../libempathy-gtk/empathy-main-window.c:932
+msgid "Unknown error"
+msgstr "Ukjent feil"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:1
+msgid "Contact List"
+msgstr "Kontaktliste"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:2
+msgid "Context"
+msgstr "Sammenheng"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:3
+msgid "Join _Favorites"
+msgstr "Bli med i _favoritter"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:5
+msgid "Manage Favorites"
+msgstr "Håndter favoritter"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:6
+msgid "Show _Offline Contacts"
+msgstr "Vis frak_oblede kontakter"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:7
+#: ../megaphone/data/GNOME_Megaphone_Applet.xml.h:1
+#: ../nothere/data/GNOME_NotHere_Applet.xml.h:1
+msgid "_About"
+msgstr "_Om"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:8
+msgid "_Accounts"
+msgstr "_Kontoer"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:14
+#: ../libempathy-gtk/empathy-status-icon.glade.h:2
+msgid "_New Message..."
+msgstr "_Ny melding ..."
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:15
+msgid "_Personal Information"
+msgstr "Personlig _informasjon"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:16
+#: ../megaphone/data/GNOME_Megaphone_Applet.xml.h:3
+msgid "_Preferences"
+msgstr "_Brukervalg"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:17
+#: ../libempathy-gtk/empathy-status-icon.glade.h:3
+msgid "_Quit"
+msgstr "_Avslutt"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:2
+msgid "Contact ID:"
+msgstr "KontaktID:"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:3
+msgid "New message"
+msgstr "Ny melding"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:4
+msgid "gtk-cancel"
+msgstr "gtk-cancel"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:5
+msgid "gtk-ok"
+msgstr "gtk-ok"
+
+#: ../libempathy-gtk/empathy-preferences.c:243
+msgid "Language"
+msgstr "Språk"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:1
+msgid "<b>Appearance</b>"
+msgstr "<b>Utseende</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:2
+msgid "<b>Audio</b>"
+msgstr "<b>Lyd</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:3
+msgid "<b>Behaviour</b>"
+msgstr "<b>Oppførsel</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:4
+msgid "<b>Contact List</b>"
+msgstr "<b>Kontaktliste</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:5
+msgid "<b>Enable spell checking for languages:</b>"
+msgstr "<b>Slå på stavekontroll for språkene:</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:6
+msgid "<b>Options</b>"
+msgstr "<b>Alternativer</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:7
+msgid "<b>Visual</b>"
+msgstr "<b>På skjerm</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:8
+msgid ""
+"<small>The list of languages reflects only the languages for which you have "
+"a dictionary installed.</small>"
+msgstr ""
+"<small>Denne listen listen viser bare de språkene det er installert ordliste "
+"for."
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:9
+msgid "Avatars are user chosen images shown in the contact list"
+msgstr "Personbilder er valgt av brukerne for å vise i kontaktlisten"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:10
+msgid "Chat Th_eme:"
+msgstr "Samtale_tema:"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:11
+msgid "Display notifications when contacts come _online"
+msgstr "Si fra når kontakter logger _på"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:12
+msgid "Enable sounds when _away"
+msgstr "Spill av lyder når du er _borte"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:13
+msgid "Enable sounds when _busy"
+msgstr "Spill av lyder når du er _opptatt"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:14
+msgid "General"
+msgstr "Generelt"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:15
+msgid "Notifications"
+msgstr "Varslinger"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:16
+msgid "Preferences"
+msgstr "Brukervalg"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:17
+msgid "Show _avatars"
+msgstr "Vis person_bilder"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:18
+msgid "Show _smileys as images"
+msgstr "Vis _smilefjes som bilder"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:19
+msgid "Show co_mpact contact list"
+msgstr "Vis ko_mpakt kontaktliste"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:20
+msgid "Sort by _name"
+msgstr "Sorter på _navn"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:21
+msgid "Sort by s_tate"
+msgstr "Sorter på s_tatus"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:22
+msgid "Spell Checking"
+msgstr "Stavekontroll"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:23
+msgid "Themes"
+msgstr "Temaer"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:24
+msgid "_Open new chats in separate windows"
+msgstr "_Åpne nye samtaler i egne vinduer"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:25
+msgid "_Play sound when messages arrive"
+msgstr "S_pill av lyd når meldinger kommer"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:26
+msgid "_Use for chat rooms"
+msgstr "_Bruk for samtalerom"
+
+#. Custom messages
+#: ../libempathy-gtk/empathy-presence-chooser.c:692
+msgid "Custom messages..."
+msgstr "Egendefinerte meldinger ..."
+
+#: ../libempathy-gtk/empathy-presence-chooser.glade.h:1
+msgid "Custom message"
+msgstr "Egendefinert melding"
+
+#: ../libempathy-gtk/empathy-presence-chooser.glade.h:2
+msgid "Message:"
+msgstr "Melding:"
+
+#: ../libempathy-gtk/empathy-presence-chooser.glade.h:3
+msgid "Save message"
+msgstr "Lagre melding"
+
+#: ../libempathy-gtk/empathy-presence-chooser.glade.h:4
+msgid "Status:"
+msgstr "Status:"
+
+#: ../libempathy-gtk/empathy-private-chat.c:229
+#, c-format
+msgid "%s went offline"
+msgstr "%s koblet fra"
+
+#: ../libempathy-gtk/empathy-private-chat.c:243
+#, c-format
+msgid "%s has come online"
+msgstr "%s logget på"
+
+#: ../libempathy-gtk/empathy-spell-dialog.c:85
+msgid "Word"
+msgstr "Ord"
+
+#: ../libempathy-gtk/empathy-spell-dialog.c:258
+msgid "Suggestions for the word"
+msgstr "Forslag for ordet"
+
+#: ../libempathy-gtk/empathy-spell-dialog.glade.h:1
+msgid "Spell Checker"
+msgstr "Stavekontroll"
+
+#: ../libempathy-gtk/empathy-spell-dialog.glade.h:2
+msgid "Suggestions for the word:"
+msgstr "Forslag for ordet:"
+
+#: ../libempathy-gtk/empathy-status-icon.c:335
+#, c-format
+msgid ""
+"New message from %s:\n"
+"%s"
+msgstr ""
+"Ny melding fra %s:\n"
+"%s"
+
+#: ../libempathy-gtk/empathy-status-icon.c:604
+#, c-format
+msgid "Subscription requested by %s"
+msgstr "Abonnement forespurt av %s"
+
+#: ../libempathy-gtk/empathy-status-icon.c:607
+#, c-format
+msgid ""
+"\n"
+"Message: %s"
+msgstr ""
+"\n"
+"Melding: %s"
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:1
+msgid "Status"
+msgstr "Status"
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:4
+msgid "_Show Contact List"
+msgstr "Vi_s kontaktliste"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:87
+msgid "Classic"
+msgstr "Klassisk"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:88
+msgid "Simple"
+msgstr "Enkel"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:89
+msgid "Clean"
+msgstr "Tøm"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:90
+msgid "Blue"
+msgstr "Blå"
+
+#: ../megaphone/data/GNOME_Megaphone_Applet.schemas.in.h:1
+msgid ""
+"The contact to display in the applet. Empty means no contact is displayed."
+msgstr ""
+
+#: ../megaphone/data/GNOME_Megaphone_Applet.schemas.in.h:2
+msgid "The contact's avatar token. Empty means contact has no avatar."
+msgstr ""
+
+#: ../megaphone/data/GNOME_Megaphone_Applet.server.in.in.h:1
+msgid "Megaphone"
+msgstr "Megafon"
+
+#: ../megaphone/data/GNOME_Megaphone_Applet.server.in.in.h:2
+#: ../megaphone/src/megaphone-applet.c:419
+msgid "Talk!"
+msgstr "Snakk!"
+
+#: ../megaphone/data/GNOME_Megaphone_Applet.xml.h:2
+msgid "_Information"
+msgstr "_Informasjon"
+
+#: ../nothere/data/GNOME_NotHere_Applet.server.in.in.h:1
+msgid "Presence"
+msgstr "Tilstedeværelse"
+
+#: ../nothere/data/GNOME_NotHere_Applet.server.in.in.h:2
+#: ../nothere/src/nothere-applet.c:89
+msgid "Set your own presence"
+msgstr "Velg din egen tilstedeværelse"
+
+#: ../src/empathy.c:211
+msgid "Don't connect on startup"
+msgstr "Ikke koble til ved oppstart"
+
+#: ../src/empathy.c:223
+msgid "- Empathy Instant Messenger"
+msgstr "- Empathy lynmeldingsprogram"
+
diff --git a/gnome-2-22/po/ne.po b/gnome-2-22/po/ne.po
new file mode 100644
index 000000000..9c3be10a3
--- /dev/null
+++ b/gnome-2-22/po/ne.po
@@ -0,0 +1,1259 @@
+# translation of empathy.HEAD.ne.po to Nepali
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+#
+# Pawan Chitrakar <pawan@mpp.org.np>, 2005.
+# Jaydeep Bhusal <zaydeep@hotmail.com>, 2005.
+# Mahesh subedi <submanesh@hotmail.com>, 2006.
+# Shyam Krishna Bal <balshyam24@yahoo.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: empathy.HEAD.ne\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-10-01 14:24+0100\n"
+"PO-Revision-Date: 2007-12-17 20:03+0545\n"
+"Last-Translator: Shyam Krishna Bal <balshyam24@yahoo.com>\n"
+"Language-Team: Nepali <info@mpp.org.np>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=2; plural=n !=1\n"
+
+#: ../data/empathy.desktop.in.in.h:1
+msgid "Empathy Instant Messenger"
+msgstr "इम्प्याथी शीघ्र मेसेन्जर"
+
+#: ../data/empathy.desktop.in.in.h:2
+msgid "Send and receive instant messages"
+msgstr "शीघ्र सन्देशहरू पठाउनुहोस् र प्राप्त गर्नुहोस्"
+
+#: ../data/empathy.schemas.in.h:1
+msgid "Always open a separate chat window for new chats."
+msgstr "सधै नयाँ कुराकानीका लागि एउटा छुट्टै कुराकानी सञ्झ्याल खोल्नुहोस्"
+
+#: ../data/empathy.schemas.in.h:2
+msgid "Chat window theme"
+msgstr "कुराकानी सञ्झ्याल विषयवस्तु"
+
+#: ../data/empathy.schemas.in.h:3
+msgid "Checks if Salut account is created"
+msgstr "यदि सलुट खाता सिर्जना गरिएको छ भने जाँच गर्दछ"
+
+#: ../data/empathy.schemas.in.h:4
+msgid "Comma separated list of spell checker languages to use (e.g. en, fr, nl)."
+msgstr ""
+"अल्पविरामले हिज्जे परीक्षण गर्ने भाषाको सूची प्रयोग गर्नलाई सूची छुट्टाउदछ (e.g. en, fr, "
+"nl)."
+
+#: ../data/empathy.schemas.in.h:5
+msgid "Compact contact list"
+msgstr "सम्पर्क सूची सङ्कुचन गर्नुहोस्"
+
+#: ../data/empathy.schemas.in.h:6
+msgid "Contact list sort criterium"
+msgstr "सम्पर्क सूची क्रमबद्ध मापदण्ड"
+
+#: ../data/empathy.schemas.in.h:7
+msgid "Default directory to select an avatar image from"
+msgstr "यसबाट एउटा अवतार छवि चयन गर्न पूर्वनिर्धारित डाइरेक्टरी"
+
+#: ../data/empathy.schemas.in.h:8
+msgid "Enable popup when contact is available"
+msgstr "सम्पर्क उपलब्ध हुँदा पपअप सक्षम पार्नुहोस्"
+
+#: ../data/empathy.schemas.in.h:9
+msgid "Enable sound when away"
+msgstr "टाढा हुँदा ध्वनि सक्षम पार्नुहोस्"
+
+#: ../data/empathy.schemas.in.h:10
+msgid "Enable sound when busy"
+msgstr "व्यस्त हुँदा ध्वनि सक्षम पार्नुहोस्"
+
+#: ../data/empathy.schemas.in.h:11
+msgid "Enable spell checker"
+msgstr "हिज्जे परीक्षण सक्षम पार्नुहोस्"
+
+#: ../data/empathy.schemas.in.h:12
+msgid "Hide main window"
+msgstr "मुख्य सञ्झ्याल लुकाउनुहोस्"
+
+#: ../data/empathy.schemas.in.h:13
+msgid "Hide the main window."
+msgstr "मुख्य सञ्झ्याल लुकाउनुहोस् ।"
+
+#: ../data/empathy.schemas.in.h:14
+msgid "Open new chats in separate windows"
+msgstr "छुट्टै सञ्झ्यालमा नयाँ कुराकानी खोल्नुहोस्"
+
+#: ../data/empathy.schemas.in.h:15
+msgid "Show avatars"
+msgstr "अवतार देखाउनुहोस्"
+
+#: ../data/empathy.schemas.in.h:16
+msgid "Show hint about closing the main window"
+msgstr "मुख्य सञ्झ्याल बन्द गर्ने बारे संकेत देखाउनुहोस्"
+
+#: ../data/empathy.schemas.in.h:17
+msgid "Show offline contacts"
+msgstr "अफलाइन सम्पर्कहरू देखाउनुहोस्"
+
+#: ../data/empathy.schemas.in.h:18
+msgid "Spell checking languages"
+msgstr "हिज्जे परीक्षक भाषाहरू"
+
+#: ../data/empathy.schemas.in.h:19
+msgid "The last directory that an avatar image was chosen from."
+msgstr "एउटा अवतार छवि रोजिएको अन्तिम डाइरेक्टरी ।"
+
+#: ../data/empathy.schemas.in.h:20
+msgid "The theme that is used to display the conversation in chat windows."
+msgstr "कुराकानी सञ्झ्यालहरूमा तपाईँलाई पहिचान गर्न यो विषयवस्तु प्रयोग गरिन्छ ।"
+
+#: ../data/empathy.schemas.in.h:21
+msgid "Use graphical smileys"
+msgstr "ग्राफिकल स्माइलीहरू प्रयोग गर्नुहोस्"
+
+#: ../data/empathy.schemas.in.h:22
+msgid "Use notification sounds"
+msgstr "सूचीत गर्ने ध्वनिहरू प्रयोग गर्नुहोस्"
+
+#: ../data/empathy.schemas.in.h:23
+msgid "Use theme for chat rooms"
+msgstr "कुराकानी कोठाका लागि विषयवस्तु प्रयोग गर्नुहोस्"
+
+#: ../data/empathy.schemas.in.h:24
+msgid "Whether or not the Salut account has been created on the first empathy run."
+msgstr "पहिलो इम्प्याथी सञ्चालनमा सलुट खाता सिर्जना गरिएको छ या छैन ।"
+
+#: ../data/empathy.schemas.in.h:25
+msgid ""
+"Whether or not to check words typed against the languages you want to check "
+"with."
+msgstr "तपाईँले जाँच गर्न चाहनुभएको भाषाहरू विरूद्ध टाइप गरिएको शब्द जाँच गर्ने या नगर्ने ।"
+
+#: ../data/empathy.schemas.in.h:26
+msgid "Whether or not to convert smileys into graphical images in conversations."
+msgstr "वार्तालापमा स्माइलीहरूलाई ग्राफिकल छविहरूमा रूपान्तरण गर्ने या नगर्ने ।"
+
+#: ../data/empathy.schemas.in.h:27
+msgid "Whether or not to play a sound when messages arrive."
+msgstr "सन्देश आउँदा ध्वनि प्ले गर्ने कि नगर्ने"
+
+#: ../data/empathy.schemas.in.h:28
+msgid "Whether or not to play sounds when away."
+msgstr "टाढा हुँदा ध्वनिहरू प्ले गर्ने कि नगर्ने"
+
+#: ../data/empathy.schemas.in.h:29
+msgid "Whether or not to play sounds when busy."
+msgstr "व्यस्त हुँदा ध्वनिहरू प्ले गर्ने कि नगर्ने ।"
+
+#: ../data/empathy.schemas.in.h:30
+msgid "Whether or not to show a popup when a contact becomes available."
+msgstr "सम्पर्क उपलब्ध हुँदा पपअप देखाउने या नदेखाउने ।"
+
+#: ../data/empathy.schemas.in.h:31
+msgid ""
+"Whether or not to show avatars for contacts in the contact list and chat "
+"windows."
+msgstr "सम्पर्क सूची र कुराकानी सञ्झ्यालमा सम्पर्कहरूका लागि अवतारहरू देखाउने या नदेखाउने ।"
+
+#: ../data/empathy.schemas.in.h:32
+msgid "Whether or not to show contacts that are offline in the contact list."
+msgstr "सम्पर्क सूचीमा अफलाइन भएका सम्पर्कहरूलाई देखाउने कि नदेखाउने ।"
+
+#: ../data/empathy.schemas.in.h:33
+msgid ""
+"Whether or not to show the message dialog about closing the main window with "
+"the 'x' button in the title bar."
+msgstr "शीर्षकपट्टीमा 'x' बटनसँग मुख्य सञ्झ्याल बन्द गर्ने बारे सन्देश संवाद देखाउने या नदेखाउने ।"
+
+#: ../data/empathy.schemas.in.h:34
+msgid "Whether to show the contact list in compact mode or not."
+msgstr "सङ्कुचन मोडमा सम्पर्क सूची देखाउने या नदेखाउने ।"
+
+#: ../data/empathy.schemas.in.h:35
+msgid "Whether to use the theme for chat rooms or not."
+msgstr "कुराकानी कोठाका लागि विषयवस्तु प्रयोग गर्ने या नगर्ने ।"
+
+#: ../data/empathy.schemas.in.h:36
+msgid ""
+"Which criterium to use when sorting the contact list. Default is to use sort "
+"by the contact's name with the value \"name\". A value of \"state\" will "
+"sort the contact list by state."
+msgstr "सम्पर्क सूची क्रमबद्ध गर्दा कुन मापदण्ड प्रयोग गर्ने । मान \"name\" सँग सम्पर्क नाम अनुसार क्रमबद्ध गर्दा पूर्वनिर्धारित प्रयोग गर्ने । मान \"state\" लाई स्थिति अनुसार सम्पर्क सूचीद्वारा क्रमबद्ध गरिनेछ ।"
+
+#: ../libempathy/empathy-presence.c:185 ../libempathy/empathy-presence.c:285
+msgid "Offline"
+msgstr "अफलाइन"
+
+#: ../libempathy/empathy-presence.c:275
+msgid "Available"
+msgstr "उपलब्ध"
+
+#: ../libempathy/empathy-presence.c:277
+msgid "Busy"
+msgstr "व्यस्त"
+
+#: ../libempathy/empathy-presence.c:280
+msgid "Away"
+msgstr "टाढा"
+
+#: ../libempathy/empathy-presence.c:282
+msgid "Hidden"
+msgstr "लुकेको छु"
+
+#: ../libempathy/empathy-tp-contact-list.c:730 ../src/empathy.c:211
+msgid "People nearby"
+msgstr "नजिकै छु"
+
+#: ../libempathy-gtk/empathy-about-dialog.c:63
+msgid ""
+"Empathy is free software; you can redistribute it and/or modify it under the "
+"terms of the GNU General Public License as published by the Free Software "
+"Foundation; either version 2 of the License, or (at your option) any later "
+"version."
+msgstr ""
+"इम्प्याथी निशुल्क सफ्टवेयर हो; स्वतन्त्र सफ्टवेयर संस्थाद्धारा जीएनयू साधारण सार्वजनिक अनुमतिपत्रको "
+"रूपमा प्रकाशित शर्तहरू अन्तर्गत रहेर यसलाई परिमार्जन वा/र पुन: वितरण गर्न सक्नुहुन्छ; या "
+"संस्करण २ को अनुमतिपत्र, वा (तपाईँको विकल्पमा) कुनै पछिल्लो संस्करण।"
+
+#: ../libempathy-gtk/empathy-about-dialog.c:67
+msgid ""
+"Empathy is distributed in the hope that it will be useful, but WITHOUT ANY "
+"WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS "
+"FOR A PARTICULAR PURPOSE. See the GNU General Public License for more "
+"details."
+msgstr ""
+"विशेष उद्देश्यका लागि ठीक हुने, वा व्यवहारिक व्यापारिक अधिकार बिना नै, अझ कुनै अधिकार "
+"बिना नै, इम्प्याथीलाई यो उपयोगी हने आशामा वितरण गरिएको हो। विस्तृत जानकारीका लागि "
+"जीएनयू साधारण सार्वजनिक अनुमतिपत्र हेर्नुहोस् ।"
+
+#: ../libempathy-gtk/empathy-about-dialog.c:71
+msgid ""
+"You should have received a copy of the GNU General Public License along with "
+"Empathy; if not, write to the Free Software Foundation, Inc., 51 Franklin "
+"Street, Fifth Floor, Boston, MA 02110-130159 USA"
+msgstr ""
+"तपाईँले इम्प्याथीसँग जीएनयू साधारण सार्वजनिक अनुमतिपत्रको एउटा प्रतिलिपि प्राप्त गर्नुभएको हुन "
+"पर्दछ; यदि छैन भने, निशुल्क सफ्टवेयर संस्थालाई, Inc., 59 Temple Place, Suite 330, "
+"Boston, MA 02111-1307 USA मा लेख्नुहोस्।"
+
+#: ../libempathy-gtk/empathy-about-dialog.c:99
+msgid "An Instant Messaging client for GNOME"
+msgstr "जिनोमका लागि एउटा शीघ्र सन्देश गर्ने क्लाइन्ट"
+
+#: ../libempathy-gtk/empathy-about-dialog.c:105
+msgid "translator-credits"
+msgstr "Jaydeep Bhusal <zaydeep@hotmail.com>Mahesh Subedi<submanesh@gmail.com>"
+
+#: ../libempathy-gtk/empathy-account-chooser.c:336
+msgid "All"
+msgstr "सबै"
+
+#: ../libempathy-gtk/empathy-account-widget-generic.c:146
+#: ../libempathy-gtk/empathy-account-widget-generic.c:208
+#, c-format
+msgid "%s:"
+msgstr "%s:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:1
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:1
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:1
+msgid "<b>Advanced</b>"
+msgstr "<b>उन्नत</b>"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:2
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:2
+msgid "Forget password and clear the entry."
+msgstr "पासवर्ड बिर्सनुहोस् र प्रविष्टि खाली गर्नुहोस् ।"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:3
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:3
+msgid "Login I_D:"
+msgstr "लगइन आईडी:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:4
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:4
+msgid "Pass_word:"
+msgstr "पासवर्ड:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:5
+msgid "Reso_urce:"
+msgstr "संसाधन:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:6
+msgid "Use encryption (SS_L)"
+msgstr "गुप्तिकरण (SS_L) प्रयोग गर्नुहोस्"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:7
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:5
+msgid "_Port:"
+msgstr "पोर्ट:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:8
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:6
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:10
+msgid "_Server:"
+msgstr "सर्भर:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:9
+msgid "jabber account settings"
+msgstr "ज्याबर खाता सेटिङ"
+
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:7
+msgid "msn account settings"
+msgstr "एमएसएन खाता सेटिङ"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:2
+msgid "_E-mail:"
+msgstr "इमेल:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:3
+msgid "_First Name: "
+msgstr "पहिलो नाम:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:4
+msgid "_Jabber ID:"
+msgstr "ज्याबर आईडी:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:5
+msgid "_Last Name:"
+msgstr "अन्तिम नाम:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:6
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:8
+msgid "_Nickname:"
+msgstr "उपनाम:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:7
+msgid "_Published Name:"
+msgstr "प्रकाशित गरिएको नाम:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:8
+msgid "salut account settings"
+msgstr "सलुट खाता सेटिङ"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:218
+msgid "Disable"
+msgstr "अक्षम पार्नुहोस्"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:221
+msgid "Enable"
+msgstr "सक्षम पार्नुहोस्"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:255
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:2
+msgid "<b>No Account Selected</b>"
+msgstr "<b>खाता चयन गरिएको छैन</b>"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:257
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to start configuring.\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want "
+"to configure in the list on the left."
+msgstr ""
+"नयाँ खाता थप्न, तपाईँ 'थप्नुहोस्' बटनमा क्लिक गर्न सक्नुहुन्छ र कन्फिगर सुरु गर्न नयाँ प्रविष्टि सिर्जना गरिनेछ ।\n"
+"\n"
+"यदि तपाईँ एउटा खाता थप्न चाहनुहुन्छ भने, तपाईँले बायाँपट्टि सूचीमा कन्फिगर गर्न चाहनुभएको खातामा क्लिक गर्नुहोस् ।"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:266
+msgid "<b>No Accounts Configured</b>"
+msgstr "<b>खाताहरू कन्फिगर गरिएको छैन</b>"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:268
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to start configuring."
+msgstr "नयाँ खाता थप्न, तपाईँ 'थप्नुहोस्' बटनमा क्लिक गर्न सक्नुहुन्छ र तपाईँ कन्फिगर सुरु गर्न नयाँ प्रविष्टि सिर्जना गरिनेछ ।"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:394
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:4
+msgid "Accounts"
+msgstr "खाताहरू"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:898
+#, c-format
+msgid ""
+"You are about to remove your %s account!\n"
+"Are you sure you want to proceed?"
+msgstr ""
+"तपाईँले तपाईँको %s खाता हटाउन लाग्नु भएको हो !\n"
+"तपाईँ काम गर्न यकिन हुनुहुन्छ ?"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:904
+msgid ""
+"Any associated conversations and chat rooms will NOT be removed if you "
+"decide to proceed.\n"
+"\n"
+"Should you decide to add the account back at a later time, they will still "
+"be available."
+msgstr ""
+"यदि तपाईँले काम गर्ने निश्चय गर्नु भएमा कुनै सम्बन्धित वार्तालाप र कुराकानी कोठा हट्ने छैन ।\n"
+"\n"
+"तपाईँले पछिल्लो समयमा खाता पछि थप्ने निश्चय गर्नुभयो, तिनिहरू अहिले पनि उपलब्ध हुनेछन् ।"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:1
+msgid "<b>New Account</b>"
+msgstr "<b>नयाँ खाता</b>"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:3
+msgid "<b>Settings</b>"
+msgstr "<b>सेटिङ</b>"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:5
+msgid "Cr_eate"
+msgstr "सिर्जना गर्नुहोस्"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:6
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to started configuring.\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want "
+"to configure in the list on the left."
+msgstr ""
+"नयाँ खाता थप्न, तपाईँ 'थप्नुहोस्' बटनमा क्लिक गर्न सक्नुहुन्छ र तपाईँलाई कन्फिगर सुरु गर्न नयाँ प्रविष्टि सिर्जना गरिनेछ ।\n"
+"\n"
+"यदि तपाईँ एउटा खाता थप्न चाहनुहुन्न भने, सामान्यतया बायाँपट्टि सूचीमा कन्फिगर गर्न चाहनुभएको खातामा क्लिक गर्नुहोस् ।"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:9
+msgid "Type:"
+msgstr "प्रकार:"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:1
+msgid "Call"
+msgstr "आह्वान"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:2
+msgid "Input"
+msgstr "आगत"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:3
+msgid "Mute"
+msgstr "मौन"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:4
+msgid "Output"
+msgstr "निर्गत"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:5
+msgid "Send Video"
+msgstr "भिडियो पठाउनुहोस्"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:6
+msgid "Volume"
+msgstr "भोल्युम"
+
+#: ../libempathy-gtk/empathy-chat.c:335
+msgid "Disconnected"
+msgstr "जडान विच्छेद गरियो"
+
+#: ../libempathy-gtk/empathy-chat.c:450
+msgid "offline"
+msgstr "अफलाइन"
+
+#: ../libempathy-gtk/empathy-chat.c:453
+msgid "invalid contact"
+msgstr "अवैध सम्पर्क"
+
+#: ../libempathy-gtk/empathy-chat.c:456
+msgid "permission denied"
+msgstr "अनुमति अस्वीकार गरियो"
+
+#: ../libempathy-gtk/empathy-chat.c:459
+msgid "too long message"
+msgstr "अति लामो सन्देश"
+
+#: ../libempathy-gtk/empathy-chat.c:462
+msgid "not implemented"
+msgstr "कार्यान्वयन भएको छैन"
+
+#: ../libempathy-gtk/empathy-chat.c:465
+msgid "unknown"
+msgstr "अज्ञात"
+
+#: ../libempathy-gtk/empathy-chat.c:469
+#, c-format
+msgid "Error sending message '%s': %s"
+msgstr "सन्देश पठाउँदा त्रुटि '%s': %s"
+
+#: ../libempathy-gtk/empathy-chat.c:924
+msgid "Insert Smiley"
+msgstr "स्माइली घुसाउनुहोस्"
+
+#: ../libempathy-gtk/empathy-chat.c:972
+msgid "_Check Word Spelling..."
+msgstr "शब्द हिज्जे जाँच गर्नुहोस्..."
+
+#: ../libempathy-gtk/empathy-chat.c:1397
+msgid "Connected"
+msgstr "जडान गरियो"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:1
+msgid "C_lear"
+msgstr "खाली गर्नुहोस्"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:2
+msgid "Ca_ll"
+msgstr "आह्वान"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:3
+msgid "Change _Topic..."
+msgstr "विषय परिवर्तन गर्नुहोस्..."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:4
+msgid "Chat"
+msgstr "कुराकानी"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:5
+msgid "Contact Infor_mation"
+msgstr "सम्पर्क जानकारी"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:6
+msgid "Cu_t"
+msgstr "काट्नुहोस्"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:7
+msgid "In_vite..."
+msgstr "निमन्त्रणा गर्नुहोस्..."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:8
+msgid "Insert _Smiley"
+msgstr "स्माइली घुसाउनुहोस्"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:9
+msgid "Invitation _message:"
+msgstr "निमन्त्रणा सन्देश:"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:10
+msgid "Invite"
+msgstr "निमन्त्रणा गर्नुहोस्"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:11
+#: ../libempathy-gtk/empathy-main-window.glade.h:4
+msgid "Join _New..."
+msgstr "नयाँ जडान गर्नुहोस्..."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:12
+msgid "Move Tab _Left"
+msgstr "ट्याब बायाँतिर सार्नुहोस्"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:13
+msgid "Move Tab _Right"
+msgstr "ट्याब दायाँतिर सार्नुहोस्"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:14
+msgid "Select who would you like to invite:"
+msgstr "तपाईँ कसलाई निमन्त्रणा गर्न चाहनुहुन्छ चयन गर्नुहोस्:"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:15
+msgid "You have been invited to join a chat conference."
+msgstr "तपाईँलाई कुराकानी सम्मेलनमा जोड्न निमन्त्रण गरिएको छ ।"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:16
+#: ../libempathy-gtk/empathy-main-window.glade.h:9
+msgid "_Add Contact..."
+msgstr "सम्पर्क थप्नुहोस्..."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:17
+msgid "_Add To Favorites"
+msgstr "मनपर्नेहरू थप्नुहोस्"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:18
+msgid "_Close"
+msgstr "बन्द गर्नुहोस्"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:19
+msgid "_Conversation"
+msgstr "वार्तालाप"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:20
+msgid "_Copy"
+msgstr "प्रतिलिपि बनाउनुहोस्"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:21
+msgid "_Detach Tab"
+msgstr "ट्याबलाई छुट्याउनुहोस्"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:22
+#: ../libempathy-gtk/empathy-contact-list-view.c:218
+#: ../libempathy-gtk/empathy-main-window.glade.h:12
+msgid "_Edit"
+msgstr "सम्पादन गर्नुहोस्"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:23
+msgid "_Next Tab"
+msgstr "पछिल्लो ट्याब"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:24
+msgid "_Paste"
+msgstr "टाँस्नुहोस्"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:25
+msgid "_Previous Tab"
+msgstr "अघिल्लो ट्याब"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:26
+#: ../libempathy-gtk/empathy-main-window.glade.h:18
+msgid "_Room"
+msgstr "कोठा"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:27
+msgid "_Show Contacts"
+msgstr "सम्पर्कहरू देखाउनुहोस्"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:28
+msgid "_Tabs"
+msgstr "ट्याबहरु"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:29
+#: ../libempathy-gtk/empathy-contact-list-view.c:234
+#: ../libempathy-gtk/empathy-main-window.glade.h:19
+msgid "_View Previous Conversations"
+msgstr "पछिल्लो वार्तालाप हेर्नुहोस्"
+
+#: ../libempathy-gtk/empathy-chat-view.c:468
+msgid "_Copy Link Address"
+msgstr "लिङ्क ठेगानाको प्रतिलिपि बनाउनुहोस्"
+
+#: ../libempathy-gtk/empathy-chat-view.c:476
+msgid "_Open Link"
+msgstr "लिङ्क खोल्नुहोस्"
+
+#: ../libempathy-gtk/empathy-chat-view.c:754
+msgid "%A %d %B %Y"
+msgstr "%A %d %B %Y"
+
+#: ../libempathy-gtk/empathy-chat-window.c:709
+#, c-format
+msgid "Conversations (%d)"
+msgstr "वार्तालाप (%d)"
+
+#: ../libempathy-gtk/empathy-chat-window.c:1295
+msgid "Typing a message."
+msgstr "सन्देश टाइप गर्दै ।"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.c:258
+msgid "Name"
+msgstr "नाम"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.c:276
+msgid "Room"
+msgstr "कोठा"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.c:285
+msgid "Auto Connect"
+msgstr "स्वत: जडान गर्नुहोस्"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:1
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:5
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:1
+msgid "Account:"
+msgstr "खाता:"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:2
+msgid "Edit Favorite Room"
+msgstr "मनपर्ने कोठा सम्पादन गर्नुहोस्"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:3
+msgid "Join room on start_up"
+msgstr "सुरुआतमा कोठा जडान गर्नुहोस्"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:4
+msgid "Join this chat room when Empathy starts and you are connected"
+msgstr "इम्प्याथी सुरु हुँदा र तपाईँ जडान हुँदा यो कुराकानी कोठा जडान गर्नुहोस्"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:5
+msgid "Manage Favorite Rooms"
+msgstr "मनपर्ने कोठा प्रबन्ध गर्नुहोस्"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:6
+msgid "N_ame:"
+msgstr "नाम:"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:7
+msgid "S_erver:"
+msgstr "सर्भर:"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:9
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:9
+msgid "_Room:"
+msgstr "कोठा:"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:173
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:9
+msgid "Contact information"
+msgstr "सम्पर्क जानकारी"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:221
+msgid "I would like to add you to my contact list."
+msgstr "म तपाईँलाई मेरो सम्पर्क सूचीमा थप्न चाहन्छु ।"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:245
+msgid "New contact"
+msgstr "नयाँ सम्पर्क"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.glade.h:1
+msgid "Decide _Later"
+msgstr "पछि निर्णय गर्नुहोस्"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.glade.h:2
+msgid "Subscription Request"
+msgstr "सदस्यता अनुरोध"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:198
+msgid "_Contact"
+msgstr "सम्पर्क"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:202
+msgid "_Group"
+msgstr "समूह"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:206
+#: ../libempathy-gtk/empathy-main-window.glade.h:10
+msgid "_Chat"
+msgstr "कुराकानी"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:206
+msgid "Chat with contact"
+msgstr "सम्पर्क सहित कुराकानी"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:210
+msgid "Infor_mation"
+msgstr "जानकारी"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:210
+msgid "View contact information"
+msgstr "सम्पर्क जानकारी हेर्नुहोस्"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:214
+msgid "Re_name"
+msgstr "पुन: नामकरण गर्नुहोस्"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:214
+msgid "Rename"
+msgstr "पुन: नामकरण गर्नुहोस्"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:218
+msgid "Edit the groups and name for this contact"
+msgstr "यो सम्पर्कका लागि समूह र नाम सम्पादन गर्नुहोस्"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:222
+msgid "_Remove"
+msgstr "हटाउनुहोस्"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:222
+msgid "Remove contact"
+msgstr "सम्पर्क हटाउनुहोस्"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:226
+msgid "_Invite to Chat Room"
+msgstr "कुराकानी कोठामा निमन्त्रणा गर्नुहोस्"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:226
+msgid "Invite to a currently open chat room"
+msgstr "हालै खोलिएको कुराकानी कोठामा निमन्त्रणा गर्नुहोस्"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:230
+msgid "_Send File..."
+msgstr "फाइल पठाउनुहोस्..."
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:230
+msgid "Send a file"
+msgstr "फाइल पठाउनुहोस्"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:234
+msgid "View previous conversations with this contact"
+msgstr "यो सम्पर्कसँग अघिल्लो वार्तालाप हेर्नुहोस्"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:239
+msgid "_Call"
+msgstr "आह्वान"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:239
+msgid "Start a voice or video conversation with this contact"
+msgstr "यो सम्पर्कसँग आवाज वा भिडियो वार्तालाप सुरु गर्नुहोस्"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:1414
+msgid "Sorry, I don't want you in my contact list anymore."
+msgstr "माफ गर्नुहोस्, तपाईँलाई मेरो सम्पर्क सूचीमा राख्न चाहन्न ।"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:637
+msgid "Select"
+msgstr "चयन गर्नुहोस्"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:647
+#: ../libempathy-gtk/empathy-main-window.c:613
+msgid "Group"
+msgstr "समूह"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:1
+msgid "<b>Client Information</b>"
+msgstr "<b>क्लाइन्ट जानकारी</b>"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:2
+msgid "<b>Contact Details</b>"
+msgstr "<b>सम्पर्क विवरण</b>"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:3
+msgid "<b>Contact</b>"
+msgstr "<b>सम्पर्क</b>"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:4
+msgid "<b>Groups</b>"
+msgstr "<b>समूह</b>"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:6
+msgid "Alias:"
+msgstr "उपनाम:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:7
+msgid "Birthday:"
+msgstr "जन्मदिन:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:8
+msgid "Client:"
+msgstr "क्लाइन्ट:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:10
+msgid "Email:"
+msgstr "इमेल:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:11
+msgid "Fullname:"
+msgstr "पूरा नाम:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:12
+msgid "Identifier:"
+msgstr "पहिचायक:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:13
+msgid "Information requested..."
+msgstr "जानकारी अनुरोध गरियो..."
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:14
+msgid "OS:"
+msgstr "सञ्चालन प्रणाली:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:15
+msgid ""
+"Select the groups you want this contact to appear in, you can select more "
+"than one group or no groups."
+msgstr "तपाईँले यो सम्पर्क देखाउनु चाहनुभएको समूह चयन गर्नुहोस्, तपाईँले बढीमा एउटा समूह वा समूह नभएको चयन गर्न सक्नुहुन्छ ।"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:16
+msgid "Version:"
+msgstr "संस्करण:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:17
+msgid "Web site:"
+msgstr "वेब साइट:"
+
+#: ../libempathy-gtk/empathy-group-chat.c:253
+msgid "Enter the new topic you want to set for this room:"
+msgstr "तपाईँले यो कोठाका लागि सेट गर्न चाहनुभएको नयाँ विषय प्रविष्ट गर्नुहोस्:"
+
+#: ../libempathy-gtk/empathy-group-chat.c:366
+#, c-format
+msgid "%s has joined the room"
+msgstr "%s ले कोठा जडान गर्यो"
+
+#: ../libempathy-gtk/empathy-group-chat.c:369
+#, c-format
+msgid "%s has left the room"
+msgstr "%s ले कोठा छोड्यो"
+
+#: ../libempathy-gtk/empathy-group-chat.c:449
+#, c-format
+msgid "Topic: %s"
+msgstr "विषय: %s"
+
+#: ../libempathy-gtk/empathy-group-chat.c:570
+#, c-format
+msgid "Topic set to: %s"
+msgstr "सेट गर्नुपर्ने विषय: %s"
+
+#: ../libempathy-gtk/empathy-group-chat.c:572
+msgid "No topic defined"
+msgstr "कुनै विषय परिभाषित गरिएको छैन"
+
+#: ../libempathy-gtk/empathy-group-chat.glade.h:1
+msgid "<b>Topic:</b>"
+msgstr "<b>विषय:</b>"
+
+#: ../libempathy-gtk/empathy-group-chat.glade.h:2
+msgid "Group Chat"
+msgstr "समूह कुराकानी"
+
+#: ../libempathy-gtk/empathy-log-window.c:497
+msgid "Account"
+msgstr "खाता"
+
+#: ../libempathy-gtk/empathy-log-window.c:504
+msgid "Conversation"
+msgstr "वार्तालाप"
+
+#: ../libempathy-gtk/empathy-log-window.c:514
+msgid "Date"
+msgstr "मिति"
+
+#: ../libempathy-gtk/empathy-log-window.glade.h:1
+msgid "Conversations"
+msgstr "वार्तालाप"
+
+#: ../libempathy-gtk/empathy-log-window.glade.h:2
+msgid "Search"
+msgstr "खोजी गर्नुहोस्"
+
+#: ../libempathy-gtk/empathy-log-window.glade.h:3
+msgid "View Previous Conversations"
+msgstr "अघिल्लो वार्तालाप हेर्नुहोस्"
+
+#: ../libempathy-gtk/empathy-log-window.glade.h:4
+msgid "_For:"
+msgstr "लागि:"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.c:286
+msgid "Chat Rooms"
+msgstr "कुराकानी कोठा"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:2
+msgid "Browse:"
+msgstr "ब्राउज:"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:3
+msgid "Enter the room name to join here or click on one or more rooms in the list."
+msgstr "यहाँ जडान गर्न कोठा नाम प्रविष्ट गर्नुहोस् वा सूचीमा एक वा धेरै कोठामा क्लिक गर्नुहोस् ।"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:4
+msgid ""
+"Enter the server which hosts the room, or leave it empty if the room is on "
+"the current account's server"
+msgstr "कोठा होस्ट गर्ने सर्भर प्रविष्ट गर्नुहोस्, वा यदि कोठा हालको खाताको सर्भरमा छ भने यसलाई खाली छोड्नुहोस्"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:5
+msgid "Join"
+msgstr "जडान गर्नुहोस्"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:6
+msgid "Join New"
+msgstr "नयाँ जडान गर्नुहोस्"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:7
+msgid "Re_fresh"
+msgstr "ताजा पार्नुहोस्"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:8
+msgid "This list represents all chat rooms hosted on the server you have entered."
+msgstr "यो सूचीले तपाईँले प्रविष्ट गर्नुभएको सर्भरमा होस्ट भएका सबै कुराकानी कोठालाई प्रतिनिधित्व गर्दछ ।"
+
+#: ../libempathy-gtk/empathy-main-window.c:278
+msgid "Show and edit accounts"
+msgstr "खाताहरू देखाउनुहोस् र सम्पादन गर्नुहोस्"
+
+#: ../libempathy-gtk/empathy-main-window.c:634
+msgid "Contact"
+msgstr "सम्पर्क"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:1
+msgid "Contact list"
+msgstr "सम्पर्क सूची"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:2
+msgid "Context"
+msgstr "सामग्री"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:3
+msgid "Join _Favorites"
+msgstr "मनपर्ने जडान गर्नुहोस्"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:5
+msgid "Manage Favorites..."
+msgstr "मनपर्ने प्रबन्ध गर्नुहोस्..."
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:6
+msgid "Show _Offline Contacts"
+msgstr "अफलाइन सम्पर्कहरू देखाउनुहोस्"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:7
+#: ../megaphone/data/GNOME_Megaphone_Applet.xml.h:1
+#: ../nothere/data/GNOME_NotHere_Applet.xml.h:1
+msgid "_About"
+msgstr "बारेमा"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:8
+msgid "_Accounts"
+msgstr "खाताहरू"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:11
+msgid "_Contents"
+msgstr "सामग्रीहरू"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:13
+msgid "_Help"
+msgstr "मद्दत"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:14
+#: ../libempathy-gtk/empathy-status-icon.glade.h:2
+msgid "_New Message..."
+msgstr "नयाँ सन्देश..."
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:15
+msgid "_Personal Information"
+msgstr "व्यक्तिगत जानकारी"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:16
+#: ../megaphone/data/GNOME_Megaphone_Applet.xml.h:3
+msgid "_Preferences"
+msgstr "प्राथमिकताहरु"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:17
+#: ../libempathy-gtk/empathy-status-icon.glade.h:3
+msgid "_Quit"
+msgstr "अन्त्य गर्नुहोस्"
+
+#: ../libempathy-gtk/empathy-preferences.c:243
+msgid "Language"
+msgstr "भाषा"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:1
+msgid "<b>Appearance</b>"
+msgstr "<b>देखावट</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:2
+msgid "<b>Audio</b>"
+msgstr "<b>अडियो</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:3
+msgid "<b>Behaviour</b>"
+msgstr "<b>व्यवहार</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:4
+msgid "<b>Contact List</b>"
+msgstr "<b>सम्पर्क सूची</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:5
+msgid "<b>Enable spell checking for languages:</b>"
+msgstr "<b>भाषाहरूका लागि हिज्जे जाँच सक्षम पार्नुहोस्:</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:6
+msgid "<b>Options</b>"
+msgstr "<b>विकल्प</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:7
+msgid "<b>Visual</b>"
+msgstr "<b>दृश्यात्मक</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:8
+msgid ""
+"<small>The list of languages reflects only the languages for which you have "
+"a dictionary installed.</small>"
+msgstr "<small>भाषाको सूचीले तपाईँले शब्दकोशमा स्थापना गर्नुभएको भाषाहरू मात्र परावर्तन गर्दछ ।</small>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:9
+msgid "Avatars are user chosen images shown in the contact list"
+msgstr "अवतारहरू सम्पर्क सूचीमा देखाइएको प्रयोगकर्ताले छानेको छविहरू हुन्"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:10
+msgid "Chat Th_eme:"
+msgstr "कुराकानी विषयवस्तु:"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:11
+msgid "Display notifications when contacts come _online"
+msgstr "सम्पर्कहरू अनलाइन आउँदा सूचनाहरू प्रदर्शन गर्नुहोस्"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:12
+msgid "Enable sounds when _away"
+msgstr "टाढा हुँदा ध्वनि सक्षम पार्नुहोस्"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:13
+msgid "Enable sounds when _busy"
+msgstr "व्यस्त हुँदा ध्वनि सक्षम पार्नुहोस्"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:14
+msgid "General"
+msgstr "सामान्य"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:15
+msgid "Notifications"
+msgstr "सूचना"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:16
+msgid "Preferences"
+msgstr "प्राथमिकताहरू"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:17
+msgid "Show _avatars"
+msgstr "अवतार देखाउनुहोस्"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:18
+msgid "Show _smileys as images"
+msgstr "छविको रूपमा स्माइलीहरू देखाउनुहोस्"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:19
+msgid "Show co_mpact contact list"
+msgstr "सङ्कुचन सम्पर्क सूची देखाउनुहोस्"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:20
+msgid "Sort by _name"
+msgstr "नाम अनुसार क्रमबद्ध गर्नुहोस्"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:21
+msgid "Sort by s_tate"
+msgstr "स्थिति अनुसार क्रमबद्ध गर्नुहोस्"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:22
+msgid "Spell Checking"
+msgstr "हिज्जे जाँच"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:23
+msgid "Themes"
+msgstr "विषयवस्तु"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:24
+msgid "_Open new chats in separate windows"
+msgstr "नयाँ कुराकानी छुट्टै सञ्झ्यालहरूमा खोल्नुहोस्"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:25
+msgid "_Play sound when messages arrive"
+msgstr "सन्देशहरू आउँदा ध्वनि प्ले गर्नुहोस्"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:26
+msgid "_Use for chat rooms"
+msgstr "कुराकानीका लागि प्रयोग गर्नुहोस्"
+
+#. Custom messages
+#: ../libempathy-gtk/empathy-presence-chooser.c:690
+msgid "Custom messages..."
+msgstr "अनुकूल सन्देशहरू..."
+
+#: ../libempathy-gtk/empathy-presence-chooser.glade.h:1
+msgid "Custom message"
+msgstr "अनुकूल सन्देश"
+
+#: ../libempathy-gtk/empathy-presence-chooser.glade.h:2
+msgid "Message:"
+msgstr "सन्देश:"
+
+#: ../libempathy-gtk/empathy-presence-chooser.glade.h:3
+msgid "Save message"
+msgstr "सन्देश बचत गर्नुहोस्"
+
+#: ../libempathy-gtk/empathy-presence-chooser.glade.h:4
+msgid "Status:"
+msgstr "वस्तुस्थिति:"
+
+#: ../libempathy-gtk/empathy-private-chat.c:188
+#, c-format
+msgid "%s went offline"
+msgstr "%s अफलाइन भयो"
+
+#: ../libempathy-gtk/empathy-private-chat.c:202
+#, c-format
+msgid "%s has come online"
+msgstr "%s अनलाइन भयो"
+
+#: ../libempathy-gtk/empathy-spell-dialog.c:85
+msgid "Word"
+msgstr "शब्द"
+
+#: ../libempathy-gtk/empathy-spell-dialog.c:258
+msgid "Suggestions for the word"
+msgstr "शब्दका लागि सुझावहरू"
+
+#: ../libempathy-gtk/empathy-spell-dialog.glade.h:1
+msgid "Spell Checker"
+msgstr "हिज्जे परीक्षक"
+
+#: ../libempathy-gtk/empathy-spell-dialog.glade.h:2
+msgid "Suggestions for the word:"
+msgstr "शब्दका लागि सुझावहरू:"
+
+#: ../libempathy-gtk/empathy-status-icon.c:311
+#, c-format
+msgid ""
+"New message from %s:\n"
+"%s"
+msgstr ""
+"%s बाट नयाँ सन्देश:\n"
+"%s"
+
+#: ../libempathy-gtk/empathy-status-icon.c:572
+#, c-format
+msgid "Subscription requested by %s"
+msgstr "%s द्वारा अनुरोध गरिएको सदस्यता"
+
+#: ../libempathy-gtk/empathy-status-icon.c:575
+#, c-format
+msgid ""
+"\n"
+"Message: %s"
+msgstr ""
+"\n"
+"सन्देश: %s"
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:1
+msgid "Status"
+msgstr "वस्तुस्थिति"
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:4
+msgid "_Show Contact List"
+msgstr "सम्पर्क सूची देखाउनुहोस्"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:87
+msgid "Classic"
+msgstr "पुरानो"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:88
+msgid "Simple"
+msgstr "साधरण"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:89
+msgid "Clean"
+msgstr "खाली गर्नुहोस्"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:90
+msgid "Blue"
+msgstr "नीलो"
+
+#: ../megaphone/data/GNOME_Megaphone_Applet.schemas.in.h:1
+msgid "The contact to display in the applet. Empty means no contact is displayed."
+msgstr "एप्लेटमा प्रदर्शन गर्न सम्पर्क । खालीको अर्थ कुनै सम्पर्क प्रदर्शन भएको छैन ।"
+
+#: ../megaphone/data/GNOME_Megaphone_Applet.schemas.in.h:2
+msgid "The contact's avatar token. Empty means contact has no avatar."
+msgstr "सम्पर्कको अवतार टोकन । खालीको अर्थ सम्पर्कसँग अवतार छैन ।"
+
+#: ../megaphone/data/GNOME_Megaphone_Applet.server.in.in.h:1
+msgid "Megaphone"
+msgstr "मेगाफोन"
+
+#: ../megaphone/data/GNOME_Megaphone_Applet.server.in.in.h:2
+#: ../megaphone/src/megaphone-applet.c:419
+msgid "Talk!"
+msgstr "कुराकानी!"
+
+#: ../megaphone/data/GNOME_Megaphone_Applet.xml.h:2
+msgid "_Information"
+msgstr "जानकारी"
+
+#: ../nothere/data/GNOME_NotHere_Applet.server.in.in.h:1
+msgid "Presence"
+msgstr "उपस्थिति"
+
+#: ../nothere/data/GNOME_NotHere_Applet.server.in.in.h:2
+#: ../nothere/src/nothere-applet.c:89
+msgid "Set your own presence"
+msgstr "तपाईँको आफ्नो उपस्थिति सेट गर्नुहोस्"
+
+#: ../src/empathy.c:271
+msgid "Don't connect on startup"
+msgstr "सुरुआतमा जडान नगर्नुहोस्"
+
+#: ../src/empathy.c:282
+msgid "- Empathy Instant Messenger"
+msgstr "इम्प्याथी शीघ्र मेसेन्जर"
+
diff --git a/gnome-2-22/po/nl.po b/gnome-2-22/po/nl.po
new file mode 100644
index 000000000..ddf189ce8
--- /dev/null
+++ b/gnome-2-22/po/nl.po
@@ -0,0 +1,1971 @@
+# Dutch translation of Gossip.
+#
+# Copyright (C) 2003-2004 Free Software Foundation, Inc.
+# This file is distributed under the same license as the gossip package.
+#
+# Vincent van Adrighem <V.vanAdrighem@dirck.mine.nu>, 2003.
+# Taco Witte <tcwitte@cs.uu.nl>, 2003-2004.
+# Wouter Bolsterlee <wbolster@gnome.org>, 2006, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gossip cvs\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-05-15 23:46+0200\n"
+"PO-Revision-Date: 2007-04-09 15:19+0200 \n"
+"Last-Translator: Wouter Bolsterlee <wbolster@gnome.org>\n"
+"Language-Team: Gnome-NL <gnome-nl-list@gnome.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: ../data/empathy.desktop.in.h:1
+#, fuzzy
+msgid "Empathy Instant Messenger"
+msgstr "Instant Messenger"
+
+#: ../data/empathy.desktop.in.h:2
+msgid "Instant Messenger"
+msgstr "Instant Messenger"
+
+#: ../data/empathy.schemas.in.h:1
+msgid "Always open a separate chat window for new chats."
+msgstr "Altijd een nieuw scherm voor nieuwe gesprekken openen."
+
+#: ../data/empathy.schemas.in.h:2
+msgid "Chat window theme"
+msgstr "Thema voor chatvensters"
+
+#: ../data/empathy.schemas.in.h:3
+msgid ""
+"Comma separated list of spell checker languages to use (e.g. en, fr, nl)."
+msgstr ""
+"Komma-gescheiden lijst van talen voor de spellingchecker (bijv. en, fr, nl)."
+
+#: ../data/empathy.schemas.in.h:4
+msgid "Compact contact list"
+msgstr "Compacte contactlijst"
+
+#: ../data/empathy.schemas.in.h:5
+msgid "Contact list sort criterium"
+msgstr ""
+
+# avatar? :s (Wouter Bolsterlee)
+#: ../data/empathy.schemas.in.h:6
+msgid "Default directory to select an avatar image from"
+msgstr "Standaardmap voor het kiezen van gebruikersafbeeldingen"
+
+#: ../data/empathy.schemas.in.h:7
+msgid "Enable popup when contact is available"
+msgstr "Notificatiebericht tonen als een contact online komt"
+
+#: ../data/empathy.schemas.in.h:8
+msgid "Enable sound when away"
+msgstr "Geluid afspelen indien afwezig"
+
+#: ../data/empathy.schemas.in.h:9
+msgid "Enable sound when busy"
+msgstr "Geluid afspelen indien bezig"
+
+#: ../data/empathy.schemas.in.h:10
+msgid "Enable spell checker"
+msgstr "Spellingchecker inschakelen"
+
+#: ../data/empathy.schemas.in.h:11
+msgid "Hide main window"
+msgstr "Hoofdvenster verbergen"
+
+#: ../data/empathy.schemas.in.h:12
+msgid "Hide the main window."
+msgstr "Het hoofdvenster niet tonen."
+
+#: ../data/empathy.schemas.in.h:13
+msgid "Open new chats in separate windows"
+msgstr "Nieuwe chats openen in aparte vensters"
+
+#: ../data/empathy.schemas.in.h:14
+msgid "Show avatars"
+msgstr "Gebruikersafbeeldingen tonen"
+
+#: ../data/empathy.schemas.in.h:15
+msgid "Show hint about closing the main window"
+msgstr "Tip tonen bij het sluiten van het hoofdvenster."
+
+#: ../data/empathy.schemas.in.h:16
+msgid "Show offline contacts"
+msgstr "Offline contacten tonen"
+
+#: ../data/empathy.schemas.in.h:17
+msgid "Spell checking languages"
+msgstr "Talen voor de spellingchecker"
+
+#: ../data/empathy.schemas.in.h:18
+msgid "The last directory that an avatar image was chosen from."
+msgstr "De laatst gebruikte map voor gebruikersafbeeldingen."
+
+#: ../data/empathy.schemas.in.h:19
+msgid "The theme that is used to display the conversation in chat windows."
+msgstr "Het thema dat gebruikt wordt voor het tonen van chats in chatvensters."
+
+#: ../data/empathy.schemas.in.h:20
+msgid "Use graphical smileys"
+msgstr "Smileys grafisch tonen"
+
+#: ../data/empathy.schemas.in.h:21
+msgid "Use notification sounds"
+msgstr "Waarschuwingsgeluiden gebruiken"
+
+#: ../data/empathy.schemas.in.h:22
+msgid "Use theme for chat rooms"
+msgstr "Thema voor chatruimte gebruiken"
+
+# Bah, wat een lelijke vertaling (Wouter Bolsterlee)
+#: ../data/empathy.schemas.in.h:23
+msgid ""
+"Whether or not to check words typed against the languages you want to check "
+"with."
+msgstr ""
+"Ingetypte woorden al dan niet controleren op de talen waar u op wilt "
+"controleren."
+
+#: ../data/empathy.schemas.in.h:24
+msgid ""
+"Whether or not to convert smileys into graphical images in conversations."
+msgstr "Smileys in gesprekken grafisch tonen."
+
+#: ../data/empathy.schemas.in.h:25
+msgid "Whether or not to play a sound when messages arrive."
+msgstr "Een geluid afspelen als berichten binnenkomen."
+
+#: ../data/empathy.schemas.in.h:26
+msgid "Whether or not to play sounds when away."
+msgstr "Geluiden afspelen indien afwezig."
+
+#: ../data/empathy.schemas.in.h:27
+msgid "Whether or not to play sounds when busy."
+msgstr "Geluiden afspelen indien bezig."
+
+#: ../data/empathy.schemas.in.h:28
+msgid "Whether or not to show a popup when a contact becomes available."
+msgstr "Een notificatiebericht tonen als een contact online komt."
+
+#: ../data/empathy.schemas.in.h:29
+msgid ""
+"Whether or not to show avatars for contacts in the contact list and chat "
+"windows."
+msgstr ""
+"Gebruikersafbeeldingen wel of niet tonen in de contactlijst en chatvensters."
+
+#: ../data/empathy.schemas.in.h:30
+msgid "Whether or not to show contacts that are offline in the contact list."
+msgstr "Contacten die offline zijn in de contactlijst wel of niet tonen."
+
+#: ../data/empathy.schemas.in.h:31
+msgid ""
+"Whether or not to show the message dialog about closing the main window with "
+"the 'x' button in the title bar."
+msgstr ""
+"Al dan niet het informatievenster over het sluiten van het hoofdvenster "
+"tonen als het venster met de ‘x’ in de titelbank gesloten wordt."
+
+#: ../data/empathy.schemas.in.h:32
+msgid "Whether to show the contact list in compact mode or not."
+msgstr "Al dan niet de contactlijst in compacte modus tonen"
+
+#: ../data/empathy.schemas.in.h:33
+msgid "Whether to use the theme for chat rooms or not."
+msgstr "Thema voor chatruimtes gebruiken"
+
+#: ../data/empathy.schemas.in.h:34
+msgid ""
+"Which criterium to use when sorting the contact list. Default is to use sort "
+"by the contact's name with the value \"name\". A value of \"state\" will "
+"sort the contact list by state."
+msgstr ""
+
+#: ../libempathy/gossip-contact.c:654 ../libempathy/gossip-presence.c:184
+#: ../libempathy/gossip-presence.c:283
+msgid "Offline"
+msgstr "Offline"
+
+#: ../libempathy/gossip-presence.c:274
+msgid "Available"
+msgstr "Beschikbaar"
+
+#: ../libempathy/gossip-presence.c:276
+msgid "Busy"
+msgstr "Bezig"
+
+#: ../libempathy/gossip-presence.c:279
+msgid "Away"
+msgstr "Afwezig"
+
+#: ../libempathy-gtk/empathy-main-window.c:254
+msgid "Show and edit accounts"
+msgstr "Accounts tonen en bewerken"
+
+#: ../libempathy-gtk/empathy-main-window.c:456
+msgid "Group"
+msgstr "Groep"
+
+#: ../libempathy-gtk/empathy-main-window.c:477
+msgid "Contact"
+msgstr "Contact"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:1
+#, fuzzy
+msgid "Contact List - Empathy"
+msgstr "Contactlijst - Gossip"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:2
+msgid "Context"
+msgstr "Context"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:3
+msgid "Join _Favorites"
+msgstr "_Bladwijzers openen"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:4
+#: ../libempathy-gtk/gossip-chat.glade.h:10
+msgid "Join _New..."
+msgstr "_Nieuw groepsgesprek binnengaan…"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:5
+msgid "Manage Favorites..."
+msgstr "Bladwijzers beheren…"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:6
+msgid "Show _Offline Contacts"
+msgstr "_Offline contacten tonen"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:7
+msgid "_About"
+msgstr "_Over"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:8
+msgid "_Accounts"
+msgstr "_Accounts"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:9
+#: ../libempathy-gtk/gossip-chat.glade.h:15
+msgid "_Add Contact..."
+msgstr "_Contact toevoegen..."
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:10
+#: ../libempathy-gtk/gossip-contact-list.c:298
+msgid "_Chat"
+msgstr "_Chatten"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:11
+msgid "_Contents"
+msgstr "In_houd"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:12
+#: ../libempathy-gtk/gossip-chat.glade.h:21
+#: ../libempathy-gtk/gossip-contact-list.c:310
+msgid "_Edit"
+msgstr "Be_werken"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:13
+msgid "_Help"
+msgstr "_Help"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:14
+#: ../libempathy-gtk/empathy-status-icon.glade.h:2
+msgid "_New Message..."
+msgstr "_Nieuw bericht..."
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:15
+msgid "_Personal Information"
+msgstr "_Persoonlijke gegevens"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:16
+msgid "_Preferences"
+msgstr "_Voorkeuren"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:17
+#: ../libempathy-gtk/empathy-status-icon.glade.h:3
+msgid "_Quit"
+msgstr "_Afsluiten"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:18
+#: ../libempathy-gtk/gossip-chat.glade.h:25
+msgid "_Room"
+msgstr "_Ruimte"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:19
+#: ../libempathy-gtk/gossip-chat.glade.h:28
+#: ../libempathy-gtk/gossip-contact-list.c:326
+msgid "_View Previous Conversations"
+msgstr "_Vorige gesprekken tonen"
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:1
+msgid "Status"
+msgstr "Status"
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:4
+msgid "_Show Contact List"
+msgstr "Contactlijst _tonen"
+
+#: ../libempathy-gtk/gossip-about-dialog.c:63
+#, fuzzy
+msgid ""
+"Empathy is free software; you can redistribute it and/or modify it under the "
+"terms of the GNU General Public License as published by the Free Software "
+"Foundation; either version 2 of the License, or (at your option) any later "
+"version."
+msgstr ""
+"Gossip is vrije Software; u kunt het verspreiden en/of aanpassen onder de "
+"voorwaarden van de GNU General Public License zoals uitgegeven door de Free "
+"Software Foundation; ofwel versie 2, ofwel (naar keuze) een latere versie."
+
+#: ../libempathy-gtk/gossip-about-dialog.c:67
+#, fuzzy
+msgid ""
+"Empathy is distributed in the hope that it will be useful, but WITHOUT ANY "
+"WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS "
+"FOR A PARTICULAR PURPOSE. See the GNU General Public License for more "
+"details."
+msgstr ""
+"Gossip wordt verspreid in de hoop dat het bruikbaar is, maar ZONDER ENIGE "
+"GARANTIE; zelfs niet de impliciete garantie van VERKOOPBAARHEID of "
+"GESCHIKTHEID VOOR EEN BEPAALD DOEL. Zie de GNU General Public License voor "
+"meer informatie."
+
+#: ../libempathy-gtk/gossip-about-dialog.c:71
+#, fuzzy
+msgid ""
+"You should have received a copy of the GNU General Public License along with "
+"Empathy; if not, write to the Free Software Foundation, Inc., 51 Franklin "
+"Street, Fifth Floor, Boston, MA 02110-130159 USA"
+msgstr ""
+"U zou een kopie van de GNU General Public License moeten hebben ontvangen "
+"bij Gossip; is dit niet het geval, dan kun u schrijven naar de Free Software "
+"Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-130159 "
+"USA"
+
+#: ../libempathy-gtk/gossip-about-dialog.c:99
+msgid "An Instant Messaging client for GNOME"
+msgstr "Gossip, een chatclient voor GNOME"
+
+#: ../libempathy-gtk/gossip-about-dialog.c:105
+msgid "translator-credits"
+msgstr ""
+"Vincent van Adrighem\n"
+"Taco Witte\n"
+"Wouter Bolsterlee\n"
+"http://nl.gnome.org/"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:224
+#, fuzzy
+msgid "Disable"
+msgstr "Beschikbaar"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:227
+#, fuzzy
+msgid "Enable"
+msgstr "Voorbeeld"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:261
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:3
+msgid "<b>No Account Selected</b>"
+msgstr "<b>Geen account geselecteerd</b>"
+
+# Vrij vertaald (Wouter Bolsterlee)
+#: ../libempathy-gtk/gossip-accounts-dialog.c:263
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to start configuring.\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want "
+"to configure in the list on the left."
+msgstr ""
+"U kunt de knop ‘Toevoegen’ gebruiken om een nieuw account toe te voegen en "
+"in te stellen.\n"
+"\n"
+"Om bestaande accountgegevens te veranderen u een account uit de lijst aan de "
+"linkerzijde kiezen."
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:272
+msgid "<b>No Accounts Configured</b>"
+msgstr "<b>Geen accounts ingesteld</b>"
+
+# Vrij vertaald (Wouter Bolsterlee)
+#: ../libempathy-gtk/gossip-accounts-dialog.c:274
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to start configuring."
+msgstr ""
+"U kunt de knop ‘Toevoegen’ gebruiken om een nieuw account toe te voegen en "
+"in te stellen."
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:362
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:6
+msgid "Accounts"
+msgstr "Accounts"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:857
+#, c-format
+msgid ""
+"You are about to remove your %s account!\n"
+"Are you sure you want to proceed?"
+msgstr ""
+"Het account ‘%s’ zal verwijderd worden!\n"
+"Weet u zeker dat u wilt doorgaan?"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:863
+msgid ""
+"Any associated conversations and chat rooms will NOT be removed if you "
+"decide to proceed.\n"
+"\n"
+"Should you decide to add the account back at a later time, they will still "
+"be available."
+msgstr ""
+"Gerelateerde gesprekken en chatruimtes zullen niet verwijderd worden als u "
+"doorgaat.\n"
+"\n"
+"Als u het account later weer toevoegt, dan zullen deze weer beschikbaar zijn."
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:1
+msgid "<b>Account</b>"
+msgstr "<b>Account</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:2
+msgid "<b>New Account</b>"
+msgstr "<b>Nieuw account</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:4
+msgid "<b>Settings</b>"
+msgstr "<b>Instellingen</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:5
+msgid "A unique name for this account to identify it personally to you."
+msgstr ""
+"Een unieke naam voor dit account om het voor u persoonlijk herkenbaar te "
+"maken."
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:7
+msgid "Cr_eate"
+msgstr "_Aanmaken"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:8
+msgid "Imendio "
+msgstr "Imendio "
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:9
+msgid "Jabber"
+msgstr "Jabber"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:10
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to started configuring.\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want "
+"to configure in the list on the left."
+msgstr ""
+"U kunt de knop ‘Toevoegen’ gebruiken om een nieuw account toe te voegen en "
+"in te stellen.\n"
+"\n"
+"Om bestaande accountgegevens te veranderen u een account uit de lijst aan de "
+"linkerzijde kiezen."
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:13
+msgid "_Name:"
+msgstr "_Naam:"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:14
+msgid "_Type:"
+msgstr "_Type:"
+
+#: ../libempathy-gtk/gossip-account-widget-generic.c:144
+#: ../libempathy-gtk/gossip-account-widget-generic.c:186
+#, c-format
+msgid "%s:"
+msgstr "%s:"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:1
+msgid ""
+"<small><b><span foreground=\"#555\">Example: user@jabber.org</span></b></"
+"small>"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:2
+msgid "Forget password and clear the entry."
+msgstr "Wachtwoord vergeten en het invoervak leegmaken"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:3
+msgid "Login I_D:"
+msgstr "Login I_D"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:4
+msgid "Pass_word:"
+msgstr "_Wachtwoord:"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:5
+msgid "Reso_urce:"
+msgstr "_Bron:"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:6
+msgid "Use encryption (SS_L)"
+msgstr "Encryptie gebruiken (SS_L)"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:7
+msgid "_Port:"
+msgstr "_Poort:"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:8
+msgid "_Server:"
+msgstr "_Server:"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:9
+msgid "jabber account settings"
+msgstr "jabber-accountgegevens"
+
+#: ../libempathy-gtk/gossip-chat.c:314
+msgid "Disconnected"
+msgstr "Verbinding verbroken"
+
+#: ../libempathy-gtk/gossip-chat.c:858
+msgid "Insert Smiley"
+msgstr "Smiley invoegen"
+
+#: ../libempathy-gtk/gossip-chat.c:906
+msgid "_Check Word Spelling..."
+msgstr "Spelling van woord _controleren..."
+
+#: ../libempathy-gtk/gossip-chat.c:1244
+msgid "Connected"
+msgstr "Verbonden"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:1
+msgid "C_lear"
+msgstr "_Wissen"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:2
+msgid "Change _Topic..."
+msgstr "_Onderwerp instellen…"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:3
+msgid "Chat"
+msgstr "Chatten"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:4
+msgid "Contact Infor_mation"
+msgstr "Contactinfor_matie"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:5
+msgid "Cu_t"
+msgstr "K_nippen"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:6
+msgid "In_vite..."
+msgstr "_Uitnodigen…"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:7
+msgid "Insert _Smiley"
+msgstr "_Smiley invoegen"
+
+# Vrij vertaald (Wouter Bolsterlee)
+#: ../libempathy-gtk/gossip-chat.glade.h:8
+msgid "Invitation _message:"
+msgstr "_Uitnodiging:"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:9
+msgid "Invite"
+msgstr "Uitnodigen"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:11
+msgid "Move Tab _Left"
+msgstr "Tabblad naar _links verplaatsen"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:12
+msgid "Move Tab _Right"
+msgstr "Tabblad naar _rechts verplaatsen"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:13
+msgid "Select who would you like to invite:"
+msgstr "Kies wie u wilt uitnodigen:"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:14
+msgid "You have been invited to join a chat conference."
+msgstr "U bent uitgenodigd voor een groepsgesprek."
+
+#: ../libempathy-gtk/gossip-chat.glade.h:16
+msgid "_Add To Favorites"
+msgstr "_Aan bladwijzers toevoegen"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:17
+msgid "_Close"
+msgstr "Sl_uiten"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:18
+msgid "_Conversation"
+msgstr "_Gesprek"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:19
+msgid "_Copy"
+msgstr "_Kopiëren"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:20
+msgid "_Detach Tab"
+msgstr "Tabblad _losmaken"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:22
+msgid "_Next Tab"
+msgstr "Vo_lgend tabblad"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:23
+msgid "_Paste"
+msgstr "_Plakken"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:24
+msgid "_Previous Tab"
+msgstr "Vo_rig tabblad"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:26
+msgid "_Show Contacts"
+msgstr "C_ontactlijst tonen"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:27
+msgid "_Tabs"
+msgstr "_Tabbladen"
+
+#: ../libempathy-gtk/gossip-chat-view.c:544
+msgid "_Copy Link Address"
+msgstr "Koppelingsadres _kopiëren"
+
+#: ../libempathy-gtk/gossip-chat-view.c:552
+msgid "_Open Link"
+msgstr "Koppeling _openen"
+
+#: ../libempathy-gtk/gossip-chat-view.c:889
+msgid "%A %d %B %Y"
+msgstr "%A %d %B %Y"
+
+#: ../libempathy-gtk/gossip-chat-window.c:685
+#: ../libempathy-gtk/gossip-chat-window.c:715
+msgid "New Message"
+msgid_plural "New Messages"
+msgstr[0] "Nieuw bericht"
+msgstr[1] "Nieuwe berichten"
+
+#: ../libempathy-gtk/gossip-chat-window.c:691
+msgid "Chat Room"
+msgstr "Chatruimte"
+
+#: ../libempathy-gtk/gossip-chat-window.c:696
+#: ../libempathy-gtk/gossip-chat-window.c:719
+#, c-format
+msgid "Conversation"
+msgid_plural "Conversations (%d)"
+msgstr[0] "Gesprek"
+msgstr[1] "Gesprekken (%d)"
+
+#: ../libempathy-gtk/gossip-chat-window.c:1295
+msgid "Typing a message."
+msgstr "Bezig met typen van een bericht."
+
+#: ../libempathy-gtk/gossip-contact-list.c:290
+msgid "_Contact"
+msgstr "_Contact"
+
+#: ../libempathy-gtk/gossip-contact-list.c:294
+msgid "_Group"
+msgstr "_Groep"
+
+#: ../libempathy-gtk/gossip-contact-list.c:298
+msgid "Chat with contact"
+msgstr "Met dit contact chatten"
+
+#: ../libempathy-gtk/gossip-contact-list.c:302
+msgid "Infor_mation"
+msgstr "Infor_matie"
+
+#: ../libempathy-gtk/gossip-contact-list.c:302
+msgid "View contact information"
+msgstr "Contactinformatie tonen"
+
+#: ../libempathy-gtk/gossip-contact-list.c:306
+msgid "Re_name"
+msgstr "Her_noemen"
+
+#: ../libempathy-gtk/gossip-contact-list.c:306
+msgid "Rename"
+msgstr "Hernoemen"
+
+#: ../libempathy-gtk/gossip-contact-list.c:310
+msgid "Edit the groups and name for this contact"
+msgstr "Groepen en naam voor dit contact bewerken"
+
+#: ../libempathy-gtk/gossip-contact-list.c:314
+msgid "_Remove"
+msgstr "_Verwijderen"
+
+#: ../libempathy-gtk/gossip-contact-list.c:314
+msgid "Remove contact"
+msgstr "Contact verwijderen"
+
+#: ../libempathy-gtk/gossip-contact-list.c:318
+msgid "_Invite to Chat Room"
+msgstr "In chatruimte _uitnodigen"
+
+#: ../libempathy-gtk/gossip-contact-list.c:318
+msgid "Invite to a currently open chat room"
+msgstr "In een geopende chatruimte uitnodigen"
+
+#: ../libempathy-gtk/gossip-contact-list.c:322
+msgid "_Send File..."
+msgstr "Be_stand versturen…"
+
+#: ../libempathy-gtk/gossip-contact-list.c:322
+msgid "Send a file"
+msgstr "Een bestand versturen"
+
+#: ../libempathy-gtk/gossip-contact-list.c:326
+msgid "View previous conversations with this contact"
+msgstr "Vorige gesprekken met dit contact tonen"
+
+#: ../libempathy-gtk/gossip-preferences.c:250
+msgid "Language"
+msgstr "Taal"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:1
+msgid "<b>Appearance</b>"
+msgstr "<b>Uiterlijk</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:2
+msgid "<b>Audio</b>"
+msgstr "<b>Geluid</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:3
+msgid "<b>Behaviour</b>"
+msgstr "<b>Gedrag</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:4
+#, fuzzy
+msgid "<b>Contact List</b>"
+msgstr "<b>Verbinding</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:5
+msgid "<b>Languages</b>"
+msgstr "<b>Talen</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:6
+msgid "<b>Options</b>"
+msgstr "<b>Opties</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:7
+msgid "<b>Visual</b>"
+msgstr "<b>Visueel</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:8
+msgid ""
+"<small>The list of languages reflects only the languages for which you have "
+"a dictionary installed.</small>"
+msgstr ""
+"<small>Bovenstaande lijst met talen toont alleen de talen waarvoor u een "
+"woordenboek heeft geïnstalleerd.</small>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:9
+msgid "Avatars are user chosen images shown in the contact list"
+msgstr ""
+"Gebruikersafbeeldingen zijn door de gebruiker gekozen afbeeldingen die in de "
+"contactlijst en in chatvensters getoond worden"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:10
+msgid "Chat Th_eme:"
+msgstr "_Chatthema:"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:11
+msgid "Display notifications when contacts come _online"
+msgstr "_Notificatiebericht tonen als contacten online komen"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:12
+msgid "Enable sounds when _away"
+msgstr "Geluid afspelen indien _afwezig"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:13
+msgid "Enable sounds when _busy"
+msgstr "Geluid afspelen indien _bezig"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:14
+msgid "General"
+msgstr "Algemeen"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:15
+msgid "Notifications"
+msgstr "Notificatieberichten"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:16
+msgid "Preferences"
+msgstr "Voorkeuren"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:17
+msgid "Show _avatars"
+msgstr "_Gebruikersafbeeldingen tonen"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:18
+msgid "Show _smileys as images"
+msgstr "_Smileys tonen"
+
+# Vrij vertaald (Wouter Bolsterlee)
+#: ../libempathy-gtk/gossip-preferences.glade.h:19
+msgid "Show co_mpact contact list"
+msgstr "Contactlijst co_mpact maken"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:20
+msgid "Sort by _name"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:21
+msgid "Sort by s_tate"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:22
+msgid "Spell Checking"
+msgstr "Spellingchecker"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:23
+msgid "Themes"
+msgstr "Thema's"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:24
+msgid "_Enable spell checking"
+msgstr "_Spellingchecker inschakelen"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:25
+msgid "_Open new chats in separate windows"
+msgstr "_Nieuwe chats in eigen vensters openen"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:26
+msgid "_Play sound when messages arrive"
+msgstr "_Geluid afspelen bij nieuwe berichten"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:27
+msgid "_Use for chat rooms"
+msgstr "Voor chatruimtes _gebruiken"
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:702
+msgid "Custom message..."
+msgstr "Aangepast bericht…"
+
+#. Clear list
+#: ../libempathy-gtk/gossip-presence-chooser.c:724
+msgid "Clear List..."
+msgstr "Lijst wissen…"
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:803
+msgid "Are you sure you want to clear the list?"
+msgstr "Weet u zeker dat u de lijst wilt wissen?"
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:807
+msgid ""
+"This will remove any custom messages you have added to the list of preset "
+"status messages."
+msgstr ""
+"Hiermee verwijdert u alle aangepaste statusberichten die u eerder aan de "
+"lijst heeft toegevoegd."
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:812
+msgid "Clear List"
+msgstr "Wissen"
+
+#: ../libempathy-gtk/gossip-presence-chooser.glade.h:1
+msgid "Enter status message:"
+msgstr "Geef een statusbericht:"
+
+#: ../libempathy-gtk/gossip-presence-chooser.glade.h:2
+msgid "Status Message Presets"
+msgstr "Opgeslagen statusberichten"
+
+#: ../libempathy-gtk/gossip-presence-chooser.glade.h:3
+msgid "_Add to status message list"
+msgstr "_Aan statusberichten toevoegen"
+
+#: ../libempathy-gtk/gossip-private-chat.c:198
+#, c-format
+msgid "%s went offline"
+msgstr "%s ging offline"
+
+#: ../libempathy-gtk/gossip-private-chat.c:212
+#, c-format
+msgid "%s has come online"
+msgstr "%s is nu online"
+
+#: ../libempathy-gtk/gossip-theme-manager.c:87
+msgid "Classic"
+msgstr "Klassiek"
+
+#: ../libempathy-gtk/gossip-theme-manager.c:88
+msgid "Simple"
+msgstr "Simpel"
+
+# Dichterlijke vrijheid (Wouter Bolsterlee)
+#: ../libempathy-gtk/gossip-theme-manager.c:89
+msgid "Clean"
+msgstr "Helder"
+
+#: ../libempathy-gtk/gossip-theme-manager.c:90
+msgid "Blue"
+msgstr "Blauw"
+
+#: ../src/empathy-main.c:145
+msgid "Don't connect on startup"
+msgstr "Niet verbinden bij opstarten"
+
+#: ../src/empathy-main.c:155
+#, fuzzy
+msgid "- Empathy Instant Messenger"
+msgstr "- Gossip Instant Messenger"
+
+#~ msgid "Gossip Instant Messenger"
+#~ msgstr "Gossip Instant Messenger"
+
+#~ msgid "Normal"
+#~ msgstr "Normaal"
+
+#~ msgid "Joining"
+#~ msgstr "Verbinden…"
+
+#~ msgid "Active"
+#~ msgstr "Actief"
+
+#~ msgid "Inactive"
+#~ msgstr "Niet actief"
+
+#~ msgid "Unknown"
+#~ msgstr "Onbekend"
+
+#~ msgid "Error"
+#~ msgstr "Fout"
+
+#~ msgid "Moderator"
+#~ msgid_plural "Moderators"
+#~ msgstr[0] "Moderator"
+#~ msgstr[1] "Moderators"
+
+#~ msgid "Participant"
+#~ msgid_plural "Participants"
+#~ msgstr[0] "Deelnemer"
+#~ msgstr[1] "Deelnemers"
+
+#~ msgid "Visitor"
+#~ msgid_plural "Visitors"
+#~ msgstr[0] "Bezoeker"
+#~ msgstr[1] "Bezoekers"
+
+#~ msgid "No role"
+#~ msgstr "Geen rol"
+
+#~ msgid "Owner"
+#~ msgid_plural "Owners"
+#~ msgstr[0] "Eigenaar"
+#~ msgstr[1] "Eigenaars"
+
+#~ msgid "Administrator"
+#~ msgid_plural "Administrators"
+#~ msgstr[0] "Beheerder"
+#~ msgstr[1] "Beheerders"
+
+#~ msgid "Member"
+#~ msgid_plural "Members"
+#~ msgstr[0] "Lid"
+#~ msgstr[1] "Leden"
+
+# Vrij vertaald (Wouter Bolsterlee)
+#~ msgid "Outcast"
+#~ msgid_plural "Outcasts"
+#~ msgstr[0] "Buitenstaander"
+#~ msgstr[1] "Buitenstaanders"
+
+# Vrij vertaald (Wouter Bolsterlee)
+#~ msgid "No affiliation"
+#~ msgstr "Geen relatie"
+
+#~ msgid "The nickname you have chosen is already in use."
+#~ msgstr "De bijnaam die u heeft gekozen is al in gebruik."
+
+#~ msgid "The chat room you tried to join requires a password."
+#~ msgstr ""
+#~ "De chatruimte die u probeert te betreden is met een wachtwoord beveiligd."
+
+#~ msgid "The remote conference server did not respond in a sensible time."
+#~ msgstr "The chatserver gaf geen antwoord binnen de verwachte tijd."
+
+#~ msgid "The conference server you tried to join could not be found."
+#~ msgstr "De chatserver kon niet gevonden worden."
+
+#~ msgid "An unknown error occurred, check your details are correct."
+#~ msgstr "Er is een onbekende fout opgetreden. Controleer uw gegevens."
+
+#~ msgid "Joining the chatroom was canceled."
+#~ msgstr "Binnengaan van chatruimte is geannuleerd"
+
+#~ msgid "Unavailable"
+#~ msgstr "Niet beschikbaar"
+
+#~ msgid "An unknown error occurred."
+#~ msgstr "Een onbekende fout is opgetreden."
+
+#~ msgid "Connection refused."
+#~ msgstr "Verbinding geweigerd."
+
+#~ msgid "Server address could not be resolved."
+#~ msgstr "Het serveradres kon niet opgevraagd worden."
+
+#~ msgid "Connection timed out."
+#~ msgstr "Er kan geen verbinding gemaakt worden."
+
+#~ msgid "Authentication failed."
+#~ msgstr "Aanmelden mislukt."
+
+#~ msgid "The username you are trying already exists."
+#~ msgstr "Deze gebruikersnaam is al in gebruik."
+
+#~ msgid "The username you are trying is not valid."
+#~ msgstr "Deze gebruikersnaam is niet geldig."
+
+#~ msgid "This feature is unavailable."
+#~ msgstr "Deze functie is niet beschikbaar."
+
+#~ msgid "This feature is unauthorized."
+#~ msgstr "Deze functie is niet toegankelijk."
+
+#~ msgid "A specific protocol error occurred that was unexpected."
+#~ msgstr "Er is een onverwachtse protocolfout opgetreden."
+
+#~ msgid "new account"
+#~ msgstr "nieuw account"
+
+#~ msgid "Home"
+#~ msgstr "Thuis"
+
+#~ msgid "Couldn't send message!"
+#~ msgstr "Bericht kon niet verzonden worden!"
+
+#~ msgid "Connection could not be opened"
+#~ msgstr "Verbinding kon niet gemaakt worden"
+
+#~ msgid "Service has gone and is no longer available"
+#~ msgstr "De dienst is niet langer beschikbaar"
+
+#~ msgid "Bad or malformed request to this service"
+#~ msgstr "Onjuiste aanvraag voor deze dienst"
+
+#~ msgid "Unauthorized request to this service"
+#~ msgstr "Aanvraag voor deze dienst niet toegestaan"
+
+#~ msgid "Payment is required for this service"
+#~ msgstr "Deze dienst vereist betaling"
+
+#~ msgid "This service is forbidden"
+#~ msgstr "Geen toegang tot deze dienst"
+
+#~ msgid "This service is unavailable or not found"
+#~ msgstr "Deze functie is niet beschikbaar of kon niet gevonden worden."
+
+#~ msgid "Unacceptable request sent to this services"
+#~ msgstr "Onacceptabele aanvraag naar deze dienst verstuurd"
+
+#~ msgid "Registration is required"
+#~ msgstr "Registratie is vereist"
+
+# Huh, wat betekent dit? (Wouter Bolsterlee)
+#~ msgid "There was a conflict of interest trying to use this service"
+#~ msgstr "Conflicterende belangen bij het gebruik van deze dienst"
+
+#~ msgid "There was an internal service error"
+#~ msgstr "Er is een interne fout opgetreden"
+
+#~ msgid "This feature is not implemented"
+#~ msgstr "Deze functie is niet geïmplementeerd."
+
+# Vrij vertaald (Wouter Bolsterlee)
+#~ msgid "The remote service timed out"
+#~ msgstr "De server gaf geen antwoord."
+
+#~ msgid "Using the %s backend"
+#~ msgstr "Gebruikte backend: %s"
+
+#~ msgid "Stop"
+#~ msgstr "Afbreken"
+
+#~ msgid "Disconnect"
+#~ msgstr "Verbinding ver_breken"
+
+#~ msgid "Connect"
+#~ msgstr "Verbinden"
+
+#~ msgid "Bye bye"
+#~ msgstr "Tot ziens"
+
+#~ msgid "Successfully registered your new account settings."
+#~ msgstr "Registratie van nieuwe accountgegevens gelukt"
+
+# Vrij vertaald (Wouter Bolsterlee)
+#~ msgid "You should now be able to connect to your new account."
+#~ msgstr "Verbinden met het nieuwe account zou nu moeten werken."
+
+#~ msgid "Failed to register your new account settings."
+#~ msgstr "Registratie accountgegevens mislukt"
+
+#~ msgid "Successfully changed your account password."
+#~ msgstr "Accountwachtwoord succesvol gewijzigd."
+
+#~ msgid "You should now be able to connect with your new password."
+#~ msgstr "Verbinden met het nieuwe wachtwoord zou nu moeten werken."
+
+#~ msgid "Failed to change your account password."
+#~ msgstr "Wijzigen van wachtwoord is mislukt."
+
+#~ msgid ""
+#~ "Please enter a new password for this account:\n"
+#~ "%s"
+#~ msgstr ""
+#~ "Vul een nieuw wachtwoord in voor dit account\n"
+#~ "%s"
+
+#~ msgid "No information is available for this contact."
+#~ msgstr "Er is geen informatie over dit contact beschikbaar."
+
+#~ msgid "Information requested, please wait..."
+#~ msgstr "Informatie opgevraagd, even geduld..."
+
+#~ msgid "I would like to add you to my contact list."
+#~ msgstr "Ik wil je graag toevoegen aan mijn contactlijst."
+
+#~ msgid "To summarize:"
+#~ msgstr "Samengevat:"
+
+#~ msgid "%d new message"
+#~ msgid_plural "%d new messages"
+#~ msgstr[0] "%d nieuw bericht"
+#~ msgstr[1] "%d nieuwe berichten"
+
+#~ msgid "%d subscription request"
+#~ msgid_plural "%d subscription requests"
+#~ msgstr[0] "%d inschrijvingsverzoek"
+#~ msgstr[1] "%d inschrijvingsverzoeken"
+
+#~ msgid "%d file transfer request"
+#~ msgid_plural "%d file transfer requests"
+#~ msgstr[0] "%d aanvraag voor bestandsoverdracht"
+#~ msgstr[1] "%d aanvragen voor bestandsoverdracht"
+
+#~ msgid "%d server message"
+#~ msgid_plural "%d server messages"
+#~ msgstr[0] "%d serverbericht"
+#~ msgstr[1] "%d serverberichten"
+
+#~ msgid "%d error"
+#~ msgid_plural "%d errors"
+#~ msgstr[0] "%d fout"
+#~ msgstr[1] "%d fouten"
+
+#~ msgid "If you quit, you will lose all unread information."
+#~ msgstr "Alle ongelezen berichten zullen bij afsluiten verloren gaan."
+
+# Vrij vertaald (Wouter Bolsterlee)
+#~ msgid "Gossip is still running, it is just hidden."
+#~ msgstr "Gossip draait in de achtergrond verder."
+
+#~ msgid "Click on the notification area icon to show Gossip."
+#~ msgstr ""
+#~ "Klik op het pictogram in het mededelingengebied om Gossip weer te openen."
+
+# Vrij vertaald (Wouter Bolsterlee)
+#~ msgid "You were about to quit!"
+#~ msgstr "Gossip wordt afgesloten!"
+
+#~ msgid ""
+#~ "Since no system or notification tray has been found, this action would "
+#~ "normally quit Gossip.\n"
+#~ "\n"
+#~ "This is just a reminder, from now on, Gossip will quit when performing "
+#~ "this action unless you uncheck the option below."
+#~ msgstr ""
+#~ "Omdat er geen mededelingengebied is gevonden, zou Gossip bij deze actie "
+#~ "normaal gesproken afgesloten worden.\n"
+#~ "\n"
+#~ "Deze mededeling verschijnt omdat Gossip vanaf nu afgesloten zal worden "
+#~ "bij deze actie, tenzij u het vinkje hieronder uitschakelt."
+
+#~ msgid "Edit Account _Details"
+#~ msgstr "Accountgegevens _bewerken"
+
+#~ msgid "Click to enlarge"
+#~ msgstr "Klik om te vergroten"
+
+#~ msgid "Word"
+#~ msgstr "Woord"
+
+#~ msgid "Select who would you like to invite to room:"
+#~ msgstr "Kies wie u wilt uitnodigen in deze ruimte:"
+
+#~ msgid "Select which room you would like to invite:"
+#~ msgstr "Kies welke ruimte u wilt uitnodigen:"
+
+#~ msgid "New message from %s"
+#~ msgstr "Nieuw bericht van %s"
+
+#~ msgid "Your invitation has been declined"
+#~ msgstr "Uw uitnodiging is geweigerd."
+
+#~ msgid "Accept"
+#~ msgstr "Accepteren"
+
+#~ msgid "Decline"
+#~ msgstr "Weigeren"
+
+#~ msgid "Name"
+#~ msgstr "Naam"
+
+#~ msgid "Room"
+#~ msgstr "Ruimte"
+
+#~ msgid "Server"
+#~ msgstr "Server"
+
+#~ msgid "Auto Connect"
+#~ msgstr "Automatisch verbinden"
+
+#~ msgid "Information requested..."
+#~ msgstr "Informatie opgevraagd…"
+
+#~ msgid "Do you want to remove this contact from your roster?"
+#~ msgstr "Wilt u dit contact echt uit de contactlijst verwijderen?"
+
+#~ msgid ""
+#~ "Please enter a new name for the group:\n"
+#~ "%s"
+#~ msgstr ""
+#~ "Vul een nieuwe naam in voor de groep\n"
+#~ "%s"
+
+#~ msgid "Select"
+#~ msgstr "Selecteren"
+
+#~ msgid "Unsorted"
+#~ msgstr "Ongesorteerd"
+
+#~ msgid ""
+#~ "Set the alias you want to use for:\n"
+#~ "<b>%s</b>\n"
+#~ "\n"
+#~ "You can retrieve contact information from the server."
+#~ msgstr ""
+#~ "Geef de bijnaam die u wilt gebruiken voor\n"
+#~ "<b>%s</b>\n"
+#~ "\n"
+#~ "Contactinformatie kan van de server opgevraagd worden."
+
+#~ msgid "New file transfer request from %s"
+#~ msgstr "Nieuwe aanvraag voor bestandsoverdracht van %s"
+
+#~ msgid "File transfer is not supported by both parties."
+#~ msgstr "Bestandsoverdracht is aan beide kanten niet ondersteund."
+
+#~ msgid "Your file transfer offer declined."
+#~ msgstr "De bestandsoverdracht is geweigerd."
+
+#~ msgid "The other user decided not to continue."
+#~ msgstr "De andere gebruiker de transactie afgebroken."
+
+#~ msgid "Unknown error occurred during file transfer."
+#~ msgstr "Er is een onbekende fout opgetreden tijdens de bestandsoverdracht."
+
+#~ msgid "%s would like to send you a file."
+#~ msgstr "%s wil u een bestand toesturen."
+
+#~ msgid "Someone would like to send you a file."
+#~ msgstr "Iemand wil u een bestand toesturen."
+
+#~ msgid "Select a file"
+#~ msgstr "Bestand selecteren"
+
+#~ msgid "Connecting..."
+#~ msgstr "Verbinden..."
+
+# Vrij vertaald (Wouter Bolsterlee)
+#~ msgid "Retry connection"
+#~ msgstr "Opnieuw verbinding maken"
+
+#~ msgid "Invited %s to join this chat conference."
+#~ msgstr "%s wordt uitgenodigd om aan dit gesprek deel te nemen."
+
+#~ msgid "%s has set the topic: %s"
+#~ msgstr "%s heeft het onderwerp ingesteld op: %s"
+
+#~ msgid "Enter the new topic you want to set for this room:"
+#~ msgstr "Geef een nieuw onderwerp dat u voor deze chatruime wilt instellen:"
+
+#~ msgid "%s has joined the room"
+#~ msgstr "%s is de chatruimte binnengekomen"
+
+#~ msgid "%s has left the room"
+#~ msgstr "%s heeft de chatruimte verlaten"
+
+#~ msgid "Topic: %s"
+#~ msgstr "Onderwerp: %s"
+
+#~ msgid "Account"
+#~ msgstr "Account"
+
+#~ msgid "Conversation With"
+#~ msgstr "Gesprek met"
+
+#~ msgid "Date"
+#~ msgstr "Datum"
+
+#~ msgid "Allow multiple instances of the application to run at the same time"
+#~ msgstr "Meerdere keren opstarten van deze applicatie toestaan"
+
+#~ msgid "List the available accounts"
+#~ msgstr "Beschikbare accounts tonen"
+
+#~ msgid "Which account to connect to on startup"
+#~ msgstr "Met dit account verbinden bij opstarten"
+
+#~ msgid "ACCOUNT-NAME"
+#~ msgstr "ACCOUNTNAAM"
+
+#~ msgid "You can not use --no-connect together with --account"
+#~ msgstr "U kunt --no-connect niet tegelijk met --account gebruiken"
+
+#~ msgid "No accounts available."
+#~ msgstr "Geen accounts beschikbaar."
+
+#~ msgid "Available accounts:"
+#~ msgstr "Beschikbare accounts:"
+
+#~ msgid "[default]"
+#~ msgstr "[standaard]"
+
+#~ msgid "There is no account with the name '%s'."
+#~ msgstr "Er is geen account met de naam ‘%s’."
+
+#~ msgid "Join"
+#~ msgstr "_Binnengaan"
+
+#~ msgid "Create"
+#~ msgstr "Aanmaken"
+
+#~ msgid "Chat Rooms"
+#~ msgstr "Chatruimtes"
+
+#~ msgid "Found %d conference rooms"
+#~ msgstr "%d chatruimtes gevonden"
+
+#~ msgid "Browsing for conference rooms, please wait..."
+#~ msgstr "Zoeken naar chatruimes, even geduld…"
+
+#~ msgid "Browsing cancelled!"
+#~ msgstr "Zoeken gestopt!"
+
+#~ msgid "Default"
+#~ msgstr "Standaard"
+
+#~ msgid "Chat!"
+#~ msgstr "Chatten"
+
+#~ msgid "%s wants to be added to your contact list."
+#~ msgstr "%s wil aan uw contactlijst worden toegevoegd."
+
+#~ msgid "Someone wants to be added to your contact list."
+#~ msgstr "Iemand wil aan de contactlijst worden toegevoegd."
+
+#~ msgid "Subscription request"
+#~ msgstr "Inschrijvingsverzoek"
+
+#~ msgid "Show"
+#~ msgstr "Tonen"
+
+#~ msgid "Contact Information"
+#~ msgstr "Contactinformatie"
+
+#~ msgid "Contact has been removed"
+#~ msgstr "Het contact is verwijderd."
+
+#~ msgid "Subject: %s"
+#~ msgstr "Onderwerp: %s"
+
+#~ msgid "Suggestions for the word"
+#~ msgstr "Suggesties voor dit woord"
+
+#~ msgid "New subscription request from %s"
+#~ msgstr "Nieuw inschrijvingsverzoek van %s"
+
+#~ msgid "Do you want to add this person to your contact list?"
+#~ msgstr "Wilt u deze persoon aan de contactlijst toevoegen?"
+
+#~ msgid "Do you want to add %s to your contact list?"
+#~ msgstr "Wilt u %s aan de contactlijst toevoegen?"
+
+#~ msgid "Please enter your %s account password"
+#~ msgstr "Geef uw wachtwoord voor account ‘%s’:"
+
+#~ msgid "Logging in to account '%s'"
+#~ msgstr "Inloggen met account ‘%s’"
+
+#~ msgid "Remember Password?"
+#~ msgstr "Wachtwoord onthouden?"
+
+#~ msgid "Do not show this again"
+#~ msgstr "Niet opnieuw tonen"
+
+#~ msgid "Could not display the help contents."
+#~ msgstr "De hulptekst kan niet worden weergegeven."
+
+#~ msgid "Select Your Avatar Image"
+#~ msgstr "Kies uw gebruikersafbeelding"
+
+#~ msgid "No Image"
+#~ msgstr "Geen afbeelding"
+
+#~ msgid "Cancel"
+#~ msgstr "Annuleren"
+
+#~ msgid "OK"
+#~ msgstr "OK"
+
+#~ msgid "The server does not seem to be responding."
+#~ msgstr "De server lijkt niet te reageren."
+
+#~ msgid "Try again later."
+#~ msgstr "Probeer het later opnieuw."
+
+#~ msgid "Change"
+#~ msgstr "Wijzigen"
+
+#~ msgid "Contact goes offline"
+#~ msgstr "Contact gaat offline"
+
+#~ msgid "Contact goes online"
+#~ msgstr "Contact komt online"
+
+#~ msgid "Contact ID:"
+#~ msgstr "Contact ID:"
+
+#~ msgid "Do you want to accept this file?"
+#~ msgstr "Wilt u dit bestand accepteren?"
+
+#~ msgid "File Transfer Request"
+#~ msgstr "Aanvraag bestandsoverdracht"
+
+#~ msgid "File name:"
+#~ msgstr "Bestandsnaam:"
+
+#~ msgid "File size:"
+#~ msgstr "Bestandsgrootte:"
+
+#~ msgid "Not supported yet"
+#~ msgstr "Nog niet ondersteund"
+
+#~ msgid "This person wishes to send you this file:"
+#~ msgstr "Deze persoon wil u dit bestand toe sturen:"
+
+#~ msgid "Web site:"
+#~ msgstr "Website:"
+
+#~ msgid "_Accept"
+#~ msgstr "_Accepteren"
+
+#~ msgid "_Deny"
+#~ msgstr "_Weigeren"
+
+#~ msgid "<b>Topic:</b>"
+#~ msgstr "<b>Onderwerp:</b>"
+
+#~ msgid "Account:"
+#~ msgstr "Account:"
+
+#~ msgid "Browse:"
+#~ msgstr "Bladeren:"
+
+#~ msgid "Edit Favorite Room"
+#~ msgstr "Bladwijzer bewerken"
+
+#~ msgid ""
+#~ "Enter the room name to join here or click on one or more rooms in the "
+#~ "list."
+#~ msgstr ""
+#~ "Vul hier de naam van de chatruimte in of kies een chatruimte uit de lijst."
+
+#~ msgid "Group Chat"
+#~ msgstr "Chatten"
+
+# Vrij vertaald (Wouter Bolsterlee)
+#~ msgid "Join New"
+#~ msgstr "Nieuw groepsgesprek"
+
+#~ msgid "Join room on start_up"
+#~ msgstr "Chatruimte binnengaan bij _opstarten"
+
+#~ msgid "Join this chat room when Gossip starts and you are connected"
+#~ msgstr "Deze chatruimte binnengaan als Gossip start en u verbonden bent"
+
+#~ msgid "Manage Favorite Rooms"
+#~ msgstr "Bladwijzers beheren…"
+
+#~ msgid "N_ame:"
+#~ msgstr "_Naam:"
+
+#~ msgid "Re_fresh"
+#~ msgstr "Ver_versen"
+
+#~ msgid "S_erver:"
+#~ msgstr "S_erver:"
+
+#~ msgid ""
+#~ "This list represents all chat rooms hosted on the server you have entered."
+#~ msgstr ""
+#~ "Deze lijst toont alle chatruimtes op de server waarmee u verbonden bent."
+
+#~ msgid "_Nickname:"
+#~ msgstr "_Bijnaam:"
+
+#~ msgid "_Room:"
+#~ msgstr "_Ruimte:"
+
+#~ msgid "-"
+#~ msgstr "-"
+
+#~ msgid "<b>About</b>"
+#~ msgstr "<b>Over</b>"
+
+#~ msgid "<b>Client Information</b>"
+#~ msgstr "<b>Clientinformatie</b>"
+
+#~ msgid "<b>Groups</b>"
+#~ msgstr "<b>Groepen</b>"
+
+#~ msgid "<b>Name</b>"
+#~ msgstr "<b>Naam</b>"
+
+#~ msgid "<b>Personal Details</b>"
+#~ msgstr "<b>Persoonlijke details</b>"
+
+#~ msgid "<b>Status</b>"
+#~ msgstr "<b>Status</b>"
+
+#~ msgid "<b>Subscription</b>"
+#~ msgstr "<b>Inschrijving</b>"
+
+#~ msgid "<span size=\"smaller\">Example: Mikael or user@server.org</span>"
+#~ msgstr ""
+#~ "<span size=\"smaller\">Voorbeeld: Wouter of gebruiker@server.org</span>"
+
+#~ msgid "Accou_nt:"
+#~ msgstr "Accou_nt:"
+
+#~ msgid "Add Contact"
+#~ msgstr "Contact toevoegen"
+
+#~ msgid "Alia_s:"
+#~ msgstr "Alia_s:"
+
+# hier geen 'gebruikersafbeelding', want dat is te groot (Wouter Bolsterlee)
+#~ msgid "Avatar:"
+#~ msgstr "Afbeelding:"
+
+#~ msgid "Birthday:"
+#~ msgstr "Verjaardag:"
+
+#~ msgid "C_hange"
+#~ msgstr "_Wijzigen"
+
+#~ msgid "Ch_at"
+#~ msgstr "Ch_atten"
+
+#~ msgid "Client:"
+#~ msgstr "Client:"
+
+#~ msgid "Con_tact:"
+#~ msgstr "Con_tact"
+
+#~ msgid "Connect on S_tartup"
+#~ msgstr "Verbinden bij ops_tarten"
+
+#~ msgid "Contacts"
+#~ msgstr "Contacten"
+
+#~ msgid "Country:"
+#~ msgstr "Land:"
+
+#~ msgid "Decide _Later"
+#~ msgstr "_Later besluiten"
+
+#~ msgid "Edit Contact"
+#~ msgstr "Contact bewerken"
+
+#~ msgid "Edit Groups"
+#~ msgstr "Groepen bewerken"
+
+#~ msgid "Email:"
+#~ msgstr "E-mail:"
+
+#~ msgid "ID:"
+#~ msgstr "ID:"
+
+#~ msgid ""
+#~ "If you chose to decide later you will be asked the next time you log on."
+#~ msgstr ""
+#~ "Als u later wilt besluiten, wordt u bij de volgende keer inloggen opnieuw "
+#~ "gevraagd."
+
+#~ msgid "Name:"
+#~ msgstr "Naam:"
+
+#~ msgid "OS:"
+#~ msgstr "OS:"
+
+#~ msgid "Personal Details"
+#~ msgstr "Persoonlijke details"
+
+#~ msgid "R_egister"
+#~ msgstr "R_egistreren"
+
+#~ msgid "Search"
+#~ msgstr "Zoeken"
+
+#~ msgid ""
+#~ "Select the groups you want this contact to appear in, you can select more "
+#~ "than one group or no groups."
+#~ msgstr ""
+#~ "Selecteer de groepen waar u dit contact in wilt plaatsen. U kunt meerdere "
+#~ "of zelfs geen groepen kiezen."
+
+#~ msgid ""
+#~ "Set the alias you want to use for:\n"
+#~ "<b>foo@bar.baz</b>\n"
+#~ "\n"
+#~ "You can retrieve contact information from the server. "
+#~ msgstr ""
+#~ "Geef de bijnaam die u wilt gebruiken voor\n"
+#~ "<b>foo@bar.baz</b>\n"
+#~ "\n"
+#~ "Contactinformatie kan van de server opgevraagd worden."
+
+#~ msgid "Spell Checker"
+#~ msgstr "Spellingchecker"
+
+#~ msgid "Subscription Request"
+#~ msgstr "Inschrijvingsverzoek"
+
+#~ msgid "Suggestions for the word:"
+#~ msgstr "Suggesties voor dit woord:"
+
+#~ msgid ""
+#~ "This acts as a filter to the contact list below. You can use segments of "
+#~ "contact's name or ID, for example, \"jabber.org\" will list everyone "
+#~ "using that server"
+#~ msgstr ""
+#~ "Dit werkt als een filter voor de contactlijst hieronder. U kunt delen van "
+#~ "de naam of het ID van een contact invullen. Voorbeeld: ‘jabber.org’ toont "
+#~ "iedereen op die server."
+
+#~ msgid "This is the name that will be used on your roster for this contact"
+#~ msgstr ""
+#~ "Dit is de naam die voor dit contact getoond wordt in uw contactlijst"
+
+#~ msgid "This name will be used to identify you in chat windows"
+#~ msgstr ""
+#~ "Deze naam zal worden gebruikt om u mee te identificeren in chatvensters"
+
+#~ msgid ""
+#~ "This name will be used to identify you when new contacts lookup your "
+#~ "details"
+#~ msgstr ""
+#~ "Deze naam zal worden gebruikt om u mee te identificeren als nieuwe "
+#~ "contacten uw gegevens opvragen"
+
+# Vrij vertaald (Wouter Bolsterlee)
+#~ msgid "Use default name here from the contact's VCard."
+#~ msgstr "Gebruik de naam van de VCard van het contact."
+
+#~ msgid "Use system pro_xy"
+#~ msgstr "Systeempro_xy gebruiken"
+
+#~ msgid "Version:"
+#~ msgstr "Versie:"
+
+#~ msgid "View Previous Conversations"
+#~ msgstr "Vorige gesprekken tonen"
+
+#~ msgid "Which account do you want to use?"
+#~ msgstr "Welk account wilt u gebruiken?"
+
+#~ msgid "You are not subscribed to this contact."
+#~ msgstr "U bent niet ingeschreven voor dit contact."
+
+#~ msgid "_Birthday:"
+#~ msgstr "_Verjaardag:"
+
+#~ msgid "_Connect"
+#~ msgstr "_Verbinden"
+
+#~ msgid "_Description:"
+#~ msgstr "_Beschrijving:"
+
+#~ msgid "_Disconnect"
+#~ msgstr "Verbinding ver_breken"
+
+#~ msgid "_Email:"
+#~ msgstr "_E-mail:"
+
+#~ msgid ""
+#~ "_Enter the name or contact ID of the person you want to chat to below:"
+#~ msgstr "_Vul de naam of het adres in van de persoon met wie u wilt chatten:"
+
+#~ msgid "_For:"
+#~ msgstr "_Voor:"
+
+#~ msgid "_Full Name:"
+#~ msgstr "_Volledige naam:"
+
+#~ msgid "_Group:"
+#~ msgstr "_Groep:"
+
+#~ msgid "_Nick Name:"
+#~ msgstr "_Bijnaam:"
+
+#~ msgid "_Password:"
+#~ msgstr "_Wachtwoord:"
+
+#~ msgid "_Quit Message:"
+#~ msgstr "Bericht bij afsl_uiten:"
+
+#~ msgid "_Retrieve"
+#~ msgstr "Op_vragen"
+
+#~ msgid "_Subscribe"
+#~ msgstr "_Inschrijven"
+
+#~ msgid "_Web site:"
+#~ msgstr "_Website:"
+
+#~ msgid "irc account settings"
+#~ msgstr "irc-accountgegevens"
+
+#~ msgid "msn account settings"
+#~ msgstr "msn-accountgegevens"
+
+#~ msgid "Gossip"
+#~ msgstr "Gossip"
+
+# Hehe, egotripperij ;)
+#~ msgid "Martyn Russell"
+#~ msgstr "Wouter Bolsterlee"
+
+# De naam hieronder wordt nergens getoond, maar is toch leuk om te vertalen...
+# (Wouter Bolsterlee)
+#~ msgid ""
+#~ "Set the alias you want to use for:\n"
+#~ "<b>martyn@imendio.com</b>\n"
+#~ "\n"
+#~ "You can retrieve contact information from the server. "
+#~ msgstr ""
+#~ "Geef de bijnaam die u wilt gebruiken voor\n"
+#~ "<b>uws@jabber.xs4all.nl</b>\n"
+#~ "\n"
+#~ "You can retrieve contact information from the server. "
+
+#~ msgid "_Forget"
+#~ msgstr "_Vergeten"
+
+#~ msgid " "
+#~ msgstr " "
+
+#~ msgid "Group:"
+#~ msgstr "Groep:"
+
+#~ msgid "Nickname:"
+#~ msgstr "Bijnaam:"
+
+#~ msgid "Web Site:"
+#~ msgstr "Website:"
+
+# hmmmm (Wouter Bolsterlee)
+#~ msgid "Favourite"
+#~ msgstr "Bladwijzer"
+
+#~ msgid "Add to _favourites"
+#~ msgstr "Aan _bladwijzers toevoegen"
+
+#~ msgid ""
+#~ "Customize your own nickname, the server and chatroom which you wish to "
+#~ "join."
+#~ msgstr ""
+#~ "Bewerk uw bijnaam, de server en de chatruimte waar u wilt binnengaan."
+
+#~ msgid "Edit your chat room details:"
+#~ msgstr "Bewerkt de gegevens van de chatruimte:"
+
+#~ msgid "Na_me:"
+#~ msgstr "Naa_m:"
+
+#~ msgid "New Chat Room"
+#~ msgstr "Nieuwe chatruimte"
+
+#~ msgid ""
+#~ "Pick a saved chat room from the presets available below and click Join to "
+#~ "start chatting."
+#~ msgstr ""
+#~ "Kies een opgeslagen chatruimte uit de onderstaande lijst en ga de ruimte "
+#~ "binnen om te chatten."
+
+#~ msgid "Save _this chat room"
+#~ msgstr "Deze chatruimte op_slaan"
+
+#~ msgid "Press Subscribe to request to receive their status"
+#~ msgstr "Kies ‘Inschrijven’ als u om statusberichten wilt vragen"
+
+#~ msgid "_Group Chat"
+#~ msgstr "_Groepsgesprek"
+
+#~ msgid "You have no Instant Messaging accounts configured!"
+#~ msgstr "Er zijn geen chat-accounts ingesteld!"
+
+#~ msgid ""
+#~ "Next you will be presented with the Account Information dialog to set "
+#~ "your details up."
+#~ msgstr ""
+#~ "De volgende stap is het invullen van uw accountgegevens in het "
+#~ "accountvenster."
+
+#~ msgid "Registering account"
+#~ msgstr "Bezig met registreren account"
+
+#~ msgid "<span size=\"smaller\">Example:</span>"
+#~ msgstr "<span size=\"smaller\">Voorbeeld:</span>"
+
+#~ msgid "Account Name"
+#~ msgstr "Accountnaam"
+
+#~ msgid "Connection Details"
+#~ msgstr "Verbindingsgegevens"
+
+#~ msgid "Do you already have an account set up on a server?"
+#~ msgstr "Heeft u al een account op een Jabber-server?"
+
+#~ msgid "Enter a name for this account"
+#~ msgstr "Geef een naam voor dit account"
+
+#~ msgid "Enter the port used in the connection for this account"
+#~ msgstr "Vul de poort die gebruikt wordt voor het verbinden met dit account"
+
+#~ msgid "Enter the server used in the connection for this account"
+#~ msgstr "Vul de server die gebruikt wordt voor het verbinden met dit account"
+
+#~ msgid "Enter your real name here"
+#~ msgstr "Vul hier uw echte naam in"
+
+#~ msgid "Finished"
+#~ msgstr "Voltooid"
+
+#~ msgid "For increased security, enable this option"
+#~ msgstr "Schakel deze optie in voor een betere beveiling"
+
+#~ msgid ""
+#~ "Gossip is a modern client for the Jabber Instant Messaging system.\n"
+#~ "\n"
+#~ "This assistant will help you configure Gossip and connect you to your "
+#~ "favorite Jabber server.\n"
+#~ "\n"
+#~ "To get started, just click \"Forward\"."
+#~ msgstr ""
+#~ "Gossip is een moderne client voor het Jabber Instant Messaging-systeem.\n"
+#~ "\n"
+#~ "Deze assistent zal u helpen bij het instellen van Gossip en zal u met uw "
+#~ "favoriete Jabber-server verbinden.\n"
+#~ "\n"
+#~ "Klik om te beginnen op ‘Verder’."
+
+#~ msgid ""
+#~ "If you have another machine on your network which 'proxies' the "
+#~ "connection to the internet and you want to use it, enable this option"
+#~ msgstr ""
+#~ "Als u een andere machine op uw netwerk heeft die als ‘proxy’ fungeert "
+#~ "naar het internet, kies dan deze optie om deze ‘proxy’ te gebruiken"
+
+#~ msgid ""
+#~ "If you need to set specific connection details, like a different server "
+#~ "or port, you can configure that here:"
+#~ msgstr ""
+#~ "Als u specifieke connectiegegevens in wilt vullen, zoals bijvoorbeeld een "
+#~ "verschillende server of poort, kunt u dat hier instellen."
+
+#~ msgid ""
+#~ "Leave this blank if you don't want your password stored on a public "
+#~ "machine. If you decide to do this, you will be prompted each time you "
+#~ "connect for a password"
+#~ msgstr ""
+#~ "U kunt dit leeglaten als u niet wilt dat uw wachtwoord op een gedeelde "
+#~ "computer opgeslagen wordt. U wordt dan wel iedere keer om uw wachtwoord "
+#~ "gevraagd bij het maken van een verbinding."
+
+#~ msgid "Port:"
+#~ msgstr "Poort:"
+
+#~ msgid "Registering Account"
+#~ msgstr "Bezig met accountregistratie"
+
+#~ msgid "Resource:"
+#~ msgstr "Bron:"
+
+#~ msgid "Welcome to Gossip"
+#~ msgstr "Welkom bij Gossip"
+
+#~ msgid "What is your name?"
+#~ msgstr "Wat is uw naam?"
+
+#~ msgid ""
+#~ "What name do you want to use to identify this account?\n"
+#~ "\n"
+#~ "This name could be something associated with the service provider, for "
+#~ "example, <b>Google</b>."
+#~ msgstr ""
+#~ "Welke naam wilt u gebruiken voor dit account?\n"
+#~ "\n"
+#~ "U kunt bijvoorbeeld de naam van de provider hiervoor gebruiken. "
+#~ "Voorbeeld: <b>Google</b>"
+
+#~ msgid "What password do you want to use?"
+#~ msgstr "Welk wachtwoord wilt u gebruiken?"
+
+#~ msgid "What username do you use?"
+#~ msgstr "Wat is uw gebruikersnaam?"
+
+#~ msgid "What username do you want to use?"
+#~ msgstr "Welke gebruikersnaam wilt u gebruiken?"
+
+#~ msgid ""
+#~ "You can change your account settings later by selecting the Edit-"
+#~ ">Accounts menu item."
+#~ msgstr ""
+#~ "De accountgegevens kunnen later gewijzigd worden via ‘Accounts’ in het "
+#~ "menu ‘Bewerken’."
+
+#~ msgid ""
+#~ "You need to set a name for the connection, for example, <b>Home</b> or "
+#~ "<b>Laptop</b>."
+#~ msgstr ""
+#~ "Ieder account heeft een eigen naam, bijvoorbeeld <b>Thuis</b> of "
+#~ "<b>Kantoor</b>. Kies een naam voor dit account:"
+
+#~ msgid "Your Account"
+#~ msgstr "Uw account"
+
+#~ msgid "Your Identity"
+#~ msgstr "Uw identiteit"
+
+#~ msgid "Your new account has now been set up."
+#~ msgstr "Uw nieuwe account is gereed."
+
+#~ msgid "_No"
+#~ msgstr "_Nee"
+
+#~ msgid "_Yes"
+#~ msgstr "_Ja"
diff --git a/gnome-2-22/po/oc.po b/gnome-2-22/po/oc.po
new file mode 100644
index 000000000..b41bc8568
--- /dev/null
+++ b/gnome-2-22/po/oc.po
@@ -0,0 +1,1664 @@
+# Translation of oc.po to Occitan
+# Occitan translation of empathy.
+# Copyright (C) 2003-2007 The Free Software Foundation, Inc.
+# This file is distributed under the same license as the empathy package.
+#
+# Yannig Marchegay (Kokoyaya) <yannig@marchegay.org>, 2006-2008
+msgid ""
+msgstr ""
+"Project-Id-Version: oc\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-02-19 20:18+0100\n"
+"PO-Revision-Date: 2008-02-20 00:12+0100\n"
+"Last-Translator: Yannig Marchegay (Kokoyaya) <yannig@marchegay.org>\n"
+"Language-Team: Occitan <ubuntu-l10n-oci@lists.ubuntu.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);"
+
+#: ../data/empathy.desktop.in.in.h:1
+msgid "Empathy Instant Messenger"
+msgstr ""
+
+#: ../data/empathy.desktop.in.in.h:2
+msgid "Send and receive instant messages"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:1
+msgid "Always open a separate chat window for new chats."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:2
+msgid ""
+"Character to add after nickname when using nick completion (tab) in group "
+"chat."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:3
+msgid "Chat window theme"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:4
+msgid "Checks if Empathy should autoconnect on startup"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:5
+msgid "Checks if NetworkManager should be used"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:6
+msgid "Checks if Salut account is created"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:7
+msgid ""
+"Comma separated list of spell checker languages to use (e.g. en, fr, nl)."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:8
+msgid "Compact contact list"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:9
+msgid "Contact list sort criterium"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:10
+msgid "Default directory to select an avatar image from"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:11
+msgid "Enable popup when contact is available"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:12
+msgid "Enable sound when away"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:13
+msgid "Enable sound when busy"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:14
+msgid "Enable spell checker"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:15
+msgid "Hide main window"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:16
+msgid "Hide the main window."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:17
+msgid "Nick completed character"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:18
+msgid "Open new chats in separate windows"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:19
+msgid "Show avatars"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:20
+msgid "Show hint about closing the main window"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:21
+msgid "Show offline contacts"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:22
+msgid "Spell checking languages"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:23
+msgid "The last directory that an avatar image was chosen from."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:24
+msgid "The theme that is used to display the conversation in chat windows."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:25
+msgid "Use graphical smileys"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:26
+msgid "Use notification sounds"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:27
+msgid "Use theme for chat rooms"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:28
+msgid ""
+"Whether or not Empathy should automatically login to your accounts on "
+"startup."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:29
+msgid ""
+"Whether or not the Salut account has been created on the first empathy run."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:30
+msgid ""
+"Whether or not the network manager should be used to automatically "
+"disconnect/reconnect."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:31
+msgid ""
+"Whether or not to check words typed against the languages you want to check "
+"with."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:32
+msgid ""
+"Whether or not to convert smileys into graphical images in conversations."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:33
+msgid "Whether or not to play a sound when messages arrive."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:34
+msgid "Whether or not to play sounds when away."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:35
+msgid "Whether or not to play sounds when busy."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:36
+msgid "Whether or not to show a popup when a contact becomes available."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:37
+msgid ""
+"Whether or not to show avatars for contacts in the contact list and chat "
+"windows."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:38
+msgid "Whether or not to show contacts that are offline in the contact list."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:39
+msgid ""
+"Whether or not to show the message dialog about closing the main window with "
+"the 'x' button in the title bar."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:40
+msgid "Whether to show the contact list in compact mode or not."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:41
+msgid "Whether to use the theme for chat rooms or not."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:42
+msgid ""
+"Which criterium to use when sorting the contact list. Default is to use sort "
+"by the contact's name with the value \"name\". A value of \"state\" will "
+"sort the contact list by state."
+msgstr ""
+
+#: ../libempathy/empathy-tp-contact-list.c:724 ../src/empathy.c:149
+msgid "People nearby"
+msgstr ""
+
+#: ../libempathy/empathy-utils.c:539
+msgid "Available"
+msgstr "Disponible"
+
+#: ../libempathy/empathy-utils.c:541
+msgid "Busy"
+msgstr "Ocupat"
+
+#: ../libempathy/empathy-utils.c:544
+msgid "Away"
+msgstr "Absent(a)"
+
+#: ../libempathy/empathy-utils.c:546
+msgid "Hidden"
+msgstr "Amagat"
+
+#: ../libempathy/empathy-utils.c:549
+msgid "Offline"
+msgstr "Desconnectat"
+
+#: ../libempathy-gtk/empathy-about-dialog.c:63
+msgid ""
+"Empathy is free software; you can redistribute it and/or modify it under the "
+"terms of the GNU General Public License as published by the Free Software "
+"Foundation; either version 2 of the License, or (at your option) any later "
+"version."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-about-dialog.c:67
+msgid ""
+"Empathy is distributed in the hope that it will be useful, but WITHOUT ANY "
+"WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS "
+"FOR A PARTICULAR PURPOSE. See the GNU General Public License for more "
+"details."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-about-dialog.c:71
+msgid ""
+"You should have received a copy of the GNU General Public License along with "
+"Empathy; if not, write to the Free Software Foundation, Inc., 51 Franklin "
+"Street, Fifth Floor, Boston, MA 02110-130159 USA"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-about-dialog.c:99
+msgid "An Instant Messaging client for GNOME"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-about-dialog.c:105
+msgid "translator-credits"
+msgstr "Yannig Marchegay (Kokoyaya) <yannig@marchegay.org>"
+
+#: ../libempathy-gtk/empathy-account-chooser.c:337
+msgid "All"
+msgstr "Totes"
+
+#: ../libempathy-gtk/empathy-account-widget.c:276
+#: ../libempathy-gtk/empathy-account-widget.c:321
+#, c-format
+msgid "%s:"
+msgstr "%s :"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:1
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:1
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:1
+msgid "<b>Advanced</b>"
+msgstr "<b>Avançat</b>"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:2
+msgid "<b>Override server settings</b>"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:3
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:2
+msgid "Forget password and clear the entry."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:4
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:3
+msgid "Login I_D:"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:5
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:4
+msgid "Pass_word:"
+msgstr "_Mot de pas"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:6
+#
+msgid "Pri_ority:"
+msgstr "_Prioritat :"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:7
+msgid "Reso_urce:"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:8
+msgid "Use old SS_L"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:9
+msgid "_Encryption required (TLS/SSL)"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:10
+msgid "_Ignore SSL certificate errors"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:11
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:5
+msgid "_Port:"
+msgstr "_Pòrt :"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:12
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:6
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:10
+msgid "_Server:"
+msgstr "_Servidor :"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:13
+msgid "jabber account settings"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:7
+msgid "msn account settings"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:2
+msgid "_E-mail:"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:3
+msgid "_First Name: "
+msgstr ""
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:4
+msgid "_Jabber ID:"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:5
+msgid "_Last Name:"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:6
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:8
+msgid "_Nickname:"
+msgstr "_Escais :"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:7
+msgid "_Published Name:"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:8
+msgid "salut account settings"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:225
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to start configuring."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:229
+msgid ""
+"To add a new account, you first have to install a backend for each protocol "
+"you want to use."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:236
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:2
+msgid "<b>No Account Selected</b>"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:237
+msgid ""
+"\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want "
+"to configure in the list on the left."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:243
+msgid "<b>No Accounts Configured</b>"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:403
+#
+msgid "Enabled"
+msgstr "Activat"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:413
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:4
+msgid "Accounts"
+msgstr "Comptes"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:896
+#, c-format
+msgid ""
+"You are about to remove your %s account!\n"
+"Are you sure you want to proceed?"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:902
+msgid ""
+"Any associated conversations and chat rooms will NOT be removed if you "
+"decide to proceed.\n"
+"\n"
+"Should you decide to add the account back at a later time, they will still "
+"be available."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:1
+msgid "<b>New Account</b>"
+msgstr "<b>Compte novèl</b>"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:3
+msgid "<b>Settings</b>"
+msgstr "<b>Paramètres</b>"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:5
+msgid "Cr_eate"
+msgstr "Cr_ear"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:6
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to started configuring.\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want "
+"to configure in the list on the left."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:9
+msgid "Type:"
+msgstr "Tipe :"
+
+#: ../libempathy-gtk/empathy-avatar-chooser.c:449
+msgid "Select Your Avatar Image"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-avatar-chooser.c:452
+msgid "No Image"
+msgstr "Pas cap d'imatge"
+
+#: ../libempathy-gtk/empathy-avatar-chooser.c:512
+msgid "Images"
+msgstr "Imatges"
+
+#: ../libempathy-gtk/empathy-avatar-chooser.c:516
+msgid "All Files"
+msgstr "Totes los fichièrs"
+
+#: ../libempathy-gtk/empathy-avatar-image.c:298
+msgid "Click to enlarge"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:1
+msgid "End Call"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:2
+msgid "Input"
+msgstr "Entrada"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:3
+msgid "Mute"
+msgstr "Mut"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:4
+msgid "Output"
+msgstr "Sortida"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:5
+msgid "Send Video"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:6
+msgid "Start Call"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:7
+msgid "Volume"
+msgstr "Volum"
+
+#: ../libempathy-gtk/empathy-chat.c:445
+msgid "Disconnected"
+msgstr "Desconnectat"
+
+#: ../libempathy-gtk/empathy-chat.c:580
+msgid "offline"
+msgstr "desconnectat"
+
+#: ../libempathy-gtk/empathy-chat.c:583
+msgid "invalid contact"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-chat.c:586
+msgid "permission denied"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-chat.c:589
+msgid "too long message"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-chat.c:592
+msgid "not implemented"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-chat.c:595
+msgid "unknown"
+msgstr "desconegut"
+
+#: ../libempathy-gtk/empathy-chat.c:599
+#, c-format
+msgid "Error sending message '%s': %s"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-chat.c:1056
+msgid "Insert Smiley"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-chat.c:1103
+msgid "_Check Word Spelling..."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-chat.c:1558
+msgid "Connected"
+msgstr "Connectat"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:1
+msgid "C_lear"
+msgstr "_Suprimir"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:2
+msgid "Ca_ll"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-chat.glade.h:3
+msgid "Change _Topic..."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-chat.glade.h:4
+#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:3
+msgid "Chat"
+msgstr "Chad"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:5
+msgid "Contact Infor_mation"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-chat.glade.h:6
+msgid "Cu_t"
+msgstr "_Copar"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:7
+msgid "In_vite..."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-chat.glade.h:8
+msgid "Insert _Smiley"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-chat.glade.h:9
+msgid "Invitation _message:"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-chat.glade.h:10
+msgid "Invite"
+msgstr "Convidar"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:11
+#: ../libempathy-gtk/empathy-main-window.glade.h:4
+msgid "Join _New..."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-chat.glade.h:12
+msgid "Move Tab _Left"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-chat.glade.h:13
+msgid "Move Tab _Right"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-chat.glade.h:14
+msgid "Select who would you like to invite:"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-chat.glade.h:15
+msgid "You have been invited to join a chat conference."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-chat.glade.h:16
+#: ../libempathy-gtk/empathy-main-window.glade.h:9
+msgid "_Add Contact..."
+msgstr "_Apondre un contacte..."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:17
+msgid "_Add To Favorites"
+msgstr "_Apondre als favorits"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:18
+msgid "_Close"
+msgstr "_Tampar"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:19
+#: ../libempathy-gtk/empathy-main-window.glade.h:11
+msgid "_Contents"
+msgstr "_Ensenhador"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:20
+msgid "_Conversation"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-chat.glade.h:21
+msgid "_Copy"
+msgstr "_Copiar"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:22
+msgid "_Detach Tab"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-chat.glade.h:23
+#: ../libempathy-gtk/empathy-contact-list-view.c:217
+#: ../libempathy-gtk/empathy-main-window.glade.h:12
+msgid "_Edit"
+msgstr "_Edicion"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:24
+#: ../libempathy-gtk/empathy-main-window.glade.h:13
+msgid "_Help"
+msgstr "_Ajuda"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:25
+msgid "_Next Tab"
+msgstr "Onglet _seguent"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:26
+msgid "_Paste"
+msgstr "_Pegar"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:27
+msgid "_Previous Tab"
+msgstr "Onglet _precedent"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:28
+#: ../libempathy-gtk/empathy-main-window.glade.h:18
+msgid "_Room"
+msgstr "_Sala"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:29
+msgid "_Show Contacts"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-chat.glade.h:30
+msgid "_Tabs"
+msgstr "_Onglets"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:31
+#: ../libempathy-gtk/empathy-contact-list-view.c:233
+#: ../libempathy-gtk/empathy-main-window.glade.h:19
+msgid "_View Previous Conversations"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-chat-view.c:441
+msgid "_Copy Link Address"
+msgstr "_Copiar l'adreça del ligam"
+
+#: ../libempathy-gtk/empathy-chat-view.c:449
+msgid "_Open Link"
+msgstr "_Dobrir lo ligam"
+
+#: ../libempathy-gtk/empathy-chat-window.c:699
+#, c-format
+msgid "Conversations (%d)"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-chat-window.c:1299
+msgid "Typing a message."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-chatrooms-window.c:258
+msgid "Name"
+msgstr "Nom"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.c:276
+msgid "Room"
+msgstr "Sala"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.c:285
+msgid "Auto Connect"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:1
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:5
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:1
+#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:1
+msgid "Account:"
+msgstr "Compte :"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:2
+msgid "Edit Favorite Room"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:3
+msgid "Join room on start_up"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:4
+msgid "Join this chat room when Empathy starts and you are connected"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:5
+msgid "Manage Favorite Rooms"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:6
+msgid "N_ame:"
+msgstr "_Nom :"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:7
+msgid "S_erver:"
+msgstr "S_ervidor :"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:9
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:9
+msgid "_Room:"
+msgstr "_Sala :"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:176
+msgid "Personal Information"
+msgstr "Entresenhas personalas"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:179
+msgid "Edit Contact Information"
+msgstr "Modificar las entresenhas personalas"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:182
+msgid "Contact Information"
+msgstr "Entresenhas sul contacte"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:277
+msgid "I would like to add you to my contact list."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:301
+msgid "New Contact"
+msgstr "Contacte novèl"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.glade.h:1
+msgid "Decide _Later"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-contact-dialogs.glade.h:2
+msgid "Subscription Request"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:197
+msgid "_Contact"
+msgstr "_Contacte"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:201
+msgid "_Group"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:205
+#: ../libempathy-gtk/empathy-main-window.glade.h:10
+msgid "_Chat"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:205
+msgid "Chat with contact"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:209
+msgid "Infor_mation"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:209
+msgid "View contact information"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:213
+msgid "Re_name"
+msgstr "Re_nommar"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:213
+msgid "Rename"
+msgstr "Renommar"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:217
+msgid "Edit the groups and name for this contact"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:221
+msgid "_Remove"
+msgstr "_Suprimir"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:221
+msgid "Remove contact"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:225
+msgid "_Invite to Chat Room"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:225
+msgid "Invite to a currently open chat room"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:229
+msgid "_Send File..."
+msgstr "_Enviar lo fichièr..."
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:229
+msgid "Send a file"
+msgstr "Enviar un fichièr"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:233
+msgid "View previous conversations with this contact"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:238
+msgid "_Call"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:238
+msgid "Start a voice or video conversation with this contact"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:1469
+msgid "Sorry, I don't want you in my contact list anymore."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-contact-widget.c:688
+msgid "Select"
+msgstr "Seleccionar"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:698
+#: ../libempathy-gtk/empathy-main-window.c:609
+msgid "Group"
+msgstr "Grop"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:1
+msgid "<b>Client Information</b>"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:2
+msgid "<b>Contact Details</b>"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:3
+msgid "<b>Contact</b>"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:4
+msgid "<b>Groups</b>"
+msgstr "<b>Grops</b>"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:6
+msgid "Alias:"
+msgstr "Aliàs :"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:7
+msgid "Birthday:"
+msgstr "Aniversari :"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:8
+msgid "Client:"
+msgstr "Client :"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:9
+msgid "Contact information"
+msgstr "Entresenhas del contacte"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:10
+msgid "Email:"
+msgstr "Adreça electronica :"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:11
+msgid "Fullname:"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:12
+msgid "Identifier:"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:13
+msgid "Information requested..."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:14
+msgid "OS:"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:15
+msgid ""
+"Select the groups you want this contact to appear in, you can select more "
+"than one group or no groups."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:16
+msgid "Version:"
+msgstr "Version :"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:17
+msgid "Web site:"
+msgstr "Sit web :"
+
+#: ../libempathy-gtk/empathy-group-chat.c:251
+msgid "Enter the new topic you want to set for this room:"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-group-chat.c:361
+#, c-format
+msgid "%s has joined the room"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-group-chat.c:364
+#, c-format
+msgid "%s has left the room"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-group-chat.c:445
+#, c-format
+msgid "Topic: %s"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-group-chat.c:574
+#, c-format
+msgid "Topic set to: %s"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-group-chat.c:576
+msgid "No topic defined"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-group-chat.glade.h:1
+msgid "<b>Topic:</b>"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-group-chat.glade.h:2
+msgid "Group Chat"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-log-window.c:499
+msgid "Account"
+msgstr "Compte"
+
+#: ../libempathy-gtk/empathy-log-window.c:506
+msgid "Conversation"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-log-window.c:516
+msgid "Date"
+msgstr "Data"
+
+#: ../libempathy-gtk/empathy-log-window.glade.h:1
+msgid "Conversations"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-log-window.glade.h:2
+msgid "Previous Conversations"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-log-window.glade.h:3
+msgid "Search"
+msgstr "Recercar"
+
+#: ../libempathy-gtk/empathy-log-window.glade.h:4
+msgid "_For:"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.c:286
+msgid "Chat Rooms"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:2
+msgid "Browse:"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:3
+msgid ""
+"Enter the room name to join here or click on one or more rooms in the list."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:4
+msgid ""
+"Enter the server which hosts the room, or leave it empty if the room is on "
+"the current account's server"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:5
+msgid "Join"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:6
+msgid "Join New"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:7
+msgid "Re_fresh"
+msgstr "Ac_tualizar"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:8
+msgid ""
+"This list represents all chat rooms hosted on the server you have entered."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.c:266
+msgid "Show and edit accounts"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.c:630
+msgid "Contact"
+msgstr "Contacte"
+
+#: ../libempathy-gtk/empathy-main-window.c:813
+#
+msgid "_Edit account"
+msgstr "_Modificar lo compte"
+
+#: ../libempathy-gtk/empathy-main-window.c:896
+msgid "Network error"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.c:899
+msgid "Authentication failed"
+msgstr "L'autentificacion a abocat"
+
+#: ../libempathy-gtk/empathy-main-window.c:902
+msgid "Encryption error"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.c:905
+msgid "Name in use"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.c:908
+msgid "Certificate not provided"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.c:911
+msgid "Certificate untrusted"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.c:914
+msgid "Certificate expired"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.c:917
+msgid "Certificate not activated"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.c:920
+msgid "Certificate hostname mismatch"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.c:923
+msgid "Certificate fingerprint mismatch"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.c:926
+msgid "Certificate self signed"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.c:929
+msgid "Certificate error"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.c:932
+msgid "Unknown error"
+msgstr "Error desconeguda"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:1
+msgid "Contact List"
+msgstr "Tièra de contactes"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:2
+msgid "Context"
+msgstr "Contèxte"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:3
+msgid "Join _Favorites"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:5
+msgid "Manage Favorites"
+msgstr "Gerir los favorits"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:6
+msgid "Show _Offline Contacts"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:7
+#: ../megaphone/data/GNOME_Megaphone_Applet.xml.h:1
+#: ../nothere/data/GNOME_NotHere_Applet.xml.h:1
+msgid "_About"
+msgstr "_A prepaus"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:8
+msgid "_Accounts"
+msgstr "_Comptes"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:14
+#: ../libempathy-gtk/empathy-status-icon.glade.h:2
+msgid "_New Conversation..."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:15
+msgid "_Personal Information"
+msgstr "Entresenhas _personalas"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:16
+#: ../megaphone/data/GNOME_Megaphone_Applet.xml.h:3
+msgid "_Preferences"
+msgstr "_Preferéncias"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:17
+#: ../libempathy-gtk/empathy-status-icon.glade.h:3
+msgid "_Quit"
+msgstr "_Sortir"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:2
+msgid "Call"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:4
+msgid "Contact ID:"
+msgstr "Contacte"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:5
+#
+msgid "New Conversation"
+msgstr "Contacte novèl"
+
+#: ../libempathy-gtk/empathy-preferences.c:247
+msgid "Language"
+msgstr "Lenga"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:1
+msgid "<b>Appearance</b>"
+msgstr "<b>Aparéncia</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:2
+msgid "<b>Audio</b>"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:3
+msgid "<b>Behaviour</b>"
+msgstr "<b>Compòrtament</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:4
+msgid "<b>Contact List</b>"
+msgstr "<b>Tièra de contactes</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:5
+msgid "<b>Enable spell checking for languages:</b>"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:6
+msgid "<b>Options</b>"
+msgstr "<b>Opcions</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:7
+msgid "<b>Visual</b>"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:8
+msgid ""
+"<small>The list of languages reflects only the languages for which you have "
+"a dictionary installed.</small>"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:9
+msgid "Automatically _connect on startup "
+msgstr ""
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:10
+msgid "Avatars are user chosen images shown in the contact list"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:11
+msgid "Chat Th_eme:"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:12
+msgid "Display notifications when contacts come _online"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:13
+msgid "Enable sounds when _away"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:14
+msgid "Enable sounds when _busy"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:15
+msgid "General"
+msgstr "General"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:16
+msgid "Notifications"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:17
+msgid "Preferences"
+msgstr "Preferéncias"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:18
+msgid "Show _avatars"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:19
+msgid "Show _smileys as images"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:20
+msgid "Show co_mpact contact list"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:21
+msgid "Sort by _name"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:22
+msgid "Sort by s_tate"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:23
+msgid "Spell Checking"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:24
+msgid "Themes"
+msgstr "Tèmas"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:25
+msgid "_Open new chats in separate windows"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:26
+msgid "_Play sound when messages arrive"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:27
+msgid "_Use for chat rooms"
+msgstr ""
+
+#. Custom messages
+#: ../libempathy-gtk/empathy-presence-chooser.c:691
+msgid "Custom messages..."
+msgstr "Messatges personalizats..."
+
+#: ../libempathy-gtk/empathy-presence-chooser.glade.h:1
+msgid "Custom message"
+msgstr "Messatge personalizat"
+
+#: ../libempathy-gtk/empathy-presence-chooser.glade.h:2
+msgid "Message:"
+msgstr "Messatge :"
+
+#: ../libempathy-gtk/empathy-presence-chooser.glade.h:3
+msgid "Save message"
+msgstr "Enregistrar lo messatge"
+
+#: ../libempathy-gtk/empathy-presence-chooser.glade.h:4
+msgid "Status:"
+msgstr "Estat :"
+
+#: ../libempathy-gtk/empathy-private-chat.c:229
+#, c-format
+msgid "%s went offline"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-private-chat.c:243
+#, c-format
+msgid "%s has come online"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-spell-dialog.c:85
+msgid "Word"
+msgstr "Mot"
+
+#: ../libempathy-gtk/empathy-spell-dialog.c:258
+msgid "Suggestions for the word"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-spell-dialog.glade.h:1
+msgid "Spell Checker"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-spell-dialog.glade.h:2
+msgid "Suggestions for the word:"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-status-icon.c:354
+#, c-format
+msgid ""
+"New message from %s:\n"
+"%s"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-status-icon.c:625
+#, c-format
+msgid "Subscription requested by %s"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-status-icon.c:628
+#, c-format
+msgid ""
+"\n"
+"Message: %s"
+msgstr ""
+"\n"
+"Messatge : %s"
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:1
+msgid "Status"
+msgstr "Estatut"
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:4
+msgid "_Show Contact List"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-theme-boxes.c:780
+#: ../libempathy-gtk/empathy-theme-irc.c:297
+msgid "%A %d %B %Y"
+msgstr "%A %d %B %Y"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:78
+msgid "Classic"
+msgstr "Classic"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:79
+msgid "Simple"
+msgstr "Simple"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:80
+msgid "Clean"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-theme-manager.c:81
+msgid "Blue"
+msgstr "Blau"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.c:246
+msgid "New Network"
+msgstr "Ret novèla"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:1
+#
+msgid "<b>Network</b>"
+msgstr "<b>Ret</b>"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:2
+#
+msgid "<b>Servers</b>"
+msgstr "<b>Servidors</b>"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:3
+#
+msgid "Charset:"
+msgstr "Chad"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:4
+msgid "Create a new IRC network"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:5
+msgid "Edit the selected IRC network"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:6
+msgid "Network"
+msgstr "Ret"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:7
+msgid "Network:"
+msgstr "Ret"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:8
+#
+msgid "Nickname:"
+msgstr "Escais :"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:9
+#
+msgid "Password:"
+msgstr "Mot de pas :"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:10
+#
+msgid "Quit message:"
+msgstr "Messatge de sortida :"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:11
+#
+msgid "Real name:"
+msgstr "Vertadièr nom :"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:12
+msgid "Remove the selected IRC network"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:13
+msgid "irc account settings"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-irc-network-dialog.c:287
+msgid "new server"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-irc-network-dialog.c:512
+#
+msgid "Server"
+msgstr "Servidor"
+
+#: ../libempathy-gtk/empathy-irc-network-dialog.c:527
+#
+msgid "Port"
+msgstr "Pòrt"
+
+#: ../libempathy-gtk/empathy-irc-network-dialog.c:540
+msgid "SSL"
+msgstr "SSL"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:158
+msgid "Current Locale"
+msgstr ""
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:161
+#: ../libempathy-gtk/totem-subtitle-encoding.c:163
+#: ../libempathy-gtk/totem-subtitle-encoding.c:165
+#: ../libempathy-gtk/totem-subtitle-encoding.c:167
+msgid "Arabic"
+msgstr "Arab"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:170
+msgid "Armenian"
+msgstr "Armenian"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:173
+#: ../libempathy-gtk/totem-subtitle-encoding.c:175
+#: ../libempathy-gtk/totem-subtitle-encoding.c:177
+msgid "Baltic"
+msgstr "Baltic"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:180
+#
+msgid "Celtic"
+msgstr "Celtic"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:183
+#: ../libempathy-gtk/totem-subtitle-encoding.c:185
+#: ../libempathy-gtk/totem-subtitle-encoding.c:187
+#: ../libempathy-gtk/totem-subtitle-encoding.c:189
+msgid "Central European"
+msgstr "European central"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:192
+#: ../libempathy-gtk/totem-subtitle-encoding.c:194
+#: ../libempathy-gtk/totem-subtitle-encoding.c:196
+#: ../libempathy-gtk/totem-subtitle-encoding.c:198
+msgid "Chinese Simplified"
+msgstr "Chinés simplificat"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:201
+#: ../libempathy-gtk/totem-subtitle-encoding.c:203
+#: ../libempathy-gtk/totem-subtitle-encoding.c:205
+msgid "Chinese Traditional"
+msgstr "Chinés tradicional"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:208
+msgid "Croatian"
+msgstr "Croat"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:211
+#: ../libempathy-gtk/totem-subtitle-encoding.c:213
+#: ../libempathy-gtk/totem-subtitle-encoding.c:215
+#: ../libempathy-gtk/totem-subtitle-encoding.c:217
+#: ../libempathy-gtk/totem-subtitle-encoding.c:219
+#: ../libempathy-gtk/totem-subtitle-encoding.c:221
+msgid "Cyrillic"
+msgstr "Cirillic"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:224
+msgid "Cyrillic/Russian"
+msgstr "Cirillic/Rus"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:227
+#: ../libempathy-gtk/totem-subtitle-encoding.c:229
+msgid "Cyrillic/Ukrainian"
+msgstr "Cirillic/Ucraïnian"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:232
+msgid "Georgian"
+msgstr "Georgian"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:235
+#: ../libempathy-gtk/totem-subtitle-encoding.c:237
+#: ../libempathy-gtk/totem-subtitle-encoding.c:239
+msgid "Greek"
+msgstr "Grèc"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:242
+msgid "Gujarati"
+msgstr "Gujarati"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:245
+msgid "Gurmukhi"
+msgstr "Gurmukhi"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:248
+#: ../libempathy-gtk/totem-subtitle-encoding.c:250
+#: ../libempathy-gtk/totem-subtitle-encoding.c:252
+#: ../libempathy-gtk/totem-subtitle-encoding.c:254
+msgid "Hebrew"
+msgstr "Ebrèu"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:257
+msgid "Hebrew Visual"
+msgstr "Ebrèu visual"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:260
+msgid "Hindi"
+msgstr "Indi"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:263
+msgid "Icelandic"
+msgstr "Islandés"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:266
+#: ../libempathy-gtk/totem-subtitle-encoding.c:268
+#: ../libempathy-gtk/totem-subtitle-encoding.c:270
+msgid "Japanese"
+msgstr "Japonés"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:273
+#: ../libempathy-gtk/totem-subtitle-encoding.c:275
+#: ../libempathy-gtk/totem-subtitle-encoding.c:277
+#: ../libempathy-gtk/totem-subtitle-encoding.c:279
+msgid "Korean"
+msgstr "Corean"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:282
+#
+msgid "Nordic"
+msgstr "Nordic"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:285
+#
+msgid "Persian"
+msgstr "Persian"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:288
+#: ../libempathy-gtk/totem-subtitle-encoding.c:290
+msgid "Romanian"
+msgstr "Romanian"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:293
+msgid "South European"
+msgstr "European del Sud"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:296
+msgid "Thai"
+msgstr "Tailandés"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:299
+#: ../libempathy-gtk/totem-subtitle-encoding.c:301
+#: ../libempathy-gtk/totem-subtitle-encoding.c:303
+#: ../libempathy-gtk/totem-subtitle-encoding.c:305
+msgid "Turkish"
+msgstr "Turc"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:308
+#: ../libempathy-gtk/totem-subtitle-encoding.c:310
+#: ../libempathy-gtk/totem-subtitle-encoding.c:312
+#: ../libempathy-gtk/totem-subtitle-encoding.c:314
+#: ../libempathy-gtk/totem-subtitle-encoding.c:316
+msgid "Unicode"
+msgstr "Unicode"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:319
+#: ../libempathy-gtk/totem-subtitle-encoding.c:321
+#: ../libempathy-gtk/totem-subtitle-encoding.c:323
+#: ../libempathy-gtk/totem-subtitle-encoding.c:325
+#: ../libempathy-gtk/totem-subtitle-encoding.c:327
+#
+msgid "Western"
+msgstr "Occidental"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:330
+#: ../libempathy-gtk/totem-subtitle-encoding.c:332
+#: ../libempathy-gtk/totem-subtitle-encoding.c:334
+#
+msgid "Vietnamese"
+msgstr "Vietnamés"
+
+#.
+#. * vim: sw=2 ts=8 cindent noai bs=2
+#.
+#: ../megaphone/data/GNOME_Megaphone_Applet.schemas.in.h:1
+msgid ""
+"The contact to display in the applet. Empty means no contact is displayed."
+msgstr ""
+
+#: ../megaphone/data/GNOME_Megaphone_Applet.schemas.in.h:2
+msgid "The contact's avatar token. Empty means contact has no avatar."
+msgstr ""
+
+#: ../megaphone/data/GNOME_Megaphone_Applet.server.in.in.h:1
+msgid "Megaphone"
+msgstr ""
+
+#: ../megaphone/data/GNOME_Megaphone_Applet.server.in.in.h:2
+#: ../megaphone/src/megaphone-applet.c:419
+msgid "Talk!"
+msgstr ""
+
+#: ../megaphone/data/GNOME_Megaphone_Applet.xml.h:2
+msgid "_Information"
+msgstr "_Entresenhas"
+
+#: ../nothere/data/GNOME_NotHere_Applet.server.in.in.h:1
+msgid "Presence"
+msgstr "Preséncia"
+
+#: ../nothere/data/GNOME_NotHere_Applet.server.in.in.h:2
+#: ../nothere/src/nothere-applet.c:89
+msgid "Set your own presence"
+msgstr ""
+
+#: ../src/empathy.c:205
+msgid "- Empathy Instant Messenger"
+msgstr ""
+
+#~ msgid "New message"
+#~ msgstr "Messatge novèl"
+
+#~ msgid "Disable"
+#~ msgstr "Desactivar"
+
+#~ msgid "gtk-cancel"
+#~ msgstr "gtk-cancel"
+
+#~ msgid "gtk-ok"
+#~ msgstr "gtk-ok"
diff --git a/gnome-2-22/po/pl.po b/gnome-2-22/po/pl.po
new file mode 100644
index 000000000..7ccb47129
--- /dev/null
+++ b/gnome-2-22/po/pl.po
@@ -0,0 +1,2208 @@
+# Copyright (C) 2003-2004 Free Software Foundation, Inc.
+# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+# Aktualną wersję tego pliku możesz odnaleźć w repozytorium cvs.gnome.pl
+# (:pserver:anonymous@cvs.gnome.pl:/gnomepl, puste hasło)
+# Jeśli masz jakiekolwiek uwagi odnoszące się do tłumaczenia lub chcesz
+# pomóc w jego rozwijaniu i pielęgnowaniu, napisz do nas na adres:
+# translators@gnome.pl
+# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+msgid ""
+msgstr ""
+"Project-Id-Version: Empathy\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-08-19 14:56+0200\n"
+"PO-Revision-Date: 2007-08-10 21:38+0100\n"
+"Last-Translator: Tomasz Dominikowski <dominikowski@gmail.com>\n"
+"Language-Team: Polish <translation-team-pl@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
+"|| n%100>=20) ? 1 : 2);\n"
+
+#: ../data/empathy.desktop.in.in.h:1
+msgid "Empathy Instant Messenger"
+msgstr "Komunikator internetowy Empathy"
+
+#: ../data/empathy.desktop.in.in.h:2
+msgid "Send and receive instant messages"
+msgstr "Wysyłanie i odbieranie wiadomości tekstowych"
+
+#: ../data/empathy.schemas.in.h:1
+msgid "Always open a separate chat window for new chats."
+msgstr "Zawsze otwieraj osobne okna rozmów dla nowych rozmów."
+
+#: ../data/empathy.schemas.in.h:2
+msgid "Chat window theme"
+msgstr "Motyw okna rozmów"
+
+#: ../data/empathy.schemas.in.h:3
+msgid ""
+"Comma separated list of spell checker languages to use (e.g. en, fr, nl)."
+msgstr ""
+"Oddzielana przecinkami lista języków sprawdzania pisowni (np. en, fr, nl, "
+"pl)."
+
+#: ../data/empathy.schemas.in.h:4
+msgid "Compact contact list"
+msgstr "Zmniejszona lista kontaktów"
+
+#: ../data/empathy.schemas.in.h:5
+msgid "Contact list sort criterium"
+msgstr "Kryterium sortowania listy kontaktów"
+
+#: ../data/empathy.schemas.in.h:6
+msgid "Default directory to select an avatar image from"
+msgstr "Domyślny katalog, z którego są wybierane awatary"
+
+#: ../data/empathy.schemas.in.h:7
+msgid "Enable popup when contact is available"
+msgstr "Włączenie powiadamiania, gdy kontakt staje się dostępny"
+
+#: ../data/empathy.schemas.in.h:8
+msgid "Enable sound when away"
+msgstr "Włącz_enie dźwięku przy stanie nieobecności"
+
+#: ../data/empathy.schemas.in.h:9
+msgid "Enable sound when busy"
+msgstr "Włączenie dźwięku przy stanie z_ajętości"
+
+#: ../data/empathy.schemas.in.h:10
+msgid "Enable spell checker"
+msgstr "Włączenie sprawdzania pisowni"
+
+#: ../data/empathy.schemas.in.h:11
+msgid "Hide main window"
+msgstr "Ukrycie głównego okna"
+
+#: ../data/empathy.schemas.in.h:12
+msgid "Hide the main window."
+msgstr "Ukrycie głównego okna."
+
+#: ../data/empathy.schemas.in.h:13
+msgid "Open new chats in separate windows"
+msgstr "Otwieranie nowych rozmów w osobnych oknach"
+
+#: ../data/empathy.schemas.in.h:14
+msgid "Show avatars"
+msgstr "Wyświetlanie awatarów"
+
+#: ../data/empathy.schemas.in.h:15
+msgid "Show hint about closing the main window"
+msgstr "Wyświetlanie podpowiedzi o zamknięciu głównego okna"
+
+#: ../data/empathy.schemas.in.h:16
+msgid "Show offline contacts"
+msgstr "Wyświetlanie rozłączonych kontaktów"
+
+#: ../data/empathy.schemas.in.h:17
+msgid "Spell checking languages"
+msgstr "Języki sprawdzania pisowni"
+
+#: ../data/empathy.schemas.in.h:18
+msgid "The last directory that an avatar image was chosen from."
+msgstr "Ostatni katalog, z którego był wybierany awatar."
+
+#: ../data/empathy.schemas.in.h:19
+msgid "The theme that is used to display the conversation in chat windows."
+msgstr "Motyw używany do wyświetlania konwersacji w oknach rozmowy."
+
+#: ../data/empathy.schemas.in.h:20
+msgid "Use graphical smileys"
+msgstr "Używanie emotikonów"
+
+#: ../data/empathy.schemas.in.h:21
+msgid "Use notification sounds"
+msgstr "Odgrywanie dźwięków powiadomień"
+
+#: ../data/empathy.schemas.in.h:22
+msgid "Use theme for chat rooms"
+msgstr "Używanie motywów dla pokojów rozmów"
+
+#: ../data/empathy.schemas.in.h:23
+msgid ""
+"Whether or not to check words typed against the languages you want to check "
+"with."
+msgstr ""
+"Określa, czy sprawdzać słowa wprowadzane w językach, w których zostało to "
+"określone. "
+
+#: ../data/empathy.schemas.in.h:24
+msgid ""
+"Whether or not to convert smileys into graphical images in conversations."
+msgstr ""
+"Określa czy uśmieszki w rozmowach będą konwertowane do postaci graficzniej."
+
+#: ../data/empathy.schemas.in.h:25
+msgid "Whether or not to play a sound when messages arrive."
+msgstr "Określa czy dźwięki przy nadejściu wiadmości będą odtwarzane."
+
+#: ../data/empathy.schemas.in.h:26
+msgid "Whether or not to play sounds when away."
+msgstr "Określa czy dźwięki przy stanie nieobecności."
+
+#: ../data/empathy.schemas.in.h:27
+msgid "Whether or not to play sounds when busy."
+msgstr "Określa czy dźwięki przy stanie zajętości."
+
+#: ../data/empathy.schemas.in.h:28
+msgid "Whether or not to show a popup when a contact becomes available."
+msgstr ""
+"Określa, czy wyświetlać powiadomienie, gdy kontakty stają się dostępne."
+
+#: ../data/empathy.schemas.in.h:29
+msgid ""
+"Whether or not to show avatars for contacts in the contact list and chat "
+"windows."
+msgstr ""
+"Określa, czy należy wyświetlać awatary dla kontaktów na liście i oknach "
+"rozmów."
+
+#: ../data/empathy.schemas.in.h:30
+msgid "Whether or not to show contacts that are offline in the contact list."
+msgstr "Określa czy należy wyświetlać kontakty nie będące w sieci na liście."
+
+#: ../data/empathy.schemas.in.h:31
+msgid ""
+"Whether or not to show the message dialog about closing the main window with "
+"the 'x' button in the title bar."
+msgstr ""
+"Określa, czy wyświetlać okno dialogowe podczas zamykania głównego okna "
+"przyciskiem \"x\" na pasku tytułowym."
+
+#: ../data/empathy.schemas.in.h:32
+msgid "Whether to show the contact list in compact mode or not."
+msgstr "Określa, czy należy wyświetlać listę kontaktów w trybie zmniejszonym."
+
+#: ../data/empathy.schemas.in.h:33
+msgid "Whether to use the theme for chat rooms or not."
+msgstr "Określa, czy używać motywów dla pokoi rozmów."
+
+#: ../data/empathy.schemas.in.h:34
+msgid ""
+"Which criterium to use when sorting the contact list. Default is to use sort "
+"by the contact's name with the value \"name\". A value of \"state\" will "
+"sort the contact list by state."
+msgstr ""
+"Określa, jakie kryterium używać podczas sortowania listy kontaktów. "
+"Domyślnie jest używane sortowanie wg nazwy kontaktów, wartość \"name\". "
+"Wartość \"state\" spowoduje sortowanie wg stanu kontaktu."
+
+#: ../libempathy/empathy-presence.c:185 ../libempathy/empathy-presence.c:285
+msgid "Offline"
+msgstr "Rozłączony"
+
+#: ../libempathy/empathy-presence.c:275
+msgid "Available"
+msgstr "Dostępny"
+
+#: ../libempathy/empathy-presence.c:277
+msgid "Busy"
+msgstr "Zajęty"
+
+#: ../libempathy/empathy-presence.c:280
+msgid "Away"
+msgstr "Nieobecny"
+
+#: ../libempathy/empathy-presence.c:282
+msgid "Hidden"
+msgstr "Ukryty"
+
+#: ../libempathy/empathy-tp-contact-list.c:354
+msgid "People nearby"
+msgstr "Ludzie w pobliżu"
+
+#: ../libempathy-gtk/empathy-about-dialog.c:63
+msgid ""
+"Empathy is free software; you can redistribute it and/or modify it under the "
+"terms of the GNU General Public License as published by the Free Software "
+"Foundation; either version 2 of the License, or (at your option) any later "
+"version."
+msgstr ""
+"Empathy jest oprogramowaniem wolnodostępnym; możesz go rozprowadzać dalej i/"
+"lub modyfikować na warunkach Powszechnej Licencji Publicznej GNU, wydanej "
+"przez Fundację Wolnodostępnego Oprogramowania - według wersji 2 tej "
+"Licencji lub którejś z późniejszych wersji. "
+
+#: ../libempathy-gtk/empathy-about-dialog.c:67
+msgid ""
+"Empathy is distributed in the hope that it will be useful, but WITHOUT ANY "
+"WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS "
+"FOR A PARTICULAR PURPOSE. See the GNU General Public License for more "
+"details."
+msgstr ""
+"Empathy jest rozpowszechniany z nadzieją, iż będzie on użyteczny - jednak "
+"BEZ JAKIEJKOLWIEK GWARANCJI, nawet domyślnej gwarancji PRZYDATNOŚCI "
+"HANDLOWEJ albo PRZYDATNOŚCI DO OKREŚLONYCH ZASTOSOWAŃ. W celu uzyskania "
+"bliższych informacji - Powszechna Licencja Publiczna GNU. "
+
+#: ../libempathy-gtk/empathy-about-dialog.c:71
+msgid ""
+"You should have received a copy of the GNU General Public License along with "
+"Empathy; if not, write to the Free Software Foundation, Inc., 51 Franklin "
+"Street, Fifth Floor, Boston, MA 02110-130159 USA"
+msgstr ""
+"Z pewnością wraz z niniejszym programem otrzymałeś też egzemplarz "
+"Powszechnej Licencji Publicznej GNU; jeśli nie - napisz do Free Software "
+"Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-130159 "
+"USA"
+
+#: ../libempathy-gtk/empathy-about-dialog.c:99
+msgid "An Instant Messaging client for GNOME"
+msgstr "Komunikator internetowy dla GNOME"
+
+#: ../libempathy-gtk/empathy-about-dialog.c:105
+msgid "translator-credits"
+msgstr ""
+"GNOME PL Team <translators@gnome.pl>\n"
+"Tomasz Dominikowski <dominikowski@gmail.com>"
+
+#: ../libempathy-gtk/empathy-account-chooser.c:336
+msgid "All"
+msgstr "Wszystkie"
+
+#: ../libempathy-gtk/empathy-account-widget-generic.c:146
+#: ../libempathy-gtk/empathy-account-widget-generic.c:208
+#, c-format
+msgid "%s:"
+msgstr "%s:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:1
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:1
+msgid "<b>Advanced</b>"
+msgstr "<b>Zaawansowane</b>"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:2
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:2
+msgid "Forget password and clear the entry."
+msgstr "Zapomnij hasło i wyczyść pole."
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:3
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:3
+msgid "Login I_D:"
+msgstr "I_dentyfikator logowania:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:4
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:4
+msgid "Pass_word:"
+msgstr "_Hasło:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:5
+msgid "Reso_urce:"
+msgstr "_Zasób:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:6
+msgid "Use encryption (SS_L)"
+msgstr "Używanie szyfrowania (SS_L)"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:7
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:5
+msgid "_Port:"
+msgstr "_Port:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:8
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:6
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:10
+msgid "_Server:"
+msgstr "_Serwer:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:9
+msgid "jabber account settings"
+msgstr "Ustawienia konta Jabber"
+
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:7
+msgid "msn account settings"
+msgstr "ustawienia konta msn"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:217
+msgid "Disable"
+msgstr "Wyłącz"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:220
+msgid "Enable"
+msgstr "Włącz"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:254
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:2
+msgid "<b>No Account Selected</b>"
+msgstr "<b>Nie zaznaczono żadnego konta</b>"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:256
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to start configuring.\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want "
+"to configure in the list on the left."
+msgstr ""
+"Aby dodać nowe konto możesz kliknąć przycisk \"Dodaj\", a zostanie utworzony "
+"nowy wpis, który można skonfigurować.\n"
+"\n"
+"Jeśli nie chcesz dodać konta, kliknij na konto, które chcesz skonfigurować "
+"na liście po lewej stronie."
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:265
+msgid "<b>No Accounts Configured</b>"
+msgstr "<b>Brak skonfigurowanych kont</b>"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:267
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to start configuring."
+msgstr ""
+"Aby dodać nowe konto możesz kliknąć przycisk \"Dodaj\", a zostanie utworzony "
+"nowy wpis, który można skonfigurować."
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:389
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:4
+msgid "Accounts"
+msgstr "Konta"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:893
+#, c-format
+msgid ""
+"You are about to remove your %s account!\n"
+"Are you sure you want to proceed?"
+msgstr ""
+"Zamierzasz usunąć konto %s!\n"
+"Czy jesteś tego pewien?"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:899
+msgid ""
+"Any associated conversations and chat rooms will NOT be removed if you "
+"decide to proceed.\n"
+"\n"
+"Should you decide to add the account back at a later time, they will still "
+"be available."
+msgstr ""
+"Wszystkie związane z tym kontem rozmowy i pokoje rozmów NIE zostaną "
+"usunięte, jeśli będziesz kontynuować.\n"
+"\n"
+"Jeśli zdecydujesz się na ponowne dodanie tego konta, znowu staną się "
+"dostępne."
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:1
+msgid "<b>New Account</b>"
+msgstr "<b>Nowe konto</b>"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:3
+msgid "<b>Settings</b>"
+msgstr "<b>Ustawienia</b>"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:5
+msgid "Cr_eate"
+msgstr "_Utwórz"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:6
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to started configuring.\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want "
+"to configure in the list on the left."
+msgstr ""
+"Aby dodać nowe konto możesz kliknąć przycisk \"Dodaj\", a zostanie utworzony "
+"nowy wpis, który można skonfigurować.\n"
+"\n"
+"Jeśli nie chcesz dodać konta, kliknij na konto, które chcesz skonfigurować "
+"na liście po lewej stronie."
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:9
+msgid "Type:"
+msgstr "Typ:"
+
+#: ../libempathy-gtk/empathy-chat.c:335
+msgid "Disconnected"
+msgstr "Rozłączony"
+
+#: ../libempathy-gtk/empathy-chat.c:450
+msgid "offline"
+msgstr "rozłączony"
+
+#: ../libempathy-gtk/empathy-chat.c:453
+msgid "invalid contact"
+msgstr "niepoprawny kontakt"
+
+#: ../libempathy-gtk/empathy-chat.c:456
+msgid "permission denied"
+msgstr "dostęp zabroniony"
+
+#: ../libempathy-gtk/empathy-chat.c:459
+msgid "too long message"
+msgstr "zbyt długa wiadomość"
+
+#: ../libempathy-gtk/empathy-chat.c:462
+msgid "not implemented"
+msgstr "niezaimplementowane"
+
+#: ../libempathy-gtk/empathy-chat.c:465
+msgid "unknown"
+msgstr "nieznany"
+
+#: ../libempathy-gtk/empathy-chat.c:469
+#, c-format
+msgid "Error sending message '%s': %s"
+msgstr "Błąd podczas wysyłania wiadomości \"%s\": %s"
+
+#: ../libempathy-gtk/empathy-chat.c:924
+msgid "Insert Smiley"
+msgstr "Wstaw uśmieszek"
+
+#: ../libempathy-gtk/empathy-chat.c:972
+msgid "_Check Word Spelling..."
+msgstr "_Sprawdź pisownię..."
+
+#: ../libempathy-gtk/empathy-chat.c:1397
+msgid "Connected"
+msgstr "Połączony"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:1
+msgid "C_lear"
+msgstr "_Wyczyść"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:2
+msgid "Change _Topic..."
+msgstr "Zmień _temat..."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:3
+msgid "Chat"
+msgstr "Czat"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:4
+msgid "Contact Infor_mation"
+msgstr "_Informacje o kontakcie"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:5
+msgid "Cu_t"
+msgstr "Wy_tnij"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:6
+msgid "In_vite..."
+msgstr "Z_aproś..."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:7
+msgid "Insert _Smiley"
+msgstr "Wstaw _uśmieszek"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:8
+msgid "Invitation _message:"
+msgstr "Treść _zaproszenia:"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:9
+msgid "Invite"
+msgstr "Zaproś"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:10
+#: ../libempathy-gtk/empathy-main-window.glade.h:4
+msgid "Join _New..."
+msgstr "Dołącz do _nowego..."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:11
+msgid "Move Tab _Left"
+msgstr "Przenieś zakładkę w _lewo"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:12
+msgid "Move Tab _Right"
+msgstr "Przenieś zakładkę w p_rawo"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:13
+msgid "Select who would you like to invite:"
+msgstr "Wybierz kogo chcesz zaprosić:"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:14
+msgid "You have been invited to join a chat conference."
+msgstr "Wysłano tobie zaproszenie do dołączenia do konferencji."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:15
+#: ../libempathy-gtk/empathy-main-window.glade.h:9
+msgid "_Add Contact..."
+msgstr "_Dodaj kontakt..."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:16
+msgid "_Add To Favorites"
+msgstr "Dod_aj do ulubionych"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:17
+msgid "_Close"
+msgstr "_Zamknij"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:18
+msgid "_Conversation"
+msgstr "_Rozmowa"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:19
+msgid "_Copy"
+msgstr "_Kopiuj"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:20
+msgid "_Detach Tab"
+msgstr "_Odłącz zakładkę"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:21
+#: ../libempathy-gtk/empathy-contact-list-view.c:216
+#: ../libempathy-gtk/empathy-main-window.glade.h:12
+msgid "_Edit"
+msgstr "M_odyfikuj"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:22
+msgid "_Next Tab"
+msgstr "_Następna zakładka"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:23
+msgid "_Paste"
+msgstr "_Wklej"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:24
+msgid "_Previous Tab"
+msgstr "_Poprzednia zakładka"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:25
+#: ../libempathy-gtk/empathy-main-window.glade.h:18
+msgid "_Room"
+msgstr "_Pokój"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:26
+msgid "_Show Contacts"
+msgstr "_Wyświetl listę kontaków"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:27
+msgid "_Tabs"
+msgstr "_Zakładki"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:28
+#: ../libempathy-gtk/empathy-contact-list-view.c:232
+#: ../libempathy-gtk/empathy-main-window.glade.h:19
+msgid "_View Previous Conversations"
+msgstr "_Wyświetl poprzednie rozmowy"
+
+#: ../libempathy-gtk/empathy-chat-view.c:557
+msgid "_Copy Link Address"
+msgstr "S_kopiuj adres odnośnika"
+
+#: ../libempathy-gtk/empathy-chat-view.c:565
+msgid "_Open Link"
+msgstr "_Otwórz odnośnik"
+
+#: ../libempathy-gtk/empathy-chat-view.c:902
+msgid "%A %d %B %Y"
+msgstr "%A %d %B %Y"
+
+#: ../libempathy-gtk/empathy-chat-window.c:703
+#: ../libempathy-gtk/empathy-chat-window.c:733
+msgid "New Message"
+msgid_plural "New Messages"
+msgstr[0] "Nowa wiadomość"
+msgstr[1] "Nowe wiadomości"
+msgstr[2] "Nowe wiadomości"
+
+#: ../libempathy-gtk/empathy-chat-window.c:709
+msgid "Chat Room"
+msgstr "Pokój rozmów"
+
+#: ../libempathy-gtk/empathy-chat-window.c:714
+#: ../libempathy-gtk/empathy-chat-window.c:737
+#: ../libempathy-gtk/empathy-log-window.c:524
+#, c-format
+msgid "Conversation"
+msgid_plural "Conversations (%d)"
+msgstr[0] "Rozmowa"
+msgstr[1] "%d rozmowy"
+msgstr[2] "%d rozmów"
+
+#: ../libempathy-gtk/empathy-chat-window.c:1288
+msgid "Typing a message."
+msgstr "Wprowadzanie wiadomości."
+
+#: ../libempathy-gtk/empathy-chatrooms-window.c:252
+msgid "Name"
+msgstr "Nazwa"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.c:270
+msgid "Room"
+msgstr "Pokój"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.c:279
+msgid "Auto Connect"
+msgstr "Automatyczne łączenie"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:1
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:5
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:1
+msgid "Account:"
+msgstr "Konto:"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:2
+msgid "Edit Favorite Room"
+msgstr "Modyfikuj ulubiony pokój"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:3
+msgid "Join room on start_up"
+msgstr "Dołącz do pokoju podczas _uruchomienia programu"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:4
+msgid "Join this chat room when Empathy starts and you are connected"
+msgstr ""
+"Dołącz do tego pokoju podczas uruchomienia Empathy, gdy jesteś połączony"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:5
+msgid "Manage Favorite Rooms"
+msgstr "Modyfikuj ulubione pokoje"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:6
+msgid "N_ame:"
+msgstr "N_azwa:"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:7
+msgid "S_erver:"
+msgstr "S_erwer:"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:8
+msgid "_Nickname:"
+msgstr "_Pseudonim"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:9
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:9
+msgid "_Room:"
+msgstr "_Pokój"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:173
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:9
+msgid "Contact information"
+msgstr "Informacje o kontakcie"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:221
+msgid "I would like to add you to my contact list."
+msgstr "Chciałbym Cię dodać do mojej listy kontaktów."
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:245
+msgid "New contact"
+msgstr "Nowy kontakt"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.glade.h:1
+msgid "Decide _Later"
+msgstr "Z_decyduj później"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.glade.h:2
+msgid "Subscription Request"
+msgstr "Prośba autoryzacji"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:196
+msgid "_Contact"
+msgstr "_Kontakt"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:200
+msgid "_Group"
+msgstr "_Grupa"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:204
+#: ../libempathy-gtk/empathy-main-window.glade.h:10
+msgid "_Chat"
+msgstr "_Rozmowa"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:204
+msgid "Chat with contact"
+msgstr "Porozmawiaj z kontaktem"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:208
+msgid "Infor_mation"
+msgstr "Infor_macje"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:208
+msgid "View contact information"
+msgstr "Wyświetl informacje o kontakcie"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:212
+msgid "Re_name"
+msgstr "Zmień _nazwę"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:212
+msgid "Rename"
+msgstr "Zmień nazwę"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:216
+msgid "Edit the groups and name for this contact"
+msgstr "Modyfikuj grupy i nazwę dla tego kontaktu"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:220
+msgid "_Remove"
+msgstr "_Usuń"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:220
+msgid "Remove contact"
+msgstr "Usuń kontakt"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:224
+msgid "_Invite to Chat Room"
+msgstr "_Zaproś do pokoju rozmów"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:224
+msgid "Invite to a currently open chat room"
+msgstr "Zaproś do bieżącego pokoju rozmów"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:228
+msgid "_Send File..."
+msgstr "_Wyślij plik..."
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:228
+msgid "Send a file"
+msgstr "Wyślij plik"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:232
+msgid "View previous conversations with this contact"
+msgstr "Wyświetl poprzednie rozmowy z tym kontaktem"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:1488
+msgid "Sorry, I don't want you in my contact list anymore."
+msgstr "Przepraszam, ale już nie chcę Cię na mojej liście kontaktów."
+
+#: ../libempathy-gtk/empathy-contact-widget.c:627
+msgid "Select"
+msgstr "Wybierz"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:637
+#: ../libempathy-gtk/empathy-main-window.c:613
+msgid "Group"
+msgstr "Grupa"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:1
+msgid "<b>Client Information</b>"
+msgstr "<b>Informacje o kliencie</b>"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:2
+msgid "<b>Contact Details</b>"
+msgstr "<b>Szczegóły kontaktu</b>"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:3
+msgid "<b>Contact</b>"
+msgstr "<b>Kontakt</b>"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:4
+msgid "<b>Groups</b>"
+msgstr "<b>Grupy</b>"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:6
+msgid "Alias:"
+msgstr "Alias:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:7
+msgid "Birthday:"
+msgstr "Urodziny:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:8
+msgid "Client:"
+msgstr "Klient:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:10
+msgid "Email:"
+msgstr "E-mail:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:11
+msgid "Fullname:"
+msgstr "Pełna nazwa:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:12
+msgid "Identifier:"
+msgstr "Identyfikator:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:13
+msgid "Information requested..."
+msgstr "Żądanie informacji..."
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:14
+msgid "OS:"
+msgstr "System:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:15
+msgid ""
+"Select the groups you want this contact to appear in, you can select more "
+"than one group or no groups."
+msgstr ""
+"Wybierz grupy, w których ma się pojawić ten kontakt, można wybrać więcej niż "
+"jedną grupę lub żadną."
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:16
+msgid "Version:"
+msgstr "Wersja:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:17
+msgid "Web site:"
+msgstr "Strona WWW:"
+
+#: ../libempathy-gtk/empathy-group-chat.c:252
+msgid "Enter the new topic you want to set for this room:"
+msgstr "Wprowadź nowy temat dla tego pokoju:"
+
+#: ../libempathy-gtk/empathy-group-chat.c:360
+#, c-format
+msgid "%s has joined the room"
+msgstr "Użytkownik %s dołączył do pokoju"
+
+#: ../libempathy-gtk/empathy-group-chat.c:376
+#, c-format
+msgid "%s has left the room"
+msgstr "Użytkownik %s opuścił pokój"
+
+#: ../libempathy-gtk/empathy-group-chat.c:455
+#, c-format
+msgid "Topic: %s"
+msgstr "Temat: %s"
+
+#: ../libempathy-gtk/empathy-group-chat.c:578
+#, c-format
+msgid "Topic set to: %s"
+msgstr "Temat ustawiony na: %s"
+
+#: ../libempathy-gtk/empathy-group-chat.c:580
+msgid "No topic defined"
+msgstr "Temat nie został określony"
+
+#: ../libempathy-gtk/empathy-group-chat.glade.h:1
+msgid "<b>Topic:</b>"
+msgstr "<b>Temat:</b>"
+
+#: ../libempathy-gtk/empathy-group-chat.glade.h:2
+msgid "Group Chat"
+msgstr "Rozmowa grupowa"
+
+#: ../libempathy-gtk/empathy-log-window.c:517
+msgid "Account"
+msgstr "Konto"
+
+#: ../libempathy-gtk/empathy-log-window.c:534
+msgid "Date"
+msgstr "Data"
+
+#: ../libempathy-gtk/empathy-log-window.glade.h:1
+msgid "Conversations"
+msgstr "Rozmowy"
+
+#: ../libempathy-gtk/empathy-log-window.glade.h:2
+msgid "Search"
+msgstr "Wyszukiwanie"
+
+#: ../libempathy-gtk/empathy-log-window.glade.h:3
+msgid "View Previous Conversations"
+msgstr "Wyświetl poprzednie konwersacje"
+
+#: ../libempathy-gtk/empathy-log-window.glade.h:4
+msgid "_For:"
+msgstr "_Dla:"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.c:286
+msgid "Chat Rooms"
+msgstr "Pokoje rozmów"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:2
+msgid "Browse:"
+msgstr "Przeglądaj:"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:3
+msgid ""
+"Enter the room name to join here or click on one or more rooms in the list."
+msgstr ""
+"Wprowadź nazwę pokoju, do którego chcesz dołączyć lub kliknij jeden lub "
+"więcej pokoi na liście."
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:4
+msgid ""
+"Enter the server which hosts the room, or leave it empty if the room is on "
+"the current account's server"
+msgstr ""
+"Wprowadź serwer obsługujący pokój lub pozostaw puste, jeśli pokój znajduje "
+"się na tym samym serwerze co bieżące konto"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:5
+msgid "Join"
+msgstr "Dołącz"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:6
+msgid "Join New"
+msgstr "Dołącz do nowego"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:7
+msgid "Re_fresh"
+msgstr "_Odśwież"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:8
+msgid ""
+"This list represents all chat rooms hosted on the server you have entered."
+msgstr ""
+"Ta lista przedstawia wszystkie pokoje rozmów utrzymywane na tym serwerze."
+
+#: ../libempathy-gtk/empathy-main-window.c:278
+msgid "Show and edit accounts"
+msgstr "Wyświetl i modyfikuj konta"
+
+#: ../libempathy-gtk/empathy-main-window.c:634
+msgid "Contact"
+msgstr "Kontakt"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:1
+msgid "Contact list"
+msgstr "Lista kontaktów"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:2
+msgid "Context"
+msgstr "Kontekst"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:3
+msgid "Join _Favorites"
+msgstr "Połącz się z _ulubionymi"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:5
+msgid "Manage Favorites..."
+msgstr "Modyfikuj ulubione..."
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:6
+msgid "Show _Offline Contacts"
+msgstr "Wyświetlanie r_ozłączonych kontaktów"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:7
+msgid "_About"
+msgstr "O _programie"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:8
+msgid "_Accounts"
+msgstr "_Konta"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:11
+msgid "_Contents"
+msgstr "_Zawartość"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:13
+msgid "_Help"
+msgstr "Pomo_c"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:14
+#: ../libempathy-gtk/empathy-status-icon.glade.h:2
+msgid "_New Message..."
+msgstr "_Nowa wiadomość..."
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:15
+msgid "_Personal Information"
+msgstr "Informacje o _użytkowniku"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:16
+msgid "_Preferences"
+msgstr "_Preferencje"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:17
+#: ../libempathy-gtk/empathy-status-icon.glade.h:3
+msgid "_Quit"
+msgstr "_Zakończ"
+
+#: ../libempathy-gtk/empathy-preferences.c:243
+msgid "Language"
+msgstr "Język"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:1
+msgid "<b>Appearance</b>"
+msgstr "<b>Wygląd</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:2
+msgid "<b>Audio</b>"
+msgstr "<b>Dźwięk</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:3
+msgid "<b>Behaviour</b>"
+msgstr "<b>Zachowanie</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:4
+msgid "<b>Contact List</b>"
+msgstr "<b>Lista kontaktów</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:5
+msgid "<b>Enable spell checking for languages:</b>"
+msgstr "<b>Sprawdzanie pisowni dla języków:</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:6
+msgid "<b>Options</b>"
+msgstr "<b>Opcje</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:7
+msgid "<b>Visual</b>"
+msgstr "<b>Obraz</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:8
+msgid ""
+"<small>The list of languages reflects only the languages for which you have "
+"a dictionary installed.</small>"
+msgstr ""
+"<small>Lista języków odzwierciedla stan faktycznie zainstalowanych słowników."
+"</small>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:9
+msgid "Avatars are user chosen images shown in the contact list"
+msgstr ""
+"Awatary są obrazkami wybieranymi przez użytkownika, wyświetlanymi na liście "
+"kontaktów"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:10
+msgid "Chat Th_eme:"
+msgstr "Motyw _rozmowy:"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:11
+msgid "Display notifications when contacts come _online"
+msgstr "Wyświetlanie powiadomień, gdy kontakty stają się d_ostępne"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:12
+msgid "Enable sounds when _away"
+msgstr "Włącz_enie dźwięku przy stanie nieobecności"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:13
+msgid "Enable sounds when _busy"
+msgstr "Włączenie dźwięku przy stanie z_ajętości"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:14
+msgid "General"
+msgstr "Ogólne"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:15
+msgid "Notifications"
+msgstr "Powiadomienia"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:16
+msgid "Preferences"
+msgstr "Preferencje"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:17
+msgid "Show _avatars"
+msgstr "Wyświetlanie _awatarów"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:18
+msgid "Show _smileys as images"
+msgstr "Konwertowanie _uśmieszków na obrazki"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:19
+msgid "Show co_mpact contact list"
+msgstr "Wyświetlanie z_mniejszonej listy kontaktów"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:20
+msgid "Sort by _name"
+msgstr "Sortuj wg _nazwy"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:21
+msgid "Sort by s_tate"
+msgstr "Sortuj wg s_tanu"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:22
+msgid "Spell Checking"
+msgstr "Sprawdzanie pisowni"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:23
+msgid "Themes"
+msgstr "Motywy"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:24
+msgid "_Open new chats in separate windows"
+msgstr "_Otwieranie nowych rozmów w osobnych oknach"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:25
+msgid "_Play sound when messages arrive"
+msgstr "_Odtwarzanie dźwięku po nadejściu wiadomości"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:26
+msgid "_Use for chat rooms"
+msgstr "_Używanie dla pokojów rozmów"
+
+#. Custom messages
+#: ../libempathy-gtk/empathy-presence-chooser.c:690
+msgid "Custom messages..."
+msgstr "Własne wiadomości..."
+
+#: ../libempathy-gtk/empathy-presence-chooser.glade.h:1
+msgid "Custom message"
+msgstr "Własna wiadomość"
+
+#: ../libempathy-gtk/empathy-presence-chooser.glade.h:2
+msgid "Message:"
+msgstr "Wiadomość:"
+
+#: ../libempathy-gtk/empathy-presence-chooser.glade.h:3
+msgid "Save message"
+msgstr "Zapisz wiadomość"
+
+#: ../libempathy-gtk/empathy-presence-chooser.glade.h:4
+msgid "Status:"
+msgstr "Stan:"
+
+#: ../libempathy-gtk/empathy-private-chat.c:185
+#, c-format
+msgid "%s went offline"
+msgstr "Użytkownik %s rozłączył się"
+
+#: ../libempathy-gtk/empathy-private-chat.c:199
+#, c-format
+msgid "%s has come online"
+msgstr "Pojawił się użytkownik %s"
+
+#: ../libempathy-gtk/empathy-spell-dialog.c:85
+msgid "Word"
+msgstr "Słowo"
+
+#: ../libempathy-gtk/empathy-spell-dialog.c:258
+msgid "Suggestions for the word"
+msgstr "Sugestie dla słowa"
+
+#: ../libempathy-gtk/empathy-spell-dialog.glade.h:1
+msgid "Spell Checker"
+msgstr "Sprawdzanie pisowni"
+
+#: ../libempathy-gtk/empathy-spell-dialog.glade.h:2
+msgid "Suggestions for the word:"
+msgstr "Sugestie dla słowa"
+
+#: ../libempathy-gtk/empathy-status-icon.c:302
+#, c-format
+msgid ""
+"New message from %s:\n"
+"%s"
+msgstr ""
+"Nowa wiadomość od %s:\n"
+"%s"
+
+#: ../libempathy-gtk/empathy-status-icon.c:554
+#, c-format
+msgid ""
+"Subscription requested for %s\n"
+"Message: %s"
+msgstr ""
+"Prośba subskrypcji dla %s\n"
+"Wiadomość: %s"
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:1
+msgid "Status"
+msgstr "Stan"
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:4
+msgid "_Show Contact List"
+msgstr "_Wyświetl listę kontaków"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:87
+msgid "Classic"
+msgstr "Klasyczny"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:88
+msgid "Simple"
+msgstr "Prosty"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:89
+msgid "Clean"
+msgstr "Wyczyść"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:90
+msgid "Blue"
+msgstr "Niebieski"
+
+#: ../src/empathy.c:165
+msgid "Don't connect on startup"
+msgstr "Bez łączenia przy uruchamianiu"
+
+#: ../src/empathy.c:176
+msgid "- Empathy Instant Messenger"
+msgstr "- Komunikator internetowy Empathy"
+
+#~ msgid "Local Network"
+#~ msgstr "Sieć lokalna"
+
+#~ msgid "<b>Languages</b>"
+#~ msgstr "<b>Języki</b>"
+
+#~ msgid "_Enable spell checking"
+#~ msgstr "_Włączenie sprawdzania pisowni"
+
+#~ msgid "Clear List..."
+#~ msgstr "Wyczyść listę..."
+
+#~ msgid "Are you sure you want to clear the list?"
+#~ msgstr "Czy na pewno wyczyścić listę?"
+
+#~ msgid ""
+#~ "This will remove any custom messages you have added to the list of preset "
+#~ "status messages."
+#~ msgstr ""
+#~ "To usunie wszystkie własne komunikaty dodane do listy własnych "
+#~ "komunikatów o stanie."
+
+#~ msgid "Clear List"
+#~ msgstr "Wyczyść listę"
+
+#~ msgid "Enter status message:"
+#~ msgstr "Wprowadź komunikat stanu:"
+
+#~ msgid "Status Message Presets"
+#~ msgstr "Własne komunikaty stanu"
+
+#~ msgid "_Add to status message list"
+#~ msgstr "Dod_aj do listy komunikatów stanu"
+
+#~ msgid "<b>Account</b>"
+#~ msgstr "<b>Konto</b>"
+
+#~ msgid "A unique name for this account to identify it personally to you."
+#~ msgstr "Unikalna nazwa dla tego konta, abyś mógł się z nią identyfikować."
+
+#~ msgid "Imendio "
+#~ msgstr "Imendio"
+
+#~ msgid "Jabber"
+#~ msgstr "Jabber"
+
+#~ msgid "_Name:"
+#~ msgstr "_Nazwa:"
+
+#~ msgid "Contact List - Empathy"
+#~ msgstr "Lista kontaktów - Empathy"
+
+#~ msgid "Instant Messenger"
+#~ msgstr "Komunikator internetowy"
+
+#~ msgid "Create"
+#~ msgstr "Utwórz"
+
+#~ msgid "Sorry, I don't want you in my contact list."
+#~ msgstr "Przepraszam, nie chcę Ciebie na mojej liście kontaktów."
+
+#, fuzzy
+#~ msgid ""
+#~ "<small><b><span foreground=\"#555\">Example: user@jabber.org</span></b></"
+#~ "small>"
+#~ msgstr "<span size=\"smaller\">Przykład: uzytkownik@jabber.org</span>"
+
+#, fuzzy
+#~ msgid "Gossip Instant Messenger"
+#~ msgstr "Komunikator internetowy"
+
+#, fuzzy
+#~ msgid "Joining"
+#~ msgstr "_Dołącz"
+
+#, fuzzy
+#~ msgid "No affiliation"
+#~ msgstr "Odgrywanie dźwięków powiadomień"
+
+#, fuzzy
+#~ msgid "An unknown error occurred, check your details are correct."
+#~ msgstr "Nieznany błąd"
+
+#, fuzzy
+#~ msgid "Unavailable"
+#~ msgstr "Dostępny"
+
+#, fuzzy
+#~ msgid "An unknown error occurred."
+#~ msgstr "Nieznany błąd"
+
+#, fuzzy
+#~ msgid "Connection refused."
+#~ msgstr "Połączony"
+
+#, fuzzy
+#~ msgid "Connection timed out."
+#~ msgstr "Połączony"
+
+#, fuzzy
+#~ msgid "This feature is unavailable."
+#~ msgstr "Serwer może być aktualnie niedostępny."
+
+#, fuzzy
+#~ msgid "new account"
+#~ msgstr "Konto Jabbera"
+
+#~ msgid "Home"
+#~ msgstr "Dom"
+
+#, fuzzy
+#~ msgid "This service is unavailable or not found"
+#~ msgstr "Serwer może być aktualnie niedostępny."
+
+#, fuzzy
+#~ msgid "Registration is required"
+#~ msgstr "Zakładanie konta"
+
+#, fuzzy
+#~ msgid "Disconnect"
+#~ msgstr "_Rozłącz"
+
+#~ msgid "Connect"
+#~ msgstr "Połącz"
+
+#, fuzzy
+#~ msgid "Successfully registered your new account settings."
+#~ msgstr "Konto zostało pomyślnie założone."
+
+#, fuzzy
+#~ msgid "Failed to register your new account settings."
+#~ msgstr "Błąd przy rejestrowaniu konta"
+
+#, fuzzy
+#~ msgid "Successfully changed your account password."
+#~ msgstr "Wpisz swoje hasło:"
+
+#, fuzzy
+#~ msgid "Failed to change your account password."
+#~ msgstr "Wpisz swoje hasło:"
+
+#, fuzzy
+#~ msgid ""
+#~ "Please enter a new password for this account:\n"
+#~ "%s"
+#~ msgstr ""
+#~ "Wprowadź nową nazwę dla grupy\n"
+#~ "%s"
+
+#, fuzzy
+#~ msgid "Information requested, please wait..."
+#~ msgstr "<b>Żądanie informacji, proszę czekać...</b>"
+
+#, fuzzy
+#~ msgid "%d subscription request"
+#~ msgid_plural "%d subscription requests"
+#~ msgstr[0] "Prośba subskrypcji"
+#~ msgstr[1] "Prośba subskrypcji"
+
+#, fuzzy
+#~ msgid "%d server message"
+#~ msgid_plural "%d server messages"
+#~ msgstr[0] "Prośba o autoryzację"
+#~ msgstr[1] "Prośba o autoryzację"
+
+#, fuzzy
+#~ msgid "Edit Account _Details"
+#~ msgstr "Modyfikacja informacji o koncie"
+
+#, fuzzy
+#~ msgid "Accept"
+#~ msgstr "Z_aakceptuj"
+
+#, fuzzy
+#~ msgid "Do you want to remove this contact from your roster?"
+#~ msgstr ""
+#~ "Czy chcesz usunąć kontakt\n"
+#~ "%s\n"
+#~ "ze swojej listy kontaktów?"
+
+#, fuzzy
+#~ msgid ""
+#~ "Please enter a new name for the group:\n"
+#~ "%s"
+#~ msgstr ""
+#~ "Wprowadź nową nazwę dla grupy\n"
+#~ "%s"
+
+#~ msgid "Unsorted"
+#~ msgstr "Nieuporządkowana"
+
+#, fuzzy
+#~ msgid "Unknown error occurred during file transfer."
+#~ msgstr "Nieznany błąd"
+
+#, fuzzy
+#~ msgid "%s would like to send you a file."
+#~ msgstr "Chciałbym cię dodać do mojej listy kontaktów."
+
+#, fuzzy
+#~ msgid "Someone would like to send you a file."
+#~ msgstr "Chciałbym cię dodać do mojej listy kontaktów."
+
+#, fuzzy
+#~ msgid "Select a file"
+#~ msgstr "Wybierz"
+
+#, fuzzy
+#~ msgid "Connecting..."
+#~ msgstr "_Połącz..."
+
+#, fuzzy
+#~ msgid "Retry connection"
+#~ msgstr "Połącz"
+
+#, fuzzy
+#~ msgid "Conversation With"
+#~ msgstr "_Rozmowa"
+
+#~ msgid "List the available accounts"
+#~ msgstr "Lista dostępnych kont"
+
+#~ msgid "Which account to connect to on startup"
+#~ msgstr ""
+#~ "Z którym kontem ma zostać nawiązane połączenie przy uruchamianiu programu"
+
+#~ msgid "ACCOUNT-NAME"
+#~ msgstr "NAZWA-KONTA"
+
+#~ msgid "Available accounts:"
+#~ msgstr "Dostępne konta:"
+
+#~ msgid "[default]"
+#~ msgstr "[domyślne]"
+
+#~ msgid "There is no account with the name '%s'."
+#~ msgstr "Brak konta o nazwie \"%s\"."
+
+#, fuzzy
+#~ msgid "Browsing for conference rooms, please wait..."
+#~ msgstr "Zapisywanie szczegółów użytkownika, proszę czekać..."
+
+#, fuzzy
+#~ msgid "Default"
+#~ msgstr "[domyślne]"
+
+#, fuzzy
+#~ msgid "Chat!"
+#~ msgstr "Czat"
+
+#, fuzzy
+#~ msgid "%s wants to be added to your contact list."
+#~ msgstr "%s zostanie dodany do twojej listy kontaktów."
+
+#, fuzzy
+#~ msgid "Someone wants to be added to your contact list."
+#~ msgstr "%s zostanie dodany do twojej listy kontaktów."
+
+#, fuzzy
+#~ msgid "Subscription request"
+#~ msgstr "Prośba subskrypcji"
+
+#, fuzzy
+#~ msgid "Do you want to add this person to your contact list?"
+#~ msgstr ""
+#~ "Czy chcesz usunąć kontakt\n"
+#~ "%s\n"
+#~ "ze swojej listy kontaktów?"
+
+#, fuzzy
+#~ msgid "Do you want to add %s to your contact list?"
+#~ msgstr ""
+#~ "Czy chcesz usunąć kontakt\n"
+#~ "%s\n"
+#~ "ze swojej listy kontaktów?"
+
+#, fuzzy
+#~ msgid "Please enter your %s account password"
+#~ msgstr "Wpisz swoje hasło:"
+
+#~ msgid "Remember Password?"
+#~ msgstr "Zapamiętać hasło?"
+
+#, fuzzy
+#~ msgid "Change"
+#~ msgstr "Czat"
+
+#, fuzzy
+#~ msgid "Contact goes online"
+#~ msgstr "Użytkownik %s wszedł na sieć"
+
+#, fuzzy
+#~ msgid "Do you want to accept this file?"
+#~ msgstr "Czy chcesz zaakceptować żądanie?"
+
+#, fuzzy
+#~ msgid "File name:"
+#~ msgstr "Naz_wa użytkownika:"
+
+#, fuzzy
+#~ msgid "File size:"
+#~ msgstr "Strona WWW:"
+
+#~ msgid "_Accept"
+#~ msgstr "Z_aakceptuj"
+
+#~ msgid "_Deny"
+#~ msgstr "_Odrzuć"
+
+#, fuzzy
+#~ msgid "<b>About</b>"
+#~ msgstr "<b>Ulubione:</b>"
+
+#, fuzzy
+#~ msgid "<b>Name</b>"
+#~ msgstr "Stan"
+
+#, fuzzy
+#~ msgid "<b>Personal Details</b>"
+#~ msgstr "Szczegóły użytkownika"
+
+#, fuzzy
+#~ msgid "<b>Subscription</b>"
+#~ msgstr "Subskrypcja"
+
+#, fuzzy
+#~ msgid "<span size=\"smaller\">Example: Mikael or user@server.org</span>"
+#~ msgstr "<span size=\"smaller\">Przykład: uzytkownik@jabber.org</span>"
+
+#, fuzzy
+#~ msgid "Accou_nt:"
+#~ msgstr "Konto Jabbera"
+
+#, fuzzy
+#~ msgid "Add Contact"
+#~ msgstr "_Dodaj kontakt..."
+
+#, fuzzy
+#~ msgid "Ch_at"
+#~ msgstr "Czat"
+
+#, fuzzy
+#~ msgid "Con_tact:"
+#~ msgstr "_Dodaj kontakt..."
+
+#, fuzzy
+#~ msgid "Connect on S_tartup"
+#~ msgstr "Bez łączenia przy uruchamianiu"
+
+#~ msgid "Country:"
+#~ msgstr "Kraj:"
+
+#, fuzzy
+#~ msgid "Edit Contact"
+#~ msgstr "_Dodaj kontakt..."
+
+#~ msgid "Edit Groups"
+#~ msgstr "Modyfikacja grup"
+
+#, fuzzy
+#~ msgid "ID:"
+#~ msgstr "JID"
+
+#~ msgid "Name:"
+#~ msgstr "Nazwa:"
+
+#, fuzzy
+#~ msgid "Personal Details"
+#~ msgstr "_Szczegóły użytkownika"
+
+#, fuzzy
+#~ msgid "R_egister"
+#~ msgstr "Z_ałóż konto..."
+
+#, fuzzy
+#~ msgid "This is the name that will be used on your roster for this contact"
+#~ msgstr "Jaki pseudonim ma być używany dla tego kontaktu?"
+
+#, fuzzy
+#~ msgid "This name will be used to identify you in chat windows"
+#~ msgstr "Ta nazwa będzie użyta do identyfikacji w oknach rozmowy."
+
+#, fuzzy
+#~ msgid ""
+#~ "This name will be used to identify you when new contacts lookup your "
+#~ "details"
+#~ msgstr "Ta nazwa będzie użyta do identyfikacji w oknach rozmowy."
+
+#, fuzzy
+#~ msgid "Which account do you want to use?"
+#~ msgstr "Jakiej nazwy użytkownika chcesz używać?"
+
+#, fuzzy
+#~ msgid "_Connect"
+#~ msgstr "Połącz"
+
+#, fuzzy
+#~ msgid "_Description:"
+#~ msgstr "Opis"
+
+#~ msgid "_Disconnect"
+#~ msgstr "_Rozłącz"
+
+#, fuzzy
+#~ msgid "_Email:"
+#~ msgstr "E-mail:"
+
+#, fuzzy
+#~ msgid ""
+#~ "_Enter the name or contact ID of the person you want to chat to below:"
+#~ msgstr "Wprowadź identyfikator osoby, do której chcesz wysłać wiadomość."
+
+#, fuzzy
+#~ msgid "_Group:"
+#~ msgstr "Grupa"
+
+#, fuzzy
+#~ msgid "_Nick Name:"
+#~ msgstr "_Pseudonim"
+
+#, fuzzy
+#~ msgid "_Password:"
+#~ msgstr "_Hasło:"
+
+#, fuzzy
+#~ msgid "_Quit Message:"
+#~ msgstr "_Komunikaty stanu"
+
+#, fuzzy
+#~ msgid "_Retrieve"
+#~ msgstr "_Usuń"
+
+#~ msgid "_Subscribe"
+#~ msgstr "_Subskrybuj"
+
+#, fuzzy
+#~ msgid "_Web site:"
+#~ msgstr "Strona WWW:"
+
+#, fuzzy
+#~ msgid "irc account settings"
+#~ msgstr "<b>Ustawienia konta</b>"
+
+#~ msgid "Preset status messages."
+#~ msgstr "Ustawione komunikaty stanu."
+
+#, fuzzy
+#~ msgid "Connecting"
+#~ msgstr "Połącz"
+
+#~ msgid "%s will be added to your contact list."
+#~ msgstr "%s zostanie dodany do twojej listy kontaktów."
+
+#, fuzzy
+#~ msgid "%s ID of new contact:"
+#~ msgstr "_ID Jabbera dla nowego kontaktu:"
+
+#, fuzzy
+#~ msgid ""
+#~ "Please enter your invitation message to:\n"
+#~ "%s"
+#~ msgstr "Wpisz swoje hasło:"
+
+#~ msgid "Contact Information for %s"
+#~ msgstr "Informacje kontaktowe na temat %s"
+
+#, fuzzy
+#~ msgid "/Contact Infor_mation"
+#~ msgstr "/_Informacje o kontakcie"
+
+#, fuzzy
+#~ msgid "/Re_name Contact"
+#~ msgstr "/Z_mień nazwę kontaktu"
+
+#, fuzzy
+#~ msgid "/_Edit Groups"
+#~ msgstr "/Modyfi_kuj grupy"
+
+#, fuzzy
+#~ msgid "/_View Previous Conversations"
+#~ msgstr "_Rozmowa"
+
+#~ msgid ""
+#~ "Please enter a new nickname for the contact\n"
+#~ "%s"
+#~ msgstr ""
+#~ "Wprowadź nowy pseudonim dla kontaktu\n"
+#~ "%s"
+
+#~ msgid "Edit groups for %s"
+#~ msgstr "Modyfikacja grup dla %s"
+
+#~ msgid "Conversation Log"
+#~ msgstr "Dziennik rozmowy"
+
+#~ msgid "Registering account"
+#~ msgstr "Zakładanie konta"
+
+#, fuzzy
+#~ msgid "Respond"
+#~ msgstr "Powód:"
+
+#, fuzzy
+#~ msgid "Add to _favourites"
+#~ msgstr "_Modyfikuj ulubione..."
+
+#, fuzzy
+#~ msgid "Na_me:"
+#~ msgstr "Nazwa:"
+
+#, fuzzy
+#~ msgid "New Chat Room"
+#~ msgstr "Gossip - Rozmowa"
+
+#~ msgid " "
+#~ msgstr " "
+
+#, fuzzy
+#~ msgid "<b>Information requested, please wait...</b>"
+#~ msgstr "<b>Żądanie informacji, proszę czekać...</b>"
+
+#, fuzzy
+#~ msgid "<span size=\"smaller\">Example:</span>"
+#~ msgstr "<span size=\"smaller\">Przykład: uzytkownik@jabber.org</span>"
+
+#, fuzzy
+#~ msgid "Chat Rooms..."
+#~ msgstr "Gossip - Rozmowa"
+
+#, fuzzy
+#~ msgid "Connection Details"
+#~ msgstr "Szczegóły użytkownika"
+
+#, fuzzy
+#~ msgid "Do you already have an account set up on a server?"
+#~ msgstr "Czy posiadasz już konto na serwerze Jabbera?"
+
+#, fuzzy
+#~ msgid "Enter the port used in the connection for this account"
+#~ msgstr ""
+#~ "Wprowadź nowy pseudonim dla kontaktu\n"
+#~ "%s"
+
+#, fuzzy
+#~ msgid "Enter the server used in the connection for this account"
+#~ msgstr ""
+#~ "Wprowadź nowy pseudonim dla kontaktu\n"
+#~ "%s"
+
+#, fuzzy
+#~ msgid "Finished"
+#~ msgstr "Instalacja zakończona"
+
+#~ msgid "Gossip"
+#~ msgstr "Gossip"
+
+#~ msgid ""
+#~ "Gossip is a modern client for the Jabber Instant Messaging system.\n"
+#~ "\n"
+#~ "This assistant will help you configure Gossip and connect you to your "
+#~ "favorite Jabber server.\n"
+#~ "\n"
+#~ "To get started, just click \"Forward\"."
+#~ msgstr ""
+#~ "Gossip jest nowoczesnym klientem systemu komunikacyjnego Jabber.\n"
+#~ "\n"
+#~ "Ten asystent pomoże Ci skonfigurować program Gossip i połączyć się z "
+#~ "twoim ulubionym serwerem Jabbera.\n"
+#~ "\n"
+#~ "Aby rozpocząć, kliknij \"Naprzód\"."
+
+#~ msgid ""
+#~ "In order to subscribe to presence notifications from the user, a request "
+#~ "will be sent. Until this request is approved, the user will always be "
+#~ "shown as \"Offline\" in your contact list."
+#~ msgstr ""
+#~ "Prośba o autoryzację zostanie wsyłana jeśli chcesz być powiadamiany o "
+#~ "obecności użytkownika. Dopóki prośba nie zostanie zaakceptowana "
+#~ "użytkownik będzie pokazywany na twojej liście kontaktów jako \"Rozłączony"
+#~ "\"."
+
+#~ msgid "In which group do you want to place this contact?"
+#~ msgstr "W której grupie chcesz umieścić ten kontakt?"
+
+#~ msgid "Jabber ID:"
+#~ msgstr "ID Jabbera:"
+
+#~ msgid "Nickname:"
+#~ msgstr "Pseudonim:"
+
+#, fuzzy
+#~ msgid "Port:"
+#~ msgstr "P_ort:"
+
+#, fuzzy
+#~ msgid "Registering Account"
+#~ msgstr "Zakładanie konta"
+
+#, fuzzy
+#~ msgid "Resource:"
+#~ msgstr "_Zasób:"
+
+#~ msgid "Sending request"
+#~ msgstr "Wysyłanie prośby o autoryzację."
+
+#~ msgid "Server:"
+#~ msgstr "Serwer:"
+
+#, fuzzy
+#~ msgid "Web Site:"
+#~ msgstr "Strona WWW:"
+
+#~ msgid "Welcome to Gossip"
+#~ msgstr "Witaj w programie Gossip"
+
+#~ msgid "What instant messaging system does the contact use?"
+#~ msgstr "Jakiego komunikatora używa ten kontakt?"
+
+#~ msgid "What is your name?"
+#~ msgstr "Jak się nazywasz?"
+
+#, fuzzy
+#~ msgid "What password do you want to use?"
+#~ msgstr "Z jakiego serwera chcesz korzystać?"
+
+#~ msgid "What username do you use?"
+#~ msgstr "Jakiej nazwy użytkownika używasz?"
+
+#~ msgid "What username do you want to use?"
+#~ msgstr "Jakiej nazwy użytkownika chcesz używać?"
+
+#, fuzzy
+#~ msgid "Which account do you want to add this contact to?"
+#~ msgstr "W której grupie chcesz umieścić ten kontakt?"
+
+#, fuzzy
+#~ msgid ""
+#~ "You can change your account settings later by selecting the Edit-"
+#~ ">Accounts menu item."
+#~ msgstr ""
+#~ "Program Gossip został poprawnie skonfigurowany.\n"
+#~ "Można zmienić ustawienia swojego konta później, wybierając z menu Akcje-"
+#~ ">Połącz... "
+
+#, fuzzy
+#~ msgid "Your Account"
+#~ msgstr "Konto Jabbera"
+
+#~ msgid "Your Identity"
+#~ msgstr "Twoja tożsamość"
+
+#, fuzzy
+#~ msgid "_Group Chat"
+#~ msgstr "Gossip - Rozmowa"
+
+#, fuzzy
+#~ msgid "_No"
+#~ msgstr "Nie"
+
+#~ msgid "_Search..."
+#~ msgstr "_Znajdź..."
+
+#, fuzzy
+#~ msgid "_Yes"
+#~ msgstr "Tak"
+
+#~ msgid "Be silent when away"
+#~ msgstr "Zachowywanie ciszy przy stanie nieobecności"
+
+#~ msgid "Be silent when busy"
+#~ msgstr "Zachowywanie ciszy przy zajętości"
+
+#~ msgid "Height of main window"
+#~ msgstr "Wysokość głównego okna"
+
+#~ msgid "The X position of the main window."
+#~ msgstr "Pozycja X (w poziomie) głównego okna."
+
+#~ msgid "The Y position of the main window."
+#~ msgstr "Pozycja Y (w pionie) głównego okna."
+
+#~ msgid "The width of the main window."
+#~ msgstr "Szerokość głównego okna."
+
+#~ msgid "Width of the main window"
+#~ msgstr "Szerokość głównego okna"
+
+#~ msgid "X position of main window"
+#~ msgstr "Pozycja X głównego okna"
+
+#~ msgid "Y position of main window"
+#~ msgstr "Pozycja Y głównego okna"
+
+#~ msgid "Gossip, Instant Messaging Client"
+#~ msgstr "Gossip, klient pogaduszek sieciowych"
+
+#, fuzzy
+#~ msgid "Close this chat window"
+#~ msgstr "Ukrycie głównego okna."
+
+#, fuzzy
+#~ msgid "Requested Information"
+#~ msgstr "_Informacje o koncie"
+
+#, fuzzy
+#~ msgid "%s has gone offline"
+#~ msgstr "Użytkownik %s rozłączył się"
+
+#~ msgid "Available..."
+#~ msgstr "Dostępny..."
+
+#~ msgid "Busy..."
+#~ msgstr "Zajęty..."
+
+#~ msgid "Away..."
+#~ msgstr "Nieobecny..."
+
+#~ msgid "Contact _Information"
+#~ msgstr "_Informacje o kontakcie"
+
+#, fuzzy
+#~ msgid "<b>Sound</b>"
+#~ msgstr "<b>Opis</b>"
+
+#, fuzzy
+#~ msgid "Gossip - Accounts"
+#~ msgstr "Gossip - Rozmowa grupowa"
+
+#, fuzzy
+#~ msgid "Join _Group Chat..."
+#~ msgstr "_Dołącz do rozmowy grupowej..."
+
+#, fuzzy
+#~ msgid "Por_t:"
+#~ msgstr "P_ort:"
+
+#, fuzzy
+#~ msgid "Requested information."
+#~ msgstr "Informacje o kliencie"
+
+#, fuzzy
+#~ msgid "Requesting contact information, please wait..."
+#~ msgstr "Żądanie szczegółów użytkownika, proszę czekać..."
+
+#, fuzzy
+#~ msgid "Could not open connection"
+#~ msgstr "Nie można nawiązać połączenia"
+
+#, fuzzy
+#~ msgid "Could not find the server you wanted to use"
+#~ msgstr "Z jakiego serwera chcesz korzystać?"
+
+#, fuzzy
+#~ msgid "Connection to the server failed."
+#~ msgstr "<b>Połączenie do serwera</b>"
+
+#~ msgid "Written by:"
+#~ msgstr "Autorzy:"
+
+#~ msgid "Artwork by:"
+#~ msgstr "Grafika:"
+
+#~ msgid "Translated by:"
+#~ msgstr "Tłumaczenie:"
+
+#, fuzzy
+#~ msgid "Account ID"
+#~ msgstr "_Informacje o koncie"
+
+#~ msgid "%sChat - %s"
+#~ msgstr "%sRozmowa - %s"
+
+#~ msgid "/Show _Log"
+#~ msgstr "/Wyświetl _dziennik"
+
+#, fuzzy
+#~ msgid "Persian"
+#~ msgstr "Wersja:"
+
+#, fuzzy
+#~ msgid "Latvian"
+#~ msgstr "Jem"
+
+#~ msgid "View Lo_g"
+#~ msgstr "Wyświetl dzienni_k"
+
+#~ msgid "Gossip - Group Chat"
+#~ msgstr "Gossip - Rozmowa grupowa"
+
+#, fuzzy
+#~ msgid "Gossip - Add contact"
+#~ msgstr "Dodaje kontakt"
+
+#, fuzzy
+#~ msgid "Gossip - Contact Information"
+#~ msgstr "_Informacje o kontakcie"
+
+#, fuzzy
+#~ msgid "Gossip - Edit Groups"
+#~ msgstr "Gossip - Modyfikacja rozmowy grupowej"
+
+#, fuzzy
+#~ msgid "Gossip - New Account"
+#~ msgstr "Gossip - Rozmowa grupowa"
+
+#, fuzzy
+#~ msgid "Gossip - New Message"
+#~ msgstr "Gossip - Wysyłanie wiadomości"
+
+#, fuzzy
+#~ msgid "Gossip - Personal Details"
+#~ msgstr "Szczegóły użytkownika"
+
+#, fuzzy
+#~ msgid "Gossip - Preferences"
+#~ msgstr "Preferencje"
+
+#, fuzzy
+#~ msgid "Gossip - Status Message"
+#~ msgstr "Gossip - Wysyłanie wiadomości"
+
+#, fuzzy
+#~ msgid "Personal Details Saved!"
+#~ msgstr "Szczegóły użytkownika"
+
+#~ msgid "What request message do you want to send to %s?"
+#~ msgstr "Jaka wiadomość żądania ma zostać wysłana do %s?"
+
+#~ msgid "Make sure that your account information is correct."
+#~ msgstr "Upewnij się, że twoje informacje o koncie są poprawne."
+
+#~ msgid "%s wants to be notified of your status."
+#~ msgstr "%s chce być powiadamiany o twojej obecności."
+
+#~ msgid "You were disconnected from the server. Do you want to reconnect?"
+#~ msgstr ""
+#~ "Połączenie z serwerem zostało utracone. Czy chcesz się ponownie połączyć?"
+
+#~ msgid ""
+#~ "Make sure that your account information is correct. The server may also "
+#~ "currently be unavailable."
+#~ msgstr ""
+#~ "Upewnij się, że informacje o koncie są poprawne. Serwer może być również "
+#~ "niedostępny."
+
+#~ msgid "Edit List..."
+#~ msgstr "Modyfikuj listę..."
+
+#~ msgid "An error occurred when chatting with %s."
+#~ msgstr "Wystąpił błąd podczas rozmowy z użytkownikiem %s."
+
+#~ msgid "Details:"
+#~ msgstr "Szczegóły:"
+
+#~ msgid "An error occurred when chatting in the group chat %s."
+#~ msgstr "Wystąpił błąd podczas rozmowy grupowej %s."
+
+#~ msgid "Unable to enter the group chat %s."
+#~ msgstr "Nie można dołączyć do rozmowy grupowej %s."
+
+#~ msgid "Gossip will now try to use your account:"
+#~ msgstr "Gossip spróbuje użyć twojego konta:"
+
+#~ msgid "Gossip will now try to register the account:"
+#~ msgstr "Gossip spróbuje zarejestrować konto:"
+
+#~ msgid "*"
+#~ msgstr "*"
+
+#~ msgid "From:"
+#~ msgstr "Od:"
+
+#~ msgid "Gossip - Received Message"
+#~ msgstr "Gossip - Otrzymana wiadomość"
+
+#~ msgid "In reply to:"
+#~ msgstr "W odpowiedzi do:"
+
+#~ msgid "To:"
+#~ msgstr "Do:"
+
+#~ msgid "_Reply..."
+#~ msgstr "_Odpowiedz..."
+
+#~ msgid "_Send"
+#~ msgstr "_Wyślij"
+
+#~ msgid "C_onnect"
+#~ msgstr "_Połącz"
+
+#~ msgid " "
+#~ msgstr " "
+
+#~ msgid "<b>Available chat rooms</b>"
+#~ msgstr "<b>Dostępne pokoje</b>"
+
+#~ msgid "<b>Chat room information</b>"
+#~ msgstr "<b>Informacja o pokoju</b>"
+
+#~ msgid "Gossip - Join Group Chat"
+#~ msgstr "Gossip - Dołączanie do rozmowy grupowej"
+
+#~ msgid "N_ickname:"
+#~ msgstr "_Pseudonim:"
+
+#~ msgid ""
+#~ "Pick a favorite, or enter nickname, server name, and the name of the chat "
+#~ "room to enter."
+#~ msgstr ""
+#~ "Wybież rozmowę z ulubioncyh lub wpisz pseudonim, nazwę serwera i nazwę "
+#~ "pokoju, do którego chcesz wejść."
+
+#~ msgid "R_emove"
+#~ msgstr "U_suń"
+
+#~ msgid "_Add"
+#~ msgstr "_Dodaj"
+
+#~ msgid " "
+#~ msgstr " "
+
+#~ msgid "<b>Personal information</b>"
+#~ msgstr "<b>Informacje o użytkowniku</b>"
+
+#~ msgid "<b>Preset status messages</b>"
+#~ msgstr "<b>Ustawione komunikaty stanu</b>"
+
+#~ msgid "<i>Information not available</i>"
+#~ msgstr "<i>Informacja nie jest dostępna</i>"
+
+#~ msgid "Choose a Server"
+#~ msgstr "Wybierz serwer"
+
+#~ msgid "Choose from list:"
+#~ msgstr "Wybierz z listy:"
+
+#~ msgid "Information about ..."
+#~ msgstr "Informacje o programie ..."
+
+#~ msgid "Jabber.com"
+#~ msgstr "Jabber.com"
+
+#~ msgid "Jabber.org"
+#~ msgstr "Jabber.org"
+
+#~ msgid "On what server do you have a Jabber account?"
+#~ msgstr "Na jakim serwerze Jabbera masz konto?"
+
+#~ msgid "Sound"
+#~ msgstr "Dźwięk"
+
+#~ msgid "Use a different server"
+#~ msgstr "Użycie innego serwera"
+
+#~ msgid "What request message do you want to send to ...?"
+#~ msgstr "Jaka wiadomość żądania ma zostać wysłana do ...?"
+
+#~ msgid "subscription_label"
+#~ msgstr "subscription_label"
+
+#~ msgid "About to leave..."
+#~ msgstr "Za chwilę zakończymy..."
+
+#~ msgid "Autoaway message"
+#~ msgstr "Automatyczny komunikat o nieobecności"
+
+#~ msgid "Away messages"
+#~ msgstr "Komunikaty niedostępności"
+
+#~ msgid "Message to show before going away"
+#~ msgstr "Komunikat wyświetlany przed przejściem w stan nieobecności"
+
+#~ msgid "Not at the computer"
+#~ msgstr "Nie jestem przy komputerze"
+
+#~ msgid "Just about to leave..."
+#~ msgstr "Zaraz zakończymy..."
+
+#~ msgid "A Jabber Client for GNOME"
+#~ msgstr "Klient Jabbera dla GNOME"
+
+#~ msgid "Gossip Website"
+#~ msgstr "Witryna programu Gossip"
+
+#~ msgid "Custom Busy Message..."
+#~ msgstr "Własny komunikat o zajętości..."
+
+#~ msgid "New Busy Message"
+#~ msgstr "Nowy komunikat o zajętości"
+
+#~ msgid "New Away Message"
+#~ msgstr "Nowy komunikat o nieobecności"
+
+#~ msgid "Working"
+#~ msgstr "Pracuję"
+
+#~ msgid "Sleeping"
+#~ msgstr "Śpię"
+
+#~ msgid "Enter the new message:"
+#~ msgstr "Podaj nową wiadomość:"
+
+#~ msgid "Reason for being busy:"
+#~ msgstr "Powód zajętości:"
diff --git a/gnome-2-22/po/pt.po b/gnome-2-22/po/pt.po
new file mode 100644
index 000000000..6c032c8c5
--- /dev/null
+++ b/gnome-2-22/po/pt.po
@@ -0,0 +1,2003 @@
+# gossip's Portuguese translation
+# Copyright © 2003, 2004 gossip
+# This file is distributed under the same license as the gossip package.
+# Duarte Loreto <happyguy_pt@hotmail.com>, 2003, 2004.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: 2.8\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-05-15 23:46+0200\n"
+"PO-Revision-Date: 2004-08-13 18:20+0000\n"
+"Last-Translator: Duarte Loreto <happyguy_pt@hotmail.com>\n"
+"Language-Team: Portuguese <gnome_pt@yahoogroups.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../data/empathy.desktop.in.h:1
+#, fuzzy
+msgid "Empathy Instant Messenger"
+msgstr "Mensagens Instantâneas"
+
+#: ../data/empathy.desktop.in.h:2
+msgid "Instant Messenger"
+msgstr "Mensagens Instantâneas"
+
+#: ../data/empathy.schemas.in.h:1
+msgid "Always open a separate chat window for new chats."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:2
+msgid "Chat window theme"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:3
+msgid ""
+"Comma separated list of spell checker languages to use (e.g. en, fr, nl)."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:4
+#, fuzzy
+msgid "Compact contact list"
+msgstr "Adicionar à sua lista de contactos"
+
+#: ../data/empathy.schemas.in.h:5
+msgid "Contact list sort criterium"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:6
+msgid "Default directory to select an avatar image from"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:7
+msgid "Enable popup when contact is available"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:8
+#, fuzzy
+msgid "Enable sound when away"
+msgstr "Desabilitar sons quando _ausente"
+
+#: ../data/empathy.schemas.in.h:9
+#, fuzzy
+msgid "Enable sound when busy"
+msgstr "Desabilitar sons quando _ocupado"
+
+#: ../data/empathy.schemas.in.h:10
+#, fuzzy
+msgid "Enable spell checker"
+msgstr "Gossip - Enviar Mensagem"
+
+#: ../data/empathy.schemas.in.h:11
+msgid "Hide main window"
+msgstr "Esconder a janela principal"
+
+#: ../data/empathy.schemas.in.h:12
+msgid "Hide the main window."
+msgstr "Esconder a janela principal."
+
+#: ../data/empathy.schemas.in.h:13
+msgid "Open new chats in separate windows"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:14
+#, fuzzy
+msgid "Show avatars"
+msgstr "_Apresentar Lista de Contactos"
+
+#: ../data/empathy.schemas.in.h:15
+#, fuzzy
+msgid "Show hint about closing the main window"
+msgstr "A altura da janela principal."
+
+#: ../data/empathy.schemas.in.h:16
+msgid "Show offline contacts"
+msgstr "Mostrar os contactos desligados"
+
+#: ../data/empathy.schemas.in.h:17
+msgid "Spell checking languages"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:18
+msgid "The last directory that an avatar image was chosen from."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:19
+#, fuzzy
+msgid "The theme that is used to display the conversation in chat windows."
+msgstr "Este nome será utilizado para o identificar em janelas de diálogo."
+
+#: ../data/empathy.schemas.in.h:20
+msgid "Use graphical smileys"
+msgstr "Utilizar risonhos gráficos"
+
+#: ../data/empathy.schemas.in.h:21
+msgid "Use notification sounds"
+msgstr "Utilizar sons de notificação"
+
+#: ../data/empathy.schemas.in.h:22
+msgid "Use theme for chat rooms"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:23
+msgid ""
+"Whether or not to check words typed against the languages you want to check "
+"with."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:24
+msgid ""
+"Whether or not to convert smileys into graphical images in conversations."
+msgstr "Se converter ou não risonhos em imagens gráficas nos diálogos."
+
+#: ../data/empathy.schemas.in.h:25
+msgid "Whether or not to play a sound when messages arrive."
+msgstr "Se reproduzir ou não um som ao receber uma mensagem."
+
+#: ../data/empathy.schemas.in.h:26
+msgid "Whether or not to play sounds when away."
+msgstr "Se reproduzir ou não um som quando ausente."
+
+#: ../data/empathy.schemas.in.h:27
+msgid "Whether or not to play sounds when busy."
+msgstr "Se reproduzir ou não um som quando ocupado."
+
+#: ../data/empathy.schemas.in.h:28
+#, fuzzy
+msgid "Whether or not to show a popup when a contact becomes available."
+msgstr "Se reproduzir ou não um som ao receber uma mensagem."
+
+#: ../data/empathy.schemas.in.h:29
+#, fuzzy
+msgid ""
+"Whether or not to show avatars for contacts in the contact list and chat "
+"windows."
+msgstr "Se apresentar ou não na lista de contactos os que estejam desligados."
+
+#: ../data/empathy.schemas.in.h:30
+msgid "Whether or not to show contacts that are offline in the contact list."
+msgstr "Se apresentar ou não na lista de contactos os que estejam desligados."
+
+#: ../data/empathy.schemas.in.h:31
+msgid ""
+"Whether or not to show the message dialog about closing the main window with "
+"the 'x' button in the title bar."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:32
+#, fuzzy
+msgid "Whether to show the contact list in compact mode or not."
+msgstr "Se apresentar ou não na lista de contactos os que estejam desligados."
+
+#: ../data/empathy.schemas.in.h:33
+msgid "Whether to use the theme for chat rooms or not."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:34
+msgid ""
+"Which criterium to use when sorting the contact list. Default is to use sort "
+"by the contact's name with the value \"name\". A value of \"state\" will "
+"sort the contact list by state."
+msgstr ""
+
+#: ../libempathy/gossip-contact.c:654 ../libempathy/gossip-presence.c:184
+#: ../libempathy/gossip-presence.c:283
+msgid "Offline"
+msgstr "Desligado"
+
+#: ../libempathy/gossip-presence.c:274
+msgid "Available"
+msgstr "Disponível"
+
+#: ../libempathy/gossip-presence.c:276
+msgid "Busy"
+msgstr "Ocupado"
+
+#: ../libempathy/gossip-presence.c:279
+msgid "Away"
+msgstr "Ausente"
+
+#: ../libempathy-gtk/empathy-main-window.c:254
+#, fuzzy
+msgid "Show and edit accounts"
+msgstr "_Apresentar Lista de Contactos"
+
+#: ../libempathy-gtk/empathy-main-window.c:456
+msgid "Group"
+msgstr "Grupo"
+
+#: ../libempathy-gtk/empathy-main-window.c:477
+#, fuzzy
+msgid "Contact"
+msgstr "_Adicionar Contacto..."
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:1
+#, fuzzy
+msgid "Contact List - Empathy"
+msgstr "_Esconder Lista de Contactos"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:2
+#, fuzzy
+msgid "Context"
+msgstr "Ligar"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:3
+#, fuzzy
+msgid "Join _Favorites"
+msgstr "_Editar favoritas..."
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:4
+#: ../libempathy-gtk/gossip-chat.glade.h:10
+msgid "Join _New..."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:5
+msgid "Manage Favorites..."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:6
+msgid "Show _Offline Contacts"
+msgstr "Apresentar Contactos _Desligados"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:7
+#, fuzzy
+msgid "_About"
+msgstr "_Aceitar"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:8
+#, fuzzy
+msgid "_Accounts"
+msgstr "_Aceitar"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:9
+#: ../libempathy-gtk/gossip-chat.glade.h:15
+msgid "_Add Contact..."
+msgstr "_Adicionar Contacto..."
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:10
+#: ../libempathy-gtk/gossip-contact-list.c:298
+msgid "_Chat"
+msgstr "_Diálogo"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:11
+#, fuzzy
+msgid "_Contents"
+msgstr "Ligar"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:12
+#: ../libempathy-gtk/gossip-chat.glade.h:21
+#: ../libempathy-gtk/gossip-contact-list.c:310
+msgid "_Edit"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:13
+msgid "_Help"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:14
+#: ../libempathy-gtk/empathy-status-icon.glade.h:2
+msgid "_New Message..."
+msgstr "_Nova Mensagem..."
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:15
+#, fuzzy
+msgid "_Personal Information"
+msgstr "Informação pessoal"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:16
+msgid "_Preferences"
+msgstr "_Preferências"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:17
+#: ../libempathy-gtk/empathy-status-icon.glade.h:3
+msgid "_Quit"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:18
+#: ../libempathy-gtk/gossip-chat.glade.h:25
+#, fuzzy
+msgid "_Room"
+msgstr "_Sala:"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:19
+#: ../libempathy-gtk/gossip-chat.glade.h:28
+#: ../libempathy-gtk/gossip-contact-list.c:326
+#, fuzzy
+msgid "_View Previous Conversations"
+msgstr "_Diálogo"
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:1
+msgid "Status"
+msgstr "Estado"
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:4
+msgid "_Show Contact List"
+msgstr "_Apresentar Lista de Contactos"
+
+#: ../libempathy-gtk/gossip-about-dialog.c:63
+msgid ""
+"Empathy is free software; you can redistribute it and/or modify it under the "
+"terms of the GNU General Public License as published by the Free Software "
+"Foundation; either version 2 of the License, or (at your option) any later "
+"version."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-about-dialog.c:67
+msgid ""
+"Empathy is distributed in the hope that it will be useful, but WITHOUT ANY "
+"WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS "
+"FOR A PARTICULAR PURPOSE. See the GNU General Public License for more "
+"details."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-about-dialog.c:71
+msgid ""
+"You should have received a copy of the GNU General Public License along with "
+"Empathy; if not, write to the Free Software Foundation, Inc., 51 Franklin "
+"Street, Fifth Floor, Boston, MA 02110-130159 USA"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-about-dialog.c:99
+#, fuzzy
+msgid "An Instant Messaging client for GNOME"
+msgstr "Gossip, Um Cliente de Mensagens Instantâneas"
+
+#: ../libempathy-gtk/gossip-about-dialog.c:105
+#, fuzzy
+msgid "translator-credits"
+msgstr "Duarte Loreto"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:224
+#, fuzzy
+msgid "Disable"
+msgstr "Disponível"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:227
+msgid "Enable"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:261
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:3
+#, fuzzy
+msgid "<b>No Account Selected</b>"
+msgstr "<b>Definições de Conta</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:263
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to start configuring.\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want "
+"to configure in the list on the left."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:272
+#, fuzzy
+msgid "<b>No Accounts Configured</b>"
+msgstr "<b>Definições de Conta</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:274
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to start configuring."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:362
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:6
+#, fuzzy
+msgid "Accounts"
+msgstr "Conta Jabber"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:857
+#, c-format
+msgid ""
+"You are about to remove your %s account!\n"
+"Are you sure you want to proceed?"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:863
+msgid ""
+"Any associated conversations and chat rooms will NOT be removed if you "
+"decide to proceed.\n"
+"\n"
+"Should you decide to add the account back at a later time, they will still "
+"be available."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:1
+#, fuzzy
+msgid "<b>Account</b>"
+msgstr "<b>Favorita:</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:2
+#, fuzzy
+msgid "<b>New Account</b>"
+msgstr "<b>Favorita:</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:4
+#, fuzzy
+msgid "<b>Settings</b>"
+msgstr "<b>Definições de Conta</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:5
+msgid "A unique name for this account to identify it personally to you."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:7
+#, fuzzy
+msgid "Cr_eate"
+msgstr "Diálogo"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:8
+#, fuzzy
+msgid "Imendio "
+msgstr "Gossip Imendio"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:9
+msgid "Jabber"
+msgstr "Jabber"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:10
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to started configuring.\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want "
+"to configure in the list on the left."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:13
+#, fuzzy
+msgid "_Name:"
+msgstr "Nome:"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:14
+#, fuzzy
+msgid "_Type:"
+msgstr "_Tópico:"
+
+#: ../libempathy-gtk/gossip-account-widget-generic.c:144
+#: ../libempathy-gtk/gossip-account-widget-generic.c:186
+#, c-format
+msgid "%s:"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:1
+#, fuzzy
+msgid ""
+"<small><b><span foreground=\"#555\">Example: user@jabber.org</span></b></"
+"small>"
+msgstr "<span size=\"smaller\">Exemplo: utilizador@jabber.org</span>"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:2
+msgid "Forget password and clear the entry."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:3
+msgid "Login I_D:"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:4
+#, fuzzy
+msgid "Pass_word:"
+msgstr "Sen_ha:"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:5
+#, fuzzy
+msgid "Reso_urce:"
+msgstr "_Recurso:"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:6
+#, fuzzy
+msgid "Use encryption (SS_L)"
+msgstr "Utilizar _encriptação (SSL)"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:7
+#, fuzzy
+msgid "_Port:"
+msgstr "P_orto:"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:8
+msgid "_Server:"
+msgstr "_Servidor:"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:9
+#, fuzzy
+msgid "jabber account settings"
+msgstr "<b>Definições de Conta</b>"
+
+#: ../libempathy-gtk/gossip-chat.c:314
+msgid "Disconnected"
+msgstr "Desligado"
+
+#: ../libempathy-gtk/gossip-chat.c:858
+msgid "Insert Smiley"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.c:906
+msgid "_Check Word Spelling..."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.c:1244
+msgid "Connected"
+msgstr "Ligado"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:1
+msgid "C_lear"
+msgstr "_Limpar"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:2
+msgid "Change _Topic..."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:3
+msgid "Chat"
+msgstr "Diálogo"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:4
+#, fuzzy
+msgid "Contact Infor_mation"
+msgstr "_Informação de Contacto"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:5
+#, fuzzy
+msgid "Cu_t"
+msgstr "Diálogo"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:6
+#, fuzzy
+msgid "In_vite..."
+msgstr "Re_gistar..."
+
+#: ../libempathy-gtk/gossip-chat.glade.h:7
+msgid "Insert _Smiley"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:8
+#, fuzzy
+msgid "Invitation _message:"
+msgstr "Introduza a mensagem de estado:"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:9
+msgid "Invite"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:11
+msgid "Move Tab _Left"
+msgstr "Mover Separador à _Esquerda"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:12
+msgid "Move Tab _Right"
+msgstr "Mover Separador à _Direita"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:13
+msgid "Select who would you like to invite:"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:14
+msgid "You have been invited to join a chat conference."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:16
+#, fuzzy
+msgid "_Add To Favorites"
+msgstr "_Editar favoritas..."
+
+#: ../libempathy-gtk/gossip-chat.glade.h:17
+msgid "_Close"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:18
+msgid "_Conversation"
+msgstr "_Diálogo"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:19
+msgid "_Copy"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:20
+msgid "_Detach Tab"
+msgstr "_Destacar o Separador"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:22
+msgid "_Next Tab"
+msgstr "Separador _Seguinte"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:23
+msgid "_Paste"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:24
+msgid "_Previous Tab"
+msgstr "Separador _Anterior"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:26
+#, fuzzy
+msgid "_Show Contacts"
+msgstr "_Apresentar Lista de Contactos"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:27
+msgid "_Tabs"
+msgstr "_Separadores"
+
+#: ../libempathy-gtk/gossip-chat-view.c:544
+msgid "_Copy Link Address"
+msgstr "_Copiar Endereço do Link"
+
+#: ../libempathy-gtk/gossip-chat-view.c:552
+msgid "_Open Link"
+msgstr "_Abrir o Link"
+
+#: ../libempathy-gtk/gossip-chat-view.c:889
+msgid "%A %d %B %Y"
+msgstr "%A %d %B %Y"
+
+#: ../libempathy-gtk/gossip-chat-window.c:685
+#: ../libempathy-gtk/gossip-chat-window.c:715
+#, fuzzy
+msgid "New Message"
+msgid_plural "New Messages"
+msgstr[0] "_Nova Mensagem..."
+msgstr[1] "_Nova Mensagem..."
+
+#: ../libempathy-gtk/gossip-chat-window.c:691
+#, fuzzy
+msgid "Chat Room"
+msgstr "Gossip - Diálogo"
+
+#: ../libempathy-gtk/gossip-chat-window.c:696
+#: ../libempathy-gtk/gossip-chat-window.c:719
+#, fuzzy, c-format
+msgid "Conversation"
+msgid_plural "Conversations (%d)"
+msgstr[0] "_Diálogo"
+msgstr[1] "_Diálogo"
+
+#: ../libempathy-gtk/gossip-chat-window.c:1295
+msgid "Typing a message."
+msgstr "A escrever uma mensagem."
+
+#: ../libempathy-gtk/gossip-contact-list.c:290
+#, fuzzy
+msgid "_Contact"
+msgstr "_Adicionar Contacto..."
+
+#: ../libempathy-gtk/gossip-contact-list.c:294
+#, fuzzy
+msgid "_Group"
+msgstr "Grupo"
+
+#: ../libempathy-gtk/gossip-contact-list.c:298
+#, fuzzy
+msgid "Chat with contact"
+msgstr "Adicionar um contacto"
+
+#: ../libempathy-gtk/gossip-contact-list.c:302
+#, fuzzy
+msgid "Infor_mation"
+msgstr "_Informação de Contacto"
+
+#: ../libempathy-gtk/gossip-contact-list.c:302
+#, fuzzy
+msgid "View contact information"
+msgstr "Informação de contacto"
+
+#: ../libempathy-gtk/gossip-contact-list.c:306
+#, fuzzy
+msgid "Re_name"
+msgstr "/Re_nomear grupo"
+
+#: ../libempathy-gtk/gossip-contact-list.c:306
+#, fuzzy
+msgid "Rename"
+msgstr "Nome de _utilizador:"
+
+#: ../libempathy-gtk/gossip-contact-list.c:310
+#, fuzzy
+msgid "Edit the groups and name for this contact"
+msgstr ""
+"Introduza uma nova alcunha para o contacto\n"
+"%s"
+
+#: ../libempathy-gtk/gossip-contact-list.c:314
+msgid "_Remove"
+msgstr "_Remover"
+
+#: ../libempathy-gtk/gossip-contact-list.c:314
+#, fuzzy
+msgid "Remove contact"
+msgstr "/_Remover contacto"
+
+#: ../libempathy-gtk/gossip-contact-list.c:318
+#, fuzzy
+msgid "_Invite to Chat Room"
+msgstr "Gossip - Editar Diálogos em Grupo"
+
+#: ../libempathy-gtk/gossip-contact-list.c:318
+msgid "Invite to a currently open chat room"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-contact-list.c:322
+msgid "_Send File..."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-contact-list.c:322
+#, fuzzy
+msgid "Send a file"
+msgstr "Seleccionar"
+
+#: ../libempathy-gtk/gossip-contact-list.c:326
+#, fuzzy
+msgid "View previous conversations with this contact"
+msgstr "_Diálogo"
+
+#: ../libempathy-gtk/gossip-preferences.c:250
+msgid "Language"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:1
+#, fuzzy
+msgid "<b>Appearance</b>"
+msgstr "Aparência"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:2
+#, fuzzy
+msgid "<b>Audio</b>"
+msgstr "<b>Favorita:</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:3
+#, fuzzy
+msgid "<b>Behaviour</b>"
+msgstr "<b>Favorita:</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:4
+#, fuzzy
+msgid "<b>Contact List</b>"
+msgstr "Estado"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:5
+msgid "<b>Languages</b>"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:6
+#, fuzzy
+msgid "<b>Options</b>"
+msgstr "Ligar"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:7
+#, fuzzy
+msgid "<b>Visual</b>"
+msgstr "<b>Descrição</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:8
+msgid ""
+"<small>The list of languages reflects only the languages for which you have "
+"a dictionary installed.</small>"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:9
+msgid "Avatars are user chosen images shown in the contact list"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:10
+#, fuzzy
+msgid "Chat Th_eme:"
+msgstr "_Nome do diálogo:"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:11
+msgid "Display notifications when contacts come _online"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:12
+#, fuzzy
+msgid "Enable sounds when _away"
+msgstr "Desabilitar sons quando _ausente"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:13
+#, fuzzy
+msgid "Enable sounds when _busy"
+msgstr "Desabilitar sons quando _ocupado"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:14
+msgid "General"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:15
+#, fuzzy
+msgid "Notifications"
+msgstr "Utilizar sons de notificação"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:16
+#, fuzzy
+msgid "Preferences"
+msgstr "_Preferências"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:17
+msgid "Show _avatars"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:18
+#, fuzzy
+msgid "Show _smileys as images"
+msgstr "Converter ri_sonhos em imagens gráficas"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:19
+#, fuzzy
+msgid "Show co_mpact contact list"
+msgstr "_Apresentar Lista de Contactos"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:20
+msgid "Sort by _name"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:21
+msgid "Sort by s_tate"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:22
+msgid "Spell Checking"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:23
+msgid "Themes"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:24
+msgid "_Enable spell checking"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:25
+msgid "_Open new chats in separate windows"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:26
+#, fuzzy
+msgid "_Play sound when messages arrive"
+msgstr "Reproduzir um som ao receber mensagens"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:27
+#, fuzzy
+msgid "_Use for chat rooms"
+msgstr "Gossip - Editar Diálogos em Grupo"
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:702
+#, fuzzy
+msgid "Custom message..."
+msgstr "Mensagem de pedido"
+
+#. Clear list
+#: ../libempathy-gtk/gossip-presence-chooser.c:724
+#, fuzzy
+msgid "Clear List..."
+msgstr "_Limpar"
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:803
+#, fuzzy
+msgid "Are you sure you want to clear the list?"
+msgstr "Deseja aceitar o pedido?"
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:807
+msgid ""
+"This will remove any custom messages you have added to the list of preset "
+"status messages."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:812
+#, fuzzy
+msgid "Clear List"
+msgstr "_Limpar"
+
+#: ../libempathy-gtk/gossip-presence-chooser.glade.h:1
+msgid "Enter status message:"
+msgstr "Introduza a mensagem de estado:"
+
+#: ../libempathy-gtk/gossip-presence-chooser.glade.h:2
+#, fuzzy
+msgid "Status Message Presets"
+msgstr "Mensagens de Estado"
+
+#: ../libempathy-gtk/gossip-presence-chooser.glade.h:3
+#, fuzzy
+msgid "_Add to status message list"
+msgstr "Mensagens de estados pré-definidas"
+
+#: ../libempathy-gtk/gossip-private-chat.c:198
+#, c-format
+msgid "%s went offline"
+msgstr "%s desligou-se"
+
+#: ../libempathy-gtk/gossip-private-chat.c:212
+#, fuzzy, c-format
+msgid "%s has come online"
+msgstr "%s ligou-se"
+
+#: ../libempathy-gtk/gossip-theme-manager.c:87
+msgid "Classic"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-theme-manager.c:88
+msgid "Simple"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-theme-manager.c:89
+#, fuzzy
+msgid "Clean"
+msgstr "_Limpar"
+
+#: ../libempathy-gtk/gossip-theme-manager.c:90
+msgid "Blue"
+msgstr ""
+
+#: ../src/empathy-main.c:145
+msgid "Don't connect on startup"
+msgstr "Não estabelecer ligação ao iniciar"
+
+#: ../src/empathy-main.c:155
+#, fuzzy
+msgid "- Empathy Instant Messenger"
+msgstr "Mensagens Instantâneas"
+
+#, fuzzy
+#~ msgid "Gossip Instant Messenger"
+#~ msgstr "Mensagens Instantâneas"
+
+#, fuzzy
+#~ msgid "Joining"
+#~ msgstr "_Juntar"
+
+#, fuzzy
+#~ msgid "Unknown"
+#~ msgstr "Erro desconhecido"
+
+#, fuzzy
+#~ msgid "No affiliation"
+#~ msgstr "Utilizar sons de notificação"
+
+#, fuzzy
+#~ msgid "An unknown error occurred, check your details are correct."
+#~ msgstr "Erro desconhecido"
+
+#, fuzzy
+#~ msgid "Unavailable"
+#~ msgstr "Disponível"
+
+#, fuzzy
+#~ msgid "An unknown error occurred."
+#~ msgstr "Erro desconhecido"
+
+#, fuzzy
+#~ msgid "Connection refused."
+#~ msgstr "Ligado"
+
+#, fuzzy
+#~ msgid "Connection timed out."
+#~ msgstr "Ligado"
+
+#, fuzzy
+#~ msgid "new account"
+#~ msgstr "Conta Jabber"
+
+#~ msgid "Home"
+#~ msgstr "Página Pessoal"
+
+#, fuzzy
+#~ msgid "Registration is required"
+#~ msgstr "A registar a conta"
+
+#, fuzzy
+#~ msgid "Disconnect"
+#~ msgstr "_Desligar"
+
+#~ msgid "Connect"
+#~ msgstr "Ligar"
+
+#, fuzzy
+#~ msgid "Successfully registered your new account settings."
+#~ msgstr "Conta registada com sucesso"
+
+#, fuzzy
+#~ msgid "Failed to register your new account settings."
+#~ msgstr "Falha ao registar a conta"
+
+#, fuzzy
+#~ msgid "Successfully changed your account password."
+#~ msgstr "Introduza a sua senha:"
+
+#, fuzzy
+#~ msgid "Failed to change your account password."
+#~ msgstr "Introduza a sua senha:"
+
+#, fuzzy
+#~ msgid ""
+#~ "Please enter a new password for this account:\n"
+#~ "%s"
+#~ msgstr ""
+#~ "Introduza um novo nome para o grupo\n"
+#~ "%s"
+
+#, fuzzy
+#~ msgid "Information requested, please wait..."
+#~ msgstr "<b>Informação pedida, Aguarde...</b>"
+
+#~ msgid "I would like to add you to my contact list."
+#~ msgstr "Desejo adicioná-lo à minha lista de contactos."
+
+#, fuzzy
+#~ msgid "%d new message"
+#~ msgid_plural "%d new messages"
+#~ msgstr[0] "_Nova Mensagem..."
+#~ msgstr[1] "_Nova Mensagem..."
+
+#, fuzzy
+#~ msgid "%d subscription request"
+#~ msgid_plural "%d subscription requests"
+#~ msgstr[0] "Pedido de Subscrição"
+#~ msgstr[1] "Pedido de Subscrição"
+
+#, fuzzy
+#~ msgid "Edit Account _Details"
+#~ msgstr "Editar Informação de Conta"
+
+#~ msgid "New message from %s"
+#~ msgstr "Nova mensagem de %s"
+
+#, fuzzy
+#~ msgid "Accept"
+#~ msgstr "_Aceitar"
+
+#, fuzzy
+#~ msgid "Name"
+#~ msgstr "Nome:"
+
+#, fuzzy
+#~ msgid "Room"
+#~ msgstr "_Sala:"
+
+#, fuzzy
+#~ msgid "Auto Connect"
+#~ msgstr "Ligar"
+
+#, fuzzy
+#~ msgid "Information requested..."
+#~ msgstr "<b>Informação pedida, Aguarde...</b>"
+
+#, fuzzy
+#~ msgid "Do you want to remove this contact from your roster?"
+#~ msgstr ""
+#~ "Deseja remover o contacto\n"
+#~ "%s\n"
+#~ "da sua lista de contactos?"
+
+#, fuzzy
+#~ msgid ""
+#~ "Please enter a new name for the group:\n"
+#~ "%s"
+#~ msgstr ""
+#~ "Introduza um novo nome para o grupo\n"
+#~ "%s"
+
+#~ msgid "Select"
+#~ msgstr "Seleccionar"
+
+#~ msgid "Unsorted"
+#~ msgstr "Sem ordenação"
+
+#, fuzzy
+#~ msgid "Unknown error occurred during file transfer."
+#~ msgstr "Erro desconhecido"
+
+#, fuzzy
+#~ msgid "%s would like to send you a file."
+#~ msgstr "Desejo adicioná-lo à minha lista de contactos."
+
+#, fuzzy
+#~ msgid "Someone would like to send you a file."
+#~ msgstr "Desejo adicioná-lo à minha lista de contactos."
+
+#, fuzzy
+#~ msgid "Select a file"
+#~ msgstr "Seleccionar"
+
+#, fuzzy
+#~ msgid "Connecting..."
+#~ msgstr "_Ligar..."
+
+#, fuzzy
+#~ msgid "Retry connection"
+#~ msgstr "Ligar"
+
+#, fuzzy
+#~ msgid "Enter the new topic you want to set for this room:"
+#~ msgstr "Que alcunha deseja utilizar para este contacto?"
+
+#, fuzzy
+#~ msgid "Topic: %s"
+#~ msgstr "_Tópico:"
+
+#, fuzzy
+#~ msgid "Account"
+#~ msgstr "Conta Jabber"
+
+#, fuzzy
+#~ msgid "Conversation With"
+#~ msgstr "_Diálogo"
+
+#~ msgid "List the available accounts"
+#~ msgstr "Listar as contas disponíveis"
+
+#~ msgid "Which account to connect to on startup"
+#~ msgstr "Com que conta estabelecer ligação ao iniciar"
+
+#~ msgid "ACCOUNT-NAME"
+#~ msgstr "NOME-CONTA"
+
+#~ msgid "Available accounts:"
+#~ msgstr "Contas disponíveis:"
+
+#~ msgid "[default]"
+#~ msgstr "[omissão]"
+
+#~ msgid "There is no account with the name '%s'."
+#~ msgstr "Não existe qualquer conta com o nome '%s'."
+
+#, fuzzy
+#~ msgid "Join"
+#~ msgstr "_Juntar"
+
+#, fuzzy
+#~ msgid "Create"
+#~ msgstr "Diálogo"
+
+#, fuzzy
+#~ msgid "Chat Rooms"
+#~ msgstr "Gossip - Diálogo"
+
+#, fuzzy
+#~ msgid "Browsing for conference rooms, please wait..."
+#~ msgstr "A gravar os dados pessoais, aguarde..."
+
+#, fuzzy
+#~ msgid "Default"
+#~ msgstr "[omissão]"
+
+#, fuzzy
+#~ msgid "Chat!"
+#~ msgstr "Diálogo"
+
+#, fuzzy
+#~ msgid "%s wants to be added to your contact list."
+#~ msgstr "%s será adicionado à sua lista de contactos."
+
+#, fuzzy
+#~ msgid "Someone wants to be added to your contact list."
+#~ msgstr "%s será adicionado à sua lista de contactos."
+
+#, fuzzy
+#~ msgid "Subscription request"
+#~ msgstr "Pedido de Subscrição"
+
+#, fuzzy
+#~ msgid "Contact Information"
+#~ msgstr "_Informação de Contacto"
+
+#, fuzzy
+#~ msgid "New subscription request from %s"
+#~ msgstr "Pedido de Subscrição"
+
+#, fuzzy
+#~ msgid "Do you want to add this person to your contact list?"
+#~ msgstr ""
+#~ "Deseja remover o contacto\n"
+#~ "%s\n"
+#~ "da sua lista de contactos?"
+
+#, fuzzy
+#~ msgid "Do you want to add %s to your contact list?"
+#~ msgstr ""
+#~ "Deseja remover o contacto\n"
+#~ "%s\n"
+#~ "da sua lista de contactos?"
+
+#, fuzzy
+#~ msgid "Please enter your %s account password"
+#~ msgstr "Introduza a sua senha:"
+
+#~ msgid "Remember Password?"
+#~ msgstr "Recordar a Senha?"
+
+#, fuzzy
+#~ msgid "Change"
+#~ msgstr "Diálogo"
+
+#, fuzzy
+#~ msgid "Contact goes online"
+#~ msgstr "%s ligou-se"
+
+#, fuzzy
+#~ msgid "Do you want to accept this file?"
+#~ msgstr "Deseja aceitar o pedido?"
+
+#, fuzzy
+#~ msgid "File name:"
+#~ msgstr "Nome de _utilizador:"
+
+#, fuzzy
+#~ msgid "File size:"
+#~ msgstr "Página web:"
+
+#~ msgid "Web site:"
+#~ msgstr "Página web:"
+
+#~ msgid "_Accept"
+#~ msgstr "_Aceitar"
+
+#~ msgid "_Deny"
+#~ msgstr "_Negar"
+
+#, fuzzy
+#~ msgid "<b>Topic:</b>"
+#~ msgstr "<b>Favorita:</b>"
+
+#, fuzzy
+#~ msgid "Account:"
+#~ msgstr "Conta Jabber"
+
+#, fuzzy
+#~ msgid "Edit Favorite Room"
+#~ msgstr "Gossip - Editar Diálogos em Grupo"
+
+#, fuzzy
+#~ msgid "Group Chat"
+#~ msgstr "Gossip - Diálogo"
+
+#, fuzzy
+#~ msgid "Join New"
+#~ msgstr "_Juntar"
+
+#, fuzzy
+#~ msgid "Join room on start_up"
+#~ msgstr "Não estabelecer ligação ao iniciar"
+
+#, fuzzy
+#~ msgid "N_ame:"
+#~ msgstr "Nome:"
+
+#, fuzzy
+#~ msgid "S_erver:"
+#~ msgstr "Servidor:"
+
+#~ msgid "_Nickname:"
+#~ msgstr "_Alcunha:"
+
+#~ msgid "_Room:"
+#~ msgstr "_Sala:"
+
+#, fuzzy
+#~ msgid "<b>About</b>"
+#~ msgstr "<b>Favorita:</b>"
+
+#, fuzzy
+#~ msgid "<b>Client Information</b>"
+#~ msgstr "Informação de cliente"
+
+#, fuzzy
+#~ msgid "<b>Groups</b>"
+#~ msgstr "<b>Favorita:</b>"
+
+#, fuzzy
+#~ msgid "<b>Name</b>"
+#~ msgstr "Estado"
+
+#, fuzzy
+#~ msgid "<b>Personal Details</b>"
+#~ msgstr "Detalhes Pessoais"
+
+#, fuzzy
+#~ msgid "<b>Subscription</b>"
+#~ msgstr "Subscrição"
+
+#, fuzzy
+#~ msgid "<span size=\"smaller\">Example: Mikael or user@server.org</span>"
+#~ msgstr "<span size=\"smaller\">Exemplo: utilizador@jabber.org</span>"
+
+#, fuzzy
+#~ msgid "Accou_nt:"
+#~ msgstr "Conta Jabber"
+
+#, fuzzy
+#~ msgid "Add Contact"
+#~ msgstr "_Adicionar Contacto..."
+
+#, fuzzy
+#~ msgid "Ch_at"
+#~ msgstr "Diálogo"
+
+#~ msgid "Client:"
+#~ msgstr "Cliente:"
+
+#, fuzzy
+#~ msgid "Con_tact:"
+#~ msgstr "_Adicionar Contacto..."
+
+#, fuzzy
+#~ msgid "Connect on S_tartup"
+#~ msgstr "Não estabelecer ligação ao iniciar"
+
+#, fuzzy
+#~ msgid "Contacts"
+#~ msgstr "_Adicionar Contacto..."
+
+#~ msgid "Country:"
+#~ msgstr "País:"
+
+#~ msgid "Decide _Later"
+#~ msgstr "_Decidir Mais Tarde"
+
+#, fuzzy
+#~ msgid "Edit Contact"
+#~ msgstr "_Adicionar Contacto..."
+
+#~ msgid "Edit Groups"
+#~ msgstr "Editar Grupos"
+
+#~ msgid "Email:"
+#~ msgstr "Email:"
+
+#, fuzzy
+#~ msgid "ID:"
+#~ msgstr "JID"
+
+#~ msgid "Name:"
+#~ msgstr "Nome:"
+
+#~ msgid "OS:"
+#~ msgstr "SO:"
+
+#, fuzzy
+#~ msgid "Personal Details"
+#~ msgstr "Detalhes _Pessoais"
+
+#, fuzzy
+#~ msgid "R_egister"
+#~ msgstr "Re_gistar..."
+
+#, fuzzy
+#~ msgid "Search"
+#~ msgstr "_Procurar..."
+
+#, fuzzy
+#~ msgid "Spell Checker"
+#~ msgstr "Gossip - Enviar Mensagem"
+
+#, fuzzy
+#~ msgid "Subscription Request"
+#~ msgstr "Pedido de Subscrição"
+
+#, fuzzy
+#~ msgid "This is the name that will be used on your roster for this contact"
+#~ msgstr "Que alcunha deseja utilizar para este contacto?"
+
+#, fuzzy
+#~ msgid "This name will be used to identify you in chat windows"
+#~ msgstr "Este nome será utilizado para o identificar em janelas de diálogo."
+
+#, fuzzy
+#~ msgid ""
+#~ "This name will be used to identify you when new contacts lookup your "
+#~ "details"
+#~ msgstr "Este nome será utilizado para o identificar em janelas de diálogo."
+
+#~ msgid "Version:"
+#~ msgstr "Versão:"
+
+#, fuzzy
+#~ msgid "View Previous Conversations"
+#~ msgstr "_Diálogo"
+
+#, fuzzy
+#~ msgid "Which account do you want to use?"
+#~ msgstr "Que nome de utilizador deseja utilizar?"
+
+#, fuzzy
+#~ msgid "You are not subscribed to this contact."
+#~ msgstr ""
+#~ "Não se encontra subscrito no estado deste contacto. Subscreva para "
+#~ "receber o seu estado."
+
+#, fuzzy
+#~ msgid "_Connect"
+#~ msgstr "Ligar"
+
+#, fuzzy
+#~ msgid "_Description:"
+#~ msgstr "Descrição"
+
+#~ msgid "_Disconnect"
+#~ msgstr "_Desligar"
+
+#, fuzzy
+#~ msgid "_Email:"
+#~ msgstr "Email:"
+
+#, fuzzy
+#~ msgid ""
+#~ "_Enter the name or contact ID of the person you want to chat to below:"
+#~ msgstr ""
+#~ "Introduza o ID de utilizador da pessoa para quem deseja enviar uma "
+#~ "mensagem de diálogo."
+
+#, fuzzy
+#~ msgid "_For:"
+#~ msgstr "P_orto:"
+
+#, fuzzy
+#~ msgid "_Full Name:"
+#~ msgstr "Nome:"
+
+#, fuzzy
+#~ msgid "_Group:"
+#~ msgstr "Grupo"
+
+#, fuzzy
+#~ msgid "_Nick Name:"
+#~ msgstr "_Alcunha:"
+
+#, fuzzy
+#~ msgid "_Password:"
+#~ msgstr "Sen_ha:"
+
+#, fuzzy
+#~ msgid "_Quit Message:"
+#~ msgstr "Mensagens de E_stados"
+
+#, fuzzy
+#~ msgid "_Retrieve"
+#~ msgstr "_Remover"
+
+#~ msgid "_Subscribe"
+#~ msgstr "_Subscrever"
+
+#, fuzzy
+#~ msgid "_Web site:"
+#~ msgstr "Página web:"
+
+#, fuzzy
+#~ msgid "irc account settings"
+#~ msgstr "<b>Definições de Conta</b>"
+
+#, fuzzy
+#~ msgid "msn account settings"
+#~ msgstr "<b>Definições de Conta</b>"
+
+#~ msgid "Preset status messages"
+#~ msgstr "Mensagens de estados pré-definidas"
+
+#~ msgid "Preset status messages."
+#~ msgstr "Mensagens de estados pré-definidas."
+
+#, fuzzy
+#~ msgid "Connecting"
+#~ msgstr "Ligar"
+
+#~ msgid "%s will be added to your contact list."
+#~ msgstr "%s será adicionado à sua lista de contactos."
+
+#, fuzzy
+#~ msgid "%s ID of new contact:"
+#~ msgstr "ID _Jabber do novo contacto:"
+
+#, fuzzy
+#~ msgid ""
+#~ "Please enter your invitation message to:\n"
+#~ "%s"
+#~ msgstr "Introduza a sua senha:"
+
+#~ msgid "Contact Information for %s"
+#~ msgstr "Informação de Contacto para %s"
+
+#, fuzzy
+#~ msgid "/Contact Infor_mation"
+#~ msgstr "/_Informação de Contacto"
+
+#, fuzzy
+#~ msgid "/Re_name Contact"
+#~ msgstr "/Re_nomear contacto"
+
+#, fuzzy
+#~ msgid "/_Edit Groups"
+#~ msgstr "/_Editar grupos"
+
+#, fuzzy
+#~ msgid "/_View Previous Conversations"
+#~ msgstr "_Diálogo"
+
+#~ msgid ""
+#~ "Please enter a new nickname for the contact\n"
+#~ "%s"
+#~ msgstr ""
+#~ "Introduza uma nova alcunha para o contacto\n"
+#~ "%s"
+
+#~ msgid "Edit groups for %s"
+#~ msgstr "Editar os grupos de %s"
+
+#~ msgid "Conversation Log"
+#~ msgstr "Registo de Diálogo"
+
+#~ msgid "Registering account"
+#~ msgstr "A registar a conta"
+
+#, fuzzy
+#~ msgid "Respond"
+#~ msgstr "Motivo:"
+
+#, fuzzy
+#~ msgid "Add to _favourites"
+#~ msgstr "_Editar favoritas..."
+
+#, fuzzy
+#~ msgid "Na_me:"
+#~ msgstr "Nome:"
+
+#, fuzzy
+#~ msgid "New Chat Room"
+#~ msgstr "Gossip - Diálogo"
+
+#~ msgid " "
+#~ msgstr " "
+
+#, fuzzy
+#~ msgid "<b>Information requested, please wait...</b>"
+#~ msgstr "<b>Informação pedida, Aguarde...</b>"
+
+#, fuzzy
+#~ msgid "<span size=\"smaller\">Example:</span>"
+#~ msgstr "<span size=\"smaller\">Exemplo: utilizador@jabber.org</span>"
+
+#, fuzzy
+#~ msgid "Chat Rooms..."
+#~ msgstr "Gossip - Diálogo"
+
+#, fuzzy
+#~ msgid "Connection Details"
+#~ msgstr "Detalhes Pessoais"
+
+#, fuzzy
+#~ msgid "Do you already have an account set up on a server?"
+#~ msgstr "Já possui uma conta num servidor Jabber?"
+
+#, fuzzy
+#~ msgid "Enter the port used in the connection for this account"
+#~ msgstr ""
+#~ "Introduza uma nova alcunha para o contacto\n"
+#~ "%s"
+
+#, fuzzy
+#~ msgid "Enter the server used in the connection for this account"
+#~ msgstr ""
+#~ "Introduza uma nova alcunha para o contacto\n"
+#~ "%s"
+
+#, fuzzy
+#~ msgid "Finished"
+#~ msgstr "Configuração Terminada"
+
+#~ msgid "Gossip"
+#~ msgstr "Gossip"
+
+#~ msgid ""
+#~ "Gossip is a modern client for the Jabber Instant Messaging system.\n"
+#~ "\n"
+#~ "This assistant will help you configure Gossip and connect you to your "
+#~ "favorite Jabber server.\n"
+#~ "\n"
+#~ "To get started, just click \"Forward\"."
+#~ msgstr ""
+#~ "Gossip é um moderno cliente para o sistema de Mensagens Instantâneas "
+#~ "Jabber.\n"
+#~ "\n"
+#~ "Este assistente irá ajudá-lo a configurar o Gossip e ligá-lo ao seu "
+#~ "servidor Jabber favorito.\n"
+#~ "\n"
+#~ "Para começar, prima \"Prosseguir\"."
+
+#~ msgid ""
+#~ "In order to subscribe to presence notifications from the user, a request "
+#~ "will be sent. Until this request is approved, the user will always be "
+#~ "shown as \"Offline\" in your contact list."
+#~ msgstr ""
+#~ "Por forma a subscrever notificações de presença do utilizador, será "
+#~ "enviado um pedido. Até que este pedido seja aprovado, o utilizador será "
+#~ "sempre apresentado como \"Desligado\" na sua lista de contactos."
+
+#~ msgid "In which group do you want to place this contact?"
+#~ msgstr "Em que grupo deseja colocar este contacto?"
+
+#~ msgid "Jabber ID:"
+#~ msgstr "ID Jabber:"
+
+#~ msgid "Nickname:"
+#~ msgstr "Alcunha:"
+
+#, fuzzy
+#~ msgid "Port:"
+#~ msgstr "P_orto:"
+
+#, fuzzy
+#~ msgid "Press Subscribe to request to receive their status"
+#~ msgstr ""
+#~ "Não se encontra subscrito no estado deste contacto. Subscreva para "
+#~ "receber o seu estado."
+
+#, fuzzy
+#~ msgid "Registering Account"
+#~ msgstr "A registar a conta"
+
+#, fuzzy
+#~ msgid "Resource:"
+#~ msgstr "_Recurso:"
+
+#~ msgid "Sending request"
+#~ msgstr "A enviar pedido"
+
+#~ msgid "Server:"
+#~ msgstr "Servidor:"
+
+#, fuzzy
+#~ msgid "Web Site:"
+#~ msgstr "Página web:"
+
+#~ msgid "Welcome to Gossip"
+#~ msgstr "Bem Vindo ao Gossip"
+
+#~ msgid "What instant messaging system does the contact use?"
+#~ msgstr "Que sistema de mensagens instantâneas utiliza o contacto?"
+
+#~ msgid "What is your name?"
+#~ msgstr "Qual é o seu nome?"
+
+#, fuzzy
+#~ msgid "What password do you want to use?"
+#~ msgstr "Que servidor deseja utilizar?"
+
+#~ msgid "What username do you use?"
+#~ msgstr "Que nome de utilizador utiliza?"
+
+#~ msgid "What username do you want to use?"
+#~ msgstr "Que nome de utilizador deseja utilizar?"
+
+#, fuzzy
+#~ msgid "Which account do you want to add this contact to?"
+#~ msgstr "Em que grupo deseja colocar este contacto?"
+
+#, fuzzy
+#~ msgid ""
+#~ "You can change your account settings later by selecting the Edit-"
+#~ ">Accounts menu item."
+#~ msgstr ""
+#~ "Gossip está agora correctamente configurado para o seu sistema.\n"
+#~ "Pode alterar as suas definições de conta mais tarde, seleccionando o item "
+#~ "de menu Diálogo->Ligar..."
+
+#, fuzzy
+#~ msgid "Your Account"
+#~ msgstr "Conta Jabber"
+
+#~ msgid "Your Identity"
+#~ msgstr "A Sua Identidade"
+
+#, fuzzy
+#~ msgid "_Group Chat"
+#~ msgstr "Gossip - Diálogo"
+
+#, fuzzy
+#~ msgid "_No"
+#~ msgstr "Não"
+
+#~ msgid "_Search..."
+#~ msgstr "_Procurar..."
+
+#, fuzzy
+#~ msgid "_Yes"
+#~ msgstr "Sim"
+
+#~ msgid "Be silent when away"
+#~ msgstr "Silencioso quando ausente"
+
+#~ msgid "Be silent when busy"
+#~ msgstr "Silencioso quando ocupado"
+
+#~ msgid "Height of main window"
+#~ msgstr "Altura da janela principal"
+
+#~ msgid "The X position of the main window."
+#~ msgstr "A posição X da janela principal."
+
+#~ msgid "The Y position of the main window."
+#~ msgstr "A posição Y da janela principal."
+
+#~ msgid "The width of the main window."
+#~ msgstr "A largura da janela principal."
+
+#~ msgid "Width of the main window"
+#~ msgstr "Largura da janela principal"
+
+#~ msgid "X position of main window"
+#~ msgstr "Posição X da janela principal"
+
+#~ msgid "Y position of main window"
+#~ msgstr "Posição Y da janela principal"
+
+#~ msgid "Gossip, Instant Messaging Client"
+#~ msgstr "Gossip, Um Cliente de Mensagens Instantâneas"
+
+#, fuzzy
+#~ msgid "Close this chat window"
+#~ msgstr "Esconder a janela principal."
+
+#, fuzzy
+#~ msgid "Requested Information"
+#~ msgstr "Informação de Cont_a"
+
+#, fuzzy
+#~ msgid "Send Message"
+#~ msgstr "Mensagem de Estado"
+
+#, fuzzy
+#~ msgid "%s has gone offline"
+#~ msgstr "%s desligou-se"
+
+#~ msgid "Available..."
+#~ msgstr "Disponível..."
+
+#~ msgid "Busy..."
+#~ msgstr "Ocupado..."
+
+#~ msgid "Away..."
+#~ msgstr "Ausente..."
+
+#~ msgid "Contact _Information"
+#~ msgstr "_Informação de Contacto"
+
+#, fuzzy
+#~ msgid "<b>Sound</b>"
+#~ msgstr "<b>Descrição</b>"
+
+#, fuzzy
+#~ msgid "Gossip - Accounts"
+#~ msgstr "Gossip - Diálogo"
+
+#, fuzzy
+#~ msgid "Join _Group Chat..."
+#~ msgstr "_Juntar-se a Diálogo em Grupo..."
+
+#, fuzzy
+#~ msgid "Por_t:"
+#~ msgstr "P_orto:"
+
+#, fuzzy
+#~ msgid "Requested information."
+#~ msgstr "Informação de cliente"
+
+#, fuzzy
+#~ msgid "Requesting contact information, please wait..."
+#~ msgstr "A pedir os dados pessoais, aguarde..."
+
+#, fuzzy
+#~ msgid "Could not open connection"
+#~ msgstr "Incapaz de estabelecer uma ligação"
+
+#, fuzzy
+#~ msgid "Could not find the server you wanted to use"
+#~ msgstr "Que servidor deseja utilizar?"
+
+#, fuzzy
+#~ msgid "Connection to the server failed."
+#~ msgstr "<b>Ligar-se ao servidor</b>"
+
+#~ msgid "Written by:"
+#~ msgstr "Escrito por:"
+
+#~ msgid "Artwork by:"
+#~ msgstr "Arte gráfica por:"
+
+#~ msgid "Translated by:"
+#~ msgstr "Traduzido por:"
+
+#, fuzzy
+#~ msgid "Account ID"
+#~ msgstr "Informação de Cont_a"
+
+#~ msgid "%sChat - %s"
+#~ msgstr "%sDiálogo - %s"
+
+#~ msgid "/Show _Log"
+#~ msgstr "/Apresentar _Registo"
+
+#, fuzzy
+#~ msgid "Persian"
+#~ msgstr "Versão:"
+
+#~ msgid "View Lo_g"
+#~ msgstr "Ver Re_gisto"
+
+#, fuzzy
+#~ msgid "Gossip - Group Chat"
+#~ msgstr "Gossip - Juntar-se ao Diálogo em Grupo"
+
+#, fuzzy
+#~ msgid "Gossip - Add contact"
+#~ msgstr "Adicionar um contacto"
+
+#, fuzzy
+#~ msgid "Gossip - Contact Information"
+#~ msgstr "_Informação de Contacto"
+
+#, fuzzy
+#~ msgid "Gossip - Edit Groups"
+#~ msgstr "Gossip - Editar Diálogos em Grupo"
+
+#, fuzzy
+#~ msgid "Gossip - New Account"
+#~ msgstr "Gossip - Diálogo"
+
+#, fuzzy
+#~ msgid "Gossip - New Message"
+#~ msgstr "Gossip - Enviar Mensagem"
+
+#, fuzzy
+#~ msgid "Gossip - Personal Details"
+#~ msgstr "Detalhes Pessoais"
+
+#, fuzzy
+#~ msgid "Gossip - Preferences"
+#~ msgstr "Preferências"
+
+#, fuzzy
+#~ msgid "Gossip - Status Message"
+#~ msgstr "Gossip - Enviar Mensagem"
+
+#, fuzzy
+#~ msgid "Personal Details Saved!"
+#~ msgstr "Detalhes Pessoais"
+
+#~ msgid "What request message do you want to send to %s?"
+#~ msgstr "Que mensagem de pedido deseja enviar a %s?"
+
+#~ msgid "Make sure that your account information is correct."
+#~ msgstr "Certifique-se de que a sua informação de conta está correcta."
+
+#~ msgid "%s wants to be notified of your status."
+#~ msgstr "%s deseja ser notificado do seu estado."
+
+#~ msgid "You were disconnected from the server. Do you want to reconnect?"
+#~ msgstr "Foi desligado do servidor. Deseja ligar-se novamente?"
+
+#~ msgid ""
+#~ "Make sure that your account information is correct. The server may also "
+#~ "currently be unavailable."
+#~ msgstr ""
+#~ "Certifique-se de que a sua informação de conta está correcta. O servidor "
+#~ "poderá também estar temporariamente indisponível."
+
+#~ msgid "Edit List..."
+#~ msgstr "Editar a Lista..."
+
+#~ msgid "An error occurred when chatting with %s."
+#~ msgstr "Ocorreu um erro durante o diálogo com %s."
+
+#~ msgid "Details:"
+#~ msgstr "Detalhes:"
+
+#~ msgid "An error occurred when chatting in the group chat %s."
+#~ msgstr "Ocorreu um erro durante o diálogo em grupo %s."
+
+#~ msgid "Unable to enter the group chat %s."
+#~ msgstr "Incapaz de se juntar ao diálogo em grupo %s."
+
+#~ msgid "Gossip will now try to use your account:"
+#~ msgstr "Gossip irá agora tentar utilizar a sua conta:"
+
+#~ msgid "Gossip will now try to register the account:"
+#~ msgstr "Gossip irá agora tentar registar a conta:"
+
+#~ msgid "*"
+#~ msgstr "*"
+
+#~ msgid "From:"
+#~ msgstr "De:"
+
+#~ msgid "Gossip - Received Message"
+#~ msgstr "Gossip - Mensagem Recebida"
+
+#~ msgid "In reply to:"
+#~ msgstr "Em resposta a:"
+
+#~ msgid "To:"
+#~ msgstr "Para:"
+
+#~ msgid "_Reply..."
+#~ msgstr "_Responder..."
+
+#~ msgid "_Send"
+#~ msgstr "_Enviar"
+
+#~ msgid "C_onnect"
+#~ msgstr "_Ligar"
+
+#~ msgid "Connect _Server:"
+#~ msgstr "Ligar ao _Servidor:"
+
+#~ msgid "_Jabber ID:"
+#~ msgstr "ID _Jabber:"
+
+#~ msgid " "
+#~ msgstr " "
+
+#~ msgid "<b>Available chat rooms</b>"
+#~ msgstr "<b>Salas de diálogo disponíveis</b>"
+
+#~ msgid "<b>Chat room information</b>"
+#~ msgstr "<b>Informação de sala de diálogo</b>"
+
+#~ msgid "Imendio Gossip - Group Chat"
+#~ msgstr "Gossip Imendio - Diálogo em Grupo"
+
+#~ msgid "N_ickname:"
+#~ msgstr "_Alcunha:"
+
+#~ msgid ""
+#~ "Pick a favorite, or enter nickname, server name, and the name of the chat "
+#~ "room to enter."
+#~ msgstr ""
+#~ "Seleccione uma favorita ou introduza alcunha, nome de servidor e o nome "
+#~ "da sala de diálogo à qual se juntar."
+
+#~ msgid "R_emove"
+#~ msgstr "R_emover"
+
+#~ msgid "_Add"
+#~ msgstr "_Adicionar"
+
+#~ msgid " "
+#~ msgstr " "
+
+#~ msgid "<b>Personal information</b>"
+#~ msgstr "<b>Informação pessoal</b>"
+
+#~ msgid "<b>Preset status messages</b>"
+#~ msgstr "<b>Mensagens de estado pré-definidas</b>"
+
+#~ msgid "<i>Information not available</i>"
+#~ msgstr "<i>Informação indisponível</i>"
+
+#~ msgid "Choose a Server"
+#~ msgstr "Seleccione um Servidor"
+
+#~ msgid "Choose from list:"
+#~ msgstr "Seleccione da lista:"
+
+#~ msgid "Information about ..."
+#~ msgstr "Informação sobre ..."
+
+#~ msgid "Jabber.com"
+#~ msgstr "Jabber.com"
+
+#~ msgid "Jabber.org"
+#~ msgstr "Jabber.org"
+
+#~ msgid "On what server do you have a Jabber account?"
+#~ msgstr "Em que servidor possui uma conta Jabber?"
+
+#~ msgid "Sound"
+#~ msgstr "Som"
+
+#~ msgid "Use a different server"
+#~ msgstr "Utilizar outro servidor"
+
+#~ msgid "What request message do you want to send to ...?"
+#~ msgstr "Que mensagem de pedido deseja enviar para ...?"
+
+#~ msgid "subscription_label"
+#~ msgstr "etiqueta_subscrição"
diff --git a/gnome-2-22/po/pt_BR.po b/gnome-2-22/po/pt_BR.po
new file mode 100644
index 000000000..a2bf07c33
--- /dev/null
+++ b/gnome-2-22/po/pt_BR.po
@@ -0,0 +1,2685 @@
+# Brazilian Portuguese translation of Empathy.
+# Copyright (C) 2004 Free Software Foundation, Inc.
+# This file is distributed under the same license as the empathy package.
+# Luiz Guaraldo <software.livre@terra.com.br>, 2004.
+# André Filipe de Assunção e Brito <decko@ufpr.br>, 2007.
+# Og Maciel <ogmaciel@gnome.org>, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Empathy\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-01 19:41-0300\n"
+"PO-Revision-Date: 2008-03-01 23:37-0300\n"
+"Last-Translator: Og Maciel <ogmaciel@gnome.org>\n"
+"Language-Team: Gnome-BR <gnome-l10n-br@listas.cipsga.org.br>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../data/empathy.desktop.in.in.h:1
+msgid "Empathy Instant Messenger"
+msgstr "Mensageiro Instantâneo Empathy"
+
+#: ../data/empathy.desktop.in.in.h:2
+msgid "Send and receive instant messages"
+msgstr "Envie e receba mensagens instantâneas"
+
+#: ../data/empathy.schemas.in.h:1
+msgid "Always open a separate chat window for new chats."
+msgstr "Sempre abrir uma janela de bate-papo separada para novos bate-papos."
+
+#: ../data/empathy.schemas.in.h:2
+msgid ""
+"Character to add after nickname when using nick completion (tab) in group "
+"chat."
+msgstr ""
+"Caracteres para adicionar depois do apelido quando usando completamento de "
+"apelidos (tab) em bate-papo em grupo."
+
+#: ../data/empathy.schemas.in.h:3
+msgid "Chat window theme"
+msgstr "Tema para a janela de bate-papo"
+
+#: ../data/empathy.schemas.in.h:4
+msgid "Checks if Empathy should autoconnect on startup"
+msgstr "Verifica se o Empathy deve conectar automaticamente ao iniciar"
+
+#: ../data/empathy.schemas.in.h:5
+msgid "Checks if NetworkManager should be used"
+msgstr "Verifica se o NetworkManager deve ser usado"
+
+#: ../data/empathy.schemas.in.h:6
+msgid "Checks if Salut account is created"
+msgstr "Verifica se conta no Salut foi criada"
+
+#: ../data/empathy.schemas.in.h:7
+msgid ""
+"Comma separated list of spell checker languages to use (e.g. en, fr, nl)."
+msgstr ""
+"Lista de idiomas de verificação ortográfica separada por vírgulas para usar "
+"(ex: en, fr, nl)."
+
+#: ../data/empathy.schemas.in.h:8
+msgid "Compact contact list"
+msgstr "Lista de contatos compacta"
+
+#: ../data/empathy.schemas.in.h:9
+msgid "Contact list sort criterium"
+msgstr "Critério de ordenação da lista de contatos"
+
+#: ../data/empathy.schemas.in.h:10
+msgid "Default directory to select an avatar image from"
+msgstr "Diretório padrão de onde selecionar imagens de avatar"
+
+#: ../data/empathy.schemas.in.h:11
+msgid "Enable popup when contact is available"
+msgstr ""
+"Habilitar notificações instantâneas quando um contato estiver disponível"
+
+#: ../data/empathy.schemas.in.h:12
+msgid "Enable sound when away"
+msgstr "Habilitar áudio quando ausente"
+
+#: ../data/empathy.schemas.in.h:13
+msgid "Enable sound when busy"
+msgstr "Habilitar áudio quando ocupado"
+
+#: ../data/empathy.schemas.in.h:14
+msgid "Enable spell checker"
+msgstr "Habilitar verificador ortográfico"
+
+#: ../data/empathy.schemas.in.h:15
+msgid "Hide main window"
+msgstr "Ocultar janela principal"
+
+#: ../data/empathy.schemas.in.h:16
+msgid "Hide the main window."
+msgstr "Oculta a janela principal."
+
+#: ../data/empathy.schemas.in.h:17
+msgid "Nick completed character"
+msgstr "Caractere de completamento de apelidos"
+
+#: ../data/empathy.schemas.in.h:18
+msgid "Open new chats in separate windows"
+msgstr "Abrir novos bate-papos em janelas separadas"
+
+#: ../data/empathy.schemas.in.h:19
+msgid "Show avatars"
+msgstr "Mostrar avatares"
+
+#: ../data/empathy.schemas.in.h:20
+msgid "Show hint about closing the main window"
+msgstr "Mostrar dica sobre como fechar a janela principal"
+
+#: ../data/empathy.schemas.in.h:21
+msgid "Show offline contacts"
+msgstr "Mostrar contatos desconectados"
+
+#: ../data/empathy.schemas.in.h:22
+msgid "Spell checking languages"
+msgstr "Idiomas para verificação ortográfica"
+
+#: ../data/empathy.schemas.in.h:23
+msgid "The last directory that an avatar image was chosen from."
+msgstr "O último diretório onde uma imagem de avatar foi escolhida."
+
+#: ../data/empathy.schemas.in.h:24
+msgid "The theme that is used to display the conversation in chat windows."
+msgstr "O tema que é usado para exibir a conversação em janelas de bate-papo."
+
+#: ../data/empathy.schemas.in.h:25
+msgid "Use graphical smileys"
+msgstr "Usar smileys gráficos"
+
+#: ../data/empathy.schemas.in.h:26
+msgid "Use notification sounds"
+msgstr "Usar notificações com áudio"
+
+#: ../data/empathy.schemas.in.h:27
+msgid "Use theme for chat rooms"
+msgstr "Usar tema para salas de bate-papo"
+
+#: ../data/empathy.schemas.in.h:28
+msgid ""
+"Whether or not Empathy should automatically login to your accounts on "
+"startup."
+msgstr "Conecta automaticamente ou não suas contas ao iniciar."
+
+#: ../data/empathy.schemas.in.h:29
+msgid ""
+"Whether or not the Salut account has been created on the first empathy run."
+msgstr ""
+"Se o cadastro do Salut foi criado na primeira execução do empathy ou não."
+
+#: ../data/empathy.schemas.in.h:30
+msgid ""
+"Whether or not the network manager should be used to automatically "
+"disconnect/reconnect."
+msgstr ""
+"Usa ou não o gerenciador de rede para desconectar/reconectar automaticamente."
+
+#: ../data/empathy.schemas.in.h:31
+msgid ""
+"Whether or not to check words typed against the languages you want to check "
+"with."
+msgstr ""
+"Verifica ou não palavras digitadas usando os idiomas escolhidos para "
+"verificação ortográfica."
+
+#: ../data/empathy.schemas.in.h:32
+msgid ""
+"Whether or not to convert smileys into graphical images in conversations."
+msgstr "Converte ou não smileys para imagens gráficas durante conversações."
+
+#: ../data/empathy.schemas.in.h:33
+msgid "Whether or not to play a sound when messages arrive."
+msgstr "Reproduz um áudio ou não quando receber mensagens."
+
+#: ../data/empathy.schemas.in.h:34
+msgid "Whether or not to play sounds when away."
+msgstr "Reproduz áudio ou não quando ausente."
+
+#: ../data/empathy.schemas.in.h:35
+msgid "Whether or not to play sounds when busy."
+msgstr "Reproduz áudio ou não quando ocupado."
+
+#: ../data/empathy.schemas.in.h:36
+msgid "Whether or not to show a popup when a contact becomes available."
+msgstr "Mostra ou não uma notificação quando um contato ficar disponível."
+
+#: ../data/empathy.schemas.in.h:37
+msgid ""
+"Whether or not to show avatars for contacts in the contact list and chat "
+"windows."
+msgstr ""
+"Mostra ou não avatares para contatos na lista de contatos e janelas de bate-"
+"papo."
+
+#: ../data/empathy.schemas.in.h:38
+msgid "Whether or not to show contacts that are offline in the contact list."
+msgstr "Mostra ou não contatos que estejam desconectados na lista de contatos."
+
+#: ../data/empathy.schemas.in.h:39
+msgid ""
+"Whether or not to show the message dialog about closing the main window with "
+"the 'x' button in the title bar."
+msgstr ""
+"Mostra ou não o diálogo de mensagens sobre fechar a janela principal com o "
+"botão \"x\" na barra do título."
+
+#: ../data/empathy.schemas.in.h:40
+msgid "Whether to show the contact list in compact mode or not."
+msgstr "Mostra ou não a lista de contatos no modo compacto."
+
+#: ../data/empathy.schemas.in.h:41
+msgid "Whether to use the theme for chat rooms or not."
+msgstr "Usa ou não o tema em salas de bate-papo."
+
+#: ../data/empathy.schemas.in.h:42
+msgid ""
+"Which criterium to use when sorting the contact list. Default is to use sort "
+"by the contact's name with the value \"name\". A value of \"state\" will "
+"sort the contact list by state."
+msgstr ""
+"Qual critério para usar quando ordenando a lista de contatos. Por padrão a "
+"ordenação é feita usando o nome do contato com o valor \"nome\". Um valor de "
+"\"estado\" ordenará a lista de contatos por estado."
+
+#: ../libempathy/empathy-tp-contact-list.c:724 ../src/empathy.c:149
+msgid "People nearby"
+msgstr "Pessoas por perto"
+
+#: ../libempathy/empathy-utils.c:540
+msgid "Available"
+msgstr "Disponível"
+
+#: ../libempathy/empathy-utils.c:542
+msgid "Busy"
+msgstr "Ocupado"
+
+#: ../libempathy/empathy-utils.c:545
+msgid "Away"
+msgstr "Longe"
+
+#: ../libempathy/empathy-utils.c:547
+msgid "Hidden"
+msgstr "Oculto"
+
+#: ../libempathy/empathy-utils.c:550
+msgid "Offline"
+msgstr "Desconectado"
+
+#: ../libempathy-gtk/empathy-about-dialog.c:63
+msgid ""
+"Empathy is free software; you can redistribute it and/or modify it under the "
+"terms of the GNU General Public License as published by the Free Software "
+"Foundation; either version 2 of the License, or (at your option) any later "
+"version."
+msgstr ""
+"Empathy é um software livre; você pode redistribuí-lo e/ou modificá-lo "
+"dentro dos termos da Licença Pública Geral GNU como publicada pela Fundação "
+"do Software Livre (FSF); na versão 2 da Licença, ou (na sua opinião) "
+"qualquer versão."
+
+#: ../libempathy-gtk/empathy-about-dialog.c:67
+msgid ""
+"Empathy is distributed in the hope that it will be useful, but WITHOUT ANY "
+"WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS "
+"FOR A PARTICULAR PURPOSE. See the GNU General Public License for more "
+"details."
+msgstr ""
+"O Empathy é distribuído na esperança de que será útil, mas SEM NENHUMA "
+"GARANTIA; sem mesmo a garantia implícita de COMERCIABILIDADE ou ADEQUAÇÃO A "
+"PROPÓSITOS ESPECÍFICOS. Veja a Licença Pública Geral GNU para mais detalhes."
+
+#: ../libempathy-gtk/empathy-about-dialog.c:71
+msgid ""
+"You should have received a copy of the GNU General Public License along with "
+"Empathy; if not, write to the Free Software Foundation, Inc., 51 Franklin "
+"Street, Fifth Floor, Boston, MA 02110-130159 USA"
+msgstr ""
+"Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com o "
+"Empathy; se não, escreva para a Free Software Foundation, Inc., 51 Franklin "
+"Street, Fifth Floor, Boston, MA 02110-130159 USA"
+
+#: ../libempathy-gtk/empathy-about-dialog.c:99
+msgid "An Instant Messaging client for GNOME"
+msgstr "Um cliente de Mensagens Instantâneas para o GNOME"
+
+#: ../libempathy-gtk/empathy-about-dialog.c:105
+msgid "translator-credits"
+msgstr ""
+"Luiz Guaraldo <software.livre@terra.com.br>\n"
+"André Filipe de Assunção e Brito <decko@ufpr.br>\n"
+"Og Maciel <ogmaciel@gnome.org>"
+
+#: ../libempathy-gtk/empathy-account-chooser.c:337
+msgid "All"
+msgstr "Todos"
+
+#: ../libempathy-gtk/empathy-account-widget.c:276
+#: ../libempathy-gtk/empathy-account-widget.c:321
+#, c-format
+msgid "%s:"
+msgstr "%s:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:1
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:1
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:1
+msgid "<b>Advanced</b>"
+msgstr "<b>Avançado</b>"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:2
+msgid "<b>Override server settings</b>"
+msgstr "<b>Sobrescrever configurações do servidor</b>"
+
+# Tooltip.
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:3
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:2
+msgid "Forget password and clear the entry."
+msgstr "Esquece a senha e apaga a entrada."
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:4
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:3
+msgid "Login I_D:"
+msgstr "I_D de login:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:5
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:4
+msgid "Pass_word:"
+msgstr "Se_nha:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:6
+msgid "Pri_ority:"
+msgstr "Pri_oridade:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:7
+msgid "Reso_urce:"
+msgstr "Rec_urso:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:8
+msgid "Use old SS_L"
+msgstr "Usar criptografia SS_L"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:9
+msgid "_Encryption required (TLS/SSL)"
+msgstr "Criptografia r_equerida (TLS/SSL)"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:10
+msgid "_Ignore SSL certificate errors"
+msgstr "_Ignorar erros de certificado SSL"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:11
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:5
+msgid "_Port:"
+msgstr "_Porta:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:12
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:6
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:10
+msgid "_Server:"
+msgstr "_Servidor:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:13
+msgid "jabber account settings"
+msgstr "configurações da conta jabber"
+
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:7
+msgid "msn account settings"
+msgstr "configurações da conta msn"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:2
+msgid "_E-mail:"
+msgstr "_E-mail:"
+
+# A mensagem original termina em espaço, mas suas análogas não.
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:3
+msgid "_First Name: "
+msgstr "_Nome:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:4
+msgid "_Jabber ID:"
+msgstr "ID do _Jabber:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:5
+msgid "_Last Name:"
+msgstr "_Sobrenome:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:6
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:8
+msgid "_Nickname:"
+msgstr "_Apelido:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:7
+msgid "_Published Name:"
+msgstr "Nome _Publicado:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:8
+msgid "salut account settings"
+msgstr "configurações da conta salut"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:225
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to start configuring."
+msgstr ""
+"Para adicionar uma nova conta, você pode clicar no botão \"Adicionar\" e uma "
+"nova entrada será criada para você configurar."
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:229
+msgid ""
+"To add a new account, you first have to install a backend for each protocol "
+"you want to use."
+msgstr ""
+"Para adicionar uma nova conta, é necessário primeiro instalar um backend "
+"para cada protocolo que você deseja usar."
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:236
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:2
+msgid "<b>No Account Selected</b>"
+msgstr "<b>Nenhuma Conta Selecionada</b>"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:237
+msgid ""
+"\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want "
+"to configure in the list on the left."
+msgstr ""
+"\n"
+"\n"
+"Se você não deseja adicionar uma conta, simplesmente clique na conta que "
+"você deseja configurar na lista à esquerda."
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:243
+msgid "<b>No Accounts Configured</b>"
+msgstr "<b>Nenhuma Conta Configurada</b>"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:411
+msgid "Enabled"
+msgstr "Habilitado"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:421
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:4
+msgid "Accounts"
+msgstr "Contas"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:904
+#, c-format
+msgid ""
+"You are about to remove your %s account!\n"
+"Are you sure you want to proceed?"
+msgstr ""
+"Você está prestes a remover sua conta %s!\n"
+"Você tem certeza que deseja prosseguir?"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:910
+msgid ""
+"Any associated conversations and chat rooms will NOT be removed if you "
+"decide to proceed.\n"
+"\n"
+"Should you decide to add the account back at a later time, they will still "
+"be available."
+msgstr ""
+"Qualquer conversações e salas de bate-papo associados NÃO serão removidos se "
+"você decidir prosseguir.\n"
+"\n"
+"Caso você decida adicionar a conta novamente mais tarde, elas ainda estarão "
+"disponíveis."
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:1
+msgid "<b>New Account</b>"
+msgstr "<b>Nova Conta</b>"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:3
+msgid "<b>Settings</b>"
+msgstr "<b>Configurações</b>"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:5
+msgid "Cr_eate"
+msgstr "Cr_iar"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:6
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to started configuring.\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want "
+"to configure in the list on the left."
+msgstr ""
+"Para adicionar uma nova conta, você pode clicar no botão \"Adicionar\" e uma "
+"nova entrada será criada para você configurar.\n"
+"\n"
+"Se você não deseja adicionar uma conta, simplesmente clique na conta que "
+"você deseja configurar na lista à esquerda."
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:9
+msgid "Type:"
+msgstr "Tipo:"
+
+#: ../libempathy-gtk/empathy-avatar-chooser.c:449
+msgid "Select Your Avatar Image"
+msgstr "Selecione sua Imagem de Avatar"
+
+#: ../libempathy-gtk/empathy-avatar-chooser.c:452
+msgid "No Image"
+msgstr "Nenhuma Imagem"
+
+#: ../libempathy-gtk/empathy-avatar-chooser.c:512
+msgid "Images"
+msgstr "Imagens"
+
+#: ../libempathy-gtk/empathy-avatar-chooser.c:516
+msgid "All Files"
+msgstr "Todos Arquivos"
+
+#: ../libempathy-gtk/empathy-avatar-image.c:298
+msgid "Click to enlarge"
+msgstr "Clique para ampliar"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:1
+msgid "End Call"
+msgstr "Desligar"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:2
+msgid "Input"
+msgstr "Entrada"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:3
+msgid "Mute"
+msgstr "Sem áudio"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:4
+msgid "Output"
+msgstr "Saída"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:5
+msgid "Send Video"
+msgstr "Enviar Vídeo"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:6
+msgid "Start Call"
+msgstr "Iniciar Chamada"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:7
+msgid "Volume"
+msgstr "Volume"
+
+#: ../libempathy-gtk/empathy-chat.c:445
+msgid "Disconnected"
+msgstr "Desconectado"
+
+#: ../libempathy-gtk/empathy-chat.c:580
+msgid "offline"
+msgstr "desconectado"
+
+#: ../libempathy-gtk/empathy-chat.c:583
+msgid "invalid contact"
+msgstr "contato inválido"
+
+#: ../libempathy-gtk/empathy-chat.c:586
+msgid "permission denied"
+msgstr "permissão negada"
+
+#: ../libempathy-gtk/empathy-chat.c:589
+msgid "too long message"
+msgstr "mensagem muito longa"
+
+#: ../libempathy-gtk/empathy-chat.c:592
+msgid "not implemented"
+msgstr "não implementado"
+
+#: ../libempathy-gtk/empathy-chat.c:595
+msgid "unknown"
+msgstr "desconhecido"
+
+#: ../libempathy-gtk/empathy-chat.c:599
+#, c-format
+msgid "Error sending message '%s': %s"
+msgstr "Erro enviando mensagem \"%s\": %s"
+
+#: ../libempathy-gtk/empathy-chat.c:1056
+msgid "Insert Smiley"
+msgstr "Inserir Smiley"
+
+#: ../libempathy-gtk/empathy-chat.c:1103
+msgid "_Check Word Spelling..."
+msgstr "_Checar Ortografia..."
+
+#: ../libempathy-gtk/empathy-chat.c:1558
+msgid "Connected"
+msgstr "Conectado"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:1
+msgid "C_lear"
+msgstr "_Limpar"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:2
+msgid "Ca_ll"
+msgstr "C_hamar"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:3
+msgid "Change _Topic..."
+msgstr "Mudar _Tópico..."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:4
+#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:3
+msgid "Chat"
+msgstr "Bate-Papo"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:5
+msgid "Contact Infor_mation"
+msgstr "Infor_mação do Contato"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:6
+msgid "Cu_t"
+msgstr "Recor_tar"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:7
+msgid "In_vite..."
+msgstr "Con_vidar..."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:8
+msgid "Insert _Smiley"
+msgstr "Inserir _Smiley"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:9
+msgid "Invitation _message:"
+msgstr "_Mensagem de convite:"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:10
+msgid "Invite"
+msgstr "Convidar"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:11
+#: ../libempathy-gtk/empathy-main-window.glade.h:4
+msgid "Join _New..."
+msgstr "Entrar em _Novo..."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:12
+msgid "Move Tab _Left"
+msgstr "Mover Aba Para a _Esquerda"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:13
+msgid "Move Tab _Right"
+msgstr "Mover Aba Para a _Direita"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:14
+msgid "Select who would you like to invite:"
+msgstr "Selecione quem você gostaria convidar:"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:15
+msgid "You have been invited to join a chat conference."
+msgstr "Você foi convidado a participar de uma conferência de bate-papo."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:16
+#: ../libempathy-gtk/empathy-main-window.glade.h:9
+msgid "_Add Contact..."
+msgstr "_Adicionar Contato..."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:17
+msgid "_Add To Favorites"
+msgstr "_Adicionar aos Favoritos"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:18
+msgid "_Close"
+msgstr "_Fechar"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:19
+#: ../libempathy-gtk/empathy-main-window.glade.h:11
+msgid "_Contents"
+msgstr "_Sumário"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:20
+msgid "_Conversation"
+msgstr "_Conversação"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:21
+msgid "_Copy"
+msgstr "_Copiar"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:22
+msgid "_Detach Tab"
+msgstr "_Destacar Aba"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:23
+#: ../libempathy-gtk/empathy-contact-list-view.c:217
+#: ../libempathy-gtk/empathy-main-window.glade.h:12
+msgid "_Edit"
+msgstr "_Editar"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:24
+#: ../libempathy-gtk/empathy-main-window.glade.h:13
+msgid "_Help"
+msgstr "Aj_uda"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:25
+msgid "_Next Tab"
+msgstr "_Próxima Aba"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:26
+msgid "_Paste"
+msgstr "C_olar"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:27
+msgid "_Previous Tab"
+msgstr "Aba _Anterior"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:28
+#: ../libempathy-gtk/empathy-main-window.glade.h:18
+msgid "_Room"
+msgstr "_Sala"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:29
+msgid "_Show Contacts"
+msgstr "_Mostrar Contatos"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:30
+msgid "_Tabs"
+msgstr "_Abas"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:31
+#: ../libempathy-gtk/empathy-contact-list-view.c:233
+#: ../libempathy-gtk/empathy-main-window.glade.h:19
+msgid "_View Previous Conversations"
+msgstr "_Ver Conversações Anteriores"
+
+#: ../libempathy-gtk/empathy-chat-view.c:441
+msgid "_Copy Link Address"
+msgstr "_Copiar Endereço do Link"
+
+#: ../libempathy-gtk/empathy-chat-view.c:449
+msgid "_Open Link"
+msgstr "Abrir _o Link"
+
+#: ../libempathy-gtk/empathy-chat-window.c:699
+#, c-format
+msgid "Conversations (%d)"
+msgstr "Conversações (%d)"
+
+#: ../libempathy-gtk/empathy-chat-window.c:1299
+msgid "Typing a message."
+msgstr "Digitando uma mensagem."
+
+#: ../libempathy-gtk/empathy-chatrooms-window.c:258
+msgid "Name"
+msgstr "Nome"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.c:276
+msgid "Room"
+msgstr "Sala"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.c:285
+msgid "Auto Connect"
+msgstr "Conectar Automaticamente"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:1
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:5
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:1
+#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:1
+msgid "Account:"
+msgstr "Conta:"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:2
+msgid "Edit Favorite Room"
+msgstr "Editar Sala Favorita"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:3
+msgid "Join room on start_up"
+msgstr "Entrar na sala ao _iniciar"
+
+# Tooltip.
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:4
+msgid "Join this chat room when Empathy starts and you are connected"
+msgstr ""
+"Entra nesta sala de bate-papo quando o Empathy iniciar e você estiver "
+"conectado"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:5
+msgid "Manage Favorite Rooms"
+msgstr "Gerenciar Salas Favoritas"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:6
+msgid "N_ame:"
+msgstr "_Nome:"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:7
+msgid "S_erver:"
+msgstr "S_ervidor:"
+
+# Evitar colisão com _Salvar
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:9
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:9
+msgid "_Room:"
+msgstr "Sa_la:"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:176
+msgid "Personal Information"
+msgstr "Informações Pessoais"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:179
+msgid "Edit Contact Information"
+msgstr "Editar Informações do Contato"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:182
+msgid "Contact Information"
+msgstr "Informações do Contato"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:277
+msgid "I would like to add you to my contact list."
+msgstr "Eu gostaria de adicioná-lo à minha lista de contatos."
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:301
+msgid "New Contact"
+msgstr "Novo Contato"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.glade.h:1
+msgid "Decide _Later"
+msgstr "Decidir _Depois"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.glade.h:2
+msgid "Subscription Request"
+msgstr "Requisição de Inscrição"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:197
+msgid "_Contact"
+msgstr "_Contato"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:201
+msgid "_Group"
+msgstr "_Grupo"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:205
+#: ../libempathy-gtk/empathy-main-window.glade.h:10
+msgid "_Chat"
+msgstr "_Bate-Papo"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:205
+msgid "Chat with contact"
+msgstr "Bater papo com o contato"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:209
+msgid "Infor_mation"
+msgstr "Infor_mações"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:209
+msgid "View contact information"
+msgstr "Ver informações do contato"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:213
+msgid "Re_name"
+msgstr "Re_nomear"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:213
+msgid "Rename"
+msgstr "Renomear"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:217
+msgid "Edit the groups and name for this contact"
+msgstr "Editar os grupos e nome para este contato"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:221
+msgid "_Remove"
+msgstr "_Remover"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:221
+msgid "Remove contact"
+msgstr "Remover contato"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:225
+msgid "_Invite to Chat Room"
+msgstr "Conv_idar para Sala de Bate-Papo"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:225
+msgid "Invite to a currently open chat room"
+msgstr "Convidar para uma sala de bate-papo já aberta"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:229
+msgid "_Send File..."
+msgstr "E_nviar Arquivo..."
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:229
+msgid "Send a file"
+msgstr "Enviar um arquivo"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:233
+msgid "View previous conversations with this contact"
+msgstr "Ver conversações anteriores com este contato"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:238
+msgid "_Call"
+msgstr "_Chamar"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:238
+msgid "Start a voice or video conversation with this contact"
+msgstr "Iniciar uma conversação por voz ou vídeo com este contato"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:1469
+msgid "Sorry, I don't want you in my contact list anymore."
+msgstr "Desculpe, mas eu não desejo mais mantê-lo em minha lista de contatos."
+
+#: ../libempathy-gtk/empathy-contact-widget.c:688
+msgid "Select"
+msgstr "Selecionar"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:698
+#: ../libempathy-gtk/empathy-main-window.c:609
+msgid "Group"
+msgstr "Grupo"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:1
+msgid "<b>Client Information</b>"
+msgstr "<b>Informações do Cliente</b>"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:2
+msgid "<b>Contact Details</b>"
+msgstr "<b>Detalhes do Contato</b>"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:3
+msgid "<b>Contact</b>"
+msgstr "<b>Contato</b>"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:4
+msgid "<b>Groups</b>"
+msgstr "<b>Grupos</b>"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:6
+msgid "Alias:"
+msgstr "Apelido:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:7
+msgid "Birthday:"
+msgstr "Aniversário:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:8
+msgid "Client:"
+msgstr "Cliente:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:9
+msgid "Contact information"
+msgstr "Informação do contato"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:10
+msgid "Email:"
+msgstr "E-mail:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:11
+msgid "Fullname:"
+msgstr "Nome completo:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:12
+msgid "Identifier:"
+msgstr "Identificação:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:13
+msgid "Information requested..."
+msgstr "Informação solicitada..."
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:14
+msgid "OS:"
+msgstr "SO:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:15
+msgid ""
+"Select the groups you want this contact to appear in, you can select more "
+"than one group or no groups."
+msgstr ""
+"Selecione os grupos nos quais este contato aparecerá; você pode selecionar "
+"mais de um grupo ou nenhum grupo."
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:16
+msgid "Version:"
+msgstr "Versão:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:17
+msgid "Web site:"
+msgstr "Site da Web:"
+
+#: ../libempathy-gtk/empathy-group-chat.c:251
+msgid "Enter the new topic you want to set for this room:"
+msgstr "Digite o novo tópico que você deseja definir para esta sala:"
+
+#: ../libempathy-gtk/empathy-group-chat.c:361
+#, c-format
+msgid "%s has joined the room"
+msgstr "%s entrou na sala"
+
+#: ../libempathy-gtk/empathy-group-chat.c:364
+#, c-format
+msgid "%s has left the room"
+msgstr "%s saiu da sala"
+
+#: ../libempathy-gtk/empathy-group-chat.c:445
+#, c-format
+msgid "Topic: %s"
+msgstr "Tópico: %s"
+
+#: ../libempathy-gtk/empathy-group-chat.c:574
+#, c-format
+msgid "Topic set to: %s"
+msgstr "Tópico definido como: %s"
+
+#: ../libempathy-gtk/empathy-group-chat.c:576
+msgid "No topic defined"
+msgstr "Nenhum tópico definido"
+
+#: ../libempathy-gtk/empathy-group-chat.glade.h:1
+msgid "<b>Topic:</b>"
+msgstr "<b>Tópico:</b>"
+
+#: ../libempathy-gtk/empathy-group-chat.glade.h:2
+msgid "Group Chat"
+msgstr "Bate-Papo em Grupo"
+
+#: ../libempathy-gtk/empathy-log-window.c:499
+msgid "Account"
+msgstr "Conta"
+
+#: ../libempathy-gtk/empathy-log-window.c:506
+msgid "Conversation"
+msgstr "Conversação"
+
+#: ../libempathy-gtk/empathy-log-window.c:516
+msgid "Date"
+msgstr "Data"
+
+#: ../libempathy-gtk/empathy-log-window.glade.h:1
+msgid "Conversations"
+msgstr "Conversações"
+
+#: ../libempathy-gtk/empathy-log-window.glade.h:2
+msgid "Previous Conversations"
+msgstr "Conversações Anteriores"
+
+#: ../libempathy-gtk/empathy-log-window.glade.h:3
+msgid "Search"
+msgstr "Pesquisar"
+
+#: ../libempathy-gtk/empathy-log-window.glade.h:4
+msgid "_For:"
+msgstr "_Por:"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.c:286
+msgid "Chat Rooms"
+msgstr "Salas de Bate-Papo"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:2
+msgid "Browse:"
+msgstr "Navegar:"
+
+# Tooltip, but imperative sentence is correct.
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:3
+msgid ""
+"Enter the room name to join here or click on one or more rooms in the list."
+msgstr ""
+"Digite o nome da sala em que você deseja entrar aqui ou clique em uma sala "
+"ou mais na lista."
+
+# Tooltip, but imperative sentence is correct.
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:4
+msgid ""
+"Enter the server which hosts the room, or leave it empty if the room is on "
+"the current account's server"
+msgstr ""
+"Digite o servidor que hospeda a sala, ou deixe o campo vazio caso a sala "
+"esteja no servidor da conta atual"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:5
+msgid "Join"
+msgstr "Entrar"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:6
+msgid "Join New"
+msgstr "Entrar em Nova"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:7
+msgid "Re_fresh"
+msgstr "Atualiza_r"
+
+# Tooltip.
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:8
+msgid ""
+"This list represents all chat rooms hosted on the server you have entered."
+msgstr ""
+"Esta lista representa todas as salas de bate-papo hospedadas no servidor que "
+"você entrou."
+
+#: ../libempathy-gtk/empathy-main-window.c:266
+msgid "Show and edit accounts"
+msgstr "Mostrar e editar contas"
+
+#: ../libempathy-gtk/empathy-main-window.c:630
+msgid "Contact"
+msgstr "Contato"
+
+#: ../libempathy-gtk/empathy-main-window.c:813
+msgid "_Edit account"
+msgstr "_Editar conta"
+
+#: ../libempathy-gtk/empathy-main-window.c:896
+msgid "Network error"
+msgstr "Erro de rede"
+
+#: ../libempathy-gtk/empathy-main-window.c:899
+msgid "Authentication failed"
+msgstr "Falha de autenticação"
+
+#: ../libempathy-gtk/empathy-main-window.c:902
+msgid "Encryption error"
+msgstr "Erro de criptografia"
+
+#: ../libempathy-gtk/empathy-main-window.c:905
+msgid "Name in use"
+msgstr "Nome já em uso"
+
+#: ../libempathy-gtk/empathy-main-window.c:908
+msgid "Certificate not provided"
+msgstr "Certificado não fornecido"
+
+#: ../libempathy-gtk/empathy-main-window.c:911
+msgid "Certificate untrusted"
+msgstr "Certificado não confiável"
+
+#: ../libempathy-gtk/empathy-main-window.c:914
+msgid "Certificate expired"
+msgstr "Certificado expirado"
+
+#: ../libempathy-gtk/empathy-main-window.c:917
+msgid "Certificate not activated"
+msgstr "Certificado não ativado"
+
+#: ../libempathy-gtk/empathy-main-window.c:920
+msgid "Certificate hostname mismatch"
+msgstr "Certificado com nome de máquina incorreto"
+
+#: ../libempathy-gtk/empathy-main-window.c:923
+msgid "Certificate fingerprint mismatch"
+msgstr "Certificado com impressão digital incorreto"
+
+#: ../libempathy-gtk/empathy-main-window.c:926
+msgid "Certificate self signed"
+msgstr "Certificado próprio"
+
+#: ../libempathy-gtk/empathy-main-window.c:929
+msgid "Certificate error"
+msgstr "Erro de certificado"
+
+#: ../libempathy-gtk/empathy-main-window.c:932
+msgid "Unknown error"
+msgstr "Erro desconhecido"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:1
+msgid "Contact List"
+msgstr "Lista de Contatos"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:2
+msgid "Context"
+msgstr "Contexto"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:3
+msgid "Join _Favorites"
+msgstr "Entrar em _Favoritos"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:5
+msgid "Manage Favorites"
+msgstr "Gerenciar Favoritos"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:6
+msgid "Show _Offline Contacts"
+msgstr "Mostrar Contatos _Offline"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:7
+#: ../megaphone/data/GNOME_Megaphone_Applet.xml.h:1
+#: ../nothere/data/GNOME_NotHere_Applet.xml.h:1
+msgid "_About"
+msgstr "_Sobre"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:8
+msgid "_Accounts"
+msgstr "Cont_as"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:14
+#: ../libempathy-gtk/empathy-status-icon.glade.h:2
+msgid "_New Conversation..."
+msgstr "_Nova Conversação..."
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:15
+msgid "_Personal Information"
+msgstr "Informação _Pessoal"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:16
+#: ../megaphone/data/GNOME_Megaphone_Applet.xml.h:3
+msgid "_Preferences"
+msgstr "_Preferências"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:17
+#: ../libempathy-gtk/empathy-status-icon.glade.h:3
+msgid "_Quit"
+msgstr "Sai_r"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:2
+msgid "Call"
+msgstr "Chamar"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:4
+msgid "Contact ID:"
+msgstr "ID do Contato:"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:5
+msgid "New Conversation"
+msgstr "Nova Conversação"
+
+#: ../libempathy-gtk/empathy-preferences.c:247
+msgid "Language"
+msgstr "Idioma"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:1
+msgid "<b>Appearance</b>"
+msgstr "<b>Aparência</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:2
+msgid "<b>Audio</b>"
+msgstr "<b>Áudio</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:3
+msgid "<b>Behaviour</b>"
+msgstr "<b>Comportamento</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:4
+msgid "<b>Contact List</b>"
+msgstr "<b>Lista de Contatos</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:5
+msgid "<b>Enable spell checking for languages:</b>"
+msgstr "<b>Habilitar verificação ortográfica para os idiomas:</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:6
+msgid "<b>Options</b>"
+msgstr "<b>Opções</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:7
+msgid "<b>Visual</b>"
+msgstr "<b>Visual</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:8
+msgid ""
+"<small>The list of languages reflects only the languages for which you have "
+"a dictionary installed.</small>"
+msgstr ""
+"<small>A lista de idiomas representa somente os idiomas para os quais você "
+"já possui dicionários instalados.</small>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:9
+msgid "Automatically _connect on startup "
+msgstr "Conectar automati_camente ao iniciar "
+
+# Tooltip.
+#: ../libempathy-gtk/empathy-preferences.glade.h:10
+msgid "Avatars are user chosen images shown in the contact list"
+msgstr ""
+"Avatares são imagens escolhidas pelo usuário exibidas na lista de contatos"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:11
+msgid "Chat Th_eme:"
+msgstr "T_ema do Bate-Papo:"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:12
+msgid "Display notifications when contacts come _online"
+msgstr "Exibir notificações quando contatos entrarem _online"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:13
+msgid "Enable sounds when _away"
+msgstr "Habilitar áudio quando _ausente"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:14
+msgid "Enable sounds when _busy"
+msgstr "Habilitar áudio quando ocupa_do"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:15
+msgid "General"
+msgstr "Geral"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:16
+msgid "Notifications"
+msgstr "Notificações"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:17
+msgid "Preferences"
+msgstr "Preferências"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:18
+msgid "Show _avatars"
+msgstr "Mostrar _avatares"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:19
+msgid "Show _smileys as images"
+msgstr "Mostrar _smileys como imagens"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:20
+msgid "Show co_mpact contact list"
+msgstr "Mostrar lista de contatos co_mpacta"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:21
+msgid "Sort by _name"
+msgstr "Ordenar por _nome"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:22
+msgid "Sort by s_tate"
+msgstr "Ordenar por es_tado"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:23
+msgid "Spell Checking"
+msgstr "Ortografia"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:24
+msgid "Themes"
+msgstr "Temas"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:25
+msgid "_Open new chats in separate windows"
+msgstr "_Abrir novos bate-papos em janelas separadas"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:26
+msgid "_Play sound when messages arrive"
+msgstr "Re_produzir áudio quando mensagens forem recebidas"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:27
+msgid "_Use for chat rooms"
+msgstr "_Usar em salas de bate-papo"
+
+#. Custom messages
+#: ../libempathy-gtk/empathy-presence-chooser.c:691
+msgid "Custom messages..."
+msgstr "Mensagens personalizadas..."
+
+#: ../libempathy-gtk/empathy-presence-chooser.glade.h:1
+msgid "Custom message"
+msgstr "Mensagem personalizada"
+
+#: ../libempathy-gtk/empathy-presence-chooser.glade.h:2
+msgid "Message:"
+msgstr "Mensagem:"
+
+#: ../libempathy-gtk/empathy-presence-chooser.glade.h:3
+msgid "Save message"
+msgstr "Salvar mensagem"
+
+#: ../libempathy-gtk/empathy-presence-chooser.glade.h:4
+msgid "Status:"
+msgstr "Status:"
+
+#: ../libempathy-gtk/empathy-private-chat.c:229
+#, c-format
+msgid "%s went offline"
+msgstr "%s desconectou"
+
+#: ../libempathy-gtk/empathy-private-chat.c:243
+#, c-format
+msgid "%s has come online"
+msgstr "%s conectou"
+
+#: ../libempathy-gtk/empathy-spell-dialog.c:85
+msgid "Word"
+msgstr "Palavra"
+
+#: ../libempathy-gtk/empathy-spell-dialog.c:258
+msgid "Suggestions for the word"
+msgstr "Sugestões para a palavra"
+
+#: ../libempathy-gtk/empathy-spell-dialog.glade.h:1
+msgid "Spell Checker"
+msgstr "Verificador Ortográfico"
+
+#: ../libempathy-gtk/empathy-spell-dialog.glade.h:2
+msgid "Suggestions for the word:"
+msgstr "Sugestões para a palavra:"
+
+#: ../libempathy-gtk/empathy-status-icon.c:369
+#, c-format
+msgid ""
+"New message from %s:\n"
+"%s"
+msgstr ""
+"Nova mensagem de %s:\n"
+"%s"
+
+#: ../libempathy-gtk/empathy-status-icon.c:434
+#, c-format
+msgid ""
+"Incoming call from %s:\n"
+"%s"
+msgstr ""
+"Chamada de %s:\n"
+"%s"
+
+#: ../libempathy-gtk/empathy-status-icon.c:738
+#, c-format
+msgid "Subscription requested by %s"
+msgstr "Inscrição solicitada por %s"
+
+#: ../libempathy-gtk/empathy-status-icon.c:741
+#, c-format
+msgid ""
+"\n"
+"Message: %s"
+msgstr ""
+"\n"
+"Mensagem: %s"
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:1
+msgid "Status"
+msgstr "Status"
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:4
+msgid "_Show Contact List"
+msgstr "_Mostrar Lista de Contatos"
+
+#: ../libempathy-gtk/empathy-theme-boxes.c:780
+#: ../libempathy-gtk/empathy-theme-irc.c:297
+msgid "%A %d %B %Y"
+msgstr "%A, %d de %B de %Y"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:78
+msgid "Classic"
+msgstr "Clássico"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:79
+msgid "Simple"
+msgstr "Simples"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:80
+msgid "Clean"
+msgstr "Simples"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:81
+msgid "Blue"
+msgstr "Azul"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.c:246
+msgid "New Network"
+msgstr "Nova rede"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:1
+msgid "<b>Network</b>"
+msgstr "<b>Rede</b>"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:2
+msgid "<b>Servers</b>"
+msgstr "<b>Servidores</b>"
+
+# Changed from Og's "conjunto de caracteres because of little room.
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:3
+msgid "Charset:"
+msgstr "Codificação:"
+
+# Tooltip.
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:4
+msgid "Create a new IRC network"
+msgstr "Cria uma nova rede de IRC"
+
+# Tooltip.
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:5
+msgid "Edit the selected IRC network"
+msgstr "Edita a rede de IRC selecionada"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:6
+msgid "Network"
+msgstr "Rede"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:7
+msgid "Network:"
+msgstr "Rede:"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:8
+msgid "Nickname:"
+msgstr "Apelido:"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:9
+msgid "Password:"
+msgstr "Senha:"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:10
+msgid "Quit message:"
+msgstr "Mensagem de saída:"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:11
+msgid "Real name:"
+msgstr "Nome verdadeiro:"
+
+# Tooltip.
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:12
+msgid "Remove the selected IRC network"
+msgstr "Remove a rede de IRC selecionada"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:13
+msgid "irc account settings"
+msgstr "configurações da conta de irc"
+
+#: ../libempathy-gtk/empathy-irc-network-dialog.c:287
+msgid "new server"
+msgstr "novo servidor"
+
+#: ../libempathy-gtk/empathy-irc-network-dialog.c:512
+msgid "Server"
+msgstr "Servidor"
+
+#: ../libempathy-gtk/empathy-irc-network-dialog.c:527
+msgid "Port"
+msgstr "Porta"
+
+#: ../libempathy-gtk/empathy-irc-network-dialog.c:540
+msgid "SSL"
+msgstr "SSL"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:158
+msgid "Current Locale"
+msgstr "Localidade atual"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:161
+#: ../libempathy-gtk/totem-subtitle-encoding.c:163
+#: ../libempathy-gtk/totem-subtitle-encoding.c:165
+#: ../libempathy-gtk/totem-subtitle-encoding.c:167
+msgid "Arabic"
+msgstr "Árabe"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:170
+msgid "Armenian"
+msgstr "Armênio"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:173
+#: ../libempathy-gtk/totem-subtitle-encoding.c:175
+#: ../libempathy-gtk/totem-subtitle-encoding.c:177
+msgid "Baltic"
+msgstr "Báltico"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:180
+msgid "Celtic"
+msgstr "Celta"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:183
+#: ../libempathy-gtk/totem-subtitle-encoding.c:185
+#: ../libempathy-gtk/totem-subtitle-encoding.c:187
+#: ../libempathy-gtk/totem-subtitle-encoding.c:189
+msgid "Central European"
+msgstr "Europeu Central"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:192
+#: ../libempathy-gtk/totem-subtitle-encoding.c:194
+#: ../libempathy-gtk/totem-subtitle-encoding.c:196
+#: ../libempathy-gtk/totem-subtitle-encoding.c:198
+msgid "Chinese Simplified"
+msgstr "Chinês Simplificado"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:201
+#: ../libempathy-gtk/totem-subtitle-encoding.c:203
+#: ../libempathy-gtk/totem-subtitle-encoding.c:205
+msgid "Chinese Traditional"
+msgstr "Chinês Tradicional"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:208
+msgid "Croatian"
+msgstr "Croata"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:211
+#: ../libempathy-gtk/totem-subtitle-encoding.c:213
+#: ../libempathy-gtk/totem-subtitle-encoding.c:215
+#: ../libempathy-gtk/totem-subtitle-encoding.c:217
+#: ../libempathy-gtk/totem-subtitle-encoding.c:219
+#: ../libempathy-gtk/totem-subtitle-encoding.c:221
+msgid "Cyrillic"
+msgstr "Cirílico"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:224
+msgid "Cyrillic/Russian"
+msgstr "Cirílico/Russo"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:227
+#: ../libempathy-gtk/totem-subtitle-encoding.c:229
+msgid "Cyrillic/Ukrainian"
+msgstr "Cirílico/Ucraniano"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:232
+msgid "Georgian"
+msgstr "Georgiano"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:235
+#: ../libempathy-gtk/totem-subtitle-encoding.c:237
+#: ../libempathy-gtk/totem-subtitle-encoding.c:239
+msgid "Greek"
+msgstr "Grego"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:242
+msgid "Gujarati"
+msgstr "Guzerate"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:245
+msgid "Gurmukhi"
+msgstr "Gurmukhi"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:248
+#: ../libempathy-gtk/totem-subtitle-encoding.c:250
+#: ../libempathy-gtk/totem-subtitle-encoding.c:252
+#: ../libempathy-gtk/totem-subtitle-encoding.c:254
+msgid "Hebrew"
+msgstr "Hebraico"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:257
+msgid "Hebrew Visual"
+msgstr "Hebraico Visual"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:260
+msgid "Hindi"
+msgstr "Hindi"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:263
+msgid "Icelandic"
+msgstr "Islandês"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:266
+#: ../libempathy-gtk/totem-subtitle-encoding.c:268
+#: ../libempathy-gtk/totem-subtitle-encoding.c:270
+msgid "Japanese"
+msgstr "Japonês"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:273
+#: ../libempathy-gtk/totem-subtitle-encoding.c:275
+#: ../libempathy-gtk/totem-subtitle-encoding.c:277
+#: ../libempathy-gtk/totem-subtitle-encoding.c:279
+msgid "Korean"
+msgstr "Coreano"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:282
+msgid "Nordic"
+msgstr "Nórdico"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:285
+msgid "Persian"
+msgstr "Persa"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:288
+#: ../libempathy-gtk/totem-subtitle-encoding.c:290
+msgid "Romanian"
+msgstr "Romeno"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:293
+msgid "South European"
+msgstr "Europeu do Sul"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:296
+msgid "Thai"
+msgstr "Tailandês"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:299
+#: ../libempathy-gtk/totem-subtitle-encoding.c:301
+#: ../libempathy-gtk/totem-subtitle-encoding.c:303
+#: ../libempathy-gtk/totem-subtitle-encoding.c:305
+msgid "Turkish"
+msgstr "Turco"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:308
+#: ../libempathy-gtk/totem-subtitle-encoding.c:310
+#: ../libempathy-gtk/totem-subtitle-encoding.c:312
+#: ../libempathy-gtk/totem-subtitle-encoding.c:314
+#: ../libempathy-gtk/totem-subtitle-encoding.c:316
+msgid "Unicode"
+msgstr "Unicode"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:319
+#: ../libempathy-gtk/totem-subtitle-encoding.c:321
+#: ../libempathy-gtk/totem-subtitle-encoding.c:323
+#: ../libempathy-gtk/totem-subtitle-encoding.c:325
+#: ../libempathy-gtk/totem-subtitle-encoding.c:327
+msgid "Western"
+msgstr "Ocidental"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:330
+#: ../libempathy-gtk/totem-subtitle-encoding.c:332
+#: ../libempathy-gtk/totem-subtitle-encoding.c:334
+msgid "Vietnamese"
+msgstr "Vietnamita"
+
+#.
+#. * vim: sw=2 ts=8 cindent noai bs=2
+#.
+#: ../megaphone/data/GNOME_Megaphone_Applet.schemas.in.h:1
+msgid ""
+"The contact to display in the applet. Empty means no contact is displayed."
+msgstr ""
+"O contato para exibir no miniaplicativo. Vazio significa que nenhum contato "
+"será exibido."
+
+#: ../megaphone/data/GNOME_Megaphone_Applet.schemas.in.h:2
+msgid "The contact's avatar token. Empty means contact has no avatar."
+msgstr ""
+"O símbolo do avatar do contato. Vazio significa que o contato não possui um "
+"avatar."
+
+#: ../megaphone/data/GNOME_Megaphone_Applet.server.in.in.h:1
+msgid "Megaphone"
+msgstr "Megafone"
+
+#: ../megaphone/data/GNOME_Megaphone_Applet.server.in.in.h:2
+#: ../megaphone/src/megaphone-applet.c:419
+msgid "Talk!"
+msgstr "Fale!"
+
+#: ../megaphone/data/GNOME_Megaphone_Applet.xml.h:2
+msgid "_Information"
+msgstr "_Informação"
+
+#: ../nothere/data/GNOME_NotHere_Applet.server.in.in.h:1
+msgid "Presence"
+msgstr "Presença"
+
+#: ../nothere/data/GNOME_NotHere_Applet.server.in.in.h:2
+#: ../nothere/src/nothere-applet.c:89
+msgid "Set your own presence"
+msgstr "Configure sua própria presença"
+
+#: ../src/empathy.c:205
+msgid "- Empathy Instant Messenger"
+msgstr "- Mensageiro Instantâneo Empathy"
+
+#~ msgid "Call from %s"
+#~ msgstr "Chamada de %s"
+
+#~ msgid "_New Message..."
+#~ msgstr "_Nova Mensagem..."
+
+#~ msgid "New message"
+#~ msgstr "Nova mensagem"
+
+#~ msgid "Disable"
+#~ msgstr "Desabilitar"
+
+#~ msgid "Edit Account _Details"
+#~ msgstr "Editar _Detalhes da Conta"
+
+#~ msgid "gtk-cancel"
+#~ msgstr "gtk-cancel"
+
+#~ msgid "gtk-ok"
+#~ msgstr "gtk-ok"
+
+#~ msgid "Instant Messenger"
+#~ msgstr "Mensageiro Instantâneo"
+
+#, fuzzy
+#~ msgid "Contact List - Empathy"
+#~ msgstr "_Ocultar Lista de Contatos"
+
+#, fuzzy
+#~ msgid "<b>Account</b>"
+#~ msgstr "<b>Favoritos:</b>"
+
+#, fuzzy
+#~ msgid "Imendio "
+#~ msgstr "Imendio Gossip"
+
+#~ msgid "Jabber"
+#~ msgstr "Jabber"
+
+#, fuzzy
+#~ msgid ""
+#~ "<small><b><span foreground=\"#555\">Example: user@jabber.org</span></b></"
+#~ "small>"
+#~ msgstr "<span size=\"small\">Por exemplo: usuario@jabber.org</span>"
+
+#, fuzzy
+#~ msgid "Chat Room"
+#~ msgstr "Gossip - Chat"
+
+#, fuzzy
+#~ msgid "Clear List..."
+#~ msgstr "_Limpar"
+
+#, fuzzy
+#~ msgid "Are you sure you want to clear the list?"
+#~ msgstr "Você quer aceitar a solicitação"
+
+#, fuzzy
+#~ msgid "Clear List"
+#~ msgstr "_Limpar"
+
+#~ msgid "Enter status message:"
+#~ msgstr "Digite mensagem de status:"
+
+#, fuzzy
+#~ msgid "Status Message Presets"
+#~ msgstr "mensagens de Status"
+
+#, fuzzy
+#~ msgid "_Add to status message list"
+#~ msgstr "Mensagem de status presente"
+
+#, fuzzy
+#~ msgid "Gossip Instant Messenger"
+#~ msgstr "Mensageiro Instantâneo"
+
+#, fuzzy
+#~ msgid "Joining"
+#~ msgstr "_Juntar-se"
+
+#, fuzzy
+#~ msgid "No affiliation"
+#~ msgstr "Usar sons de notificação"
+
+#, fuzzy
+#~ msgid "An unknown error occurred, check your details are correct."
+#~ msgstr "Erro desconhecido"
+
+#, fuzzy
+#~ msgid "Unavailable"
+#~ msgstr "Disponível"
+
+#, fuzzy
+#~ msgid "An unknown error occurred."
+#~ msgstr "Erro desconhecido"
+
+#, fuzzy
+#~ msgid "Connection refused."
+#~ msgstr "Conectado"
+
+#, fuzzy
+#~ msgid "Connection timed out."
+#~ msgstr "Conectado"
+
+#~ msgid "Home"
+#~ msgstr "Início"
+
+#, fuzzy
+#~ msgid "Registration is required"
+#~ msgstr "Detalhes do Registro"
+
+#, fuzzy
+#~ msgid "Disconnect"
+#~ msgstr "_desconectar"
+
+#~ msgid "Connect"
+#~ msgstr "Conectar"
+
+#, fuzzy
+#~ msgid "Successfully registered your new account settings."
+#~ msgstr "Conta registrada com sucesso"
+
+#, fuzzy
+#~ msgid "Failed to register your new account settings."
+#~ msgstr "Falha no registro da conta"
+
+#, fuzzy
+#~ msgid "Successfully changed your account password."
+#~ msgstr "Por favor, digite sua senha:"
+
+#, fuzzy
+#~ msgid "Failed to change your account password."
+#~ msgstr "Por favor, digite sua senha:"
+
+#, fuzzy
+#~ msgid ""
+#~ "Please enter a new password for this account:\n"
+#~ "%s"
+#~ msgstr ""
+#~ "Por favor, digite um novo nome para o grupo\n"
+#~ "%s"
+
+#, fuzzy
+#~ msgid "Information requested, please wait..."
+#~ msgstr "<b>Informação solicitada, por favor, aguarde...</b>"
+
+#, fuzzy
+#~ msgid "%d subscription request"
+#~ msgid_plural "%d subscription requests"
+#~ msgstr[0] "Requisição de Inscrição"
+#~ msgstr[1] "Requisição de Inscrição"
+
+#, fuzzy
+#~ msgid "Accept"
+#~ msgstr "_Aceitar"
+
+#, fuzzy
+#~ msgid "Do you want to remove this contact from your roster?"
+#~ msgstr ""
+#~ "Você quer remover o contato\n"
+#~ "%s\n"
+#~ "de sua lista de contatos?"
+
+#, fuzzy
+#~ msgid ""
+#~ "Please enter a new name for the group:\n"
+#~ "%s"
+#~ msgstr ""
+#~ "Por favor, digite um novo nome para o grupo\n"
+#~ "%s"
+
+# This needs to be done better, could have group_is_unsorted().
+#~ msgid "Unsorted"
+#~ msgstr "Desorganizado"
+
+#, fuzzy
+#~ msgid "Unknown error occurred during file transfer."
+#~ msgstr "Erro desconhecido"
+
+#, fuzzy
+#~ msgid "%s would like to send you a file."
+#~ msgstr "Eu gostaria de adicioná-lo à minha lista de contatos."
+
+#, fuzzy
+#~ msgid "Someone would like to send you a file."
+#~ msgstr "Eu gostaria de adicioná-lo à minha lista de contatos."
+
+#, fuzzy
+#~ msgid "Select a file"
+#~ msgstr "Selecionar"
+
+#, fuzzy
+#~ msgid "Connecting..."
+#~ msgstr "_Conectar..."
+
+#, fuzzy
+#~ msgid "Retry connection"
+#~ msgstr "Conectar"
+
+#, fuzzy
+#~ msgid "Conversation With"
+#~ msgstr "_Conversa"
+
+#~ msgid "List the available accounts"
+#~ msgstr "Lista de contas disponíveis"
+
+#~ msgid "ACCOUNT-NAME"
+#~ msgstr "NOME-DA-CONTA"
+
+#~ msgid "Available accounts:"
+#~ msgstr "Contas disponíveis:"
+
+#~ msgid "[default]"
+#~ msgstr "[default]"
+
+#~ msgid "There is no account with the name '%s'."
+#~ msgstr "Não existe conta com o nome ' %s'."
+
+#, fuzzy
+#~ msgid "Create"
+#~ msgstr "Chat"
+
+#, fuzzy
+#~ msgid "Browsing for conference rooms, please wait..."
+#~ msgstr "<b>Esperando resposta do servidor...</b>"
+
+#, fuzzy
+#~ msgid "Default"
+#~ msgstr "[default]"
+
+#, fuzzy
+#~ msgid "Chat!"
+#~ msgstr "Chat"
+
+#, fuzzy
+#~ msgid "%s wants to be added to your contact list."
+#~ msgstr "%s será adicionado à sua lista de contatos."
+
+#, fuzzy
+#~ msgid "Someone wants to be added to your contact list."
+#~ msgstr "%s será adicionado à sua lista de contatos."
+
+#, fuzzy
+#~ msgid "New subscription request from %s"
+#~ msgstr "Requisição de Inscrição"
+
+#, fuzzy
+#~ msgid "Do you want to add this person to your contact list?"
+#~ msgstr ""
+#~ "Você quer remover o contato\n"
+#~ "%s\n"
+#~ "de sua lista de contatos?"
+
+#, fuzzy
+#~ msgid "Do you want to add %s to your contact list?"
+#~ msgstr ""
+#~ "Você quer remover o contato\n"
+#~ "%s\n"
+#~ "de sua lista de contatos?"
+
+#, fuzzy
+#~ msgid "Please enter your %s account password"
+#~ msgstr "Por favor, digite sua senha:"
+
+#~ msgid "Remember Password?"
+#~ msgstr "Lembrar senha?"
+
+#, fuzzy
+#~ msgid "Change"
+#~ msgstr "Chat"
+
+#, fuzzy
+#~ msgid "Contact goes online"
+#~ msgstr "%s conectou"
+
+#, fuzzy
+#~ msgid "Do you want to accept this file?"
+#~ msgstr "Você quer aceitar a solicitação"
+
+#, fuzzy
+#~ msgid "File name:"
+#~ msgstr "Nome de usuário:"
+
+#, fuzzy
+#~ msgid "File size:"
+#~ msgstr "Site da Web:"
+
+#~ msgid "_Accept"
+#~ msgstr "_Aceitar"
+
+#~ msgid "_Deny"
+#~ msgstr "_Negar"
+
+#, fuzzy
+#~ msgid "<b>About</b>"
+#~ msgstr "<b>Favoritos:</b>"
+
+#, fuzzy
+#~ msgid "<b>Personal Details</b>"
+#~ msgstr "Detalhes pessoais"
+
+#, fuzzy
+#~ msgid "<b>Subscription</b>"
+#~ msgstr "Inscrever-se"
+
+#, fuzzy
+#~ msgid "<span size=\"smaller\">Example: Mikael or user@server.org</span>"
+#~ msgstr "<span size=\"small\">Por exemplo: usuario@jabber.org</span>"
+
+#, fuzzy
+#~ msgid "Accou_nt:"
+#~ msgstr "Conta Jabber"
+
+#, fuzzy
+#~ msgid "Add Contact"
+#~ msgstr "_Adicionar Contato..."
+
+#, fuzzy
+#~ msgid "Ch_at"
+#~ msgstr "Chat"
+
+#, fuzzy
+#~ msgid "Connect on S_tartup"
+#~ msgstr "Não conectar ao iniciar"
+
+#, fuzzy
+#~ msgid "Contacts"
+#~ msgstr "_Adicionar Contato..."
+
+#~ msgid "Country:"
+#~ msgstr "País:"
+
+#, fuzzy
+#~ msgid "Edit Contact"
+#~ msgstr "_Adicionar Contato..."
+
+#~ msgid "Edit Groups"
+#~ msgstr "Editar Grupos"
+
+#, fuzzy
+#~ msgid "ID:"
+#~ msgstr "JID"
+
+#~ msgid "Name:"
+#~ msgstr "Nome:"
+
+#, fuzzy
+#~ msgid "Personal Details"
+#~ msgstr "_Detalhes pessoais"
+
+#, fuzzy
+#~ msgid "R_egister"
+#~ msgstr "Re_gistrar..."
+
+#, fuzzy
+#~ msgid "This is the name that will be used on your roster for this contact"
+#~ msgstr "Qual o apelido que você quer usar para esse contato?"
+
+#, fuzzy
+#~ msgid "This name will be used to identify you in chat windows"
+#~ msgstr "Este nome será utilizado para identificá-lo em janelas de chat."
+
+#, fuzzy
+#~ msgid ""
+#~ "This name will be used to identify you when new contacts lookup your "
+#~ "details"
+#~ msgstr "Este nome será utilizado para identificá-lo em janelas de chat."
+
+#, fuzzy
+#~ msgid "Which account do you want to use?"
+#~ msgstr "Qual nome de usuário você quer usar?"
+
+#, fuzzy
+#~ msgid "You are not subscribed to this contact."
+#~ msgstr ""
+#~ "Você não está inscrito para receber o estado deste contato. Pressione "
+#~ "Inscrever-se para receber seu estado."
+
+#, fuzzy
+#~ msgid "_Connect"
+#~ msgstr "Conectar"
+
+#, fuzzy
+#~ msgid "_Description:"
+#~ msgstr "descrição"
+
+#~ msgid "_Disconnect"
+#~ msgstr "_desconectar"
+
+#, fuzzy
+#~ msgid ""
+#~ "_Enter the name or contact ID of the person you want to chat to below:"
+#~ msgstr ""
+#~ "Adicione o ID de usuário da pessoa para quem quer enviar mensagem de chat."
+
+#, fuzzy
+#~ msgid "_Group:"
+#~ msgstr "Grupo"
+
+#, fuzzy
+#~ msgid "_Nick Name:"
+#~ msgstr "A_pelido:"
+
+#~ msgid "_Password:"
+#~ msgstr "_Senha:"
+
+#, fuzzy
+#~ msgid "_Retrieve"
+#~ msgstr "_Remover"
+
+#~ msgid "_Subscribe"
+#~ msgstr "In_screver-se"
+
+#, fuzzy
+#~ msgid "_Web site:"
+#~ msgstr "Site da Web:"
+
+#~ msgid "Preset status messages."
+#~ msgstr "Mensagem de status presente."
+
+#, fuzzy
+#~ msgid "Connecting"
+#~ msgstr "Conectar"
+
+#~ msgid "%s will be added to your contact list."
+#~ msgstr "%s será adicionado à sua lista de contatos."
+
+#, fuzzy
+#~ msgid "%s ID of new contact:"
+#~ msgstr "_ID Jabber do novo contato:"
+
+#, fuzzy
+#~ msgid ""
+#~ "Please enter your invitation message to:\n"
+#~ "%s"
+#~ msgstr "Por favor, digite sua senha:"
+
+#~ msgid "Contact Information for %s"
+#~ msgstr "Informação de Contato de %s"
+
+#, fuzzy
+#~ msgid "/Contact Infor_mation"
+#~ msgstr "/_Informação do Contato"
+
+#, fuzzy
+#~ msgid "/Re_name Contact"
+#~ msgstr "/Re_nomear contato"
+
+#, fuzzy
+#~ msgid "/_Edit Groups"
+#~ msgstr "/_Editar grupos"
+
+#, fuzzy
+#~ msgid "/_View Previous Conversations"
+#~ msgstr "_Conversa"
+
+#~ msgid ""
+#~ "Please enter a new nickname for the contact\n"
+#~ "%s"
+#~ msgstr ""
+#~ "Por favor, digite o novo apelido para o contato\n"
+#~ "%s"
+
+#~ msgid "Edit groups for %s"
+#~ msgstr "Editar grupos de %s"
+
+#~ msgid "Conversation Log"
+#~ msgstr "Log da Conversa"
+
+#~ msgid "Registering account"
+#~ msgstr "Registrando conta"
+
+#, fuzzy
+#~ msgid "Respond"
+#~ msgstr "Motivo:"
+
+#, fuzzy
+#~ msgid "Add to _favourites"
+#~ msgstr "_Editar favoritos..."
+
+#, fuzzy
+#~ msgid "Na_me:"
+#~ msgstr "Nome:"
+
+#, fuzzy
+#~ msgid "New Chat Room"
+#~ msgstr "Gossip - Chat"
+
+#~ msgid " "
+#~ msgstr " "
+
+#, fuzzy
+#~ msgid "<b>Information requested, please wait...</b>"
+#~ msgstr "<b>Informação solicitada, por favor, aguarde...</b>"
+
+#, fuzzy
+#~ msgid "<span size=\"smaller\">Example:</span>"
+#~ msgstr "<span size=\"small\">Por exemplo: usuario@jabber.org</span>"
+
+#, fuzzy
+#~ msgid "Chat Rooms..."
+#~ msgstr "Gossip - Chat"
+
+#, fuzzy
+#~ msgid "Connection Details"
+#~ msgstr "Detalhes do Registro"
+
+#, fuzzy
+#~ msgid "Do you already have an account set up on a server?"
+#~ msgstr "Você já tem uma conta em um servidor Jabber?"
+
+#, fuzzy
+#~ msgid "Enter the port used in the connection for this account"
+#~ msgstr ""
+#~ "Por favor, digite o novo apelido para o contato\n"
+#~ "%s"
+
+#, fuzzy
+#~ msgid "Enter the server used in the connection for this account"
+#~ msgstr ""
+#~ "Por favor, digite o novo apelido para o contato\n"
+#~ "%s"
+
+#, fuzzy
+#~ msgid "Finished"
+#~ msgstr "Configuração Terminada"
+
+#~ msgid "Gossip"
+#~ msgstr "Gossip"
+
+#~ msgid ""
+#~ "Gossip is a modern client for the Jabber Instant Messaging system.\n"
+#~ "\n"
+#~ "This assistant will help you configure Gossip and connect you to your "
+#~ "favorite Jabber server.\n"
+#~ "\n"
+#~ "To get started, just click \"Forward\"."
+#~ msgstr ""
+#~ "Gossip é um moderno cliente para o sistema de Mensagens Instantâneas "
+#~ "Jabber.\n"
+#~ "\n"
+#~ "Este assistente o ajudará a configurar o gossip e conectá-lo ao seu "
+#~ "servidor Jabber favorito.\n"
+#~ "\n"
+#~ "Para iniciar, clique em \"Proseguir\"."
+
+#~ msgid ""
+#~ "In order to subscribe to presence notifications from the user, a request "
+#~ "will be sent. Until this request is approved, the user will always be "
+#~ "shown as \"Offline\" in your contact list."
+#~ msgstr ""
+#~ "Para que possa receber notificações de presença do usuário uma "
+#~ "solicitação será enviada. Enquanto a solicitação está sendo aprovada, o "
+#~ "usuário sempre aparecerá como \"Offline\" em sua lista de contatos."
+
+#~ msgid "In which group do you want to place this contact?"
+#~ msgstr "Em qual grupo você quer adicionar esse contato?"
+
+#~ msgid "Jabber ID:"
+#~ msgstr "ID Jabber:"
+
+#, fuzzy
+#~ msgid "Press Subscribe to request to receive their status"
+#~ msgstr ""
+#~ "Você não está inscrito para receber o estado deste contato. Pressione "
+#~ "Inscrever-se para receber seu estado."
+
+#, fuzzy
+#~ msgid "Registering Account"
+#~ msgstr "Registrando conta"
+
+#, fuzzy
+#~ msgid "Resource:"
+#~ msgstr "_Recursos:"
+
+#~ msgid "Sending request"
+#~ msgstr "enviando solicitação"
+
+#, fuzzy
+#~ msgid "Web Site:"
+#~ msgstr "Site da Web:"
+
+#~ msgid "Welcome to Gossip"
+#~ msgstr "Bem vindo ao Gossip"
+
+#~ msgid "What instant messaging system does the contact use?"
+#~ msgstr "Qual o sistema de mensagens instantâneas o contato usa?"
+
+#~ msgid "What is your name?"
+#~ msgstr "Como você se chama?"
+
+#, fuzzy
+#~ msgid "What password do you want to use?"
+#~ msgstr "Qual servidor você quer usar?"
+
+#~ msgid "What username do you use?"
+#~ msgstr "Qual nome de usuário você usa?"
+
+#~ msgid "What username do you want to use?"
+#~ msgstr "Qual nome de usuário você quer usar?"
+
+#, fuzzy
+#~ msgid "Which account do you want to add this contact to?"
+#~ msgstr "Em qual grupo você quer adicionar esse contato?"
+
+#, fuzzy
+#~ msgid ""
+#~ "You can change your account settings later by selecting the Edit-"
+#~ ">Accounts menu item."
+#~ msgstr ""
+#~ "Gossip já está configurado corretamente em seu sistema.\n"
+#~ "Você pode alterar as configurações de sua conta selecionando o menuChat-"
+#~ ">Contato..."
+
+#, fuzzy
+#~ msgid "Your Account"
+#~ msgstr "Conta Jabber"
+
+#~ msgid "Your Identity"
+#~ msgstr "Sua Identificação"
+
+#, fuzzy
+#~ msgid "_Group Chat"
+#~ msgstr "Gossip - Chat"
+
+#, fuzzy
+#~ msgid "_No"
+#~ msgstr "Não"
+
+#~ msgid "_Search..."
+#~ msgstr "_Procurar..."
+
+#, fuzzy
+#~ msgid "_Yes"
+#~ msgstr "Sim"
+
+#~ msgid "Be silent when away"
+#~ msgstr "Ficar em silêncio quando longe"
+
+#~ msgid "Be silent when busy"
+#~ msgstr "Ficar em silêncio quando ocupado"
+
+#~ msgid "Height of main window"
+#~ msgstr "Altura da janela principal"
+
+#~ msgid "The X position of the main window."
+#~ msgstr "A posição X da janela principal."
+
+#~ msgid "The Y position of the main window."
+#~ msgstr "A posição Y da janela principal."
+
+#~ msgid "The width of the main window."
+#~ msgstr "A largura da janela principal."
+
+#~ msgid "Width of the main window"
+#~ msgstr "Largura da janela principal"
+
+#~ msgid "X position of main window"
+#~ msgstr "Posição X da janela principal"
+
+#~ msgid "Y position of main window"
+#~ msgstr "Posição Y da janela principal."
+
+#~ msgid "Gossip, Instant Messaging Client"
+#~ msgstr "Gossip, Cliente de Mensagens Instantâneas"
+
+#, fuzzy
+#~ msgid "Close this chat window"
+#~ msgstr "Ocultar a janela principal."
+
+#, fuzzy
+#~ msgid "Requested Information"
+#~ msgstr "Informação da Cont_a"
+
+#, fuzzy
+#~ msgid "%s has gone offline"
+#~ msgstr "%s desconectou"
+
+#~ msgid "Available..."
+#~ msgstr "Disponível..."
+
+#~ msgid "Busy..."
+#~ msgstr "Ocupado..."
+
+#~ msgid "Away..."
+#~ msgstr "Longe..."
+
+#~ msgid "Contact _Information"
+#~ msgstr "_Informação do Contato"
+
+#, fuzzy
+#~ msgid "<b>Sound</b>"
+#~ msgstr "<b>Descrição</b>"
+
+#, fuzzy
+#~ msgid "Gossip - Accounts"
+#~ msgstr "Gossip - Chat"
+
+#, fuzzy
+#~ msgid "Join _Group Chat..."
+#~ msgstr "_Juntar-se a Grupo de Chat..."
+
+#, fuzzy
+#~ msgid "Por_t:"
+#~ msgstr "P_orta:"
+
+#, fuzzy
+#~ msgid "Requested information."
+#~ msgstr "Informação do Cliente"
+
+#, fuzzy
+#~ msgid "Requesting contact information, please wait..."
+#~ msgstr "Solicitando detalhes pessoais, por favor aguarde..."
+
+#, fuzzy
+#~ msgid "Could not open connection"
+#~ msgstr "Impossível conectar"
+
+#, fuzzy
+#~ msgid "Could not find the server you wanted to use"
+#~ msgstr "Qual servidor você quer usar?"
+
+#, fuzzy
+#~ msgid "Connection to the server failed."
+#~ msgstr "<b>Conectar ao servidor</b>"
+
+#~ msgid "Written by:"
+#~ msgstr "Escrito por:"
+
+#~ msgid "Artwork by:"
+#~ msgstr "Arte de:"
+
+#~ msgid "Translated by:"
+#~ msgstr "Traduzido por:"
+
+#, fuzzy
+#~ msgid "Account ID"
+#~ msgstr "Informação da Cont_a"
+
+#~ msgid "%sChat - %s"
+#~ msgstr "%sChat - %s"
+
+#~ msgid "/Show _Log"
+#~ msgstr "/Mostrar _Log"
+
+#~ msgid "View Lo_g"
+#~ msgstr "Ver Lo_g"
+
+#, fuzzy
+#~ msgid "Gossip - Group Chat"
+#~ msgstr "Gossip - Juntar-se ao Grupo de Chat"
+
+#, fuzzy
+#~ msgid "Gossip - Add contact"
+#~ msgstr "Adicionar contato"
+
+#, fuzzy
+#~ msgid "Gossip - Contact Information"
+#~ msgstr "_Informação do Contato"
+
+#, fuzzy
+#~ msgid "Gossip - Edit Groups"
+#~ msgstr "Gossip - Editar Grupos de Chats"
+
+#, fuzzy
+#~ msgid "Gossip - New Account"
+#~ msgstr "Gossip - Chat"
+
+#, fuzzy
+#~ msgid "Gossip - New Message"
+#~ msgstr "Gossip - Mensagem Enviada"
+
+#, fuzzy
+#~ msgid "Gossip - Personal Details"
+#~ msgstr "Detalhes pessoais"
+
+#, fuzzy
+#~ msgid "Gossip - Preferences"
+#~ msgstr "Preferências"
+
+#, fuzzy
+#~ msgid "Gossip - Status Message"
+#~ msgstr "Gossip - Mensagem Enviada"
+
+#, fuzzy
+#~ msgid "Personal Details Saved!"
+#~ msgstr "Detalhes pessoais"
+
+#~ msgid "What request message do you want to send to %s?"
+#~ msgstr "Qual mensagem de solicitação você quer mandar para %s?"
+
+#~ msgid "Make sure that your account information is correct."
+#~ msgstr "Tenha certeza que as informações de sua conta estão corretas."
+
+#~ msgid "%s wants to be notified of your status."
+#~ msgstr "%s quer ser notificado de seu status."
+
+#~ msgid "You were disconnected from the server. Do you want to reconnect?"
+#~ msgstr "Você foi desconectado do servidor. Você quer reconectar?"
+
+#~ msgid ""
+#~ "Make sure that your account information is correct. The server may also "
+#~ "currently be unavailable."
+#~ msgstr ""
+#~ "Tenha certeza que as informações de sua conta estão corretas. O servidor "
+#~ "ainda pode estar indisponível no momento."
+
+#~ msgid "Edit List..."
+#~ msgstr "Editar Lista..."
+
+#~ msgid "An error occurred when chatting with %s."
+#~ msgstr "Ocorreu um erro enquanto conversava com %s."
+
+#~ msgid "Details:"
+#~ msgstr "Detalhes:"
+
+#~ msgid "An error occurred when chatting in the group chat %s."
+#~ msgstr "Ocorreu um erro enquanto conversava no grupo de chat %s."
+
+#~ msgid "Unable to enter the group chat %s."
+#~ msgstr "Impossível entrar no grupo de chat %s."
+
+#~ msgid "Gossip will now try to use your account:"
+#~ msgstr "Gossip irá, agora, tentar usar sua conta:"
+
+#~ msgid "Gossip will now try to register the account:"
+#~ msgstr "Gossip irá, agora, tentar registrar a conta:"
+
+#~ msgid "Saving personal details, please wait..."
+#~ msgstr "Salvando detalhes pessoais, por favor aguarde..."
+
+#~ msgid "*"
+#~ msgstr "*"
+
+#~ msgid "From:"
+#~ msgstr "De:"
+
+#~ msgid "Gossip - Received Message"
+#~ msgstr "Gossip - Mensagem Recebida"
+
+#~ msgid "In reply to:"
+#~ msgstr "Em resposta a:"
+
+#~ msgid "To:"
+#~ msgstr "Para:"
+
+#~ msgid "_Reply..."
+#~ msgstr "_Responder..."
+
+#~ msgid "_Send"
+#~ msgstr "_Enviar"
+
+#~ msgid "C_onnect"
+#~ msgstr "C_onectar"
+
+#~ msgid " "
+#~ msgstr " "
+
+#~ msgid "<b>Available chat rooms</b>"
+#~ msgstr "<b>Salas de chat disponíveis</b>"
+
+#~ msgid "<b>Chat room information</b>"
+#~ msgstr "<b>Informação da sala de chat</b>"
+
+#~ msgid "Imendio Gossip - Group Chat"
+#~ msgstr "Imendio Gossip - Grupo de Chat"
+
+#~ msgid "N_ickname:"
+#~ msgstr "Apel_ido:"
+
+#~ msgid ""
+#~ "Pick a favorite, or enter nickname, server name, and the name of the chat "
+#~ "room to enter."
+#~ msgstr ""
+#~ "Pegue um dos favoritos ou digite apelido, servidor e o nome da sala de "
+#~ "chat que quer entrar."
+
+#~ msgid "R_emove"
+#~ msgstr "R_emover"
+
+#~ msgid "_Add"
+#~ msgstr "_Adicionar"
+
+#~ msgid " "
+#~ msgstr " "
+
+#~ msgid ""
+#~ "<b>Finding the best server...</b>\n"
+#~ "This will take a few moments, please wait."
+#~ msgstr ""
+#~ "<b>Procurando o melhor servidor...</b>\n"
+#~ "Isto levará alguns momentos. Por favor, espere."
+
+#~ msgid "<b>Personal information</b>"
+#~ msgstr "<b>Informação pessoal</b>"
+
+#~ msgid "<b>Preset status messages</b>"
+#~ msgstr "<b>Mensagem de status presente</b>"
+
+#~ msgid "<i>Information not available</i>"
+#~ msgstr "<i>Informação não disponível</i>"
+
+#~ msgid "Add Another Account"
+#~ msgstr "Adicionar outra Conta"
+
+#~ msgid "Choose a Server"
+#~ msgstr "escolha um servidor"
+
+#~ msgid "Choose from list:"
+#~ msgstr "Escolha da lista:"
+
+#~ msgid "Discover Services"
+#~ msgstr "Descubra Serviços"
+
+#~ msgid "Information about ..."
+#~ msgstr "Informação sobre..."
+
+#~ msgid "Jabber.com"
+#~ msgstr "Jabber.com"
+
+#~ msgid "Jabber.org"
+#~ msgstr "Jabber.org"
+
+#~ msgid "On what server do you have a Jabber account?"
+#~ msgstr "Em qual servidor você tem uma conta Jabber?"
+
+#~ msgid "Registering Service"
+#~ msgstr "Registrando Serviço"
+
+#~ msgid "Sever Details"
+#~ msgstr "Detalhes do Servidor"
+
+#~ msgid "Sound"
+#~ msgstr "Som"
+
+#~ msgid ""
+#~ "This wizard will allow you to configure your account settings for another "
+#~ "protocol. "
+#~ msgstr ""
+#~ "Este assistente o ajudará a configurar sua conta para outro protocolo."
+
+#~ msgid "Use a different server"
+#~ msgstr "User um servidor diferente"
+
+#~ msgid "What request message do you want to send to ...?"
+#~ msgstr "Qual mensagem de solicitação você quer enviar para ... ?"
+
+#~ msgid "Which protocol would you like to set up? "
+#~ msgstr "Qual protocolo você gostaria de configurar?"
+
+#~ msgid "_AIM"
+#~ msgstr "_AIM"
+
+#~ msgid "_ICQ"
+#~ msgstr "_ICQ"
+
+#~ msgid "_MSN"
+#~ msgstr "_MSN"
+
+#~ msgid "_Yahoo!"
+#~ msgstr "_Yahoo!"
diff --git a/gnome-2-22/po/ru.po b/gnome-2-22/po/ru.po
new file mode 100644
index 000000000..f4ca78371
--- /dev/null
+++ b/gnome-2-22/po/ru.po
@@ -0,0 +1,2335 @@
+# This is gossip translation file.
+# Copyright (C) 2003 Free Software Foundation, Inc.
+# Grigory Bakunov <bobuk@justos.org>, 2003, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gossip 0.5\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-05-15 23:46+0200\n"
+"PO-Revision-Date: 2006-07-08 23:45+0300\n"
+"Last-Translator: Valek Filippov <frob at df dot ru>\n"
+"Language-Team: Russian <gnome-cyr@gnome.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../data/empathy.desktop.in.h:1
+#, fuzzy
+msgid "Empathy Instant Messenger"
+msgstr "Обмен сообщениями"
+
+#: ../data/empathy.desktop.in.h:2
+msgid "Instant Messenger"
+msgstr "Обмен сообщениями"
+
+#: ../data/empathy.schemas.in.h:1
+msgid "Always open a separate chat window for new chats."
+msgstr "Всегда открывать новую беседу в новом окне."
+
+#: ../data/empathy.schemas.in.h:2
+msgid "Chat window theme"
+msgstr "Тема окна беседы"
+
+#: ../data/empathy.schemas.in.h:3
+msgid ""
+"Comma separated list of spell checker languages to use (e.g. en, fr, nl)."
+msgstr ""
+"Список языков, используемых при проверке орфографии, разделённых запятыми "
+"(например «en, fr, ru»)."
+
+#: ../data/empathy.schemas.in.h:4
+#, fuzzy
+msgid "Compact contact list"
+msgstr "_Показать список собеседников"
+
+#: ../data/empathy.schemas.in.h:5
+msgid "Contact list sort criterium"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:6
+msgid "Default directory to select an avatar image from"
+msgstr "Каталог, используемый для выбора изображений аватаров"
+
+#: ../data/empathy.schemas.in.h:7
+msgid "Enable popup when contact is available"
+msgstr "Показывать всплывающее окно когда собеседник доступен"
+
+#: ../data/empathy.schemas.in.h:8
+msgid "Enable sound when away"
+msgstr "Включить звуки в состоянии «_ушёл»"
+
+#: ../data/empathy.schemas.in.h:9
+msgid "Enable sound when busy"
+msgstr "Включить звуки в состоянии «_занят»"
+
+#: ../data/empathy.schemas.in.h:10
+#, fuzzy
+msgid "Enable spell checker"
+msgstr "Включить проверку орфографии"
+
+#: ../data/empathy.schemas.in.h:11
+msgid "Hide main window"
+msgstr "Скрывать главное окно"
+
+#: ../data/empathy.schemas.in.h:12
+msgid "Hide the main window."
+msgstr "Скрывать главное окно."
+
+#: ../data/empathy.schemas.in.h:13
+msgid "Open new chats in separate windows"
+msgstr "Открывать новые беседы в новом окне"
+
+#: ../data/empathy.schemas.in.h:14
+msgid "Show avatars"
+msgstr "Показывать аватары"
+
+#: ../data/empathy.schemas.in.h:15
+#, fuzzy
+msgid "Show hint about closing the main window"
+msgstr "Высота главного окна."
+
+#: ../data/empathy.schemas.in.h:16
+msgid "Show offline contacts"
+msgstr "Показывать отсутствующих собеседников"
+
+#: ../data/empathy.schemas.in.h:17
+msgid "Spell checking languages"
+msgstr "Языки для проверки орфографии"
+
+#: ../data/empathy.schemas.in.h:18
+msgid "The last directory that an avatar image was chosen from."
+msgstr "Последний каталог, которого выбирались изображения аватаров."
+
+#: ../data/empathy.schemas.in.h:19
+msgid "The theme that is used to display the conversation in chat windows."
+msgstr "Эта тема используется для отображения диалога в окне беседы."
+
+#: ../data/empathy.schemas.in.h:20
+msgid "Use graphical smileys"
+msgstr "Использовать графические улыбки"
+
+#: ../data/empathy.schemas.in.h:21
+msgid "Use notification sounds"
+msgstr "Использовать звуки"
+
+#: ../data/empathy.schemas.in.h:22
+#, fuzzy
+msgid "Use theme for chat rooms"
+msgstr "Войти в комнату"
+
+#: ../data/empathy.schemas.in.h:23
+msgid ""
+"Whether or not to check words typed against the languages you want to check "
+"with."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:24
+msgid ""
+"Whether or not to convert smileys into graphical images in conversations."
+msgstr ""
+"Конвертировать ли текстовые улыбочки (смайлы) в разговорах в графические "
+"изображения."
+
+#: ../data/empathy.schemas.in.h:25
+msgid "Whether or not to play a sound when messages arrive."
+msgstr "Проигрывать звук при получении сообщения или нет."
+
+#: ../data/empathy.schemas.in.h:26
+msgid "Whether or not to play sounds when away."
+msgstr "Воспроизводить звуки в состоянии «ушёл» или нет."
+
+#: ../data/empathy.schemas.in.h:27
+msgid "Whether or not to play sounds when busy."
+msgstr "Воспроизводить звуки в состоянии «занят» или нет."
+
+#: ../data/empathy.schemas.in.h:28
+msgid "Whether or not to show a popup when a contact becomes available."
+msgstr "Показывать ли всплывающее окно при появлении собеседника."
+
+#: ../data/empathy.schemas.in.h:29
+msgid ""
+"Whether or not to show avatars for contacts in the contact list and chat "
+"windows."
+msgstr "Показывать ли аватары собеседников в списке или окнах разговоров."
+
+#: ../data/empathy.schemas.in.h:30
+msgid "Whether or not to show contacts that are offline in the contact list."
+msgstr "Показывать недоступных в сети собеседников в списке или нет."
+
+#: ../data/empathy.schemas.in.h:31
+msgid ""
+"Whether or not to show the message dialog about closing the main window with "
+"the 'x' button in the title bar."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:32
+#, fuzzy
+msgid "Whether to show the contact list in compact mode or not."
+msgstr "Показывать ли аватары собеседников в списке или окнах разговоров."
+
+#: ../data/empathy.schemas.in.h:33
+msgid "Whether to use the theme for chat rooms or not."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:34
+msgid ""
+"Which criterium to use when sorting the contact list. Default is to use sort "
+"by the contact's name with the value \"name\". A value of \"state\" will "
+"sort the contact list by state."
+msgstr ""
+
+#: ../libempathy/gossip-contact.c:654 ../libempathy/gossip-presence.c:184
+#: ../libempathy/gossip-presence.c:283
+msgid "Offline"
+msgstr "Не в сети"
+
+#: ../libempathy/gossip-presence.c:274
+msgid "Available"
+msgstr "Доступен"
+
+#: ../libempathy/gossip-presence.c:276
+msgid "Busy"
+msgstr "Занят"
+
+#: ../libempathy/gossip-presence.c:279
+msgid "Away"
+msgstr "Ушёл"
+
+#: ../libempathy-gtk/empathy-main-window.c:254
+#, fuzzy
+msgid "Show and edit accounts"
+msgstr "_Показать список собеседников"
+
+#: ../libempathy-gtk/empathy-main-window.c:456
+msgid "Group"
+msgstr "Группа"
+
+#: ../libempathy-gtk/empathy-main-window.c:477
+#, fuzzy
+msgid "Contact"
+msgstr "Собеседники"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:1
+#, fuzzy
+msgid "Contact List - Empathy"
+msgstr "С_крыть список собеседников"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:2
+#, fuzzy
+msgid "Context"
+msgstr "_Содержание"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:3
+#, fuzzy
+msgid "Join _Favorites"
+msgstr "Подключить _близких"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:4
+#: ../libempathy-gtk/gossip-chat.glade.h:10
+msgid "Join _New..."
+msgstr "Присоединиться _к..."
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:5
+#, fuzzy
+msgid "Manage Favorites..."
+msgstr "Подключить _близких"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:6
+msgid "Show _Offline Contacts"
+msgstr "Показывать _отсутствующих"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:7
+#, fuzzy
+msgid "_About"
+msgstr "_Учётные записи"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:8
+msgid "_Accounts"
+msgstr "_Учётные записи"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:9
+#: ../libempathy-gtk/gossip-chat.glade.h:15
+msgid "_Add Contact..."
+msgstr "_Добавить собеседника..."
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:10
+#: ../libempathy-gtk/gossip-contact-list.c:298
+msgid "_Chat"
+msgstr "_Разговор"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:11
+msgid "_Contents"
+msgstr "_Содержание"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:12
+#: ../libempathy-gtk/gossip-chat.glade.h:21
+#: ../libempathy-gtk/gossip-contact-list.c:310
+#, fuzzy
+msgid "_Edit"
+msgstr "Правка"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:13
+msgid "_Help"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:14
+#: ../libempathy-gtk/empathy-status-icon.glade.h:2
+msgid "_New Message..."
+msgstr "_Отправить сообщение..."
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:15
+msgid "_Personal Information"
+msgstr "_Личная информация"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:16
+msgid "_Preferences"
+msgstr "_Изменить настройки"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:17
+#: ../libempathy-gtk/empathy-status-icon.glade.h:3
+msgid "_Quit"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:18
+#: ../libempathy-gtk/gossip-chat.glade.h:25
+msgid "_Room"
+msgstr "_Комната"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:19
+#: ../libempathy-gtk/gossip-chat.glade.h:28
+#: ../libempathy-gtk/gossip-contact-list.c:326
+msgid "_View Previous Conversations"
+msgstr "Просмотр предыдущих _бесед"
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:1
+msgid "Status"
+msgstr "Состояние"
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:4
+msgid "_Show Contact List"
+msgstr "_Показать список собеседников"
+
+#: ../libempathy-gtk/gossip-about-dialog.c:63
+#, fuzzy
+msgid ""
+"Empathy is free software; you can redistribute it and/or modify it under the "
+"terms of the GNU General Public License as published by the Free Software "
+"Foundation; either version 2 of the License, or (at your option) any later "
+"version."
+msgstr ""
+"Gossip -- свободная программа, вы можете распространять и/или модифицировать "
+"её на условиях указаных в GNU General Public License опубликованой Free "
+"Software Foundation; либо в версии 2 или (по вашему выбору) любой более "
+"поздней версии."
+
+#: ../libempathy-gtk/gossip-about-dialog.c:67
+#, fuzzy
+msgid ""
+"Empathy is distributed in the hope that it will be useful, but WITHOUT ANY "
+"WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS "
+"FOR A PARTICULAR PURPOSE. See the GNU General Public License for more "
+"details."
+msgstr ""
+"Программа Gossip распространяется в рассчёте на то, что будет полезной, "
+"однако БЕЗ КАКИХ ЛИБО ГАРАНТИЙ в том числе подразумеваемых гарантий "
+"ПОЛЕЗНОСТИ или ПРИГОДНОСТИ ДЛЯ КАКИХ_ЛИБО ЦЕЛЕЙ. Смотрите GNU General Public "
+"License."
+
+#: ../libempathy-gtk/gossip-about-dialog.c:71
+#, fuzzy
+msgid ""
+"You should have received a copy of the GNU General Public License along with "
+"Empathy; if not, write to the Free Software Foundation, Inc., 51 Franklin "
+"Street, Fifth Floor, Boston, MA 02110-130159 USA"
+msgstr ""
+"Вы должны были получить копию GNU General Public License вместе с программой "
+"Gossip. Если этого не произошло, напишите в Фонд Свободного Программного "
+"Обеспечения: Free Software Foundation, Inc., 59 Temple Place, Suite 330, "
+"Boston, MA 02111-1307 USA"
+
+#: ../libempathy-gtk/gossip-about-dialog.c:99
+msgid "An Instant Messaging client for GNOME"
+msgstr "Программа быстрогообмена сообщениями для GNOME"
+
+#: ../libempathy-gtk/gossip-about-dialog.c:105
+msgid "translator-credits"
+msgstr ""
+"Grigory Bakunov\n"
+"Dan Korostelev\n"
+"Mikhail Zabaluev\n"
+"Валёк Филиппов"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:224
+#, fuzzy
+msgid "Disable"
+msgstr "Доступен"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:227
+#, fuzzy
+msgid "Enable"
+msgstr "Пример"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:261
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:3
+#, fuzzy
+msgid "<b>No Account Selected</b>"
+msgstr "<b>Учётная запись</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:263
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to start configuring.\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want "
+"to configure in the list on the left."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:272
+#, fuzzy
+msgid "<b>No Accounts Configured</b>"
+msgstr "<b>Учётная запись</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:274
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to start configuring."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:362
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:6
+msgid "Accounts"
+msgstr "Учётные записи"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:857
+#, c-format
+msgid ""
+"You are about to remove your %s account!\n"
+"Are you sure you want to proceed?"
+msgstr "Вы удаляете свою учётную запись «%s»! Продолжить?"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:863
+msgid ""
+"Any associated conversations and chat rooms will NOT be removed if you "
+"decide to proceed.\n"
+"\n"
+"Should you decide to add the account back at a later time, they will still "
+"be available."
+msgstr ""
+"Любые связанные беседы и комнаты НЕ БУДУТ удалены, если вы продолжите.\n"
+"Если вы решите восстановить эту учётную запись позднее, то они снова станут "
+"доступны."
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:1
+msgid "<b>Account</b>"
+msgstr "<b>Учётная запись</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:2
+#, fuzzy
+msgid "<b>New Account</b>"
+msgstr "<b>Учётная запись</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:4
+#, fuzzy
+msgid "<b>Settings</b>"
+msgstr "<b>Состояние</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:5
+msgid "A unique name for this account to identify it personally to you."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:7
+#, fuzzy
+msgid "Cr_eate"
+msgstr "Разговор!"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:8
+msgid "Imendio "
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:9
+msgid "Jabber"
+msgstr "Jabber"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:10
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to started configuring.\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want "
+"to configure in the list on the left."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:13
+msgid "_Name:"
+msgstr "_Имя:"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:14
+#, fuzzy
+msgid "_Type:"
+msgstr "_Тема:"
+
+#: ../libempathy-gtk/gossip-account-widget-generic.c:144
+#: ../libempathy-gtk/gossip-account-widget-generic.c:186
+#, c-format
+msgid "%s:"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:1
+#, fuzzy
+msgid ""
+"<small><b><span foreground=\"#555\">Example: user@jabber.org</span></b></"
+"small>"
+msgstr "<span size=\"smaller\">Пример: user@jabber.org</span>"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:2
+msgid "Forget password and clear the entry."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:3
+msgid "Login I_D:"
+msgstr "_Идентификатор:"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:4
+msgid "Pass_word:"
+msgstr "_Пароль:"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:5
+msgid "Reso_urce:"
+msgstr "Ресурс:"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:6
+#, fuzzy
+msgid "Use encryption (SS_L)"
+msgstr "Использовать _шифрование (SSL)"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:7
+msgid "_Port:"
+msgstr "Порт:"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:8
+msgid "_Server:"
+msgstr "_Сервер:"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:9
+msgid "jabber account settings"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.c:314
+msgid "Disconnected"
+msgstr "Отсоединён"
+
+#: ../libempathy-gtk/gossip-chat.c:858
+msgid "Insert Smiley"
+msgstr "Вставить улыбочку"
+
+#: ../libempathy-gtk/gossip-chat.c:906
+msgid "_Check Word Spelling..."
+msgstr "П_роверить правописание слова..."
+
+#: ../libempathy-gtk/gossip-chat.c:1244
+msgid "Connected"
+msgstr "Соединён"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:1
+#, fuzzy
+msgid "C_lear"
+msgstr "О_чистить"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:2
+msgid "Change _Topic..."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:3
+msgid "Chat"
+msgstr "Разговор"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:4
+msgid "Contact Infor_mation"
+msgstr "Информация о собеседнике"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:5
+#, fuzzy
+msgid "Cu_t"
+msgstr "_Разговор"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:6
+#, fuzzy
+msgid "In_vite..."
+msgstr "Приглас_ить"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:7
+msgid "Insert _Smiley"
+msgstr "Вставить _улыбочку"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:8
+#, fuzzy
+msgid "Invitation _message:"
+msgstr "Введите сообщение о состоянии:"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:9
+#, fuzzy
+msgid "Invite"
+msgstr "Приглас_ить"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:11
+msgid "Move Tab _Left"
+msgstr "Передвинуть вкладку в_лево"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:12
+msgid "Move Tab _Right"
+msgstr "Передвинуть вкладку в_право"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:13
+msgid "Select who would you like to invite:"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:14
+msgid "You have been invited to join a chat conference."
+msgstr "Вас пригласили принять участие в конференции."
+
+#: ../libempathy-gtk/gossip-chat.glade.h:16
+msgid "_Add To Favorites"
+msgstr "Добавить к _предпочитаемым"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:17
+msgid "_Close"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:18
+msgid "_Conversation"
+msgstr "_Разговор"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:19
+msgid "_Copy"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:20
+msgid "_Detach Tab"
+msgstr "_Отсоединить вкладку"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:22
+msgid "_Next Tab"
+msgstr "На след_ующую вкладку"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:23
+#, fuzzy
+msgid "_Paste"
+msgstr "Дата"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:24
+msgid "_Previous Tab"
+msgstr "На пред_ыдущую вкладку"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:26
+msgid "_Show Contacts"
+msgstr "_Показать список собеседников"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:27
+msgid "_Tabs"
+msgstr "В_кладки"
+
+#: ../libempathy-gtk/gossip-chat-view.c:544
+msgid "_Copy Link Address"
+msgstr "_Копировать адрес ссылки"
+
+#: ../libempathy-gtk/gossip-chat-view.c:552
+msgid "_Open Link"
+msgstr "_Открыть ссылку"
+
+#: ../libempathy-gtk/gossip-chat-view.c:889
+msgid "%A %d %B %Y"
+msgstr "%A %d %B %Y"
+
+#: ../libempathy-gtk/gossip-chat-window.c:685
+#: ../libempathy-gtk/gossip-chat-window.c:715
+#, fuzzy
+msgid "New Message"
+msgid_plural "New Messages"
+msgstr[0] "Новое сообщение"
+msgstr[1] "Новое сообщение"
+
+#: ../libempathy-gtk/gossip-chat-window.c:691
+msgid "Chat Room"
+msgstr "Комната для беседы"
+
+#: ../libempathy-gtk/gossip-chat-window.c:696
+#: ../libempathy-gtk/gossip-chat-window.c:719
+#, fuzzy, c-format
+msgid "Conversation"
+msgid_plural "Conversations (%d)"
+msgstr[0] "_Разговор"
+msgstr[1] "_Разговор"
+
+#: ../libempathy-gtk/gossip-chat-window.c:1295
+msgid "Typing a message."
+msgstr "Набирает сообщение."
+
+#: ../libempathy-gtk/gossip-contact-list.c:290
+#, fuzzy
+msgid "_Contact"
+msgstr "Собеседники"
+
+#: ../libempathy-gtk/gossip-contact-list.c:294
+#, fuzzy
+msgid "_Group"
+msgstr "Группа"
+
+#: ../libempathy-gtk/gossip-contact-list.c:298
+#, fuzzy
+msgid "Chat with contact"
+msgstr "Добавление собеседника"
+
+#: ../libempathy-gtk/gossip-contact-list.c:302
+#, fuzzy
+msgid "Infor_mation"
+msgstr "Информация о собеседнике"
+
+#: ../libempathy-gtk/gossip-contact-list.c:302
+#, fuzzy
+msgid "View contact information"
+msgstr "Информация о собеседнике"
+
+#: ../libempathy-gtk/gossip-contact-list.c:306
+#, fuzzy
+msgid "Re_name"
+msgstr "/Пе_реименовать группу"
+
+#: ../libempathy-gtk/gossip-contact-list.c:306
+#, fuzzy
+msgid "Rename"
+msgstr "Имя файла:"
+
+#: ../libempathy-gtk/gossip-contact-list.c:310
+#, fuzzy
+msgid "Edit the groups and name for this contact"
+msgstr "Введите имя для этой учётной записи"
+
+#: ../libempathy-gtk/gossip-contact-list.c:314
+#, fuzzy
+msgid "_Remove"
+msgstr "/_Удалить собеседника"
+
+#: ../libempathy-gtk/gossip-contact-list.c:314
+#, fuzzy
+msgid "Remove contact"
+msgstr "/_Удалить собеседника"
+
+#: ../libempathy-gtk/gossip-contact-list.c:318
+#, fuzzy
+msgid "_Invite to Chat Room"
+msgstr "/Пригласить в _комнату"
+
+#: ../libempathy-gtk/gossip-contact-list.c:318
+msgid "Invite to a currently open chat room"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-contact-list.c:322
+#, fuzzy
+msgid "_Send File..."
+msgstr "/Послать _файл..."
+
+#: ../libempathy-gtk/gossip-contact-list.c:322
+#, fuzzy
+msgid "Send a file"
+msgstr "Выберите файл"
+
+#: ../libempathy-gtk/gossip-contact-list.c:326
+#, fuzzy
+msgid "View previous conversations with this contact"
+msgstr "Посмотреть предыдущие беседы"
+
+#: ../libempathy-gtk/gossip-preferences.c:250
+msgid "Language"
+msgstr "Язык"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:1
+msgid "<b>Appearance</b>"
+msgstr "<b>Внешний вид</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:2
+msgid "<b>Audio</b>"
+msgstr "<b>Звук</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:3
+msgid "<b>Behaviour</b>"
+msgstr "<b>Поведение</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:4
+#, fuzzy
+msgid "<b>Contact List</b>"
+msgstr "<b>Состояние</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:5
+msgid "<b>Languages</b>"
+msgstr "<b>Языки</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:6
+#, fuzzy
+msgid "<b>Options</b>"
+msgstr "<b>Соединение</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:7
+msgid "<b>Visual</b>"
+msgstr "<b>Вид</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:8
+msgid ""
+"<small>The list of languages reflects only the languages for which you have "
+"a dictionary installed.</small>"
+msgstr ""
+"<small>В этом списке отображены только языки, для которых установлены "
+"словари.</small>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:9
+msgid "Avatars are user chosen images shown in the contact list"
+msgstr ""
+"Аватары - выбраные пользователем изображения показываемые в списке "
+"собеседников"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:10
+msgid "Chat Th_eme:"
+msgstr "Тема б_еседы: "
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:11
+msgid "Display notifications when contacts come _online"
+msgstr "Показывать уведомления когда собеседники подключаются"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:12
+msgid "Enable sounds when _away"
+msgstr "Включить звуки в состоянии «_ушёл»"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:13
+msgid "Enable sounds when _busy"
+msgstr "Включить звуки в состоянии «_занят»"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:14
+msgid "General"
+msgstr "Общие"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:15
+msgid "Notifications"
+msgstr "Уведомления"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:16
+msgid "Preferences"
+msgstr "Настройки"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:17
+msgid "Show _avatars"
+msgstr "Показать _аватары"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:18
+msgid "Show _smileys as images"
+msgstr "Показывать графические _улыбочки"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:19
+#, fuzzy
+msgid "Show co_mpact contact list"
+msgstr "_Показать список собеседников"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:20
+msgid "Sort by _name"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:21
+msgid "Sort by s_tate"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:22
+msgid "Spell Checking"
+msgstr "Проверка орфографии"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:23
+msgid "Themes"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:24
+#, fuzzy
+msgid "_Enable spell checking"
+msgstr "Включить проверку орфографии"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:25
+msgid "_Open new chats in separate windows"
+msgstr "_Открывать новые беседы в отдельном окне"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:26
+msgid "_Play sound when messages arrive"
+msgstr "_Воспроизводить звук при получении сообщения"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:27
+#, fuzzy
+msgid "_Use for chat rooms"
+msgstr "Со_хранить эту комнату"
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:702
+msgid "Custom message..."
+msgstr "Другое сообщение..."
+
+#. Clear list
+#: ../libempathy-gtk/gossip-presence-chooser.c:724
+msgid "Clear List..."
+msgstr "Очистить список..."
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:803
+#, fuzzy
+msgid "Are you sure you want to clear the list?"
+msgstr "Вы уверены, что хотите очистить список?"
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:807
+msgid ""
+"This will remove any custom messages you have added to the list of preset "
+"status messages."
+msgstr ""
+"Будут удалены любые пользовательские сообщения, которые были добавлены к "
+"списку сообщений о состоянии."
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:812
+msgid "Clear List"
+msgstr "Очистить список"
+
+#: ../libempathy-gtk/gossip-presence-chooser.glade.h:1
+msgid "Enter status message:"
+msgstr "Введите сообщение о состоянии:"
+
+#: ../libempathy-gtk/gossip-presence-chooser.glade.h:2
+msgid "Status Message Presets"
+msgstr "Список сообщений о состоянии"
+
+#: ../libempathy-gtk/gossip-presence-chooser.glade.h:3
+msgid "_Add to status message list"
+msgstr "Добавить в список сообщений о состоянии"
+
+#: ../libempathy-gtk/gossip-private-chat.c:198
+#, c-format
+msgid "%s went offline"
+msgstr "%s отключился"
+
+#: ../libempathy-gtk/gossip-private-chat.c:212
+#, c-format
+msgid "%s has come online"
+msgstr "%s подключился"
+
+#: ../libempathy-gtk/gossip-theme-manager.c:87
+msgid "Classic"
+msgstr "Классическая"
+
+#: ../libempathy-gtk/gossip-theme-manager.c:88
+msgid "Simple"
+msgstr "Простая"
+
+#: ../libempathy-gtk/gossip-theme-manager.c:89
+msgid "Clean"
+msgstr "О_чистить"
+
+#: ../libempathy-gtk/gossip-theme-manager.c:90
+msgid "Blue"
+msgstr "Голубая"
+
+#: ../src/empathy-main.c:145
+msgid "Don't connect on startup"
+msgstr "Не соединяться при запуске"
+
+#: ../src/empathy-main.c:155
+#, fuzzy
+msgid "- Empathy Instant Messenger"
+msgstr " - Gossip, быстрый обмен сообщениями"
+
+#~ msgid "Gossip Instant Messenger"
+#~ msgstr "Обмен сообщениями Gossip"
+
+#~ msgid "Normal"
+#~ msgstr "Нормальный"
+
+#~ msgid "Joining"
+#~ msgstr "Соединяется"
+
+#~ msgid "Active"
+#~ msgstr "Активный"
+
+#~ msgid "Inactive"
+#~ msgstr "Неактивный"
+
+#~ msgid "Unknown"
+#~ msgstr "Неизвестный"
+
+#~ msgid "Error"
+#~ msgstr "Ошибочный"
+
+#, fuzzy
+#~ msgid "Participant"
+#~ msgid_plural "Participants"
+#~ msgstr[0] "Галисийский"
+#~ msgstr[1] "Галисийский"
+
+#, fuzzy
+#~ msgid "No role"
+#~ msgstr "Нормальный"
+
+#, fuzzy
+#~ msgid "No affiliation"
+#~ msgstr "Уведомления"
+
+#~ msgid "The nickname you have chosen is already in use."
+#~ msgstr "Выбранный псевдоним уже используется."
+
+#~ msgid "The chat room you tried to join requires a password."
+#~ msgstr "Комната, в которую вы пытаетесь войти, требует пароля."
+
+#~ msgid "The remote conference server did not respond in a sensible time."
+#~ msgstr ""
+#~ "Нет ответа от удалённого сервера конференций в течение разумного "
+#~ "промежутка времени."
+
+#~ msgid "The conference server you tried to join could not be found."
+#~ msgstr ""
+#~ "Не найден сервер конференций, к которому вы пытаетесь присоединиться."
+
+#~ msgid "An unknown error occurred, check your details are correct."
+#~ msgstr "Произошла неизвестная ошибка, проверьте ваши настройки."
+
+#, fuzzy
+#~ msgid "Joining the chatroom was canceled."
+#~ msgstr "Войти в комнату"
+
+#~ msgid "Unavailable"
+#~ msgstr "Недоступен"
+
+#~ msgid "An unknown error occurred."
+#~ msgstr "Произошла неизвестная ошибка."
+
+#~ msgid "Connection refused."
+#~ msgstr "Соединение отвергнуто."
+
+#~ msgid "Server address could not be resolved."
+#~ msgstr "Не найден адрес сервера."
+
+#~ msgid "Connection timed out."
+#~ msgstr "Время соединения истекло."
+
+#~ msgid "Authentication failed."
+#~ msgstr "Аутентификация не удалась."
+
+#~ msgid "The username you are trying already exists."
+#~ msgstr "Уже есть пользователь с таким именем."
+
+#~ msgid "The username you are trying is not valid."
+#~ msgstr "Выбранное имя пользователя некорректно."
+
+#~ msgid "This feature is unavailable."
+#~ msgstr "Эта возможность недоступна."
+
+#~ msgid "This feature is unauthorized."
+#~ msgstr "Эта возможность не санкционирована."
+
+#~ msgid "A specific protocol error occurred that was unexpected."
+#~ msgstr "Возникла неожиданная ошибка в протоколе."
+
+#, fuzzy
+#~ msgid "new account"
+#~ msgstr "Создать учётную запись"
+
+#~ msgid "Home"
+#~ msgstr "Дом"
+
+#~ msgid "Couldn't send message!"
+#~ msgstr "Не удалось отправить сообщение!"
+
+#~ msgid "Connection could not be opened"
+#~ msgstr "Ошибка установления соединения"
+
+#, fuzzy
+#~ msgid "This service is unavailable or not found"
+#~ msgstr "Эта возможность недоступна."
+
+#, fuzzy
+#~ msgid "Registration is required"
+#~ msgstr "Регистрация"
+
+#, fuzzy
+#~ msgid "This feature is not implemented"
+#~ msgstr "Эта возможность не санкционирована."
+
+#~ msgid "Stop"
+#~ msgstr "Остановить"
+
+#~ msgid "Disconnect"
+#~ msgstr "Отсоединиться"
+
+#~ msgid "Connect"
+#~ msgstr "Соединение"
+
+#, fuzzy
+#~ msgid "Successfully registered your new account settings."
+#~ msgstr "Не удалось зарегистрировать новые параметры учётной записи"
+
+#, fuzzy
+#~ msgid "You should now be able to connect to your new account."
+#~ msgstr ""
+#~ "Нельзя использовать параметр \"--no-connect\" вместе с параметром \"--"
+#~ "account\""
+
+#, fuzzy
+#~ msgid "Failed to register your new account settings."
+#~ msgstr "Не удалось зарегистрировать новые параметры учётной записи"
+
+#, fuzzy
+#~ msgid "Successfully changed your account password."
+#~ msgstr "Введите пароль для учётной записи:"
+
+#, fuzzy
+#~ msgid "Failed to change your account password."
+#~ msgstr "Введите пароль для учётной записи:"
+
+#, fuzzy
+#~ msgid ""
+#~ "Please enter a new password for this account:\n"
+#~ "%s"
+#~ msgstr ""
+#~ "Введите новый псевдоним для группы:\n"
+#~ "%s"
+
+#~ msgid "No information is available for this contact."
+#~ msgstr "Нет информации об этом собеседнике."
+
+#~ msgid "Information requested, please wait..."
+#~ msgstr "Информация запрошена, подождите..."
+
+#~ msgid "I would like to add you to my contact list."
+#~ msgstr "Я хотел бы добавить Вас в свой список собеседников."
+
+#~ msgid "To summarize:"
+#~ msgstr "Обобщить:"
+
+#, fuzzy
+#~ msgid "%d new message"
+#~ msgid_plural "%d new messages"
+#~ msgstr[0] "Новое сообщение"
+#~ msgstr[1] "Новое сообщение"
+
+#, fuzzy
+#~ msgid "%d subscription request"
+#~ msgid_plural "%d subscription requests"
+#~ msgstr[0] "Запрос на подписку"
+#~ msgstr[1] "Запрос на подписку"
+
+#, fuzzy
+#~ msgid "%d file transfer request"
+#~ msgid_plural "%d file transfer requests"
+#~ msgstr[0] "Запрос на передачу файла"
+#~ msgstr[1] "Запрос на передачу файла"
+
+#, fuzzy
+#~ msgid "%d server message"
+#~ msgid_plural "%d server messages"
+#~ msgstr[0] "Не удалось отправить сообщение!"
+#~ msgstr[1] "Не удалось отправить сообщение!"
+
+#, fuzzy
+#~ msgid "%d error"
+#~ msgid_plural "%d errors"
+#~ msgstr[0] "Ошибочный"
+#~ msgstr[1] "Ошибочный"
+
+#~ msgid "If you quit, you will lose all unread information."
+#~ msgstr "Если вы выйдете, вы потеряете все непрочитанные сообщения."
+
+#~ msgid "Edit Account _Details"
+#~ msgstr "Редактировать информацию об учётной записи"
+
+#~ msgid "Click to enlarge"
+#~ msgstr "Щёлкните для увеличения"
+
+#~ msgid "Word"
+#~ msgstr "Слово"
+
+#~ msgid "New message from %s"
+#~ msgstr "Новое сообщение от %s"
+
+#~ msgid "Your invitation has been declined"
+#~ msgstr "Ваше приглашение было отклонено"
+
+#~ msgid "Accept"
+#~ msgstr "Подтвердить"
+
+#~ msgid "Decline"
+#~ msgstr "Отклонить"
+
+#, fuzzy
+#~ msgid "Name"
+#~ msgstr "Имя:"
+
+#, fuzzy
+#~ msgid "Room"
+#~ msgstr "_Комната"
+
+#~ msgid "Auto Connect"
+#~ msgstr "Автоматическое соединение"
+
+#~ msgid "Information requested..."
+#~ msgstr "Информация запрошена..."
+
+#~ msgid "Do you want to remove this contact from your roster?"
+#~ msgstr "Вы хотите удалить этого собеседника из вашего списка?"
+
+#~ msgid ""
+#~ "Please enter a new name for the group:\n"
+#~ "%s"
+#~ msgstr ""
+#~ "Введите новый псевдоним для группы:\n"
+#~ "%s"
+
+#~ msgid "Select"
+#~ msgstr "Выбрать"
+
+#~ msgid "Unsorted"
+#~ msgstr "Разное"
+
+#~ msgid "New file transfer request from %s"
+#~ msgstr "Запрос о передаче файла от %s"
+
+#~ msgid "File transfer is not supported by both parties."
+#~ msgstr "Передача файлов не поддерживается обеими сторонами."
+
+#~ msgid "Your file transfer offer declined."
+#~ msgstr "Предложение о передаче файла отклонено."
+
+#~ msgid "The other user decided not to continue."
+#~ msgstr "Собеседник решил прервать передачу."
+
+#~ msgid "Unknown error occurred during file transfer."
+#~ msgstr "Во время передачи файлов произошла неизвестная ошибка."
+
+#~ msgid "%s would like to send you a file."
+#~ msgstr "%s желает послать вам файл."
+
+#~ msgid "Someone would like to send you a file."
+#~ msgstr "Кто-то желает переслать вам файл."
+
+#~ msgid "Select a file"
+#~ msgstr "Выберите файл"
+
+#, fuzzy
+#~ msgid "Connecting..."
+#~ msgstr "Соединяется"
+
+#, fuzzy
+#~ msgid "Retry connection"
+#~ msgstr "Остановить соединение"
+
+#~ msgid "Invited %s to join this chat conference."
+#~ msgstr "%s приглашён присоединиться к беседе."
+
+#, fuzzy
+#~ msgid "%s has set the topic: %s"
+#~ msgstr "Тема была установлена %s"
+
+#, fuzzy
+#~ msgid "Enter the new topic you want to set for this room:"
+#~ msgstr "Какой псевдоним вы хотите использовать для этого собеседника?"
+
+#, fuzzy
+#~ msgid "%s has joined the room"
+#~ msgstr "Тема была установлена %s"
+
+#, fuzzy
+#~ msgid "%s has left the room"
+#~ msgstr "Тема была установлена %s"
+
+#, fuzzy
+#~ msgid "Topic: %s"
+#~ msgstr "_Тема:"
+
+#~ msgid "Account"
+#~ msgstr "Учётная запись"
+
+#~ msgid "Conversation With"
+#~ msgstr "Разговор с"
+
+#~ msgid "Date"
+#~ msgstr "Дата"
+
+#~ msgid "Allow multiple instances of the application to run at the same time"
+#~ msgstr "Разрешить одновременный запуск нескольких копий программы"
+
+#~ msgid "List the available accounts"
+#~ msgstr "Список учётных записей"
+
+#~ msgid "Which account to connect to on startup"
+#~ msgstr "Учётная запись которая используется при старте"
+
+#~ msgid "ACCOUNT-NAME"
+#~ msgstr "ACCOUNT-NAME"
+
+#~ msgid "You can not use --no-connect together with --account"
+#~ msgstr ""
+#~ "Нельзя использовать параметр \"--no-connect\" вместе с параметром \"--"
+#~ "account\""
+
+#~ msgid "No accounts available."
+#~ msgstr "Нет учётных записей."
+
+#~ msgid "Available accounts:"
+#~ msgstr "Доступные учётные записи:"
+
+#~ msgid "[default]"
+#~ msgstr "[По умолчанию]"
+
+#~ msgid "There is no account with the name '%s'."
+#~ msgstr "Нет учётной записи с именем '%s'."
+
+#~ msgid "Join"
+#~ msgstr "Войти"
+
+#, fuzzy
+#~ msgid "Create"
+#~ msgstr "Дата"
+
+#~ msgid "Chat Rooms"
+#~ msgstr "Комнаты"
+
+#, fuzzy
+#~ msgid "Browsing for conference rooms, please wait..."
+#~ msgstr "Информация запрошена, подождите..."
+
+#~ msgid "Default"
+#~ msgstr "По умолчанию"
+
+#~ msgid "Chat!"
+#~ msgstr "Разговор!"
+
+#~ msgid "%s wants to be added to your contact list."
+#~ msgstr "%s просит добавить себя в ваш список собеседников."
+
+#~ msgid "Someone wants to be added to your contact list."
+#~ msgstr "Кто-то просит добавить себя в ваш список собеседников."
+
+#, fuzzy
+#~ msgid "Subscription request"
+#~ msgstr "Запрос на подписку"
+
+#~ msgid "Show"
+#~ msgstr "Показать"
+
+#~ msgid "Contact Information"
+#~ msgstr "Информация о собеседнике"
+
+#~ msgid "Subject: %s"
+#~ msgstr "Тема: %s"
+
+#~ msgid "Suggestions for the word"
+#~ msgstr "Предложения по замене"
+
+#~ msgid "New subscription request from %s"
+#~ msgstr "Запрос на подписку от %s"
+
+#~ msgid "Do you want to add this person to your contact list?"
+#~ msgstr "Вы хотите добавить этого собеседника в список?"
+
+#~ msgid "Do you want to add %s to your contact list?"
+#~ msgstr "Вы хотите добавить %s в ваш список собеседников?"
+
+#~ msgid "Please enter your %s account password"
+#~ msgstr "Введите пароль для учётной записи %s:"
+
+#, fuzzy
+#~ msgid "Logging in to account '%s'"
+#~ msgstr "Подключение с: %s"
+
+#~ msgid "Remember Password?"
+#~ msgstr "Запомнить пароль?"
+
+#~ msgid "Could not display the help contents."
+#~ msgstr "Не удалось отобразить содержимое справки."
+
+#~ msgid "Select Your Avatar Image"
+#~ msgstr "Выберите изображение вашего аватара"
+
+#~ msgid "No Image"
+#~ msgstr "Нет изображения"
+
+#~ msgid "The server does not seem to be responding."
+#~ msgstr "Сервер не отвечает."
+
+#~ msgid "Try again later."
+#~ msgstr "Попробуйте позже."
+
+#, fuzzy
+#~ msgid "Change"
+#~ msgstr "Разговор"
+
+#~ msgid "Contact goes offline"
+#~ msgstr "Собеседник отключается"
+
+#~ msgid "Contact goes online"
+#~ msgstr "Собеседник подключается"
+
+#~ msgid "Contact ID:"
+#~ msgstr "Идентификатор собеседника:"
+
+#~ msgid "Do you want to accept this file?"
+#~ msgstr "Принять этот файл?"
+
+#~ msgid "File Transfer Request"
+#~ msgstr "Запрос на передачу файла"
+
+#~ msgid "File name:"
+#~ msgstr "Имя файла:"
+
+#~ msgid "File size:"
+#~ msgstr "Размер:"
+
+#~ msgid "Not supported yet"
+#~ msgstr "Пока не поддерживается"
+
+#~ msgid "This person wishes to send you this file:"
+#~ msgstr "Вам хотят переслать этот файл:"
+
+#~ msgid "Web site:"
+#~ msgstr "Вебсайт:"
+
+#~ msgid "_Accept"
+#~ msgstr "_Подтвердить"
+
+#~ msgid "_Deny"
+#~ msgstr "_Отвергнуть"
+
+#, fuzzy
+#~ msgid "<b>Topic:</b>"
+#~ msgstr "<b>О программе</b>"
+
+#~ msgid "Account:"
+#~ msgstr "Учётная запись:"
+
+#, fuzzy
+#~ msgid "Browse:"
+#~ msgstr "Фарерский"
+
+#, fuzzy
+#~ msgid "Edit Favorite Room"
+#~ msgstr "Правка комнаты"
+
+#~ msgid "Group Chat"
+#~ msgstr "Разговор"
+
+#, fuzzy
+#~ msgid "Join New"
+#~ msgstr "Присоединиться _к..."
+
+#~ msgid "Join room on start_up"
+#~ msgstr "Входить при _запуске"
+
+#~ msgid "Join this chat room when Gossip starts and you are connected"
+#~ msgstr ""
+#~ "Входить в эту комнату после запуска Gossip и установления соединения."
+
+#, fuzzy
+#~ msgid "Manage Favorite Rooms"
+#~ msgstr "Управление переговорными комнатами"
+
+#~ msgid "N_ame:"
+#~ msgstr "_Имя:"
+
+#~ msgid "S_erver:"
+#~ msgstr "_Сервер:"
+
+#~ msgid "_Nickname:"
+#~ msgstr "_Псевдоним:"
+
+#~ msgid "_Room:"
+#~ msgstr "_Комната:"
+
+#~ msgid "-"
+#~ msgstr "-"
+
+#~ msgid "<b>About</b>"
+#~ msgstr "<b>О программе</b>"
+
+#~ msgid "<b>Client Information</b>"
+#~ msgstr "<b>Информация об используемой программе</b>"
+
+#, fuzzy
+#~ msgid "<b>Groups</b>"
+#~ msgstr "<b>О программе</b>"
+
+#, fuzzy
+#~ msgid "<b>Name</b>"
+#~ msgstr "<b>Языки</b>"
+
+#~ msgid "<b>Personal Details</b>"
+#~ msgstr "<b>Личная информация</b>"
+
+#, fuzzy
+#~ msgid "<b>Subscription</b>"
+#~ msgstr "<b>Соединение</b>"
+
+#~ msgid "<span size=\"smaller\">Example: Mikael or user@server.org</span>"
+#~ msgstr "<span size=\"smaller\">Пример: Mikael или user@server.org</span>"
+
+#, fuzzy
+#~ msgid "Accou_nt:"
+#~ msgstr "Учётная запись:"
+
+#~ msgid "Add Contact"
+#~ msgstr "_Добавить собеседника"
+
+#, fuzzy
+#~ msgid "Alia_s:"
+#~ msgstr "Прозвище:"
+
+#~ msgid "Avatar:"
+#~ msgstr "Аватар:"
+
+#~ msgid "Ch_at"
+#~ msgstr "_Разговор"
+
+#~ msgid "Client:"
+#~ msgstr "Программа:"
+
+#, fuzzy
+#~ msgid "Con_tact:"
+#~ msgstr "Собеседники"
+
+#~ msgid "Connect on S_tartup"
+#~ msgstr "Присоединяться при _запуске"
+
+#~ msgid "Contacts"
+#~ msgstr "Собеседники"
+
+#~ msgid "Country:"
+#~ msgstr "Страна:"
+
+#~ msgid "Decide _Later"
+#~ msgstr "Решить _позже"
+
+#, fuzzy
+#~ msgid "Edit Contact"
+#~ msgstr "_Добавить собеседника"
+
+#~ msgid "Edit Groups"
+#~ msgstr "Правка групп"
+
+#~ msgid "Email:"
+#~ msgstr "Электронная почта:"
+
+#~ msgid "ID:"
+#~ msgstr "ID:"
+
+#~ msgid ""
+#~ "If you chose to decide later you will be asked the next time you log on."
+#~ msgstr "Вы можете отложить решение до следующего запуска приложения."
+
+#~ msgid "Name:"
+#~ msgstr "Имя:"
+
+#~ msgid "OS:"
+#~ msgstr "Операционная система:"
+
+#~ msgid "Personal Details"
+#~ msgstr "Личная информация"
+
+#, fuzzy
+#~ msgid "R_egister"
+#~ msgstr "Регистрация"
+
+#~ msgid "Search"
+#~ msgstr "Поиск"
+
+#~ msgid "Spell Checker"
+#~ msgstr "Проверка орфографии"
+
+#~ msgid "Subscription Request"
+#~ msgstr "Запрос на подписку"
+
+#~ msgid "Suggestions for the word:"
+#~ msgstr "Предложить слово:"
+
+#~ msgid ""
+#~ "This acts as a filter to the contact list below. You can use segments of "
+#~ "contact's name or ID, for example, \"jabber.org\" will list everyone "
+#~ "using that server"
+#~ msgstr ""
+#~ "Это фильтр для списка собеседников. Можно использовать части имен или "
+#~ "идентификаторов, например \"jabber.org\" для поиска всех собеседников, "
+#~ "использующих этот сервер."
+
+#~ msgid "This is the name that will be used on your roster for this contact"
+#~ msgstr "Этим именем будет называться собеседник в вашем списке."
+
+#~ msgid "This name will be used to identify you in chat windows"
+#~ msgstr ""
+#~ "Это имя будет использовано для вашей идентификации в окнах разговоров."
+
+#~ msgid ""
+#~ "This name will be used to identify you when new contacts lookup your "
+#~ "details"
+#~ msgstr ""
+#~ "Это имя будет использовано для вашей идентификации когда новые "
+#~ "собеседники просматривают информацию о вас."
+
+#~ msgid "Use system pro_xy"
+#~ msgstr "Использовать системный про_кси сервер"
+
+#~ msgid "Version:"
+#~ msgstr "Версия:"
+
+#~ msgid "View Previous Conversations"
+#~ msgstr "Посмотреть предыдущие беседы"
+
+#~ msgid "Which account do you want to use?"
+#~ msgstr "Какую учётную запись вы хотите использовать?"
+
+#~ msgid "You are not subscribed to this contact."
+#~ msgstr ""
+#~ "Вы не подписаны на получение информации о состоянии этого собеседника."
+
+#~ msgid "_Connect"
+#~ msgstr "_Соединиться"
+
+#, fuzzy
+#~ msgid "_Description:"
+#~ msgstr "Описание:"
+
+#~ msgid "_Disconnect"
+#~ msgstr "_Отсоединиться"
+
+#, fuzzy
+#~ msgid "_Email:"
+#~ msgstr "Электронная почта:"
+
+#, fuzzy
+#~ msgid ""
+#~ "_Enter the name or contact ID of the person you want to chat to below:"
+#~ msgstr ""
+#~ "Введите имя или идентификатор пользователя, которому вы хотите послать "
+#~ "сообщение:"
+
+#, fuzzy
+#~ msgid "_For:"
+#~ msgstr "Порт:"
+
+#, fuzzy
+#~ msgid "_Full Name:"
+#~ msgstr "_Имя:"
+
+#, fuzzy
+#~ msgid "_Group:"
+#~ msgstr "Группа:"
+
+#, fuzzy
+#~ msgid "_Nick Name:"
+#~ msgstr "_Псевдоним:"
+
+#, fuzzy
+#~ msgid "_Password:"
+#~ msgstr "_Пароль:"
+
+#, fuzzy
+#~ msgid "_Quit Message:"
+#~ msgstr "Новое сообщение"
+
+#~ msgid "_Subscribe"
+#~ msgstr "_Подписаться"
+
+#, fuzzy
+#~ msgid "_Web site:"
+#~ msgstr "Вебсайт:"
+
+#, fuzzy
+#~ msgid "irc account settings"
+#~ msgstr "Редактировать информацию об учётной записи"
+
+#~ msgid "Preset status messages"
+#~ msgstr "Предустановленные сообщения о состоянии"
+
+#~ msgid "Preset status messages."
+#~ msgstr "Предустановленные сообщения о состоянии."
+
+#~ msgid "Perhaps you are trying to connect to the wrong port?"
+#~ msgstr "Возможно, вы пытаетесь подсоединиться к другому порту."
+
+#~ msgid "Perhaps the service is not currently running?"
+#~ msgstr "Возможно, сервис сейчас не действует."
+
+#~ msgid "Check your connection details."
+#~ msgstr "Проверьте настройки вашего соединения."
+
+#~ msgid "Perhaps the server is not running this service."
+#~ msgstr "Возможно, сервис не активен на данном сервере."
+
+#~ msgid "Check your username and password are correct."
+#~ msgstr "Проверьте правильность имени пользователя и пароля."
+
+#~ msgid "%s will be added to your contact list."
+#~ msgstr "%s будет добавлен в список собеседников."
+
+#~ msgid "%s ID of new contact:"
+#~ msgstr "%s ID нового собеседника:"
+
+#~ msgid "Example: %s"
+#~ msgstr "Пример: %s"
+
+#~ msgid "Show accounts and pending connections"
+#~ msgstr "Показать учётные записи и ожидающие соединения"
+
+#~ msgid "You have no Instant Messaging accounts configured!"
+#~ msgstr "Не создано ни одной учётной записи системы обмена сообщениями!"
+
+#~ msgid ""
+#~ "Next you will be presented with the Account Information dialog to set "
+#~ "your details up."
+#~ msgstr ""
+#~ "Далее вам будет представлен диалог, где нужно заполнить детали вашей "
+#~ "учётной записи."
+
+#~ msgid ""
+#~ "Please enter your invitation message to:\n"
+#~ "%s"
+#~ msgstr ""
+#~ "Введите приветствие для:\n"
+#~ "%s"
+
+#~ msgid "Favourite"
+#~ msgstr "Фаворит"
+
+#~ msgid "/Contact Infor_mation"
+#~ msgstr "/_Информация о собеседнике"
+
+#~ msgid "/Re_name Contact"
+#~ msgstr "/Пе_реименовать собеседника"
+
+#~ msgid "/_Edit Groups"
+#~ msgstr "/_Правка групп"
+
+#~ msgid "/_View Previous Conversations"
+#~ msgstr "/Просмотреть предыд_ущие беседы"
+
+#~ msgid ""
+#~ "Please enter a new nickname for the contact\n"
+#~ "%s"
+#~ msgstr ""
+#~ "Введите новый псевдоним для собеседника\n"
+#~ "%s"
+
+#~ msgid "Edit groups for %s"
+#~ msgstr "Редактирование групп для %s"
+
+#~ msgid "Conversation Log"
+#~ msgstr "Журнал разговоров"
+
+#~ msgid "Registering account"
+#~ msgstr "Регистрация учётной записи"
+
+#~ msgid "Add to _favourites"
+#~ msgstr "Добавить к предпочитаемым"
+
+#~ msgid ""
+#~ "Customize your own nickname, the server and chatroom which you wish to "
+#~ "join."
+#~ msgstr ""
+#~ "Настройте ваш псевдоним, сервер и комнату, к которым вы желаете "
+#~ "присоединиться."
+
+#~ msgid "Edit your chat room details:"
+#~ msgstr "Редактировать информацию о комнате:"
+
+#~ msgid "Na_me:"
+#~ msgstr "Имя:"
+
+#~ msgid "New Chat Room"
+#~ msgstr "Создать комнату"
+
+#~ msgid ""
+#~ "Pick a saved chat room from the presets available below and click Join to "
+#~ "start chatting."
+#~ msgstr ""
+#~ "Выберите сохранённую комнату из списка и нажмите на «Войти в комнату» для "
+#~ "начала беседы."
+
+#~ msgid " "
+#~ msgstr " "
+
+#~ msgid "<b>Information requested, please wait...</b>"
+#~ msgstr "<b>Запрос информации, подождите...</b>"
+
+#~ msgid "<span size=\"smaller\">Example:</span>"
+#~ msgstr "<span size=\"smaller\">Пример:</span>"
+
+#~ msgid "Account Name"
+#~ msgstr "Имя учётной записи"
+
+#~ msgid "Connection Details"
+#~ msgstr "Настройки соединения"
+
+#~ msgid "Do you already have an account set up on a server?"
+#~ msgstr "У вас уже есть учётная запись на сервере?"
+
+#~ msgid "Enter the port used in the connection for this account"
+#~ msgstr "Введите порт, используемый для соединения в данной учётной записи"
+
+#~ msgid "Enter the server used in the connection for this account"
+#~ msgstr "Введите сервер, используемый для соединения в данной учётной записи"
+
+#~ msgid "Enter the user's contact ID:"
+#~ msgstr "Введите идентификатор пользователя:"
+
+#~ msgid "Enter your real name here"
+#~ msgstr "Введите ваше настоящее имя"
+
+#~ msgid "Finished"
+#~ msgstr "Завершено"
+
+#~ msgid "For increased security, enable this option"
+#~ msgstr "Для большей безопасности, включите этот параметр"
+
+#~ msgid "Gossip"
+#~ msgstr "Gossip"
+
+#~ msgid ""
+#~ "Gossip is a modern client for the Jabber Instant Messaging system.\n"
+#~ "\n"
+#~ "This assistant will help you configure Gossip and connect you to your "
+#~ "favorite Jabber server.\n"
+#~ "\n"
+#~ "To get started, just click \"Forward\"."
+#~ msgstr ""
+#~ "Gossip это современный клиент системы обмена сообщениями Jabber.\n"
+#~ "\n"
+#~ "Сейчас мы поможем вам настроить Gossip для соединения с вашим сервером "
+#~ "Jabber.\n"
+#~ "\n"
+#~ "Нажмите кнопку «Далее», чтобы начать."
+
+#~ msgid ""
+#~ "If you have another machine on your network which 'proxies' the "
+#~ "connection to the internet and you want to use it, enable this option"
+#~ msgstr ""
+#~ "Если в вашей сети есть другая машина-прокси, которая перенаправляет ваше "
+#~ "соединение в интернет и вы хотите использовать её, включите этот параметр."
+
+#~ msgid ""
+#~ "If you need to set specific connection details, like a different server "
+#~ "or port, you can configure that here:"
+#~ msgstr ""
+#~ "Здесь можно задать особенные настройки соединения, например, другой "
+#~ "сервер или порт:"
+
+#~ msgid ""
+#~ "In order to subscribe to presence notifications from the user, a request "
+#~ "will be sent. Until this request is approved, the user will always be "
+#~ "shown as \"Offline\" in your contact list."
+#~ msgstr ""
+#~ "Чтобы получать информацию о присутствии пользователя, должен быть "
+#~ "отправлен запрос. Пока запрос не подтвержден, пользователь в вашем списке "
+#~ "собеседников всё время будет в состоянии «Выключен»."
+
+#~ msgid "In which group do you want to place this contact?"
+#~ msgstr "В какую группу поместить этого собеседника?"
+
+#~ msgid "Jabber ID:"
+#~ msgstr "Jabber ID:"
+
+#~ msgid ""
+#~ "Leave this blank if you don't want your password stored on a public "
+#~ "machine. If you decide to do this, you will be prompted each time you "
+#~ "connect for a password"
+#~ msgstr ""
+#~ "Оставьте пустым, если не хотите чтобы ваш пароль сохранялся на общей "
+#~ "машине. Пароль будет запрашиваться каждый раз при подключении"
+
+#~ msgid "Nickname:"
+#~ msgstr "Псевдоним:"
+
+#~ msgid "Port:"
+#~ msgstr "Порт:"
+
+#~ msgid "Press Subscribe to request to receive their status"
+#~ msgstr ""
+#~ "Нажмите «Подписаться» для получения информации о статусе собеседников"
+
+#~ msgid "Registering Account"
+#~ msgstr "Регистрация учётной записи"
+
+#~ msgid "Resource:"
+#~ msgstr "Ресурс:"
+
+#~ msgid "Sending request"
+#~ msgstr "Отправка запроса"
+
+#~ msgid "Server:"
+#~ msgstr "Сервер:"
+
+#~ msgid "Web Site:"
+#~ msgstr "Веб-страница:"
+
+#~ msgid "Welcome to Gossip"
+#~ msgstr "Добро пожаловать в Gossip"
+
+#~ msgid "What instant messaging system does the contact use?"
+#~ msgstr "Какая система обмена сообщениями используется этим собеседником?"
+
+#~ msgid "What is your name?"
+#~ msgstr "Как вас зовут?"
+
+#~ msgid ""
+#~ "What name do you want to use to identify this account?\n"
+#~ "\n"
+#~ "This name could be something associated with the service provider, for "
+#~ "example, <b>Google</b>."
+#~ msgstr ""
+#~ "Каким именем вы хотите назвать эту учётную запись?\n"
+#~ "\n"
+#~ "Например, можно назвать её именем провайдера услуг, скажем, <b>Google</b>."
+
+#~ msgid "What password do you want to use?"
+#~ msgstr "Какой пароль вы хотите использовать?"
+
+#~ msgid "What username do you use?"
+#~ msgstr "Какое имя пользователя вы используете?"
+
+#~ msgid "What username do you want to use?"
+#~ msgstr "Какое имя пользователя вы хотите использовать?"
+
+#~ msgid "Which account do you want to add this contact to?"
+#~ msgstr "В какую учётную запись поместить этого собеседника?"
+
+#~ msgid ""
+#~ "You can change your account settings later by selecting the Edit-"
+#~ ">Accounts menu item."
+#~ msgstr ""
+#~ "Вы можете изменить параметры вашей учётной записи, выбрав пункт меню "
+#~ "Правка->Учётные записи."
+
+#~ msgid ""
+#~ "You need to set a name for the connection, for example, <b>Home</b> or "
+#~ "<b>Laptop</b>."
+#~ msgstr ""
+#~ "Нужно задать имя для соединения, например, <b>Дом</b> или <b>Работа</b>."
+
+#~ msgid "Your Account"
+#~ msgstr "Ваша учётная запись"
+
+#~ msgid "Your Identity"
+#~ msgstr "Ваши данные"
+
+#~ msgid "Your new account has now been set up."
+#~ msgstr "Ваша новая учётная запись установлена."
+
+#~ msgid "_Forget"
+#~ msgstr "_Забыть"
+
+#~ msgid "_Group Chat"
+#~ msgstr "_Групповая беседа"
+
+#~ msgid "_No"
+#~ msgstr "_Нет"
+
+#~ msgid "_Search..."
+#~ msgstr "_Найти..."
+
+#~ msgid "_Yes"
+#~ msgstr "_Да"
+
+#~ msgid "Contact Information for %s"
+#~ msgstr "Информация о собеседнике %s"
+
+#~ msgid "Respond"
+#~ msgstr "Ответил"
+
+#, fuzzy
+#~ msgid "Chat Rooms..."
+#~ msgstr "Gossip - комнаты"
+
+#~ msgid "Be silent when away"
+#~ msgstr "Не воспроизводить звуки в состоянии «ушёл»"
+
+#~ msgid "Be silent when busy"
+#~ msgstr "Не воспроизводить звуки в состоянии «занят»"
+
+#~ msgid "Height of main window"
+#~ msgstr "Высота главного окна"
+
+#~ msgid "The X position of the main window."
+#~ msgstr "Позиция главного окна по оси X"
+
+#~ msgid "The Y position of the main window."
+#~ msgstr "Позиция главного окна по оси Y"
+
+#~ msgid "The width of the main window."
+#~ msgstr "Ширина главного окна."
+
+#~ msgid "Whether spell checking should be turned on."
+#~ msgstr "Проверять орфографию или нет"
+
+#~ msgid "Width of the main window"
+#~ msgstr "Ширина главного окна"
+
+#~ msgid "X position of main window"
+#~ msgstr "Позиция главного окна по оси X"
+
+#~ msgid "Y position of main window"
+#~ msgstr "Позиция главного окна по оси Y"
+
+#~ msgid "Gossip, Instant Messaging Client"
+#~ msgstr "Gossip, программа для обмена сообщениями"
+
+#, fuzzy
+#~ msgid "Close this chat window"
+#~ msgstr "Со_хранить эту комнату"
+
+#~ msgid "Requested Information"
+#~ msgstr "Запрошенная информация"
+
+#, fuzzy
+#~ msgid "/_Invite to Chat Conference"
+#~ msgstr "/Пригласить на _конференцию"
+
+#, fuzzy
+#~ msgid "Send Message"
+#~ msgstr "_Отправить сообщение..."
+
+#~ msgid "%s has gone offline"
+#~ msgstr "%s отключился"
+
+#~ msgid "Contact _Information"
+#~ msgstr "_Информация о собеседнике"
+
+#~ msgid "<b>Sound</b>"
+#~ msgstr "<b>Звук</b>"
+
+#~ msgid "Check spelling while I _type"
+#~ msgstr "_Автоматически проверять орфографию"
+
+#~ msgid "Gossip - Accounts"
+#~ msgstr "Gossip - учетные записи"
+
+#, fuzzy
+#~ msgid "Join _Group Chat..."
+#~ msgstr "_Зайти в комнату..."
+
+#~ msgid "Por_t:"
+#~ msgstr "Пор_т:"
+
+#~ msgid "Requested information."
+#~ msgstr "Информация запрошена."
+
+#~ msgid "Requesting contact information, please wait..."
+#~ msgstr "Получение личной информации, пожалуйста, подождите..."
+
+#~ msgid "Written by:"
+#~ msgstr "Написано:"
+
+#~ msgid "Artwork by:"
+#~ msgstr "Графика:"
+
+#~ msgid "Translated by:"
+#~ msgstr "Перевод:"
+
+#~ msgid "%sChat - %s"
+#~ msgstr "%sРазговор - %s"
+
+#~ msgid "/Show _Log"
+#~ msgstr "/Показать _журнал"
+
+#~ msgid "Afrikaans"
+#~ msgstr "Африкаанс"
+
+#~ msgid "Amharic"
+#~ msgstr "Амхарский"
+
+#~ msgid "Arabic"
+#~ msgstr "Арабский"
+
+#~ msgid "Azerbaijani"
+#~ msgstr "Азербайджанский"
+
+#~ msgid "Belarusian"
+#~ msgstr "Белорусский"
+
+#~ msgid "Bulgarian"
+#~ msgstr "Болгарский"
+
+#~ msgid "Bengali"
+#~ msgstr "Бенгальский"
+
+#~ msgid "Breton"
+#~ msgstr "Бретонский"
+
+#~ msgid "Bosnian"
+#~ msgstr "Боснийский"
+
+#~ msgid "Catalan"
+#~ msgstr "Каталанский"
+
+#~ msgid "Czech"
+#~ msgstr "Чешский"
+
+#~ msgid "Welsh"
+#~ msgstr "Уэльсский"
+
+#~ msgid "Danish"
+#~ msgstr "Датский"
+
+#~ msgid "German"
+#~ msgstr "Немецкий"
+
+#~ msgid "German (Austria)"
+#~ msgstr "Немецкий (Австрия)"
+
+#~ msgid "German (Germany)"
+#~ msgstr "Немецкий (Германия)"
+
+#~ msgid "German (Swiss)"
+#~ msgstr "Немецкий (Швейцария)"
+
+#~ msgid "Greek"
+#~ msgstr "Греческий"
+
+#~ msgid "English"
+#~ msgstr "Английский"
+
+#~ msgid "English (Canadian)"
+#~ msgstr "Английский (Канада)"
+
+#~ msgid "English (British)"
+#~ msgstr "Английский (Великобритания)"
+
+#~ msgid "English (American)"
+#~ msgstr "Английский (США)"
+
+#~ msgid "Esperanto"
+#~ msgstr "Эсперанто"
+
+#~ msgid "Spanish"
+#~ msgstr "Испанский"
+
+#~ msgid "Estonian"
+#~ msgstr "Эстонский"
+
+#~ msgid "Basque"
+#~ msgstr "Баскский"
+
+#~ msgid "Persian"
+#~ msgstr "Персидский"
+
+#~ msgid "Finnish"
+#~ msgstr "Финский"
+
+#~ msgid "French"
+#~ msgstr "Французский"
+
+#~ msgid "French (France)"
+#~ msgstr "Французский (Франция)"
+
+#~ msgid "French (Swiss)"
+#~ msgstr "Французский (Швейцария)"
+
+#~ msgid "Irish Gaelic"
+#~ msgstr "Ирландский"
+
+#~ msgid "Scots Gaelic"
+#~ msgstr "Шотладский"
+
+#~ msgid "Gujarati"
+#~ msgstr "Гуджарати"
+
+#~ msgid "Manx Gaelic"
+#~ msgstr "Мэнский"
+
+#~ msgid "Hebrew"
+#~ msgstr "Иврит"
+
+#~ msgid "Hindi"
+#~ msgstr "Хинди"
+
+#~ msgid "Croatian"
+#~ msgstr "Хорватский"
+
+#~ msgid "Hungarian"
+#~ msgstr "Венгерский"
+
+#~ msgid "Indonesian"
+#~ msgstr "Индонезийский"
+
+#~ msgid "Icelandic"
+#~ msgstr "Исландский"
+
+#~ msgid "Italian"
+#~ msgstr "Итальянский"
+
+#~ msgid "Japanese"
+#~ msgstr "Японский"
+
+#~ msgid "Georgian"
+#~ msgstr "Грузинский"
+
+#~ msgid "Kannada"
+#~ msgstr "Каннада"
+
+#~ msgid "Korean"
+#~ msgstr "Корейский"
+
+#~ msgid "Kurdish"
+#~ msgstr "Курдский"
+
+#~ msgid "Cornish"
+#~ msgstr "Корнийский"
+
+#~ msgid "Limburgish"
+#~ msgstr "Лимбургский"
+
+#~ msgid "Lithuanian"
+#~ msgstr "Литовский"
+
+#~ msgid "Latvian"
+#~ msgstr "Латвийский"
+
+#~ msgid "Maori"
+#~ msgstr "Маори"
+
+#~ msgid "Macedonian"
+#~ msgstr "Македонский"
+
+#~ msgid "Malayalam"
+#~ msgstr "Малайялам"
+
+#~ msgid "Mongolian"
+#~ msgstr "Монгольский"
+
+#~ msgid "Marathi"
+#~ msgstr "Маратхи"
+
+#~ msgid "Malay"
+#~ msgstr "Малайский"
+
+#~ msgid "Norwegian (Bokmal)"
+#~ msgstr "Норвежский (Букмол)"
+
+#~ msgid "Nepali"
+#~ msgstr "Непальский"
+
+#~ msgid "Dutch"
+#~ msgstr "Датский"
+
+#~ msgid "Norwegian"
+#~ msgstr "Норвежский"
+
+#~ msgid "Norwegian (Nynorsk)"
+#~ msgstr "Норвежский (Нюнорск)"
+
+#~ msgid "Oriya"
+#~ msgstr "Ория"
+
+#~ msgid "Punjabi"
+#~ msgstr "Пенджабский"
+
+#~ msgid "Polish"
+#~ msgstr "Польский"
+
+#~ msgid "Portuguese"
+#~ msgstr "Португальский"
+
+#~ msgid "Portuguese (Portugal)"
+#~ msgstr "Португальский (Португалия)"
+
+#~ msgid "Portuguese (Brazil)"
+#~ msgstr "Португальский (Бразилия)"
+
+#~ msgid "Romanian"
+#~ msgstr "Румынский"
+
+#~ msgid "Russian"
+#~ msgstr "Русский"
+
+#~ msgid "Kinyarwanda"
+#~ msgstr "Киньяруанда"
+
+#~ msgid "Slovak"
+#~ msgstr "Словацкий"
+
+#~ msgid "Slovenian"
+#~ msgstr "Словенский"
+
+#~ msgid "Albanian"
+#~ msgstr "Албанский"
+
+#~ msgid "Serbian"
+#~ msgstr "Сербский"
+
+#~ msgid "Swedish"
+#~ msgstr "Шведский"
+
+#~ msgid "Tamil"
+#~ msgstr "Тамильский"
+
+#~ msgid "Telugu"
+#~ msgstr "Телугу"
+
+#~ msgid "Thai"
+#~ msgstr "Тайский"
+
+#~ msgid "Turkmen"
+#~ msgstr "Туркменский"
+
+#~ msgid "Turkish"
+#~ msgstr "Турецкий"
+
+#~ msgid "Ukrainian"
+#~ msgstr "Украинский"
+
+#~ msgid "Vietnamese"
+#~ msgstr "Вьетнамский"
+
+#~ msgid "Walloon"
+#~ msgstr "Валлонский"
+
+#~ msgid "Xhosa"
+#~ msgstr "Хоса"
+
+#~ msgid "Yiddish"
+#~ msgstr "Идиш"
+
+#~ msgid "Chinese Simplified"
+#~ msgstr "Китайский упрощенный"
+
+#~ msgid "Chinese Traditional"
+#~ msgstr "Китайский традиционный"
+
+#~ msgid "View Lo_g"
+#~ msgstr "Просмотреть _журнал"
+
+#~ msgid "Gossip - Group Chat"
+#~ msgstr "Gossip - совместная беседа"
+
+#~ msgid "Gossip - New Chatroom"
+#~ msgstr "Gossip - новая комната"
+
+#~ msgid "Status:"
+#~ msgstr "Состояние:"
+
+#~ msgid "Gossip - Add contact"
+#~ msgstr "Gossip - добавление собеседника"
+
+#~ msgid "Gossip - Contact Information"
+#~ msgstr "Gossip - информация о собеседнике"
+
+#~ msgid "Gossip - Edit Groups"
+#~ msgstr "Gossip - правка групп"
+
+#~ msgid "Gossip - New Account"
+#~ msgstr "Gossip - новая учётная запись"
+
+#~ msgid "Gossip - New Message"
+#~ msgstr "Gossip - новое сообщение"
+
+#~ msgid "Gossip - Personal Details"
+#~ msgstr "Gossip - личная информация"
+
+#~ msgid "Gossip - Preferences"
+#~ msgstr "Gossip - параметры"
+
+#~ msgid "Gossip - Spell Checker"
+#~ msgstr "Gossip - проверка орфографии"
+
+#~ msgid "Gossip - Status Message"
+#~ msgstr "Gossip - статус"
diff --git a/gnome-2-22/po/sl.po b/gnome-2-22/po/sl.po
new file mode 100644
index 000000000..dc6c87b79
--- /dev/null
+++ b/gnome-2-22/po/sl.po
@@ -0,0 +1,1332 @@
+#
+# Translators:
+# Matej Urbančič <mateju@svn.gnome.org>, 2006, 2007.
+#
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: empathy\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-10-18 03:41+0100\n"
+"PO-Revision-Date: 2007-12-13 17:53+0100\n"
+"Last-Translator: Matej Urbančič <mateju@svn.gnome.org>\n"
+"Language-Team: Slovenian GNOME Translation Team <gnome-si@googlegroups.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n%100==4 ? 3 : 0);\n"
+"X-Poedit-Language: Slovenian\n"
+"X-Poedit-Country: SLOVENIA\n"
+"X-Poedit-SourceCharset: utf-8\n"
+
+#: ../data/empathy.desktop.in.in.h:1
+msgid "Empathy Instant Messenger"
+msgstr ""
+
+#: ../data/empathy.desktop.in.in.h:2
+msgid "Send and receive instant messages"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:1
+msgid "Always open a separate chat window for new chats."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:2
+msgid "Character to add after nickname when using nick completion (tab) in group chat."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:3
+msgid "Chat window theme"
+msgstr "Tema klepetalnega okna"
+
+#: ../data/empathy.schemas.in.h:4
+msgid "Checks if NetworkManager should be used"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:5
+msgid "Checks if Salut account is created"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:6
+msgid "Comma separated list of spell checker languages to use (e.g. en, fr, nl)."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:7
+msgid "Compact contact list"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:8
+msgid "Contact list sort criterium"
+msgstr "Kriterij razvrščanja seznama prijateljev"
+
+#: ../data/empathy.schemas.in.h:9
+msgid "Default directory to select an avatar image from"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:10
+msgid "Enable popup when contact is available"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:11
+msgid "Enable sound when away"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:12
+msgid "Enable sound when busy"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:13
+msgid "Enable spell checker"
+msgstr "Omogoči črkovalnik"
+
+#: ../data/empathy.schemas.in.h:14
+msgid "Hide main window"
+msgstr "Skrij glavno okno"
+
+#: ../data/empathy.schemas.in.h:15
+msgid "Hide the main window."
+msgstr "Skrivanje glavnega okna."
+
+#: ../data/empathy.schemas.in.h:16
+msgid "Nick completed character"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:17
+msgid "Open new chats in separate windows"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:18
+msgid "Show avatars"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:19
+msgid "Show hint about closing the main window"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:20
+msgid "Show offline contacts"
+msgstr "Pokaži tudi nepovezane prijatelje"
+
+#: ../data/empathy.schemas.in.h:21
+msgid "Spell checking languages"
+msgstr "Jeziki za črkovanje"
+
+#: ../data/empathy.schemas.in.h:22
+msgid "The last directory that an avatar image was chosen from."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:23
+msgid "The theme that is used to display the conversation in chat windows."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:24
+msgid "Use graphical smileys"
+msgstr "Uporabi grafične smeške"
+
+#: ../data/empathy.schemas.in.h:25
+msgid "Use notification sounds"
+msgstr "Uporabi obvestilne zvoke"
+
+#: ../data/empathy.schemas.in.h:26
+msgid "Use theme for chat rooms"
+msgstr "Uporabi temo za klepetalnice"
+
+#: ../data/empathy.schemas.in.h:27
+msgid "Whether or not the Salut account has been created on the first empathy run."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:28
+msgid "Whether or not the network manager should be used to automatically disconnect/reconnect."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:29
+msgid "Whether or not to check words typed against the languages you want to check with."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:30
+msgid "Whether or not to convert smileys into graphical images in conversations."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:31
+msgid "Whether or not to play a sound when messages arrive."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:32
+msgid "Whether or not to play sounds when away."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:33
+msgid "Whether or not to play sounds when busy."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:34
+msgid "Whether or not to show a popup when a contact becomes available."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:35
+msgid "Whether or not to show avatars for contacts in the contact list and chat windows."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:36
+msgid "Whether or not to show contacts that are offline in the contact list."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:37
+msgid "Whether or not to show the message dialog about closing the main window with the 'x' button in the title bar."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:38
+msgid "Whether to show the contact list in compact mode or not."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:39
+msgid "Whether to use the theme for chat rooms or not."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:40
+msgid "Which criterium to use when sorting the contact list. Default is to use sort by the contact's name with the value \"name\". A value of \"state\" will sort the contact list by state."
+msgstr ""
+
+#: ../libempathy/empathy-presence.c:185
+#: ../libempathy/empathy-presence.c:285
+msgid "Offline"
+msgstr "Nepovezano"
+
+#: ../libempathy/empathy-presence.c:275
+msgid "Available"
+msgstr "N_a voljo"
+
+#: ../libempathy/empathy-presence.c:277
+msgid "Busy"
+msgstr "Zaseden"
+
+#: ../libempathy/empathy-presence.c:280
+msgid "Away"
+msgstr "Odsoten"
+
+#: ../libempathy/empathy-presence.c:282
+msgid "Hidden"
+msgstr "Skrit"
+
+#: ../libempathy/empathy-tp-contact-list.c:729
+#: ../src/empathy.c:152
+msgid "People nearby"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-about-dialog.c:63
+msgid "Empathy is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-about-dialog.c:67
+msgid "Empathy is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-about-dialog.c:71
+msgid "You should have received a copy of the GNU General Public License along with Empathy; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-130159 USA"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-about-dialog.c:99
+msgid "An Instant Messaging client for GNOME"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-about-dialog.c:105
+msgid "translator-credits"
+msgstr "Matej Urbančič"
+
+#: ../libempathy-gtk/empathy-account-chooser.c:337
+msgid "All"
+msgstr "Vse"
+
+#: ../libempathy-gtk/empathy-account-widget-generic.c:146
+#: ../libempathy-gtk/empathy-account-widget-generic.c:208
+#, c-format
+msgid "%s:"
+msgstr "%s:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:1
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:1
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:1
+msgid "<b>Advanced</b>"
+msgstr "<b>Napredno</b>"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:2
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:2
+msgid "Forget password and clear the entry."
+msgstr "Pozabi geslo in počisti vnos."
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:3
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:3
+msgid "Login I_D:"
+msgstr "I_D prijave:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:4
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:4
+msgid "Pass_word:"
+msgstr "_Geslo:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:5
+msgid "Priority:"
+msgstr "Prednost:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:6
+msgid "Reso_urce:"
+msgstr "_Vir:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:7
+msgid "Use encryption (SS_L)"
+msgstr "Uporabi šifriranje (SS_L)"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:8
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:5
+msgid "_Port:"
+msgstr "_Vrata:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:9
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:6
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:10
+msgid "_Server:"
+msgstr "_Strežnik:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:10
+msgid "jabber account settings"
+msgstr "nastavitve računa jabber"
+
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:7
+msgid "msn account settings"
+msgstr "nastavitve računa msn"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:2
+msgid "_E-mail:"
+msgstr "_E-pošta:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:3
+msgid "_First Name: "
+msgstr "_Ime:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:4
+msgid "_Jabber ID:"
+msgstr "_ID Jabber:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:5
+msgid "_Last Name:"
+msgstr "_Priimek:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:6
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:8
+msgid "_Nickname:"
+msgstr "_Vzdevek:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:7
+msgid "_Published Name:"
+msgstr "_Objavljeno ime:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:8
+msgid "salut account settings"
+msgstr "nastavitve računa salut"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:219
+msgid "Disable"
+msgstr "Onemogoči"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:222
+msgid "Enable"
+msgstr "Omogoči"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:257
+msgid "To add a new account, you can click on the 'Add' button and a new entry will be created for you to start configuring."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:261
+msgid "To add a new account, you first have to install a backend for each protocol you want to use."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:268
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:2
+msgid "<b>No Account Selected</b>"
+msgstr "<b>Ni izbranega računa</b>"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:269
+msgid ""
+"\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want to configure in the list on the left."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:275
+msgid "<b>No Accounts Configured</b>"
+msgstr "<b>Ni nastavljenega računa</b>"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:402
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:4
+msgid "Accounts"
+msgstr "Računi"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:899
+#, c-format
+msgid ""
+"You are about to remove your %s account!\n"
+"Are you sure you want to proceed?"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:905
+msgid ""
+"Any associated conversations and chat rooms will NOT be removed if you decide to proceed.\n"
+"\n"
+"Should you decide to add the account back at a later time, they will still be available."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:1
+msgid "<b>New Account</b>"
+msgstr "<b>Nov račun</b>"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:3
+msgid "<b>Settings</b>"
+msgstr "<b>Nastavitve</b>"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:5
+msgid "Cr_eate"
+msgstr "_Ustvari"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:6
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will be created for you to started configuring.\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want to configure in the list on the left."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:9
+msgid "Type:"
+msgstr "Vrsta:"
+
+#: ../libempathy-gtk/empathy-avatar-chooser.c:448
+msgid "Select Your Avatar Image"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-avatar-chooser.c:451
+msgid "No Image"
+msgstr "Brez slike"
+
+#: ../libempathy-gtk/empathy-avatar-chooser.c:511
+msgid "Images"
+msgstr "Slike"
+
+#: ../libempathy-gtk/empathy-avatar-chooser.c:515
+msgid "All Files"
+msgstr "Vse datoteke"
+
+#: ../libempathy-gtk/empathy-avatar-image.c:298
+msgid "Click to enlarge"
+msgstr "Kliknite za povečavo"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:1
+msgid "Call"
+msgstr "Kliči"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:2
+msgid "Input"
+msgstr "Vnos"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:3
+msgid "Mute"
+msgstr "Nemo"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:4
+msgid "Output"
+msgstr "Prikaz"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:5
+msgid "Send Video"
+msgstr "Pošlji posnetek"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:6
+msgid "Volume"
+msgstr "Glasnost"
+
+#: ../libempathy-gtk/empathy-chat.c:436
+msgid "Disconnected"
+msgstr "Povezava prekinjena"
+
+#: ../libempathy-gtk/empathy-chat.c:556
+msgid "offline"
+msgstr "nepovezan"
+
+#: ../libempathy-gtk/empathy-chat.c:559
+msgid "invalid contact"
+msgstr "neveljaven stik"
+
+#: ../libempathy-gtk/empathy-chat.c:562
+msgid "permission denied"
+msgstr "ni dovoljenja"
+
+#: ../libempathy-gtk/empathy-chat.c:565
+msgid "too long message"
+msgstr "predolgo sporočilo"
+
+#: ../libempathy-gtk/empathy-chat.c:568
+msgid "not implemented"
+msgstr "ni del programa"
+
+#: ../libempathy-gtk/empathy-chat.c:571
+msgid "unknown"
+msgstr "neznano"
+
+#: ../libempathy-gtk/empathy-chat.c:575
+#, c-format
+msgid "Error sending message '%s': %s"
+msgstr "Napaka med pošiljanjem sporočila '%s': %s"
+
+#: ../libempathy-gtk/empathy-chat.c:1032
+msgid "Insert Smiley"
+msgstr "Vstavi smeška"
+
+#: ../libempathy-gtk/empathy-chat.c:1079
+msgid "_Check Word Spelling..."
+msgstr "_Preveri črkovanje"
+
+#: ../libempathy-gtk/empathy-chat.c:1508
+msgid "Connected"
+msgstr "Povezano"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:1
+msgid "C_lear"
+msgstr "Po_čisti"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:2
+msgid "Ca_ll"
+msgstr "K_liči"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:3
+msgid "Change _Topic..."
+msgstr "Spremeni _temo ..."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:4
+msgid "Chat"
+msgstr "Klepet"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:5
+msgid "Contact Infor_mation"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-chat.glade.h:6
+msgid "Cu_t"
+msgstr "I_zreži"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:7
+msgid "In_vite..."
+msgstr "_Povabi ..."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:8
+msgid "Insert _Smiley"
+msgstr "Vstavi _smeška"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:9
+msgid "Invitation _message:"
+msgstr "Besedilo povabila:"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:10
+msgid "Invite"
+msgstr "Povabi"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:11
+#: ../libempathy-gtk/empathy-main-window.glade.h:4
+msgid "Join _New..."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-chat.glade.h:12
+msgid "Move Tab _Left"
+msgstr "Premakni zavihek _levo"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:13
+msgid "Move Tab _Right"
+msgstr "Premakni zavihek _desno"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:14
+msgid "Select who would you like to invite:"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-chat.glade.h:15
+msgid "You have been invited to join a chat conference."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-chat.glade.h:16
+#: ../libempathy-gtk/empathy-main-window.glade.h:9
+msgid "_Add Contact..."
+msgstr "_Dodaj stik ..."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:17
+msgid "_Add To Favorites"
+msgstr "Dodaj med _priljubljene"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:18
+msgid "_Close"
+msgstr "_Zapri"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:19
+#: ../libempathy-gtk/empathy-main-window.glade.h:11
+msgid "_Contents"
+msgstr "_Vsebina"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:20
+msgid "_Conversation"
+msgstr "_Pogovori"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:21
+msgid "_Copy"
+msgstr "_Kopiraj"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:22
+msgid "_Detach Tab"
+msgstr "_Odcepi zavihek"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:23
+#: ../libempathy-gtk/empathy-contact-list-view.c:218
+#: ../libempathy-gtk/empathy-main-window.glade.h:12
+msgid "_Edit"
+msgstr "_Uredi"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:24
+#: ../libempathy-gtk/empathy-main-window.glade.h:13
+msgid "_Help"
+msgstr "_Pomoč"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:25
+msgid "_Next Tab"
+msgstr "_Naslednji zavihek"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:26
+msgid "_Paste"
+msgstr "_Prilepi"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:27
+msgid "_Previous Tab"
+msgstr "_Prejšnji zavihek"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:28
+#: ../libempathy-gtk/empathy-main-window.glade.h:18
+msgid "_Room"
+msgstr "_Soba"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:29
+msgid "_Show Contacts"
+msgstr "_Prikaži stike"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:30
+msgid "_Tabs"
+msgstr "_Zavihki"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:31
+#: ../libempathy-gtk/empathy-contact-list-view.c:234
+#: ../libempathy-gtk/empathy-main-window.glade.h:19
+msgid "_View Previous Conversations"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-chat-view.c:469
+msgid "_Copy Link Address"
+msgstr "_Kopiraj naslov povezave"
+
+#: ../libempathy-gtk/empathy-chat-view.c:477
+msgid "_Open Link"
+msgstr "_Odpri povezavo"
+
+#: ../libempathy-gtk/empathy-chat-view.c:755
+msgid "%A %d %B %Y"
+msgstr "%A %d %B %Y"
+
+#: ../libempathy-gtk/empathy-chat-window.c:709
+#, c-format
+msgid "Conversations (%d)"
+msgstr "Pogovori (%d)"
+
+#: ../libempathy-gtk/empathy-chat-window.c:1309
+msgid "Typing a message."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-chatrooms-window.c:258
+msgid "Name"
+msgstr "Ime"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.c:276
+msgid "Room"
+msgstr "Soba"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.c:285
+msgid "Auto Connect"
+msgstr "Samodejno Povezovanje"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:1
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:5
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:1
+#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:1
+msgid "Account:"
+msgstr "Račun:"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:2
+msgid "Edit Favorite Room"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:3
+msgid "Join room on start_up"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:4
+msgid "Join this chat room when Empathy starts and you are connected"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:5
+msgid "Manage Favorite Rooms"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:6
+msgid "N_ame:"
+msgstr "_Ime:"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:7
+msgid "S_erver:"
+msgstr "Str_ežnik:"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:9
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:9
+msgid "_Room:"
+msgstr "_Soba:"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:176
+msgid "Personal Information"
+msgstr "Osebni podatki"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:179
+msgid "Edit Contact Information"
+msgstr "_Uredi podrobnosti stika"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:182
+msgid "Contact Information"
+msgstr "Podatki o stiku"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:277
+msgid "I would like to add you to my contact list."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:301
+msgid "New Contact"
+msgstr "Nov stik"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.glade.h:1
+msgid "Decide _Later"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-contact-dialogs.glade.h:2
+msgid "Subscription Request"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:198
+msgid "_Contact"
+msgstr "_Stik"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:202
+msgid "_Group"
+msgstr "_Skupina"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:206
+#: ../libempathy-gtk/empathy-main-window.glade.h:10
+msgid "_Chat"
+msgstr "_Klepet"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:206
+msgid "Chat with contact"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:210
+msgid "Infor_mation"
+msgstr "_Podrobnosti"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:210
+msgid "View contact information"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:214
+msgid "Re_name"
+msgstr "Preime_nuj"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:214
+msgid "Rename"
+msgstr "Preimenuj"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:218
+msgid "Edit the groups and name for this contact"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:222
+msgid "_Remove"
+msgstr "_Odstrani"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:222
+msgid "Remove contact"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:226
+msgid "_Invite to Chat Room"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:226
+msgid "Invite to a currently open chat room"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:230
+msgid "_Send File..."
+msgstr "_Pošlji datoteko ..."
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:230
+msgid "Send a file"
+msgstr "Pošlji datoteko"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:234
+msgid "View previous conversations with this contact"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:239
+msgid "_Call"
+msgstr "_Klic"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:239
+msgid "Start a voice or video conversation with this contact"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:1423
+msgid "Sorry, I don't want you in my contact list anymore."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-contact-widget.c:662
+msgid "Select"
+msgstr "Izberi"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:672
+#: ../libempathy-gtk/empathy-main-window.c:609
+msgid "Group"
+msgstr "Skupina"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:1
+msgid "<b>Client Information</b>"
+msgstr "<b>Podrobnosti odjemalca</b>"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:2
+msgid "<b>Contact Details</b>"
+msgstr "<b>Podrobnosti stika</b>"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:3
+msgid "<b>Contact</b>"
+msgstr "<b>Stik</b>"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:4
+msgid "<b>Groups</b>"
+msgstr "<b>Skupine</b>"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:6
+msgid "Alias:"
+msgstr "Privzeto ime:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:7
+msgid "Birthday:"
+msgstr "_Rojstni dan:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:8
+msgid "Client:"
+msgstr "Odjemalec:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:9
+msgid "Contact information"
+msgstr "Podatki o stiku"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:10
+msgid "Email:"
+msgstr "E-pošta:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:11
+msgid "Fullname:"
+msgstr "Polno ime:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:12
+msgid "Identifier:"
+msgstr "Določilo:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:13
+msgid "Information requested..."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:14
+msgid "OS:"
+msgstr "OS:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:15
+msgid "Select the groups you want this contact to appear in, you can select more than one group or no groups."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:16
+msgid "Version:"
+msgstr "Različica:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:17
+msgid "Web site:"
+msgstr "Spletna stran:"
+
+#: ../libempathy-gtk/empathy-group-chat.c:251
+msgid "Enter the new topic you want to set for this room:"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-group-chat.c:364
+#, c-format
+msgid "%s has joined the room"
+msgstr "%s se je pridružil klepatalnici"
+
+#: ../libempathy-gtk/empathy-group-chat.c:367
+#, c-format
+msgid "%s has left the room"
+msgstr "%s je zapustil klepetalnico"
+
+#: ../libempathy-gtk/empathy-group-chat.c:447
+#, c-format
+msgid "Topic: %s"
+msgstr "Tema: %s"
+
+#: ../libempathy-gtk/empathy-group-chat.c:569
+#, c-format
+msgid "Topic set to: %s"
+msgstr "Tema določena na: %s"
+
+#: ../libempathy-gtk/empathy-group-chat.c:571
+msgid "No topic defined"
+msgstr "Ni določene teme"
+
+#: ../libempathy-gtk/empathy-group-chat.glade.h:1
+msgid "<b>Topic:</b>"
+msgstr "<b>Tema:</b>"
+
+#: ../libempathy-gtk/empathy-group-chat.glade.h:2
+msgid "Group Chat"
+msgstr "Skupinski klepet"
+
+#: ../libempathy-gtk/empathy-log-window.c:497
+msgid "Account"
+msgstr "Račun"
+
+#: ../libempathy-gtk/empathy-log-window.c:504
+msgid "Conversation"
+msgstr "Pogovor"
+
+#: ../libempathy-gtk/empathy-log-window.c:514
+msgid "Date"
+msgstr "Datum"
+
+#: ../libempathy-gtk/empathy-log-window.glade.h:1
+msgid "Conversations"
+msgstr "Pogovori"
+
+#: ../libempathy-gtk/empathy-log-window.glade.h:2
+msgid "Previous Conversations"
+msgstr "Predhodni pogovori"
+
+#: ../libempathy-gtk/empathy-log-window.glade.h:3
+msgid "Search"
+msgstr "Poišči"
+
+#: ../libempathy-gtk/empathy-log-window.glade.h:4
+msgid "_For:"
+msgstr "_Za:"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.c:286
+msgid "Chat Rooms"
+msgstr "Klepetalnice"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:2
+msgid "Browse:"
+msgstr "Prebrskaj:"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:3
+msgid "Enter the room name to join here or click on one or more rooms in the list."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:4
+msgid "Enter the server which hosts the room, or leave it empty if the room is on the current account's server"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:5
+msgid "Join"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:6
+msgid "Join New"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:7
+msgid "Re_fresh"
+msgstr "_Osveži"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:8
+msgid "This list represents all chat rooms hosted on the server you have entered."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.c:266
+msgid "Show and edit accounts"
+msgstr "Prikaži in uredi račune"
+
+#: ../libempathy-gtk/empathy-main-window.c:630
+msgid "Contact"
+msgstr "Stik"
+
+#: ../libempathy-gtk/empathy-main-window.c:813
+msgid "Edit Account _Details"
+msgstr "Uredi podrobnosti računa"
+
+#: ../libempathy-gtk/empathy-main-window.c:896
+msgid "Network error"
+msgstr "Napaka omrežja"
+
+#: ../libempathy-gtk/empathy-main-window.c:899
+msgid "Authentication failed"
+msgstr "Overovitev ni uspela"
+
+#: ../libempathy-gtk/empathy-main-window.c:902
+msgid "Encryption error"
+msgstr "Napaka šifriranja"
+
+#: ../libempathy-gtk/empathy-main-window.c:905
+msgid "Name in use"
+msgstr "Ime je v uporabi"
+
+#: ../libempathy-gtk/empathy-main-window.c:908
+msgid "Certificate not provided"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.c:911
+msgid "Certificate untrusted"
+msgstr "Certifikat ni overjen"
+
+#: ../libempathy-gtk/empathy-main-window.c:914
+msgid "Certificate expired"
+msgstr "Certifikat je pretekel"
+
+#: ../libempathy-gtk/empathy-main-window.c:917
+msgid "Certificate not activated"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.c:920
+msgid "Certificate hostname mismatch"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.c:923
+msgid "Certificate fingerprint mismatch"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.c:926
+msgid "Certificate self signed"
+msgstr "Certifikat je samo-podpisan"
+
+#: ../libempathy-gtk/empathy-main-window.c:929
+msgid "Certificate error"
+msgstr "Napaka certifikata"
+
+#: ../libempathy-gtk/empathy-main-window.c:932
+msgid "Unknown error"
+msgstr "Neznana napaka"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:1
+msgid "Contact List"
+msgstr "Seznam stikov"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:2
+msgid "Context"
+msgstr "Skladnost"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:3
+msgid "Join _Favorites"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:5
+msgid "Manage Favorites"
+msgstr "Uredi priljubljene"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:6
+msgid "Show _Offline Contacts"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:7
+#: ../megaphone/data/GNOME_Megaphone_Applet.xml.h:1
+#: ../nothere/data/GNOME_NotHere_Applet.xml.h:1
+msgid "_About"
+msgstr "_O Programu"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:8
+msgid "_Accounts"
+msgstr "_Računi"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:14
+#: ../libempathy-gtk/empathy-status-icon.glade.h:2
+msgid "_New Message..."
+msgstr "_ Novo sporočilo ..."
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:15
+msgid "_Personal Information"
+msgstr "_Osebni podatki"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:16
+#: ../megaphone/data/GNOME_Megaphone_Applet.xml.h:3
+msgid "_Preferences"
+msgstr "_Lastnosti"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:17
+#: ../libempathy-gtk/empathy-status-icon.glade.h:3
+msgid "_Quit"
+msgstr "_Zaključi"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:2
+msgid "Contact ID:"
+msgstr "ID stika:"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:3
+msgid "New message"
+msgstr "Novo sporočilo"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:4
+msgid "gtk-cancel"
+msgstr "gtk-cancel"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:5
+msgid "gtk-ok"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-preferences.c:243
+msgid "Language"
+msgstr "Jezik"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:1
+msgid "<b>Appearance</b>"
+msgstr "<b>Videz</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:2
+msgid "<b>Audio</b>"
+msgstr "<b>Zvok</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:3
+msgid "<b>Behaviour</b>"
+msgstr "<b>Obnašanje</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:4
+msgid "<b>Contact List</b>"
+msgstr "<b>Seznam stikov</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:5
+msgid "<b>Enable spell checking for languages:</b>"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:6
+msgid "<b>Options</b>"
+msgstr "<b>Možnosti</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:7
+msgid "<b>Visual</b>"
+msgstr "<b>Vidno</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:8
+msgid "<small>The list of languages reflects only the languages for which you have a dictionary installed.</small>"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:9
+msgid "Avatars are user chosen images shown in the contact list"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:10
+msgid "Chat Th_eme:"
+msgstr "T_ema klepetanja:"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:11
+msgid "Display notifications when contacts come _online"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:12
+msgid "Enable sounds when _away"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:13
+msgid "Enable sounds when _busy"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:14
+msgid "General"
+msgstr "Splošno"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:15
+msgid "Notifications"
+msgstr "Obvestila"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:16
+msgid "Preferences"
+msgstr "Lastnosti"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:17
+msgid "Show _avatars"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:18
+msgid "Show _smileys as images"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:19
+msgid "Show co_mpact contact list"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:20
+msgid "Sort by _name"
+msgstr "Razvrsti po _imenu"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:21
+msgid "Sort by s_tate"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:22
+msgid "Spell Checking"
+msgstr "Preverjanje črkovanja"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:23
+msgid "Themes"
+msgstr "Teme"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:24
+msgid "_Open new chats in separate windows"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:25
+msgid "_Play sound when messages arrive"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:26
+msgid "_Use for chat rooms"
+msgstr "_Uporabi za klepetalnice"
+
+#. Custom messages
+#: ../libempathy-gtk/empathy-presence-chooser.c:692
+msgid "Custom messages..."
+msgstr "Sporočila po meri ..."
+
+#: ../libempathy-gtk/empathy-presence-chooser.glade.h:1
+msgid "Custom message"
+msgstr "Sporočilo po meri"
+
+#: ../libempathy-gtk/empathy-presence-chooser.glade.h:2
+msgid "Message:"
+msgstr "Sporočilo:"
+
+#: ../libempathy-gtk/empathy-presence-chooser.glade.h:3
+msgid "Save message"
+msgstr "Shrani sporočilo"
+
+#: ../libempathy-gtk/empathy-presence-chooser.glade.h:4
+msgid "Status:"
+msgstr "Status:"
+
+#: ../libempathy-gtk/empathy-private-chat.c:229
+#, c-format
+msgid "%s went offline"
+msgstr "%s ni več povezan"
+
+#: ../libempathy-gtk/empathy-private-chat.c:243
+#, c-format
+msgid "%s has come online"
+msgstr "%s se je povezal"
+
+#: ../libempathy-gtk/empathy-spell-dialog.c:85
+msgid "Word"
+msgstr "Beseda"
+
+#: ../libempathy-gtk/empathy-spell-dialog.c:258
+msgid "Suggestions for the word"
+msgstr "Predlog za besedo"
+
+#: ../libempathy-gtk/empathy-spell-dialog.glade.h:1
+msgid "Spell Checker"
+msgstr "Črkovalnik"
+
+#: ../libempathy-gtk/empathy-spell-dialog.glade.h:2
+msgid "Suggestions for the word:"
+msgstr "Predlog za besedo:"
+
+#: ../libempathy-gtk/empathy-status-icon.c:335
+#, c-format
+msgid ""
+"New message from %s:\n"
+"%s"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-status-icon.c:604
+#, c-format
+msgid "Subscription requested by %s"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-status-icon.c:607
+#, c-format
+msgid ""
+"\n"
+"Message: %s"
+msgstr ""
+"\n"
+"Sporočilo: %s"
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:1
+msgid "Status"
+msgstr "Status"
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:4
+msgid "_Show Contact List"
+msgstr "_Pokaži seznam stikov"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:87
+msgid "Classic"
+msgstr "Klasično"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:88
+msgid "Simple"
+msgstr "Enostavno"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:89
+msgid "Clean"
+msgstr "Počisti"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:90
+msgid "Blue"
+msgstr "Modra"
+
+#: ../megaphone/data/GNOME_Megaphone_Applet.schemas.in.h:1
+msgid "The contact to display in the applet. Empty means no contact is displayed."
+msgstr ""
+
+#: ../megaphone/data/GNOME_Megaphone_Applet.schemas.in.h:2
+msgid "The contact's avatar token. Empty means contact has no avatar."
+msgstr ""
+
+#: ../megaphone/data/GNOME_Megaphone_Applet.server.in.in.h:1
+msgid "Megaphone"
+msgstr "Megafon"
+
+#: ../megaphone/data/GNOME_Megaphone_Applet.server.in.in.h:2
+#: ../megaphone/src/megaphone-applet.c:419
+msgid "Talk!"
+msgstr ""
+
+#: ../megaphone/data/GNOME_Megaphone_Applet.xml.h:2
+msgid "_Information"
+msgstr "_Podrobnosti"
+
+#: ../nothere/data/GNOME_NotHere_Applet.server.in.in.h:1
+msgid "Presence"
+msgstr "Prisotnost"
+
+#: ../nothere/data/GNOME_NotHere_Applet.server.in.in.h:2
+#: ../nothere/src/nothere-applet.c:89
+msgid "Set your own presence"
+msgstr ""
+
+#: ../src/empathy.c:211
+msgid "Don't connect on startup"
+msgstr "Brez samodejne povezave ob zagonu"
+
+#: ../src/empathy.c:223
+msgid "- Empathy Instant Messenger"
+msgstr ""
+
diff --git a/gnome-2-22/po/sq.po b/gnome-2-22/po/sq.po
new file mode 100644
index 000000000..787d64b94
--- /dev/null
+++ b/gnome-2-22/po/sq.po
@@ -0,0 +1,1347 @@
+# translation of gossip.HEAD.po to Albanian
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+# Laurent Dhima <laurenti@alblinux.net>, 2004.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gossip.HEAD\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-05-15 23:46+0200\n"
+"PO-Revision-Date: 2004-07-05 19:23+0200\n"
+"Last-Translator: Laurent Dhima <laurenti@alblinux.net>\n"
+"Language-Team: Albanian <gnome-albanian-perkthyesit@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.3.1\n"
+
+#: ../data/empathy.desktop.in.h:1
+#, fuzzy
+msgid "Empathy Instant Messenger"
+msgstr "Instant Messenger"
+
+#: ../data/empathy.desktop.in.h:2
+msgid "Instant Messenger"
+msgstr "Instant Messenger"
+
+#: ../data/empathy.schemas.in.h:1
+msgid "Always open a separate chat window for new chats."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:2
+msgid "Chat window theme"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:3
+msgid ""
+"Comma separated list of spell checker languages to use (e.g. en, fr, nl)."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:4
+msgid "Compact contact list"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:5
+msgid "Contact list sort criterium"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:6
+msgid "Default directory to select an avatar image from"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:7
+msgid "Enable popup when contact is available"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:8
+msgid "Enable sound when away"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:9
+msgid "Enable sound when busy"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:10
+msgid "Enable spell checker"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:11
+msgid "Hide main window"
+msgstr "Fshih dritaren qendrore"
+
+#: ../data/empathy.schemas.in.h:12
+msgid "Hide the main window."
+msgstr "Fshih dritaren qendrore."
+
+#: ../data/empathy.schemas.in.h:13
+msgid "Open new chats in separate windows"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:14
+#, fuzzy
+msgid "Show avatars"
+msgstr "Shfaq kontaktet jo në linjë"
+
+#: ../data/empathy.schemas.in.h:15
+#, fuzzy
+msgid "Show hint about closing the main window"
+msgstr "Lartësia e dritares kryesore."
+
+#: ../data/empathy.schemas.in.h:16
+msgid "Show offline contacts"
+msgstr "Shfaq kontaktet jo në linjë"
+
+#: ../data/empathy.schemas.in.h:17
+msgid "Spell checking languages"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:18
+msgid "The last directory that an avatar image was chosen from."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:19
+msgid "The theme that is used to display the conversation in chat windows."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:20
+msgid "Use graphical smileys"
+msgstr "Përdor smileys grafike"
+
+#: ../data/empathy.schemas.in.h:21
+msgid "Use notification sounds"
+msgstr "Përdor tingujt njoftues"
+
+#: ../data/empathy.schemas.in.h:22
+msgid "Use theme for chat rooms"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:23
+msgid ""
+"Whether or not to check words typed against the languages you want to check "
+"with."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:24
+msgid ""
+"Whether or not to convert smileys into graphical images in conversations."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:25
+msgid "Whether or not to play a sound when messages arrive."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:26
+msgid "Whether or not to play sounds when away."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:27
+msgid "Whether or not to play sounds when busy."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:28
+msgid "Whether or not to show a popup when a contact becomes available."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:29
+msgid ""
+"Whether or not to show avatars for contacts in the contact list and chat "
+"windows."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:30
+msgid "Whether or not to show contacts that are offline in the contact list."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:31
+msgid ""
+"Whether or not to show the message dialog about closing the main window with "
+"the 'x' button in the title bar."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:32
+msgid "Whether to show the contact list in compact mode or not."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:33
+msgid "Whether to use the theme for chat rooms or not."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:34
+msgid ""
+"Which criterium to use when sorting the contact list. Default is to use sort "
+"by the contact's name with the value \"name\". A value of \"state\" will "
+"sort the contact list by state."
+msgstr ""
+
+#: ../libempathy/gossip-contact.c:654 ../libempathy/gossip-presence.c:184
+#: ../libempathy/gossip-presence.c:283
+msgid "Offline"
+msgstr "Jashtë linje"
+
+#: ../libempathy/gossip-presence.c:274
+msgid "Available"
+msgstr "Në dispozicion"
+
+#: ../libempathy/gossip-presence.c:276
+msgid "Busy"
+msgstr "I zënë"
+
+#: ../libempathy/gossip-presence.c:279
+msgid "Away"
+msgstr "Nuk jam këtu"
+
+#: ../libempathy-gtk/empathy-main-window.c:254
+#, fuzzy
+msgid "Show and edit accounts"
+msgstr "Shfaq kontaktet jo në linjë"
+
+#: ../libempathy-gtk/empathy-main-window.c:456
+msgid "Group"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.c:477
+#, fuzzy
+msgid "Contact"
+msgstr "Shfaq kontaktet jo në linjë"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:1
+#, fuzzy
+msgid "Contact List - Empathy"
+msgstr "Shfaq kontaktet jo në linjë"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:2
+#, fuzzy
+msgid "Context"
+msgstr "Lidhu"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:3
+msgid "Join _Favorites"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:4
+#: ../libempathy-gtk/gossip-chat.glade.h:10
+msgid "Join _New..."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:5
+msgid "Manage Favorites..."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:6
+msgid "Show _Offline Contacts"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:7
+#, fuzzy
+msgid "_About"
+msgstr "_Prano"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:8
+#, fuzzy
+msgid "_Accounts"
+msgstr "_Prano"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:9
+#: ../libempathy-gtk/gossip-chat.glade.h:15
+msgid "_Add Contact..."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:10
+#: ../libempathy-gtk/gossip-contact-list.c:298
+msgid "_Chat"
+msgstr "_Chat"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:11
+#, fuzzy
+msgid "_Contents"
+msgstr "Lidhu"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:12
+#: ../libempathy-gtk/gossip-chat.glade.h:21
+#: ../libempathy-gtk/gossip-contact-list.c:310
+msgid "_Edit"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:13
+msgid "_Help"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:14
+#: ../libempathy-gtk/empathy-status-icon.glade.h:2
+msgid "_New Message..."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:15
+msgid "_Personal Information"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:16
+msgid "_Preferences"
+msgstr "_Preferimet"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:17
+#: ../libempathy-gtk/empathy-status-icon.glade.h:3
+msgid "_Quit"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:18
+#: ../libempathy-gtk/gossip-chat.glade.h:25
+msgid "_Room"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:19
+#: ../libempathy-gtk/gossip-chat.glade.h:28
+#: ../libempathy-gtk/gossip-contact-list.c:326
+msgid "_View Previous Conversations"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:1
+msgid "Status"
+msgstr "Gjendja"
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:4
+msgid "_Show Contact List"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-about-dialog.c:63
+msgid ""
+"Empathy is free software; you can redistribute it and/or modify it under the "
+"terms of the GNU General Public License as published by the Free Software "
+"Foundation; either version 2 of the License, or (at your option) any later "
+"version."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-about-dialog.c:67
+msgid ""
+"Empathy is distributed in the hope that it will be useful, but WITHOUT ANY "
+"WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS "
+"FOR A PARTICULAR PURPOSE. See the GNU General Public License for more "
+"details."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-about-dialog.c:71
+msgid ""
+"You should have received a copy of the GNU General Public License along with "
+"Empathy; if not, write to the Free Software Foundation, Inc., 51 Franklin "
+"Street, Fifth Floor, Boston, MA 02110-130159 USA"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-about-dialog.c:99
+#, fuzzy
+msgid "An Instant Messaging client for GNOME"
+msgstr "Gossip, Klient për Mesazhe direkte"
+
+#: ../libempathy-gtk/gossip-about-dialog.c:105
+#, fuzzy
+msgid "translator-credits"
+msgstr "Laurent Dhima <laurenti@alblinux.net>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:224
+#, fuzzy
+msgid "Disable"
+msgstr "Në dispozicion"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:227
+msgid "Enable"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:261
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:3
+#, fuzzy
+msgid "<b>No Account Selected</b>"
+msgstr "<b>Përshkrimi</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:263
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to start configuring.\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want "
+"to configure in the list on the left."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:272
+#, fuzzy
+msgid "<b>No Accounts Configured</b>"
+msgstr "<b>Përshkrimi</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:274
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to start configuring."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:362
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:6
+msgid "Accounts"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:857
+#, c-format
+msgid ""
+"You are about to remove your %s account!\n"
+"Are you sure you want to proceed?"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:863
+msgid ""
+"Any associated conversations and chat rooms will NOT be removed if you "
+"decide to proceed.\n"
+"\n"
+"Should you decide to add the account back at a later time, they will still "
+"be available."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:1
+#, fuzzy
+msgid "<b>Account</b>"
+msgstr "<b>Përshkrimi</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:2
+#, fuzzy
+msgid "<b>New Account</b>"
+msgstr "<b>Përshkrimi</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:4
+#, fuzzy
+msgid "<b>Settings</b>"
+msgstr "Gjendja"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:5
+msgid "A unique name for this account to identify it personally to you."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:7
+#, fuzzy
+msgid "Cr_eate"
+msgstr "Bisedë në linjë"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:8
+#, fuzzy
+msgid "Imendio "
+msgstr "Gossip"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:9
+msgid "Jabber"
+msgstr "Jabber"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:10
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to started configuring.\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want "
+"to configure in the list on the left."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:13
+#, fuzzy
+msgid "_Name:"
+msgstr "Emri:"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:14
+msgid "_Type:"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-account-widget-generic.c:144
+#: ../libempathy-gtk/gossip-account-widget-generic.c:186
+#, c-format
+msgid "%s:"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:1
+msgid ""
+"<small><b><span foreground=\"#555\">Example: user@jabber.org</span></b></"
+"small>"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:2
+msgid "Forget password and clear the entry."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:3
+msgid "Login I_D:"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:4
+#, fuzzy
+msgid "Pass_word:"
+msgstr "Fjalëkalimi:"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:5
+msgid "Reso_urce:"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:6
+msgid "Use encryption (SS_L)"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:7
+#, fuzzy
+msgid "_Port:"
+msgstr "_Fjalëkalimi:"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:8
+msgid "_Server:"
+msgstr "_Serveri:"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:9
+msgid "jabber account settings"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.c:314
+msgid "Disconnected"
+msgstr "I shkëputur"
+
+#: ../libempathy-gtk/gossip-chat.c:858
+msgid "Insert Smiley"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.c:906
+msgid "_Check Word Spelling..."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.c:1244
+msgid "Connected"
+msgstr "I lidhur"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:1
+msgid "C_lear"
+msgstr "P_astro"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:2
+msgid "Change _Topic..."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:3
+msgid "Chat"
+msgstr "Bisedë në linjë"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:4
+#, fuzzy
+msgid "Contact Infor_mation"
+msgstr "<b>Përshkrimi</b>"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:5
+#, fuzzy
+msgid "Cu_t"
+msgstr "Bisedë në linjë"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:6
+msgid "In_vite..."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:7
+msgid "Insert _Smiley"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:8
+msgid "Invitation _message:"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:9
+msgid "Invite"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:11
+msgid "Move Tab _Left"
+msgstr "Lëviz skedën _majtas"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:12
+msgid "Move Tab _Right"
+msgstr "Lëviz skedën _djathtas"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:13
+msgid "Select who would you like to invite:"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:14
+msgid "You have been invited to join a chat conference."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:16
+msgid "_Add To Favorites"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:17
+msgid "_Close"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:18
+msgid "_Conversation"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:19
+msgid "_Copy"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:20
+msgid "_Detach Tab"
+msgstr "_Shkëpute skedën"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:22
+msgid "_Next Tab"
+msgstr "Skeda në _Vazhdim"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:23
+msgid "_Paste"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:24
+msgid "_Previous Tab"
+msgstr "Skeda _Paraardhëse"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:26
+#, fuzzy
+msgid "_Show Contacts"
+msgstr "Shfaq kontaktet jo në linjë"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:27
+msgid "_Tabs"
+msgstr "_Skedat"
+
+#: ../libempathy-gtk/gossip-chat-view.c:544
+msgid "_Copy Link Address"
+msgstr "_Kopjo adresën e lidhjes"
+
+#: ../libempathy-gtk/gossip-chat-view.c:552
+msgid "_Open Link"
+msgstr "_Hap adresën"
+
+#: ../libempathy-gtk/gossip-chat-view.c:889
+msgid "%A %d %B %Y"
+msgstr "%A %d %B %Y"
+
+#: ../libempathy-gtk/gossip-chat-window.c:685
+#: ../libempathy-gtk/gossip-chat-window.c:715
+#, fuzzy
+msgid "New Message"
+msgid_plural "New Messages"
+msgstr[0] "Mesazh i ri nga %s"
+msgstr[1] "Mesazh i ri nga %s"
+
+#: ../libempathy-gtk/gossip-chat-window.c:691
+#, fuzzy
+msgid "Chat Room"
+msgstr "Bisedë në linjë"
+
+#: ../libempathy-gtk/gossip-chat-window.c:696
+#: ../libempathy-gtk/gossip-chat-window.c:719
+#, fuzzy, c-format
+msgid "Conversation"
+msgid_plural "Conversations (%d)"
+msgstr[0] "Lidhu"
+msgstr[1] "Lidhu"
+
+#: ../libempathy-gtk/gossip-chat-window.c:1295
+msgid "Typing a message."
+msgstr "Duke shkruar një mesazh."
+
+#: ../libempathy-gtk/gossip-contact-list.c:290
+#, fuzzy
+msgid "_Contact"
+msgstr "Shfaq kontaktet jo në linjë"
+
+#: ../libempathy-gtk/gossip-contact-list.c:294
+#, fuzzy
+msgid "_Group"
+msgstr "_Chat"
+
+#: ../libempathy-gtk/gossip-contact-list.c:298
+msgid "Chat with contact"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-contact-list.c:302
+#, fuzzy
+msgid "Infor_mation"
+msgstr "<b>Përshkrimi</b>"
+
+#: ../libempathy-gtk/gossip-contact-list.c:302
+#, fuzzy
+msgid "View contact information"
+msgstr "<b>Përshkrimi</b>"
+
+#: ../libempathy-gtk/gossip-contact-list.c:306
+#, fuzzy
+msgid "Re_name"
+msgstr "Emri:"
+
+#: ../libempathy-gtk/gossip-contact-list.c:306
+#, fuzzy
+msgid "Rename"
+msgstr "Përdoruesi:"
+
+#: ../libempathy-gtk/gossip-contact-list.c:310
+msgid "Edit the groups and name for this contact"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-contact-list.c:314
+#, fuzzy
+msgid "_Remove"
+msgstr "_Hiq"
+
+#: ../libempathy-gtk/gossip-contact-list.c:314
+#, fuzzy
+msgid "Remove contact"
+msgstr "_Hiq"
+
+#: ../libempathy-gtk/gossip-contact-list.c:318
+#, fuzzy
+msgid "_Invite to Chat Room"
+msgstr "Bisedë në linjë"
+
+#: ../libempathy-gtk/gossip-contact-list.c:318
+msgid "Invite to a currently open chat room"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-contact-list.c:322
+msgid "_Send File..."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-contact-list.c:322
+#, fuzzy
+msgid "Send a file"
+msgstr "Zgjidh"
+
+#: ../libempathy-gtk/gossip-contact-list.c:326
+msgid "View previous conversations with this contact"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.c:250
+msgid "Language"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:1
+#, fuzzy
+msgid "<b>Appearance</b>"
+msgstr "Paraqitja"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:2
+#, fuzzy
+msgid "<b>Audio</b>"
+msgstr "<b>Përshkrimi</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:3
+#, fuzzy
+msgid "<b>Behaviour</b>"
+msgstr "<b>Përshkrimi</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:4
+#, fuzzy
+msgid "<b>Contact List</b>"
+msgstr "Gjendja"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:5
+msgid "<b>Languages</b>"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:6
+#, fuzzy
+msgid "<b>Options</b>"
+msgstr "Lidhu"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:7
+#, fuzzy
+msgid "<b>Visual</b>"
+msgstr "<b>Përshkrimi</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:8
+msgid ""
+"<small>The list of languages reflects only the languages for which you have "
+"a dictionary installed.</small>"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:9
+msgid "Avatars are user chosen images shown in the contact list"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:10
+msgid "Chat Th_eme:"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:11
+msgid "Display notifications when contacts come _online"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:12
+msgid "Enable sounds when _away"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:13
+msgid "Enable sounds when _busy"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:14
+msgid "General"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:15
+#, fuzzy
+msgid "Notifications"
+msgstr "Përdor tingujt njoftues"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:16
+#, fuzzy
+msgid "Preferences"
+msgstr "_Preferimet"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:17
+msgid "Show _avatars"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:18
+msgid "Show _smileys as images"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:19
+#, fuzzy
+msgid "Show co_mpact contact list"
+msgstr "Shfaq kontaktet jo në linjë"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:20
+msgid "Sort by _name"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:21
+msgid "Sort by s_tate"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:22
+msgid "Spell Checking"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:23
+msgid "Themes"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:24
+msgid "_Enable spell checking"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:25
+msgid "_Open new chats in separate windows"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:26
+msgid "_Play sound when messages arrive"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:27
+msgid "_Use for chat rooms"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:702
+msgid "Custom message..."
+msgstr ""
+
+#. Clear list
+#: ../libempathy-gtk/gossip-presence-chooser.c:724
+#, fuzzy
+msgid "Clear List..."
+msgstr "P_astro"
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:803
+msgid "Are you sure you want to clear the list?"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:807
+msgid ""
+"This will remove any custom messages you have added to the list of preset "
+"status messages."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:812
+#, fuzzy
+msgid "Clear List"
+msgstr "P_astro"
+
+#: ../libempathy-gtk/gossip-presence-chooser.glade.h:1
+msgid "Enter status message:"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-presence-chooser.glade.h:2
+#, fuzzy
+msgid "Status Message Presets"
+msgstr "Gossip, Klient për Mesazhe direkte"
+
+#: ../libempathy-gtk/gossip-presence-chooser.glade.h:3
+#, fuzzy
+msgid "_Add to status message list"
+msgstr "Gossip, Klient për Mesazhe direkte"
+
+#: ../libempathy-gtk/gossip-private-chat.c:198
+#, c-format
+msgid "%s went offline"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-private-chat.c:212
+#, c-format
+msgid "%s has come online"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-theme-manager.c:87
+msgid "Classic"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-theme-manager.c:88
+msgid "Simple"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-theme-manager.c:89
+#, fuzzy
+msgid "Clean"
+msgstr "P_astro"
+
+#: ../libempathy-gtk/gossip-theme-manager.c:90
+msgid "Blue"
+msgstr ""
+
+#: ../src/empathy-main.c:145
+msgid "Don't connect on startup"
+msgstr ""
+
+#: ../src/empathy-main.c:155
+#, fuzzy
+msgid "- Empathy Instant Messenger"
+msgstr "Instant Messenger"
+
+#, fuzzy
+#~ msgid "Gossip Instant Messenger"
+#~ msgstr "Instant Messenger"
+
+#, fuzzy
+#~ msgid "Unknown"
+#~ msgstr "Gabim i panjohur"
+
+#, fuzzy
+#~ msgid "No affiliation"
+#~ msgstr "Përdor tingujt njoftues"
+
+#, fuzzy
+#~ msgid "An unknown error occurred, check your details are correct."
+#~ msgstr "Gabim i panjohur"
+
+#, fuzzy
+#~ msgid "Unavailable"
+#~ msgstr "Në dispozicion"
+
+#, fuzzy
+#~ msgid "An unknown error occurred."
+#~ msgstr "Gabim i panjohur"
+
+#, fuzzy
+#~ msgid "Connection refused."
+#~ msgstr "I lidhur"
+
+#, fuzzy
+#~ msgid "Connection timed out."
+#~ msgstr "I lidhur"
+
+#, fuzzy
+#~ msgid "new account"
+#~ msgstr "Shteti:"
+
+#~ msgid "Home"
+#~ msgstr "Shtëpi"
+
+#, fuzzy
+#~ msgid "Registration is required"
+#~ msgstr "Përshkrimi"
+
+#, fuzzy
+#~ msgid "Disconnect"
+#~ msgstr "_Shkëputu"
+
+#~ msgid "Connect"
+#~ msgstr "Lidhu"
+
+#, fuzzy
+#~ msgid "Successfully changed your account password."
+#~ msgstr "Shkruani fjalëkalimin tuaj"
+
+#, fuzzy
+#~ msgid "Failed to change your account password."
+#~ msgstr "Shkruani fjalëkalimin tuaj"
+
+#, fuzzy
+#~ msgid ""
+#~ "Please enter a new password for this account:\n"
+#~ "%s"
+#~ msgstr "Shkruani fjalëkalimin tuaj"
+
+#, fuzzy
+#~ msgid "%d new message"
+#~ msgid_plural "%d new messages"
+#~ msgstr[0] "Mesazh i ri nga %s"
+#~ msgstr[1] "Mesazh i ri nga %s"
+
+#~ msgid "New message from %s"
+#~ msgstr "Mesazh i ri nga %s"
+
+#, fuzzy
+#~ msgid "Accept"
+#~ msgstr "_Prano"
+
+#, fuzzy
+#~ msgid "Name"
+#~ msgstr "Emri:"
+
+#, fuzzy
+#~ msgid "Room"
+#~ msgstr "Bisedë në linjë"
+
+#, fuzzy
+#~ msgid "Auto Connect"
+#~ msgstr "Lidhu"
+
+#, fuzzy
+#~ msgid "Information requested..."
+#~ msgstr "I lidhur"
+
+#~ msgid "Select"
+#~ msgstr "Zgjidh"
+
+#, fuzzy
+#~ msgid "Unknown error occurred during file transfer."
+#~ msgstr "Gabim i panjohur"
+
+#, fuzzy
+#~ msgid "Select a file"
+#~ msgstr "Zgjidh"
+
+#, fuzzy
+#~ msgid "Connecting..."
+#~ msgstr "Lidhu"
+
+#, fuzzy
+#~ msgid "Retry connection"
+#~ msgstr "Lidhu"
+
+#, fuzzy
+#~ msgid "Create"
+#~ msgstr "Bisedë në linjë"
+
+#, fuzzy
+#~ msgid "Chat!"
+#~ msgstr "Bisedë në linjë"
+
+#, fuzzy
+#~ msgid "%s wants to be added to your contact list."
+#~ msgstr "%s do të shtohet tek lista juaj e kontakteve."
+
+#, fuzzy
+#~ msgid "Someone wants to be added to your contact list."
+#~ msgstr "%s do të shtohet tek lista juaj e kontakteve."
+
+#, fuzzy
+#~ msgid "Contact Information"
+#~ msgstr "<b>Përshkrimi</b>"
+
+#, fuzzy
+#~ msgid "Do you want to add this person to your contact list?"
+#~ msgstr "%s do të shtohet tek lista juaj e kontakteve."
+
+#, fuzzy
+#~ msgid "Do you want to add %s to your contact list?"
+#~ msgstr "%s do të shtohet tek lista juaj e kontakteve."
+
+#, fuzzy
+#~ msgid "Please enter your %s account password"
+#~ msgstr "Shkruani fjalëkalimin tuaj"
+
+#, fuzzy
+#~ msgid "Change"
+#~ msgstr "Bisedë në linjë"
+
+#, fuzzy
+#~ msgid "File name:"
+#~ msgstr "Përdoruesi:"
+
+#~ msgid "_Accept"
+#~ msgstr "_Prano"
+
+#~ msgid "_Deny"
+#~ msgstr "_Moho"
+
+#, fuzzy
+#~ msgid "<b>Topic:</b>"
+#~ msgstr "<b>Përshkrimi</b>"
+
+#, fuzzy
+#~ msgid "Account:"
+#~ msgstr "Shteti:"
+
+#, fuzzy
+#~ msgid "N_ame:"
+#~ msgstr "Emri:"
+
+#, fuzzy
+#~ msgid "S_erver:"
+#~ msgstr "Serveri:"
+
+#~ msgid "_Nickname:"
+#~ msgstr "_Pseudonimi:"
+
+#, fuzzy
+#~ msgid "<b>Client Information</b>"
+#~ msgstr "<b>Përshkrimi</b>"
+
+#, fuzzy
+#~ msgid "<b>Groups</b>"
+#~ msgstr "Gjendja"
+
+#, fuzzy
+#~ msgid "<b>Name</b>"
+#~ msgstr "Gjendja"
+
+#, fuzzy
+#~ msgid "<b>Subscription</b>"
+#~ msgstr "Lidhu"
+
+#, fuzzy
+#~ msgid "Accou_nt:"
+#~ msgstr "Shteti:"
+
+#, fuzzy
+#~ msgid "Add Contact"
+#~ msgstr "Shfaq kontaktet jo në linjë"
+
+#, fuzzy
+#~ msgid "Ch_at"
+#~ msgstr "Bisedë në linjë"
+
+#, fuzzy
+#~ msgid "Con_tact:"
+#~ msgstr "Shfaq kontaktet jo në linjë"
+
+#, fuzzy
+#~ msgid "Connect on S_tartup"
+#~ msgstr "I lidhur"
+
+#, fuzzy
+#~ msgid "Contacts"
+#~ msgstr "Shfaq kontaktet jo në linjë"
+
+#~ msgid "Country:"
+#~ msgstr "Shteti:"
+
+#, fuzzy
+#~ msgid "Edit Contact"
+#~ msgstr "Shfaq kontaktet jo në linjë"
+
+#~ msgid "Email:"
+#~ msgstr "Email:"
+
+#~ msgid "Name:"
+#~ msgstr "Emri:"
+
+#, fuzzy
+#~ msgid "R_egister"
+#~ msgstr "Përshkrimi"
+
+#~ msgid "Version:"
+#~ msgstr "Versioni:"
+
+#, fuzzy
+#~ msgid "Which account do you want to use?"
+#~ msgstr "Çfarë kërkese dëshironi t'i dërgoni %s?"
+
+#, fuzzy
+#~ msgid "_Connect"
+#~ msgstr "Lidhu"
+
+#, fuzzy
+#~ msgid "_Description:"
+#~ msgstr "Përshkrimi"
+
+#~ msgid "_Disconnect"
+#~ msgstr "_Shkëputu"
+
+#, fuzzy
+#~ msgid "_Email:"
+#~ msgstr "Email:"
+
+#, fuzzy
+#~ msgid ""
+#~ "_Enter the name or contact ID of the person you want to chat to below:"
+#~ msgstr ""
+#~ "Shkruaj ID e përdoruesit të personit të cilit dëshironi t'i dërgoni "
+#~ "mesazh chat."
+
+#, fuzzy
+#~ msgid "_For:"
+#~ msgstr "_Fjalëkalimi:"
+
+#, fuzzy
+#~ msgid "_Full Name:"
+#~ msgstr "Emri:"
+
+#, fuzzy
+#~ msgid "_Group:"
+#~ msgstr "_Chat"
+
+#, fuzzy
+#~ msgid "_Nick Name:"
+#~ msgstr "_Pseudonimi:"
+
+#, fuzzy
+#~ msgid "_Password:"
+#~ msgstr "Fjalëkalimi:"
+
+#, fuzzy
+#~ msgid "_Quit Message:"
+#~ msgstr "Mesazh i ri nga %s"
+
+#~ msgid "_Subscribe"
+#~ msgstr "_Abonohu"
+
+#~ msgid "%s will be added to your contact list."
+#~ msgstr "%s do të shtohet tek lista juaj e kontakteve."
+
+#, fuzzy
+#~ msgid "%s ID of new contact:"
+#~ msgstr "Shfaq kontaktet jo në linjë"
+
+#, fuzzy
+#~ msgid ""
+#~ "Please enter your invitation message to:\n"
+#~ "%s"
+#~ msgstr "Shkruani fjalëkalimin tuaj"
+
+#, fuzzy
+#~ msgid "/Contact Infor_mation"
+#~ msgstr "<b>Përshkrimi</b>"
+
+#, fuzzy
+#~ msgid "Na_me:"
+#~ msgstr "Emri:"
+
+#~ msgid " "
+#~ msgstr " "
+
+#~ msgid "Gossip"
+#~ msgstr "Gossip"
+
+#~ msgid "Server:"
+#~ msgstr "Serveri:"
+
+#, fuzzy
+#~ msgid "What password do you want to use?"
+#~ msgstr "Çfarë kërkese dëshironi t'i dërgoni %s?"
+
+#, fuzzy
+#~ msgid "_No"
+#~ msgstr "Jo"
+
+#, fuzzy
+#~ msgid "_Yes"
+#~ msgstr "Po"
+
+#~ msgid "Height of main window"
+#~ msgstr "Lartësia e dritares qendrore"
+
+#~ msgid "The X position of the main window."
+#~ msgstr "Pozicioni X i dritares qendrore."
+
+#~ msgid "The Y position of the main window."
+#~ msgstr "Pozicioni Y i dritares qendrore."
+
+#~ msgid "The width of the main window."
+#~ msgstr "Gjerësia e dritares kryesore."
+
+#~ msgid "Width of the main window"
+#~ msgstr "Gjerësia e dritares qendrore"
+
+#~ msgid "X position of main window"
+#~ msgstr "Pozicioni X i dritares qendrore"
+
+#~ msgid "Y position of main window"
+#~ msgstr "Pozicioni Y i dritares qendrore"
+
+#~ msgid "Gossip, Instant Messaging Client"
+#~ msgstr "Gossip, Klient për Mesazhe direkte"
+
+#, fuzzy
+#~ msgid "Close this chat window"
+#~ msgstr "Fshih dritaren qendrore."
+
+#~ msgid "Available..."
+#~ msgstr "Në dispozicion..."
+
+#~ msgid "Busy..."
+#~ msgstr "I zënë..."
+
+#~ msgid "Away..."
+#~ msgstr "Nuk jam këtu..."
+
+#, fuzzy
+#~ msgid "Could not open connection"
+#~ msgstr "E pamundur lidhja"
+
+#~ msgid "Written by:"
+#~ msgstr "Shkruar nga:"
+
+#~ msgid "Artwork by:"
+#~ msgstr "Artwork nga:"
+
+#~ msgid "Translated by:"
+#~ msgstr "Përkthyer nga:"
+
+#~ msgid "%sChat - %s"
+#~ msgstr "%sChat - %s"
+
+#, fuzzy
+#~ msgid "Persian"
+#~ msgstr "Versioni:"
+
+#, fuzzy
+#~ msgid "Gossip - Preferences"
+#~ msgstr "Preferimet"
+
+#~ msgid "Make sure that your account information is correct."
+#~ msgstr "Sigurohu që ke dhënë informacionet korrekte të llogarisë tuaj."
+
+#~ msgid "%s wants to be notified of your status."
+#~ msgstr "%s dëshiron të njoftohet mbi gjendjen tuaj."
+
+#~ msgid "You were disconnected from the server. Do you want to reconnect?"
+#~ msgstr "Nuk jeni i lidhur me server-in. Dëshironi të rilidheni?"
+
+#~ msgid "Edit List..."
+#~ msgstr "Ndrysho listën..."
+
+#~ msgid "*"
+#~ msgstr "*"
+
+#~ msgid "From:"
+#~ msgstr "Nga:"
+
+#~ msgid "To:"
+#~ msgstr "Për:"
+
+#~ msgid "_Send"
+#~ msgstr "_Dërgo"
+
+#~ msgid "C_onnect"
+#~ msgstr "Li_dhu"
+
+#, fuzzy
+#~ msgid "Connect _Server:"
+#~ msgstr "_Serveri:"
+
+#, fuzzy
+#~ msgid "_Jabber ID:"
+#~ msgstr "Jabber"
+
+#~ msgid " "
+#~ msgstr " "
+
+#~ msgid "_Add"
+#~ msgstr "_Shto"
+
+#~ msgid " "
+#~ msgstr " "
+
+#~ msgid "Sound"
+#~ msgstr "Zëri"
diff --git a/gnome-2-22/po/sr.po b/gnome-2-22/po/sr.po
new file mode 100644
index 000000000..58a2ba3b8
--- /dev/null
+++ b/gnome-2-22/po/sr.po
@@ -0,0 +1,2314 @@
+# Serbian translation of gossip
+# Courtesy of Prevod.org team (http://prevod.org/) -- 2003, 2004.
+#
+# This file is distributed under the same license as the gossip package.
+#
+# Maintainer: Дејан Матијевић <dejan@ns.sympatico.ca>
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gossip\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-05-15 23:46+0200\n"
+"PO-Revision-Date: 2004-02-27 23:05+0100\n"
+"Last-Translator: Данило Шеган <danilo@prevod.org>\n"
+"Language-Team: Serbian (sr) <serbiangnome-lista@nongnu.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../data/empathy.desktop.in.h:1
+#, fuzzy
+msgid "Empathy Instant Messenger"
+msgstr "Брзи гласник"
+
+#: ../data/empathy.desktop.in.h:2
+msgid "Instant Messenger"
+msgstr "Брзи гласник"
+
+#: ../data/empathy.schemas.in.h:1
+msgid "Always open a separate chat window for new chats."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:2
+#, fuzzy
+msgid "Chat window theme"
+msgstr "Ћаскај са:"
+
+#: ../data/empathy.schemas.in.h:3
+msgid ""
+"Comma separated list of spell checker languages to use (e.g. en, fr, nl)."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:4
+#, fuzzy
+msgid "Compact contact list"
+msgstr "Додај у свој списак другара"
+
+#: ../data/empathy.schemas.in.h:5
+msgid "Contact list sort criterium"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:6
+msgid "Default directory to select an avatar image from"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:7
+msgid "Enable popup when contact is available"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:8
+#, fuzzy
+msgid "Enable sound when away"
+msgstr "Искључи звук када сте _одсутни"
+
+#: ../data/empathy.schemas.in.h:9
+#, fuzzy
+msgid "Enable sound when busy"
+msgstr "Искључи звук када сте _заузети"
+
+#: ../data/empathy.schemas.in.h:10
+#, fuzzy
+msgid "Enable spell checker"
+msgstr "Чаврљање - Пошаљи поруку"
+
+#: ../data/empathy.schemas.in.h:11
+msgid "Hide main window"
+msgstr "Сакриј главни прозор"
+
+#: ../data/empathy.schemas.in.h:12
+msgid "Hide the main window."
+msgstr "Сакриј главни прозор."
+
+#: ../data/empathy.schemas.in.h:13
+msgid "Open new chats in separate windows"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:14
+#, fuzzy
+msgid "Show avatars"
+msgstr "_Прикажи списак контаката"
+
+#: ../data/empathy.schemas.in.h:15
+#, fuzzy
+msgid "Show hint about closing the main window"
+msgstr "Висина главног прозора."
+
+#: ../data/empathy.schemas.in.h:16
+msgid "Show offline contacts"
+msgstr "Прикажи неповезане контакте"
+
+#: ../data/empathy.schemas.in.h:17
+msgid "Spell checking languages"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:18
+msgid "The last directory that an avatar image was chosen from."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:19
+msgid "The theme that is used to display the conversation in chat windows."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:20
+msgid "Use graphical smileys"
+msgstr "Прикажи графички смешак"
+
+#: ../data/empathy.schemas.in.h:21
+msgid "Use notification sounds"
+msgstr "Користи звук за напомене"
+
+#: ../data/empathy.schemas.in.h:22
+msgid "Use theme for chat rooms"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:23
+msgid ""
+"Whether or not to check words typed against the languages you want to check "
+"with."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:24
+msgid ""
+"Whether or not to convert smileys into graphical images in conversations."
+msgstr "Да ли да претвори смешке у графичке слике у чаврљању."
+
+#: ../data/empathy.schemas.in.h:25
+msgid "Whether or not to play a sound when messages arrive."
+msgstr "Да ли да пусти звук када порука стигне."
+
+#: ../data/empathy.schemas.in.h:26
+msgid "Whether or not to play sounds when away."
+msgstr "Да ли да пусти звук када је одсутан."
+
+#: ../data/empathy.schemas.in.h:27
+msgid "Whether or not to play sounds when busy."
+msgstr "Да ли да пусти звук када је заузет."
+
+#: ../data/empathy.schemas.in.h:28
+#, fuzzy
+msgid "Whether or not to show a popup when a contact becomes available."
+msgstr "Да ли да пусти звук када порука стигне."
+
+#: ../data/empathy.schemas.in.h:29
+#, fuzzy
+msgid ""
+"Whether or not to show avatars for contacts in the contact list and chat "
+"windows."
+msgstr "Да ли да прикажем неповезане контакте у списку контаката."
+
+#: ../data/empathy.schemas.in.h:30
+msgid "Whether or not to show contacts that are offline in the contact list."
+msgstr "Да ли да прикажем неповезане контакте у списку контаката."
+
+#: ../data/empathy.schemas.in.h:31
+msgid ""
+"Whether or not to show the message dialog about closing the main window with "
+"the 'x' button in the title bar."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:32
+#, fuzzy
+msgid "Whether to show the contact list in compact mode or not."
+msgstr "Да ли да прикажем неповезане контакте у списку контаката."
+
+#: ../data/empathy.schemas.in.h:33
+msgid "Whether to use the theme for chat rooms or not."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:34
+msgid ""
+"Which criterium to use when sorting the contact list. Default is to use sort "
+"by the contact's name with the value \"name\". A value of \"state\" will "
+"sort the contact list by state."
+msgstr ""
+
+#: ../libempathy/gossip-contact.c:654 ../libempathy/gossip-presence.c:184
+#: ../libempathy/gossip-presence.c:283
+msgid "Offline"
+msgstr "Неповезан"
+
+#: ../libempathy/gossip-presence.c:274
+msgid "Available"
+msgstr "Доступан"
+
+#: ../libempathy/gossip-presence.c:276
+msgid "Busy"
+msgstr "Заузет"
+
+#: ../libempathy/gossip-presence.c:279
+msgid "Away"
+msgstr "Одсутан"
+
+#: ../libempathy-gtk/empathy-main-window.c:254
+#, fuzzy
+msgid "Show and edit accounts"
+msgstr "_Прикажи списак контаката"
+
+#: ../libempathy-gtk/empathy-main-window.c:456
+msgid "Group"
+msgstr "Група"
+
+#: ../libempathy-gtk/empathy-main-window.c:477
+#, fuzzy
+msgid "Contact"
+msgstr "Додај контакт"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:1
+#, fuzzy
+msgid "Contact List - Empathy"
+msgstr "_Сакриј списак контаката"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:2
+#, fuzzy
+msgid "Context"
+msgstr "Повежи се"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:3
+#, fuzzy
+msgid "Join _Favorites"
+msgstr "У_реди омиљене..."
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:4
+#: ../libempathy-gtk/gossip-chat.glade.h:10
+msgid "Join _New..."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:5
+msgid "Manage Favorites..."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:6
+msgid "Show _Offline Contacts"
+msgstr "_Прикажи неповезане контакте"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:7
+#, fuzzy
+msgid "_About"
+msgstr "_Акције"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:8
+#, fuzzy
+msgid "_Accounts"
+msgstr "_Акције"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:9
+#: ../libempathy-gtk/gossip-chat.glade.h:15
+msgid "_Add Contact..."
+msgstr "_Додај контакт..."
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:10
+#: ../libempathy-gtk/gossip-contact-list.c:298
+msgid "_Chat"
+msgstr "_Разговор"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:11
+#, fuzzy
+msgid "_Contents"
+msgstr "Повежи се"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:12
+#: ../libempathy-gtk/gossip-chat.glade.h:21
+#: ../libempathy-gtk/gossip-contact-list.c:310
+#, fuzzy
+msgid "_Edit"
+msgstr "_Изађи"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:13
+msgid "_Help"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:14
+#: ../libempathy-gtk/empathy-status-icon.glade.h:2
+msgid "_New Message..."
+msgstr "_Нова порука..."
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:15
+#, fuzzy
+msgid "_Personal Information"
+msgstr "Лични подаци"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:16
+msgid "_Preferences"
+msgstr "_Поставке"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:17
+#: ../libempathy-gtk/empathy-status-icon.glade.h:3
+msgid "_Quit"
+msgstr "_Изађи"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:18
+#: ../libempathy-gtk/gossip-chat.glade.h:25
+#, fuzzy
+msgid "_Room"
+msgstr "_Соба:"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:19
+#: ../libempathy-gtk/gossip-chat.glade.h:28
+#: ../libempathy-gtk/gossip-contact-list.c:326
+#, fuzzy
+msgid "_View Previous Conversations"
+msgstr "С_ледећи разговор"
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:1
+msgid "Status"
+msgstr "Стање"
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:4
+msgid "_Show Contact List"
+msgstr "_Прикажи списак контаката"
+
+#: ../libempathy-gtk/gossip-about-dialog.c:63
+msgid ""
+"Empathy is free software; you can redistribute it and/or modify it under the "
+"terms of the GNU General Public License as published by the Free Software "
+"Foundation; either version 2 of the License, or (at your option) any later "
+"version."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-about-dialog.c:67
+msgid ""
+"Empathy is distributed in the hope that it will be useful, but WITHOUT ANY "
+"WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS "
+"FOR A PARTICULAR PURPOSE. See the GNU General Public License for more "
+"details."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-about-dialog.c:71
+msgid ""
+"You should have received a copy of the GNU General Public License along with "
+"Empathy; if not, write to the Free Software Foundation, Inc., 51 Franklin "
+"Street, Fifth Floor, Boston, MA 02110-130159 USA"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-about-dialog.c:99
+#, fuzzy
+msgid "An Instant Messaging client for GNOME"
+msgstr "Брзи гласник за Гнома"
+
+# Note to translators: put here your name (and address) so it
+# * will shop up in the "about" box
+#: ../libempathy-gtk/gossip-about-dialog.c:105
+#, fuzzy
+msgid "translator-credits"
+msgstr "dejan@ns.sympatico.ca"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:224
+#, fuzzy
+msgid "Disable"
+msgstr "Доступан"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:227
+msgid "Enable"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:261
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:3
+#, fuzzy
+msgid "<b>No Account Selected</b>"
+msgstr "<b>Налог:</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:263
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to start configuring.\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want "
+"to configure in the list on the left."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:272
+#, fuzzy
+msgid "<b>No Accounts Configured</b>"
+msgstr "<b>Налог:</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:274
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to start configuring."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:362
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:6
+#, fuzzy
+msgid "Accounts"
+msgstr "Име налога:"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:857
+#, c-format
+msgid ""
+"You are about to remove your %s account!\n"
+"Are you sure you want to proceed?"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:863
+msgid ""
+"Any associated conversations and chat rooms will NOT be removed if you "
+"decide to proceed.\n"
+"\n"
+"Should you decide to add the account back at a later time, they will still "
+"be available."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:1
+#, fuzzy
+msgid "<b>Account</b>"
+msgstr "<b>Налог:</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:2
+#, fuzzy
+msgid "<b>New Account</b>"
+msgstr "<b>Налог:</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:4
+#, fuzzy
+msgid "<b>Settings</b>"
+msgstr "<b>Звук</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:5
+msgid "A unique name for this account to identify it personally to you."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:7
+#, fuzzy
+msgid "Cr_eate"
+msgstr "Ћаскај"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:8
+msgid "Imendio "
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:9
+msgid "Jabber"
+msgstr "Џабер"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:10
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to started configuring.\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want "
+"to configure in the list on the left."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:13
+#, fuzzy
+msgid "_Name:"
+msgstr "Име:"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:14
+#, fuzzy
+msgid "_Type:"
+msgstr "_Тема:"
+
+#: ../libempathy-gtk/gossip-account-widget-generic.c:144
+#: ../libempathy-gtk/gossip-account-widget-generic.c:186
+#, c-format
+msgid "%s:"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:1
+#, fuzzy
+msgid ""
+"<small><b><span foreground=\"#555\">Example: user@jabber.org</span></b></"
+"small>"
+msgstr "<span size=\"smaller\">Пример: корисник@jabber.org</span>"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:2
+msgid "Forget password and clear the entry."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:3
+msgid "Login I_D:"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:4
+#, fuzzy
+msgid "Pass_word:"
+msgstr "_Лозинка:"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:5
+#, fuzzy
+msgid "Reso_urce:"
+msgstr "Извор:"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:6
+#, fuzzy
+msgid "Use encryption (SS_L)"
+msgstr "Користи _шифровање (SSL)"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:7
+#, fuzzy
+msgid "_Port:"
+msgstr "П_орт:"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:8
+msgid "_Server:"
+msgstr "_Сервер:"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:9
+msgid "jabber account settings"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.c:314
+msgid "Disconnected"
+msgstr "Неповезан"
+
+#: ../libempathy-gtk/gossip-chat.c:858
+msgid "Insert Smiley"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.c:906
+msgid "_Check Word Spelling..."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.c:1244
+msgid "Connected"
+msgstr "Повезан"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:1
+msgid "C_lear"
+msgstr "Оч_исти"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:2
+msgid "Change _Topic..."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:3
+msgid "Chat"
+msgstr "Ћаскај"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:4
+#, fuzzy
+msgid "Contact Infor_mation"
+msgstr "По_даци за контакт"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:5
+#, fuzzy
+msgid "Cu_t"
+msgstr "Ћаскај"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:6
+#, fuzzy
+msgid "In_vite..."
+msgstr "Ре_гистровање..."
+
+#: ../libempathy-gtk/gossip-chat.glade.h:7
+msgid "Insert _Smiley"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:8
+#, fuzzy
+msgid "Invitation _message:"
+msgstr "Унесите поруку о стању:"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:9
+msgid "Invite"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:11
+msgid "Move Tab _Left"
+msgstr "Премести језичак _лево"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:12
+msgid "Move Tab _Right"
+msgstr "Премести језичак _десно"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:13
+msgid "Select who would you like to invite:"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:14
+msgid "You have been invited to join a chat conference."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:16
+#, fuzzy
+msgid "_Add To Favorites"
+msgstr "У_реди омиљене..."
+
+#: ../libempathy-gtk/gossip-chat.glade.h:17
+msgid "_Close"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:18
+msgid "_Conversation"
+msgstr "_Разговор"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:19
+msgid "_Copy"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:20
+msgid "_Detach Tab"
+msgstr "_Одвоји лист"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:22
+msgid "_Next Tab"
+msgstr "_Следећи лист"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:23
+msgid "_Paste"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:24
+msgid "_Previous Tab"
+msgstr "П_ретходни лист"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:26
+#, fuzzy
+msgid "_Show Contacts"
+msgstr "_Прикажи списак контаката"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:27
+msgid "_Tabs"
+msgstr "_Листови"
+
+#: ../libempathy-gtk/gossip-chat-view.c:544
+msgid "_Copy Link Address"
+msgstr "_Умножи адресу везе"
+
+#: ../libempathy-gtk/gossip-chat-view.c:552
+msgid "_Open Link"
+msgstr "_Отвори везу"
+
+#: ../libempathy-gtk/gossip-chat-view.c:889
+msgid "%A %d %B %Y"
+msgstr "%A, %d. %B %Y."
+
+#: ../libempathy-gtk/gossip-chat-window.c:685
+#: ../libempathy-gtk/gossip-chat-window.c:715
+#, fuzzy
+msgid "New Message"
+msgid_plural "New Messages"
+msgstr[0] "_Нова порука..."
+msgstr[1] "_Нова порука..."
+
+#: ../libempathy-gtk/gossip-chat-window.c:691
+#, fuzzy
+msgid "Chat Room"
+msgstr "Чаврљање - Чаврљај"
+
+#: ../libempathy-gtk/gossip-chat-window.c:696
+#: ../libempathy-gtk/gossip-chat-window.c:719
+#, fuzzy, c-format
+msgid "Conversation"
+msgid_plural "Conversations (%d)"
+msgstr[0] "_Разговор"
+msgstr[1] "_Разговор"
+
+#: ../libempathy-gtk/gossip-chat-window.c:1295
+#, fuzzy
+msgid "Typing a message."
+msgstr "Пошаљи поруку чаврљања..."
+
+#: ../libempathy-gtk/gossip-contact-list.c:290
+#, fuzzy
+msgid "_Contact"
+msgstr "Додај контакт"
+
+#: ../libempathy-gtk/gossip-contact-list.c:294
+#, fuzzy
+msgid "_Group"
+msgstr "Група"
+
+#: ../libempathy-gtk/gossip-contact-list.c:298
+#, fuzzy
+msgid "Chat with contact"
+msgstr "Додај контакт"
+
+#: ../libempathy-gtk/gossip-contact-list.c:302
+#, fuzzy
+msgid "Infor_mation"
+msgstr "По_даци за контакт"
+
+#: ../libempathy-gtk/gossip-contact-list.c:302
+#, fuzzy
+msgid "View contact information"
+msgstr "Информације за контакт"
+
+#: ../libempathy-gtk/gossip-contact-list.c:306
+#, fuzzy
+msgid "Re_name"
+msgstr "/Преи_менуј групу"
+
+#: ../libempathy-gtk/gossip-contact-list.c:306
+#, fuzzy
+msgid "Rename"
+msgstr "Уклони"
+
+#: ../libempathy-gtk/gossip-contact-list.c:310
+#, fuzzy
+msgid "Edit the groups and name for this contact"
+msgstr ""
+"Унесите нови надимак за контакт\n"
+"%s"
+
+#: ../libempathy-gtk/gossip-contact-list.c:314
+msgid "_Remove"
+msgstr "Уклони"
+
+#: ../libempathy-gtk/gossip-contact-list.c:314
+#, fuzzy
+msgid "Remove contact"
+msgstr "/Уклони контакт"
+
+#: ../libempathy-gtk/gossip-contact-list.c:318
+#, fuzzy
+msgid "_Invite to Chat Room"
+msgstr "Чаврљање - Уреди Групно Чаврљање"
+
+#: ../libempathy-gtk/gossip-contact-list.c:318
+msgid "Invite to a currently open chat room"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-contact-list.c:322
+#, fuzzy
+msgid "_Send File..."
+msgstr "Пошаљи по_руку..."
+
+#: ../libempathy-gtk/gossip-contact-list.c:322
+#, fuzzy
+msgid "Send a file"
+msgstr "Изабери"
+
+#: ../libempathy-gtk/gossip-contact-list.c:326
+#, fuzzy
+msgid "View previous conversations with this contact"
+msgstr "С_ледећи разговор"
+
+#: ../libempathy-gtk/gossip-preferences.c:250
+msgid "Language"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:1
+#, fuzzy
+msgid "<b>Appearance</b>"
+msgstr "Изглед"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:2
+#, fuzzy
+msgid "<b>Audio</b>"
+msgstr "<b>Налог:</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:3
+#, fuzzy
+msgid "<b>Behaviour</b>"
+msgstr "<b>Омиљено:</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:4
+#, fuzzy
+msgid "<b>Contact List</b>"
+msgstr "Повежи се"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:5
+#, fuzzy
+msgid "<b>Languages</b>"
+msgstr "<b>Подразумеване поруке</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:6
+#, fuzzy
+msgid "<b>Options</b>"
+msgstr "<b>Звук</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:7
+#, fuzzy
+msgid "<b>Visual</b>"
+msgstr "<b>Е-пошта:</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:8
+msgid ""
+"<small>The list of languages reflects only the languages for which you have "
+"a dictionary installed.</small>"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:9
+msgid "Avatars are user chosen images shown in the contact list"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:10
+#, fuzzy
+msgid "Chat Th_eme:"
+msgstr "Име за чаврљање:"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:11
+msgid "Display notifications when contacts come _online"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:12
+#, fuzzy
+msgid "Enable sounds when _away"
+msgstr "Искључи звук када сте _одсутни"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:13
+#, fuzzy
+msgid "Enable sounds when _busy"
+msgstr "Искључи звук када сте _заузети"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:14
+msgid "General"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:15
+#, fuzzy
+msgid "Notifications"
+msgstr "Обавештење"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:16
+#, fuzzy
+msgid "Preferences"
+msgstr "_Поставке"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:17
+msgid "Show _avatars"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:18
+#, fuzzy
+msgid "Show _smileys as images"
+msgstr "Претвори _смешке у графичке симболе"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:19
+#, fuzzy
+msgid "Show co_mpact contact list"
+msgstr "_Прикажи списак контаката"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:20
+msgid "Sort by _name"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:21
+#, fuzzy
+msgid "Sort by s_tate"
+msgstr "Подесите ваше стање:"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:22
+msgid "Spell Checking"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:23
+msgid "Themes"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:24
+msgid "_Enable spell checking"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:25
+msgid "_Open new chats in separate windows"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:26
+#, fuzzy
+msgid "_Play sound when messages arrive"
+msgstr "Пуштај звук по пристизању порука"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:27
+#, fuzzy
+msgid "_Use for chat rooms"
+msgstr "Чаврљање - Уреди Групно Чаврљање"
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:702
+#, fuzzy
+msgid "Custom message..."
+msgstr "Посебна порука..."
+
+#. Clear list
+#: ../libempathy-gtk/gossip-presence-chooser.c:724
+#, fuzzy
+msgid "Clear List..."
+msgstr "Оч_исти"
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:803
+#, fuzzy
+msgid "Are you sure you want to clear the list?"
+msgstr "Да ли желите да прихватите захтев?"
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:807
+msgid ""
+"This will remove any custom messages you have added to the list of preset "
+"status messages."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:812
+#, fuzzy
+msgid "Clear List"
+msgstr "Оч_исти"
+
+#: ../libempathy-gtk/gossip-presence-chooser.glade.h:1
+msgid "Enter status message:"
+msgstr "Унесите поруку о стању:"
+
+#: ../libempathy-gtk/gossip-presence-chooser.glade.h:2
+#, fuzzy
+msgid "Status Message Presets"
+msgstr "Поруке о стању"
+
+# Претпоставити је нешто сматрати датим без изричитог навођења, управо као и овде.
+#: ../libempathy-gtk/gossip-presence-chooser.glade.h:3
+#, fuzzy
+msgid "_Add to status message list"
+msgstr "Претпостављене поруке стања"
+
+#: ../libempathy-gtk/gossip-private-chat.c:198
+#, c-format
+msgid "%s went offline"
+msgstr "%s прекиде везу"
+
+#: ../libempathy-gtk/gossip-private-chat.c:212
+#, fuzzy, c-format
+msgid "%s has come online"
+msgstr "%s се повеза"
+
+#: ../libempathy-gtk/gossip-theme-manager.c:87
+msgid "Classic"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-theme-manager.c:88
+msgid "Simple"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-theme-manager.c:89
+#, fuzzy
+msgid "Clean"
+msgstr "Оч_исти"
+
+#: ../libempathy-gtk/gossip-theme-manager.c:90
+msgid "Blue"
+msgstr ""
+
+#: ../src/empathy-main.c:145
+msgid "Don't connect on startup"
+msgstr "Не успостављај везу при покретању"
+
+#: ../src/empathy-main.c:155
+#, fuzzy
+msgid "- Empathy Instant Messenger"
+msgstr "Брзи гласник"
+
+#, fuzzy
+#~ msgid "Gossip Instant Messenger"
+#~ msgstr "Брзи гласник"
+
+#, fuzzy
+#~ msgid "Joining"
+#~ msgstr "_Придружи"
+
+#, fuzzy
+#~ msgid "Active"
+#~ msgstr "_Акције"
+
+#, fuzzy
+#~ msgid "Unknown"
+#~ msgstr "Непозната грешка"
+
+#, fuzzy
+#~ msgid "No affiliation"
+#~ msgstr "Обавештење"
+
+#, fuzzy
+#~ msgid "An unknown error occurred, check your details are correct."
+#~ msgstr "Непозната грешка"
+
+#, fuzzy
+#~ msgid "Unavailable"
+#~ msgstr "Доступан"
+
+#, fuzzy
+#~ msgid "An unknown error occurred."
+#~ msgstr "Непозната грешка"
+
+#, fuzzy
+#~ msgid "Connection refused."
+#~ msgstr "Повезан"
+
+#, fuzzy
+#~ msgid "Connection timed out."
+#~ msgstr "Повезан"
+
+#, fuzzy
+#~ msgid "This feature is unavailable."
+#~ msgstr "Можда је сервер тренутно недоступан."
+
+#, fuzzy
+#~ msgid "new account"
+#~ msgstr "Нов налог"
+
+#~ msgid "Home"
+#~ msgstr "Почетак"
+
+#, fuzzy
+#~ msgid "This service is unavailable or not found"
+#~ msgstr "Можда је сервер тренутно недоступан."
+
+#, fuzzy
+#~ msgid "Registration is required"
+#~ msgstr "Регистровање налога"
+
+#, fuzzy
+#~ msgid "This feature is not implemented"
+#~ msgstr "Можда је сервер тренутно недоступан."
+
+#, fuzzy
+#~ msgid "Disconnect"
+#~ msgstr "_Раскини везу"
+
+#~ msgid "Connect"
+#~ msgstr "Повежи се"
+
+#, fuzzy
+#~ msgid "Successfully registered your new account settings."
+#~ msgstr "Успешно регистрован налог"
+
+#, fuzzy
+#~ msgid "Failed to register your new account settings."
+#~ msgstr "Није успео да региструје налог"
+
+#, fuzzy
+#~ msgid "Successfully changed your account password."
+#~ msgstr "Унесите вашу лозинку:"
+
+#, fuzzy
+#~ msgid "Failed to change your account password."
+#~ msgstr "Унесите вашу лозинку:"
+
+#, fuzzy
+#~ msgid ""
+#~ "Please enter a new password for this account:\n"
+#~ "%s"
+#~ msgstr ""
+#~ "Унесите ново име за групу\n"
+#~ "%s"
+
+#, fuzzy
+#~ msgid "No information is available for this contact."
+#~ msgstr "Преузмите податке о овом контакту"
+
+#, fuzzy
+#~ msgid "Information requested, please wait..."
+#~ msgstr "<b>Тражио је информације, молим сачекајте...</b>"
+
+#~ msgid "I would like to add you to my contact list."
+#~ msgstr "Ја бих волео да додам тебе на моју листу другара."
+
+#, fuzzy
+#~ msgid "%d new message"
+#~ msgid_plural "%d new messages"
+#~ msgstr[0] "_Нова порука..."
+#~ msgstr[1] "_Нова порука..."
+
+#, fuzzy
+#~ msgid "%d subscription request"
+#~ msgid_plural "%d subscription requests"
+#~ msgstr[0] "Захтев за побољшањем"
+#~ msgstr[1] "Захтев за побољшањем"
+
+#, fuzzy
+#~ msgid "%d server message"
+#~ msgid_plural "%d server messages"
+#~ msgstr[0] "Порука са захтевом"
+#~ msgstr[1] "Порука са захтевом"
+
+#, fuzzy
+#~ msgid "Edit Account _Details"
+#~ msgstr "Уреди податке о налогу"
+
+#~ msgid "New message from %s"
+#~ msgstr "Нова порука од %s"
+
+#, fuzzy
+#~ msgid "Accept"
+#~ msgstr "_Прихвати"
+
+#, fuzzy
+#~ msgid "Decline"
+#~ msgstr "Вечера"
+
+#, fuzzy
+#~ msgid "Name"
+#~ msgstr "Име:"
+
+#, fuzzy
+#~ msgid "Room"
+#~ msgstr "_Соба:"
+
+#, fuzzy
+#~ msgid "Auto Connect"
+#~ msgstr "Чаврљање - Повезати се"
+
+#, fuzzy
+#~ msgid "Information requested..."
+#~ msgstr "<b>Тражио је информације, молим сачекајте...</b>"
+
+#, fuzzy
+#~ msgid "Do you want to remove this contact from your roster?"
+#~ msgstr ""
+#~ "Да ли желите да уклоните контакт\n"
+#~ "%s\n"
+#~ "из вашег списка другара?"
+
+#, fuzzy
+#~ msgid ""
+#~ "Please enter a new name for the group:\n"
+#~ "%s"
+#~ msgstr ""
+#~ "Унесите ново име за групу\n"
+#~ "%s"
+
+#~ msgid "Select"
+#~ msgstr "Изабери"
+
+# :-)
+#~ msgid "Unsorted"
+#~ msgstr "Несврстани"
+
+#, fuzzy
+#~ msgid "Unknown error occurred during file transfer."
+#~ msgstr "Непозната грешка"
+
+#, fuzzy
+#~ msgid "%s would like to send you a file."
+#~ msgstr "Ја бих волео да додам тебе на моју листу другара."
+
+#, fuzzy
+#~ msgid "Someone would like to send you a file."
+#~ msgstr "Ја бих волео да додам тебе на моју листу другара."
+
+#, fuzzy
+#~ msgid "Select a file"
+#~ msgstr "Изабери"
+
+#, fuzzy
+#~ msgid "Connecting..."
+#~ msgstr "По_везивање..."
+
+#, fuzzy
+#~ msgid "Retry connection"
+#~ msgstr "Чаврљање - Повезати се"
+
+#, fuzzy
+#~ msgid "Enter the new topic you want to set for this room:"
+#~ msgstr "Који надимак желите да користите за овог корисника?"
+
+#, fuzzy
+#~ msgid "Topic: %s"
+#~ msgstr "_Тема:"
+
+#, fuzzy
+#~ msgid "Account"
+#~ msgstr "Име налога:"
+
+#, fuzzy
+#~ msgid "Conversation With"
+#~ msgstr "_Разговор"
+
+#~ msgid "List the available accounts"
+#~ msgstr "Списак доступних налога"
+
+#~ msgid "Which account to connect to on startup"
+#~ msgstr "Са којим налогом да успостави везу при покретању"
+
+#~ msgid "ACCOUNT-NAME"
+#~ msgstr "ИМЕ НАЛОГА"
+
+#~ msgid "Available accounts:"
+#~ msgstr "Доступни налози:"
+
+#~ msgid "[default]"
+#~ msgstr "[подразумевано]"
+
+#~ msgid "There is no account with the name '%s'."
+#~ msgstr "Непостоји налог са именом '%s'."
+
+#, fuzzy
+#~ msgid "Join"
+#~ msgstr "_Придружи"
+
+#, fuzzy
+#~ msgid "Create"
+#~ msgstr "Ћаскај"
+
+#, fuzzy
+#~ msgid "Chat Rooms"
+#~ msgstr "Чаврљање - Чаврљај"
+
+#, fuzzy
+#~ msgid "Browsing for conference rooms, please wait..."
+#~ msgstr "<b>Тражио је информације, молим сачекајте...</b>"
+
+#~ msgid "Default"
+#~ msgstr "Подразумевано"
+
+#, fuzzy
+#~ msgid "Chat!"
+#~ msgstr "Ћаскај"
+
+#, fuzzy
+#~ msgid "%s wants to be added to your contact list."
+#~ msgstr "%s ће бити додат у вашу листу другара."
+
+#, fuzzy
+#~ msgid "Someone wants to be added to your contact list."
+#~ msgstr "Контант ће бити додат у вашу листу другара"
+
+#, fuzzy
+#~ msgid "Subscription request"
+#~ msgstr "Захтев за побољшањем"
+
+#, fuzzy
+#~ msgid "Contact Information"
+#~ msgstr "По_даци за контакт"
+
+#, fuzzy
+#~ msgid "New subscription request from %s"
+#~ msgstr "Захтев за побољшањем"
+
+#, fuzzy
+#~ msgid "Do you want to add this person to your contact list?"
+#~ msgstr ""
+#~ "Да ли желите да уклоните контакт\n"
+#~ "%s\n"
+#~ "из вашег списка другара?"
+
+#, fuzzy
+#~ msgid "Do you want to add %s to your contact list?"
+#~ msgstr ""
+#~ "Да ли желите да уклоните контакт\n"
+#~ "%s\n"
+#~ "из вашег списка другара?"
+
+#, fuzzy
+#~ msgid "Please enter your %s account password"
+#~ msgstr "Унесите вашу лозинку:"
+
+#~ msgid "Remember Password?"
+#~ msgstr "Да ли сте запамтили лозинку?"
+
+#, fuzzy
+#~ msgid "Change"
+#~ msgstr "Ћаскај"
+
+#, fuzzy
+#~ msgid "Contact goes online"
+#~ msgstr "%s се повеза"
+
+#, fuzzy
+#~ msgid "Do you want to accept this file?"
+#~ msgstr "Да ли желите да прихватите захтев?"
+
+#, fuzzy
+#~ msgid "File name:"
+#~ msgstr "_Корисничко име:"
+
+#, fuzzy
+#~ msgid "File size:"
+#~ msgstr "Веб сајт :"
+
+#~ msgid "Web site:"
+#~ msgstr "Веб сајт :"
+
+#~ msgid "_Accept"
+#~ msgstr "_Прихвати"
+
+#~ msgid "_Deny"
+#~ msgstr "О_дбиј"
+
+#, fuzzy
+#~ msgid "<b>Topic:</b>"
+#~ msgstr "<b>Звук</b>"
+
+#, fuzzy
+#~ msgid "Account:"
+#~ msgstr "Име налога:"
+
+#, fuzzy
+#~ msgid "Edit Favorite Room"
+#~ msgstr "Чаврљање - Уреди Групно Чаврљање"
+
+#, fuzzy
+#~ msgid "Group Chat"
+#~ msgstr "Чаврљање - Чаврљај"
+
+#, fuzzy
+#~ msgid "Join New"
+#~ msgstr "_Придружи"
+
+#, fuzzy
+#~ msgid "Join room on start_up"
+#~ msgstr "Не успостављај везу при покретању"
+
+#, fuzzy
+#~ msgid "N_ame:"
+#~ msgstr "Име:"
+
+#, fuzzy
+#~ msgid "S_erver:"
+#~ msgstr "Сервер:"
+
+#~ msgid "_Nickname:"
+#~ msgstr "_Надимак:"
+
+#~ msgid "_Room:"
+#~ msgstr "_Соба:"
+
+#, fuzzy
+#~ msgid "<b>About</b>"
+#~ msgstr "<b>Налог:</b>"
+
+#, fuzzy
+#~ msgid "<b>Client Information</b>"
+#~ msgstr "Подаци о клијенту"
+
+#, fuzzy
+#~ msgid "<b>Groups</b>"
+#~ msgstr "<b>Налог:</b>"
+
+#, fuzzy
+#~ msgid "<b>Name</b>"
+#~ msgstr "<b>Име:</b>"
+
+#, fuzzy
+#~ msgid "<b>Personal Details</b>"
+#~ msgstr "<b>Подешавања налога</b>"
+
+#, fuzzy
+#~ msgid "<b>Status</b>"
+#~ msgstr "<b>Звук</b>"
+
+#, fuzzy
+#~ msgid "<b>Subscription</b>"
+#~ msgstr "<b>Звук</b>"
+
+#, fuzzy
+#~ msgid "<span size=\"smaller\">Example: Mikael or user@server.org</span>"
+#~ msgstr "<span size=\"smaller\">Пример: корисник@jabber.org</span>"
+
+#, fuzzy
+#~ msgid "Accou_nt:"
+#~ msgstr "Име налога:"
+
+#, fuzzy
+#~ msgid "Add Contact"
+#~ msgstr "Додај контакт"
+
+#, fuzzy
+#~ msgid "Ch_at"
+#~ msgstr "Ћаскај"
+
+#~ msgid "Client:"
+#~ msgstr "Клијент:"
+
+#, fuzzy
+#~ msgid "Con_tact:"
+#~ msgstr "Додај контакт"
+
+#, fuzzy
+#~ msgid "Connect on S_tartup"
+#~ msgstr "Не успостављај везу при покретању"
+
+#, fuzzy
+#~ msgid "Contacts"
+#~ msgstr "Додај контакт"
+
+#~ msgid "Country:"
+#~ msgstr "Држава:"
+
+#, fuzzy
+#~ msgid "Decide _Later"
+#~ msgstr "О_длучи касније"
+
+#, fuzzy
+#~ msgid "Edit Contact"
+#~ msgstr "Додај контакт"
+
+#~ msgid "Edit Groups"
+#~ msgstr "Уреди групе"
+
+#~ msgid "Email:"
+#~ msgstr "Е-пошта:"
+
+# Џабер идентификациона ознака :-)
+#, fuzzy
+#~ msgid "ID:"
+#~ msgstr "ЏИО"
+
+#~ msgid "Name:"
+#~ msgstr "Име:"
+
+#~ msgid "OS:"
+#~ msgstr "ОС:"
+
+#, fuzzy
+#~ msgid "Personal Details"
+#~ msgstr "<b>Подешавања налога</b>"
+
+#, fuzzy
+#~ msgid "R_egister"
+#~ msgstr "Ре_гистровање..."
+
+#, fuzzy
+#~ msgid "Search"
+#~ msgstr "_Тражи..."
+
+#, fuzzy
+#~ msgid "Spell Checker"
+#~ msgstr "Чаврљање - Пошаљи поруку"
+
+#, fuzzy
+#~ msgid "Subscription Request"
+#~ msgstr "Захтев за побољшањем"
+
+#, fuzzy
+#~ msgid "This is the name that will be used on your roster for this contact"
+#~ msgstr "Који надимак желите да користите за овог корисника?"
+
+#~ msgid "Version:"
+#~ msgstr "Верзија:"
+
+#, fuzzy
+#~ msgid "View Previous Conversations"
+#~ msgstr "С_ледећи разговор"
+
+#, fuzzy
+#~ msgid "Which account do you want to use?"
+#~ msgstr "Који надимак желите да користите?"
+
+#, fuzzy
+#~ msgid "_Birthday:"
+#~ msgstr "_Важност:"
+
+#, fuzzy
+#~ msgid "_Connect"
+#~ msgstr "Повежи се"
+
+#, fuzzy
+#~ msgid "_Description:"
+#~ msgstr "Опис"
+
+#~ msgid "_Disconnect"
+#~ msgstr "_Раскини везу"
+
+#, fuzzy
+#~ msgid "_Email:"
+#~ msgstr "Е-пошта:"
+
+#, fuzzy
+#~ msgid ""
+#~ "_Enter the name or contact ID of the person you want to chat to below:"
+#~ msgstr ""
+#~ "Унесите кориснички ID од особе којој желите да пошањете поруку за "
+#~ "чаврљање."
+
+#, fuzzy
+#~ msgid "_For:"
+#~ msgstr "П_орт:"
+
+#, fuzzy
+#~ msgid "_Full Name:"
+#~ msgstr "Име:"
+
+#, fuzzy
+#~ msgid "_Group:"
+#~ msgstr "Група"
+
+#, fuzzy
+#~ msgid "_Nick Name:"
+#~ msgstr "_Надимак:"
+
+#, fuzzy
+#~ msgid "_Password:"
+#~ msgstr "_Лозинка:"
+
+#, fuzzy
+#~ msgid "_Quit Message:"
+#~ msgstr "Порук_е о стању"
+
+#, fuzzy
+#~ msgid "_Retrieve"
+#~ msgstr "Уклони"
+
+#, fuzzy
+#~ msgid "_Web site:"
+#~ msgstr "Веб сајт :"
+
+# Претпоставити је нешто сматрати датим без изричитог навођења, управо као и овде.
+#~ msgid "Preset status messages"
+#~ msgstr "Претпостављене поруке стања"
+
+#~ msgid "Preset status messages."
+#~ msgstr "Претпостављене поруке стања."
+
+#, fuzzy
+#~ msgid "Connecting"
+#~ msgstr "Повежи се"
+
+#~ msgid "%s will be added to your contact list."
+#~ msgstr "%s ће бити додат у вашу листу другара."
+
+#, fuzzy
+#~ msgid "%s ID of new contact:"
+#~ msgstr "_Џабер ID новог контакта:"
+
+#, fuzzy
+#~ msgid ""
+#~ "Please enter your invitation message to:\n"
+#~ "%s"
+#~ msgstr "Унесите вашу лозинку:"
+
+#, fuzzy
+#~ msgid "Favourite"
+#~ msgstr "<b>Омиљено:</b>"
+
+#~ msgid "Contact Information for %s"
+#~ msgstr "Контакт информације за %s"
+
+#, fuzzy
+#~ msgid "/Contact Infor_mation"
+#~ msgstr "/Информације за контакт"
+
+#, fuzzy
+#~ msgid "/Re_name Contact"
+#~ msgstr "/_Преименуј контакт"
+
+#, fuzzy
+#~ msgid "/_Edit Groups"
+#~ msgstr "/Уреди _групе"
+
+#, fuzzy
+#~ msgid "/_View Previous Conversations"
+#~ msgstr "С_ледећи разговор"
+
+#~ msgid ""
+#~ "Please enter a new nickname for the contact\n"
+#~ "%s"
+#~ msgstr ""
+#~ "Унесите нови надимак за контакт\n"
+#~ "%s"
+
+#~ msgid "Edit groups for %s"
+#~ msgstr "Уреди групе за %s"
+
+#~ msgid "Conversation Log"
+#~ msgstr "Дневник разговора"
+
+#~ msgid "Registering account"
+#~ msgstr "Регистровање налога"
+
+#, fuzzy
+#~ msgid "Respond"
+#~ msgstr "Разлог:"
+
+#, fuzzy
+#~ msgid "Add to _favourites"
+#~ msgstr "У_реди омиљене..."
+
+#, fuzzy
+#~ msgid "Na_me:"
+#~ msgstr "Име:"
+
+#, fuzzy
+#~ msgid "New Chat Room"
+#~ msgstr "Чаврљање - Чаврљај"
+
+#~ msgid " "
+#~ msgstr " "
+
+#, fuzzy
+#~ msgid "<b>Information requested, please wait...</b>"
+#~ msgstr "<b>Тражио је информације, молим сачекајте...</b>"
+
+#, fuzzy
+#~ msgid "<span size=\"smaller\">Example:</span>"
+#~ msgstr "<span size=\"smaller\">Пример: корисник@jabber.org</span>"
+
+#, fuzzy
+#~ msgid "Account Name"
+#~ msgstr "Име налога:"
+
+#, fuzzy
+#~ msgid "Chat Rooms..."
+#~ msgstr "Чаврљање - Чаврљај"
+
+#, fuzzy
+#~ msgid "Do you already have an account set up on a server?"
+#~ msgstr "Да ли већ имате налог на Џабер серверу?"
+
+#, fuzzy
+#~ msgid "Enter the port used in the connection for this account"
+#~ msgstr ""
+#~ "Унесите нови надимак за контакт\n"
+#~ "%s"
+
+#, fuzzy
+#~ msgid "Enter the server used in the connection for this account"
+#~ msgstr ""
+#~ "Унесите нови надимак за контакт\n"
+#~ "%s"
+
+#, fuzzy
+#~ msgid "Enter the user's contact ID:"
+#~ msgstr "Кликните да добијете корисничке контакт информације"
+
+#, fuzzy
+#~ msgid "Finished"
+#~ msgstr "Подешавање је завршено"
+
+#~ msgid "Gossip"
+#~ msgstr "Чаврљање"
+
+#~ msgid ""
+#~ "Gossip is a modern client for the Jabber Instant Messaging system.\n"
+#~ "\n"
+#~ "This assistant will help you configure Gossip and connect you to your "
+#~ "favorite Jabber server.\n"
+#~ "\n"
+#~ "To get started, just click \"Forward\"."
+#~ msgstr ""
+#~ "Чаврљање је модеран клијент за Џабер систем брзих порука.\n"
+#~ "\n"
+#~ "Овај помоћник ће вам помоћи да подесите Чаврљање и повежете се на ваш "
+#~ "омиљен Џабер сервер.\n"
+#~ "\n"
+#~ "Да почнете, само кликните „Напред“."
+
+#~ msgid ""
+#~ "In order to subscribe to presence notifications from the user, a request "
+#~ "will be sent. Until this request is approved, the user will always be "
+#~ "shown as \"Offline\" in your contact list."
+#~ msgstr ""
+#~ "Захтев ће бити послат и тражити да видите присутност корисника, Док се "
+#~ "захтев не одобри, корисник ће увек бити приказан као \"Не повезан\" у "
+#~ "вашој листи пријатеља."
+
+#~ msgid "In which group do you want to place this contact?"
+#~ msgstr "У коју групу желите да распоредите овај контакт?"
+
+#~ msgid "Jabber ID:"
+#~ msgstr "Џабер ИД:"
+
+#, fuzzy
+#~ msgid "Nickname:"
+#~ msgstr "_Надимак:"
+
+#, fuzzy
+#~ msgid "Port:"
+#~ msgstr "П_орт:"
+
+#, fuzzy
+#~ msgid "Registering Account"
+#~ msgstr "Регистровање налога"
+
+#, fuzzy
+#~ msgid "Resource:"
+#~ msgstr "Извор:"
+
+#~ msgid "Sending request"
+#~ msgstr "Захтев за слање"
+
+#~ msgid "Server:"
+#~ msgstr "Сервер:"
+
+#, fuzzy
+#~ msgid "Web Site:"
+#~ msgstr "Веб сајт :"
+
+#~ msgid "Welcome to Gossip"
+#~ msgstr "Добродошли у Чаврљање"
+
+#~ msgid "What instant messaging system does the contact use?"
+#~ msgstr "Који систем тренутних порука корисник користи?"
+
+#~ msgid "What is your name?"
+#~ msgstr "Како се зовете?"
+
+#, fuzzy
+#~ msgid "What password do you want to use?"
+#~ msgstr "Који сервер желите да користите?"
+
+#~ msgid "What username do you use?"
+#~ msgstr "Који надимак користите?"
+
+#~ msgid "What username do you want to use?"
+#~ msgstr "Који надимак желите да користите?"
+
+#, fuzzy
+#~ msgid "Which account do you want to add this contact to?"
+#~ msgstr "У коју групу желите да распоредите овај контакт?"
+
+#, fuzzy
+#~ msgid ""
+#~ "You can change your account settings later by selecting the Edit-"
+#~ ">Accounts menu item."
+#~ msgstr ""
+#~ "Сада је Чаврљање одговарајуће подешено за ваш систем.\n"
+#~ "Ви можете да промените подешавања вашег налога касније избором менија "
+#~ "Разговор->Повезивање...."
+
+#, fuzzy
+#~ msgid "Your Account"
+#~ msgstr "Џабер Налог"
+
+#~ msgid "Your Identity"
+#~ msgstr "Ваш идентитет"
+
+#, fuzzy
+#~ msgid "_Group Chat"
+#~ msgstr "Чаврљање - Чаврљај"
+
+#, fuzzy
+#~ msgid "_No"
+#~ msgstr "Не"
+
+#~ msgid "_Search..."
+#~ msgstr "_Тражи..."
+
+#, fuzzy
+#~ msgid "_Yes"
+#~ msgstr "Да"
+
+#~ msgid "Be silent when away"
+#~ msgstr "Буди тих на одсуству"
+
+#~ msgid "Be silent when busy"
+#~ msgstr "Буди тих на одсуству"
+
+#~ msgid "Height of main window"
+#~ msgstr "Висина главног прозора"
+
+#~ msgid "The X position of the main window."
+#~ msgstr "Водоравни положај главног прозора."
+
+#~ msgid "The Y position of the main window."
+#~ msgstr "Усправни положај главног прозора."
+
+#~ msgid "The width of the main window."
+#~ msgstr "Ширина главног прозора."
+
+#~ msgid "Width of the main window"
+#~ msgstr "Ширина главног прозора"
+
+#~ msgid "X position of main window"
+#~ msgstr "Водоравни положај главног прозора"
+
+#~ msgid "Y position of main window"
+#~ msgstr "Усправни положај главног прозора"
+
+#~ msgid "Gossip, Instant Messaging Client"
+#~ msgstr "Чаврљање, брзи гласник за Гнома"
+
+#, fuzzy
+#~ msgid "Close this chat window"
+#~ msgstr "Сакриј главни прозор."
+
+#, fuzzy
+#~ msgid "Requested Information"
+#~ msgstr "Подаци о _налогу"
+
+#, fuzzy
+#~ msgid "Send Message"
+#~ msgstr "Пошаљи поруку у _разговор..."
+
+#, fuzzy
+#~ msgid "%s has gone offline"
+#~ msgstr "%s прекиде везу"
+
+#~ msgid "Available..."
+#~ msgstr "Доступан..."
+
+#~ msgid "Busy..."
+#~ msgstr "Заузет..."
+
+#~ msgid "Away..."
+#~ msgstr "Одсутан..."
+
+#~ msgid "Contact _Information"
+#~ msgstr "По_даци за контакт"
+
+#~ msgid "<b>Sound</b>"
+#~ msgstr "<b>Звук</b>"
+
+#, fuzzy
+#~ msgid "Gossip - Accounts"
+#~ msgstr "Чаврљање - Уреди Налог"
+
+#, fuzzy
+#~ msgid "Join _Group Chat..."
+#~ msgstr "_Прикључи се групном чаврљању..."
+
+#, fuzzy
+#~ msgid "Por_t:"
+#~ msgstr "П_орт:"
+
+#, fuzzy
+#~ msgid "Requested information."
+#~ msgstr "Подаци о клијенту"
+
+#, fuzzy
+#~ msgid "Could not find the server you wanted to use"
+#~ msgstr "Који сервер желите да користите?"
+
+#, fuzzy
+#~ msgid "Connection to the server failed."
+#~ msgstr "<b>Повежи се на сервер</b>"
+
+#~ msgid "Artwork by:"
+#~ msgstr "Цртежи:"
+
+#, fuzzy
+#~ msgid "Account ID"
+#~ msgstr "Име налога:"
+
+#~ msgid "%sChat - %s"
+#~ msgstr "%sЧаврљање - %s"
+
+#~ msgid "/Show _Log"
+#~ msgstr "/Прикажи _дневник"
+
+#, fuzzy
+#~ msgid "Persian"
+#~ msgstr "Верзија:"
+
+#, fuzzy
+#~ msgid "Croatian"
+#~ msgstr "Разговор"
+
+#, fuzzy
+#~ msgid "Latvian"
+#~ msgstr "Напуштам:"
+
+#~ msgid "View Lo_g"
+#~ msgstr "Погледај дне_вник"
+
+#~ msgid "Gossip - Group Chat"
+#~ msgstr "Чаврљање - Групно Чаврљање"
+
+#, fuzzy
+#~ msgid "Gossip - Add contact"
+#~ msgstr "Чаврљање - Повезати се"
+
+#, fuzzy
+#~ msgid "Gossip - Contact Information"
+#~ msgstr "По_даци за контакт"
+
+#, fuzzy
+#~ msgid "Gossip - Edit Groups"
+#~ msgstr "Чаврљање - Уреди Групно Чаврљање"
+
+#, fuzzy
+#~ msgid "Gossip - New Account"
+#~ msgstr "Чаврљање - Уреди Налог"
+
+#, fuzzy
+#~ msgid "Gossip - New Message"
+#~ msgstr "Чаврљање - Пошаљи поруку"
+
+#, fuzzy
+#~ msgid "Gossip - Personal Details"
+#~ msgstr "Чаврљање - Повезати се"
+
+#, fuzzy
+#~ msgid "Gossip - Preferences"
+#~ msgstr "Поставке"
+
+#, fuzzy
+#~ msgid "Gossip - Status Message"
+#~ msgstr "Чаврљање - Пошаљи поруку"
+
+#~ msgid "What request message do you want to send to %s?"
+#~ msgstr "Коју поруку са захтевом желите да пошаљете %s?"
+
+#~ msgid "Make sure that your account information is correct."
+#~ msgstr "Проверите да ли су подаци о налогу исправни."
+
+#~ msgid "%s wants to be notified of your presence."
+#~ msgstr "%s жели обавештења о вашем присуству."
+
+#~ msgid "You were disconnected from the server. Do you want to reconnect?"
+#~ msgstr "Ви сте развезани са сервера. Желители да се поново повежете?"
+
+#, fuzzy
+#~ msgid ""
+#~ "Make sure that your account information is correct. The server may also "
+#~ "currently be unavailable."
+#~ msgstr ""
+#~ "Проверите да ли су подаци о налогу исправни, као што је корисничко име и "
+#~ "лозинка.."
+
+#~ msgid "Edit List..."
+#~ msgstr "Уреди списак..."
+
+#~ msgid "An error occurred when chatting with %s."
+#~ msgstr "Догодила се грешка приликом чаврљање са %s."
+
+#~ msgid "Details:"
+#~ msgstr "Детаљи:"
+
+#~ msgid "An error occurred when chatting in the group chat %s."
+#~ msgstr "Догодила се грешка приликом чаврљање у групи %s."
+
+#~ msgid "Unable to enter the group chat %s."
+#~ msgstr "Није могуће унети grupu групу за чаврљање %s."
+
+#~ msgid "Gossip will now try to use your account:"
+#~ msgstr "Чаврљање ће сада пробати да користи ваш налог:"
+
+#~ msgid "Gossip will now try to register the account:"
+#~ msgstr "Чаврљање ће сада пробати да региструје ваш налог:"
+
+#~ msgid "*"
+#~ msgstr "*"
+
+#~ msgid "From:"
+#~ msgstr "Од:"
+
+#~ msgid "Gossip - Received Message"
+#~ msgstr "Чаврљање - Прими поруку"
+
+#~ msgid "In reply to:"
+#~ msgstr "Као одговор на:"
+
+#~ msgid "To:"
+#~ msgstr "Коме:"
+
+#~ msgid "_Reply..."
+#~ msgstr "Одго_вори..."
+
+#~ msgid "_Send"
+#~ msgstr "_Пошаљи"
+
+#~ msgid "C_onnect"
+#~ msgstr "П_овежи се"
+
+#~ msgid "_Resource:"
+#~ msgstr "_Ресурс:"
+
+#~ msgid " "
+#~ msgstr " "
+
+#~ msgid "<b>Available chat rooms</b>"
+#~ msgstr "<b>Доступне собе за чаврљање</b>"
+
+#~ msgid "<b>Chat room information</b>"
+#~ msgstr "<b>Информација собе за чаврљање</b>"
+
+#~ msgid "Gossip - Join Group Chat"
+#~ msgstr "Чаврљање - Придружи се Групном Чаврљању"
+
+#~ msgid "N_ickname:"
+#~ msgstr "Над_имак:"
+
+#~ msgid ""
+#~ "Pick a favorite, or enter nickname, server name, and the name of the chat "
+#~ "room to enter."
+#~ msgstr ""
+#~ "Да уђете, изаберите омиљено или унесите надимак, име сервера и име од "
+#~ "собе за чаврљање."
+
+#~ msgid "R_emove"
+#~ msgstr "_Уклони"
+
+#~ msgid "_Add"
+#~ msgstr "_Додај"
+
+#~ msgid " "
+#~ msgstr " "
+
+#~ msgid "<b>Preset status messages</b>"
+#~ msgstr "<b>Претпостављене поруке стања</b>"
+
+#~ msgid "<i>Information not available</i>"
+#~ msgstr "<i>Информација није доступана</i>"
+
+#~ msgid "Choose a Server"
+#~ msgstr "Изабери сервер"
+
+#~ msgid "Choose from list:"
+#~ msgstr "Одаберите из списка:"
+
+#~ msgid "Information about ..."
+#~ msgstr "Информације о..."
+
+#~ msgid "Jabber.com"
+#~ msgstr "Jabber.com"
+
+#~ msgid "Jabber.org"
+#~ msgstr "Jabber.org"
+
+#~ msgid "On what server do you have a Jabber account?"
+#~ msgstr "На ком серверу имате Џабер налог?"
+
+#~ msgid "Sound"
+#~ msgstr "Звук"
+
+#~ msgid "Status Message"
+#~ msgstr "Порука о стању"
+
+#~ msgid "Use a different server"
+#~ msgstr "Користи други сервер"
+
+#~ msgid "What request message do you want to send to ...?"
+#~ msgstr "Коју поруку са захтевом желите да пошаљете ...?"
+
+#, fuzzy
+#~ msgid "About Gossip"
+#~ msgstr "Чаврљање"
+
+# Note to translators: put here your name (and address) so it
+# * will shop up in the "about" box
+#, fuzzy
+#~ msgid "translator_credits_old"
+#~ msgstr "Дејан Матијевић <dejan@ns.sympatico.ca>"
+
+#~ msgid "Gossip Website"
+#~ msgstr "Веб страница Чаврљања"
+
+#~ msgid "Unable to Authenticate"
+#~ msgstr "Не могу да се идентификујем"
+
+#~ msgid "Gossip, Jabber Client"
+#~ msgstr "Чаврљање, Џабер Клијент"
+
+#~ msgid "About to leave..."
+#~ msgstr "Управо одлазим..."
+
+#~ msgid "Autoaway message"
+#~ msgstr "Порука за самоодсуство"
+
+#~ msgid "Away messages"
+#~ msgstr "Поруке за одсуство"
+
+#~ msgid "Busy messages"
+#~ msgstr "Поруке за заузеће"
+
+#~ msgid "Message to show before going away"
+#~ msgstr "Порука која се приказује пре одласка"
+
+#~ msgid "Not at the computer"
+#~ msgstr "Нисам за рачунаром"
+
+#~ msgid "Just about to leave..."
+#~ msgstr "Управо одлазим..."
+
+#~ msgid "Custom Busy Message..."
+#~ msgstr "Посебна порука за заузеће..."
+
+#~ msgid "Leave..."
+#~ msgstr "Напусти..."
+
+#~ msgid "New Busy Message"
+#~ msgstr "Нова порука за заузеће"
+
+#~ msgid "New Away Message"
+#~ msgstr "Нова порука за одсуство"
+
+#~ msgid "Working"
+#~ msgstr "Радим"
+
+#~ msgid "Eating"
+#~ msgstr "Једем"
+
+#~ msgid "Sleeping"
+#~ msgstr "Спавам"
+
+#~ msgid "Enter the new message:"
+#~ msgstr "Унесите нову поруку:"
+
+#~ msgid "Leave"
+#~ msgstr "Напусти"
+
+#~ msgid ""
+#~ "Note: contacts can belong to multiple groups or they can be in no group "
+#~ "at all."
+#~ msgstr ""
+#~ "Пажња: контакти могу да припадају већем броју група или ниједној групи."
+
+#~ msgid "Preset messages for quickly setting away status."
+#~ msgstr "Постављање поруке за брзо одлажење на одсуство."
+
+#~ msgid "Preset messages for quickly setting busy status."
+#~ msgstr "Постављање поруке за брзо подешавање заузећа."
+
+#~ msgid "Reason for being busy:"
+#~ msgstr "Разлог заузећа:"
+
+#~ msgid "Reason for leaving:"
+#~ msgstr "Разлог одласка:"
+
+#~ msgid "As _Windows"
+#~ msgstr "Као _прозори"
+
+#~ msgid "As a _List"
+#~ msgstr "Као _списак"
+
+#~ msgid "_Go"
+#~ msgstr "_Иди"
+
+#~ msgid "Open conversations in single window with list view"
+#~ msgstr "Отвори разговоре у једном прозору приказујући их у списку"
+
+#~ msgid "[Eating,Sleeping]"
+#~ msgstr "[Једем,спавам]"
+
+#~ msgid "[Working]"
+#~ msgstr "[Радим]"
+
+#~ msgid "Add"
+#~ msgstr "Додај"
+
+#~ msgid "Open conversations in a single window with _list view"
+#~ msgstr "Отвори разговоре у једном прозору као сп_исак"
+
+#~ msgid "<b>Away messages</b>"
+#~ msgstr "<b>Поруке за одсуство</b>"
+
+#~ msgid "Available:"
+#~ msgstr "Доступан:"
+
+#~ msgid "Away:"
+#~ msgstr "Одсутан:"
+
+#~ msgid "Messages"
+#~ msgstr "Поруке"
+
+#~ msgid ""
+#~ "These messages are used to describe your status when you're about to "
+#~ "leave and when you're away."
+#~ msgstr ""
+#~ "Ове поруке се користе за описивање вашег стања када управо одлазите или "
+#~ "сте одсутни."
+
+#~ msgid ""
+#~ "These messages are used to describe your status when you're available, "
+#~ "about to leave, or automatically set away due to inactivity."
+#~ msgstr ""
+#~ "Ове поруке се користе за описивање вашег стања када сте доступни, управо "
+#~ "одлазите или сте одсутни услед неактивности."
+
+#~ msgid "Use com_pact conversation style"
+#~ msgstr "Користи стил са_жетог разговора"
+
+#~ msgid "Use sounds to _notify when new messages arrive"
+#~ msgstr "Користи звук за _обавештење када нова порука стигне"
+
+#~ msgid "Timestamp all messages"
+#~ msgstr "Означи време за све поруке"
+
+#~ msgid "Whether or not to timestamp all messages in conversations."
+#~ msgstr "Да ли да дода ознаке времена на све поруке у разговорима."
+
+#~ msgid "_Timestamp all messages"
+#~ msgstr "Додај ознаку _временског тренутка на све поруке"
+
+#~ msgid "Custom Away Message..."
+#~ msgstr "Посебна порука за одсуство..."
+
+# Translators: See comment for "%sChat - %s".
+#~ msgid "%sChat"
+#~ msgstr "%sЧаврљање"
+
+# The extra space is to differentiate the string from Offline as status. It
+# * might need a different translation, at least in Swedish.
+#~ msgid "Offline "
+#~ msgstr "Неповезан"
+
+#~ msgid "Others"
+#~ msgstr "Други"
+
+#~ msgid "Get _Info"
+#~ msgstr "_Подаци"
+
+#~ msgid "Use ta_bs instead of windows for conversations"
+#~ msgstr "Користи _листове уместо прозора за разговоре"
+
+#~ msgid "I'm here"
+#~ msgstr "Овде сам"
+
+#~ msgid "I'm not here right now"
+#~ msgstr "Тренутно нисам овде"
+
+#~ msgid "Auto away enabled"
+#~ msgstr "Аутоматски одсутан укључено"
+
+#~ msgid "Extended autoaway time"
+#~ msgstr "Продужено време за аутоматски одсутан"
+
+#~ msgid ""
+#~ "The number of minutes of idle time before automatically going into \"away"
+#~ "\" mode."
+#~ msgstr ""
+#~ "Број минута од неактивног времена пре него што аутоматски оде у мод "
+#~ "\"одсутан\""
+
+#~ msgid ""
+#~ "The number of minutes of idle time before automatically going into "
+#~ "\"extended away\" mode."
+#~ msgstr ""
+#~ "Број минута од неактивног времена пре него што аутоматски оде у мод "
+#~ "\"дуго одсутан\""
+
+#~ msgid ""
+#~ "Whether or not to go into \"away\" mode automatically when a certain time "
+#~ "of idling has passed."
+#~ msgstr ""
+#~ "Да ли да оде у мод \"одсутан\" аутоматски када одређено време "
+#~ "неактивности прође."
+
+#~ msgid "_Busy"
+#~ msgstr "_Заузет"
+
+#~ msgid "Present"
+#~ msgstr "Присутни"
+
+#~ msgid "Timestamp messages"
+#~ msgstr "Прикажи ознаку временског тренутка на порукама"
+
+#~ msgid "Free to chat"
+#~ msgstr "Слободан за ћаскање"
+
+#~ msgid "Extended away"
+#~ msgstr "Дуго одсутан"
+
+#~ msgid "_Edit Account..."
+#~ msgstr "_Уређивање налога..."
+
+#~ msgid ""
+#~ "<b>Welcome to Gossip</b>\n"
+#~ "\n"
+#~ "Gossip is a modern client for the Jabber Instant Message system.\n"
+#~ "\n"
+#~ "This assistant will help you configure Gossip and connect you to your "
+#~ "favorite Jabber server."
+#~ msgstr ""
+#~ "<b>Добродошли у Чаврљање</b>\n"
+#~ "\n"
+#~ "Чаврљање је модеран клијент за Џабер Тренутне Поруке.\n"
+#~ "\n"
+#~ "Овај помоћник ће вам помоћи да подесите Чаврљање и конектујете се на ваш "
+#~ "омиљен Џабер сервер."
+
+#~ msgid "<b>Additional information</b>"
+#~ msgstr "<b>Додатне информације</b>"
+
+#~ msgid "<b>Address</b>"
+#~ msgstr "<b>Адреса</b>"
+
+#~ msgid "<b>Auto away</b>"
+#~ msgstr "<b>Аутоматски одсутан</b>"
+
+#~ msgid "Automatically enter away mode during inactivity"
+#~ msgstr "Аутоматски уђи у мод одсутности за време неактивности"
+
+#~ msgid "Enter away mode after"
+#~ msgstr "Уђи у мод одсутности после"
+
+#~ msgid "I'm away eating dinner, bbiab..."
+#~ msgstr "Ја сам одсутан док вечерам, враћам се за..."
+
+#~ msgid "Priority:"
+#~ msgstr "Важност:"
+
+#~ msgid "Set the status you want to use"
+#~ msgstr "Подесите стање које желите да користите"
+
+#~ msgid "minutes"
+#~ msgstr "минута"
+
+#~ msgid "<b>Jabber ID:</b>"
+#~ msgstr "<b>Џабер ID:</b>"
+
+#~ msgid "<b>Setup Finished</b>"
+#~ msgstr "<b>Поставка је завршена</b>"
+
+#~ msgid ""
+#~ "This user wants to subscribe to your presence.\n"
+#~ "Do you approve?"
+#~ msgstr ""
+#~ "Овај корисник је послао захтев да види вашу присутност.\n"
+#~ "Да ли одобравате?"
+
+#~ msgid "_Approve"
+#~ msgstr "Одо_бри"
+
+#~ msgid "_Defer"
+#~ msgstr "_Одбиј"
+
+#~ msgid "Default Account"
+#~ msgstr "Подразумевани Налог"
+
+#~ msgid "Could not open the address \"%s\": %s"
+#~ msgstr "Не може да приступи адреси „%s“: %s"
+
+#~ msgid "<b>Available accounts</b>"
+#~ msgstr "<b>Доступни налози</b>"
+
+#~ msgid "<b>What account do you want to use for this connection?</b>"
+#~ msgstr "<b>Који налог желите да користите за ову везу?</b>"
+
+#~ msgid "Use SS_L"
+#~ msgstr "Користи SSL"
+
+#~ msgid "_User:"
+#~ msgstr "Корисник:"
+
+#~ msgid "What request message do you want to send to <b>micke</b>?"
+#~ msgstr "Који захтев желите да пошаљете <b>Миљенку</b>?"
diff --git a/gnome-2-22/po/sr@Latn.po b/gnome-2-22/po/sr@Latn.po
new file mode 100644
index 000000000..f7c260e01
--- /dev/null
+++ b/gnome-2-22/po/sr@Latn.po
@@ -0,0 +1,2314 @@
+# Serbian translation of gossip
+# Courtesy of Prevod.org team (http://prevod.org/) -- 2003, 2004.
+#
+# This file is distributed under the same license as the gossip package.
+#
+# Maintainer: Dejan Matijević <dejan@ns.sympatico.ca>
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gossip\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-05-15 23:46+0200\n"
+"PO-Revision-Date: 2004-02-27 23:05+0100\n"
+"Last-Translator: Danilo Šegan <danilo@prevod.org>\n"
+"Language-Team: Serbian (sr) <serbiangnome-lista@nongnu.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../data/empathy.desktop.in.h:1
+#, fuzzy
+msgid "Empathy Instant Messenger"
+msgstr "Brzi glasnik"
+
+#: ../data/empathy.desktop.in.h:2
+msgid "Instant Messenger"
+msgstr "Brzi glasnik"
+
+#: ../data/empathy.schemas.in.h:1
+msgid "Always open a separate chat window for new chats."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:2
+#, fuzzy
+msgid "Chat window theme"
+msgstr "Ćaskaj sa:"
+
+#: ../data/empathy.schemas.in.h:3
+msgid ""
+"Comma separated list of spell checker languages to use (e.g. en, fr, nl)."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:4
+#, fuzzy
+msgid "Compact contact list"
+msgstr "Dodaj u svoj spisak drugara"
+
+#: ../data/empathy.schemas.in.h:5
+msgid "Contact list sort criterium"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:6
+msgid "Default directory to select an avatar image from"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:7
+msgid "Enable popup when contact is available"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:8
+#, fuzzy
+msgid "Enable sound when away"
+msgstr "Isključi zvuk kada ste _odsutni"
+
+#: ../data/empathy.schemas.in.h:9
+#, fuzzy
+msgid "Enable sound when busy"
+msgstr "Isključi zvuk kada ste _zauzeti"
+
+#: ../data/empathy.schemas.in.h:10
+#, fuzzy
+msgid "Enable spell checker"
+msgstr "Čavrljanje - Pošalji poruku"
+
+#: ../data/empathy.schemas.in.h:11
+msgid "Hide main window"
+msgstr "Sakrij glavni prozor"
+
+#: ../data/empathy.schemas.in.h:12
+msgid "Hide the main window."
+msgstr "Sakrij glavni prozor."
+
+#: ../data/empathy.schemas.in.h:13
+msgid "Open new chats in separate windows"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:14
+#, fuzzy
+msgid "Show avatars"
+msgstr "_Prikaži spisak kontakata"
+
+#: ../data/empathy.schemas.in.h:15
+#, fuzzy
+msgid "Show hint about closing the main window"
+msgstr "Visina glavnog prozora."
+
+#: ../data/empathy.schemas.in.h:16
+msgid "Show offline contacts"
+msgstr "Prikaži nepovezane kontakte"
+
+#: ../data/empathy.schemas.in.h:17
+msgid "Spell checking languages"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:18
+msgid "The last directory that an avatar image was chosen from."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:19
+msgid "The theme that is used to display the conversation in chat windows."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:20
+msgid "Use graphical smileys"
+msgstr "Prikaži grafički smešak"
+
+#: ../data/empathy.schemas.in.h:21
+msgid "Use notification sounds"
+msgstr "Koristi zvuk za napomene"
+
+#: ../data/empathy.schemas.in.h:22
+msgid "Use theme for chat rooms"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:23
+msgid ""
+"Whether or not to check words typed against the languages you want to check "
+"with."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:24
+msgid ""
+"Whether or not to convert smileys into graphical images in conversations."
+msgstr "Da li da pretvori smeške u grafičke slike u čavrljanju."
+
+#: ../data/empathy.schemas.in.h:25
+msgid "Whether or not to play a sound when messages arrive."
+msgstr "Da li da pusti zvuk kada poruka stigne."
+
+#: ../data/empathy.schemas.in.h:26
+msgid "Whether or not to play sounds when away."
+msgstr "Da li da pusti zvuk kada je odsutan."
+
+#: ../data/empathy.schemas.in.h:27
+msgid "Whether or not to play sounds when busy."
+msgstr "Da li da pusti zvuk kada je zauzet."
+
+#: ../data/empathy.schemas.in.h:28
+#, fuzzy
+msgid "Whether or not to show a popup when a contact becomes available."
+msgstr "Da li da pusti zvuk kada poruka stigne."
+
+#: ../data/empathy.schemas.in.h:29
+#, fuzzy
+msgid ""
+"Whether or not to show avatars for contacts in the contact list and chat "
+"windows."
+msgstr "Da li da prikažem nepovezane kontakte u spisku kontakata."
+
+#: ../data/empathy.schemas.in.h:30
+msgid "Whether or not to show contacts that are offline in the contact list."
+msgstr "Da li da prikažem nepovezane kontakte u spisku kontakata."
+
+#: ../data/empathy.schemas.in.h:31
+msgid ""
+"Whether or not to show the message dialog about closing the main window with "
+"the 'x' button in the title bar."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:32
+#, fuzzy
+msgid "Whether to show the contact list in compact mode or not."
+msgstr "Da li da prikažem nepovezane kontakte u spisku kontakata."
+
+#: ../data/empathy.schemas.in.h:33
+msgid "Whether to use the theme for chat rooms or not."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:34
+msgid ""
+"Which criterium to use when sorting the contact list. Default is to use sort "
+"by the contact's name with the value \"name\". A value of \"state\" will "
+"sort the contact list by state."
+msgstr ""
+
+#: ../libempathy/gossip-contact.c:654 ../libempathy/gossip-presence.c:184
+#: ../libempathy/gossip-presence.c:283
+msgid "Offline"
+msgstr "Nepovezan"
+
+#: ../libempathy/gossip-presence.c:274
+msgid "Available"
+msgstr "Dostupan"
+
+#: ../libempathy/gossip-presence.c:276
+msgid "Busy"
+msgstr "Zauzet"
+
+#: ../libempathy/gossip-presence.c:279
+msgid "Away"
+msgstr "Odsutan"
+
+#: ../libempathy-gtk/empathy-main-window.c:254
+#, fuzzy
+msgid "Show and edit accounts"
+msgstr "_Prikaži spisak kontakata"
+
+#: ../libempathy-gtk/empathy-main-window.c:456
+msgid "Group"
+msgstr "Grupa"
+
+#: ../libempathy-gtk/empathy-main-window.c:477
+#, fuzzy
+msgid "Contact"
+msgstr "Dodaj kontakt"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:1
+#, fuzzy
+msgid "Contact List - Empathy"
+msgstr "_Sakrij spisak kontakata"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:2
+#, fuzzy
+msgid "Context"
+msgstr "Poveži se"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:3
+#, fuzzy
+msgid "Join _Favorites"
+msgstr "U_redi omiljene..."
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:4
+#: ../libempathy-gtk/gossip-chat.glade.h:10
+msgid "Join _New..."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:5
+msgid "Manage Favorites..."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:6
+msgid "Show _Offline Contacts"
+msgstr "_Prikaži nepovezane kontakte"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:7
+#, fuzzy
+msgid "_About"
+msgstr "_Akcije"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:8
+#, fuzzy
+msgid "_Accounts"
+msgstr "_Akcije"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:9
+#: ../libempathy-gtk/gossip-chat.glade.h:15
+msgid "_Add Contact..."
+msgstr "_Dodaj kontakt..."
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:10
+#: ../libempathy-gtk/gossip-contact-list.c:298
+msgid "_Chat"
+msgstr "_Razgovor"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:11
+#, fuzzy
+msgid "_Contents"
+msgstr "Poveži se"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:12
+#: ../libempathy-gtk/gossip-chat.glade.h:21
+#: ../libempathy-gtk/gossip-contact-list.c:310
+#, fuzzy
+msgid "_Edit"
+msgstr "_Izađi"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:13
+msgid "_Help"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:14
+#: ../libempathy-gtk/empathy-status-icon.glade.h:2
+msgid "_New Message..."
+msgstr "_Nova poruka..."
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:15
+#, fuzzy
+msgid "_Personal Information"
+msgstr "Lični podaci"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:16
+msgid "_Preferences"
+msgstr "_Postavke"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:17
+#: ../libempathy-gtk/empathy-status-icon.glade.h:3
+msgid "_Quit"
+msgstr "_Izađi"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:18
+#: ../libempathy-gtk/gossip-chat.glade.h:25
+#, fuzzy
+msgid "_Room"
+msgstr "_Soba:"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:19
+#: ../libempathy-gtk/gossip-chat.glade.h:28
+#: ../libempathy-gtk/gossip-contact-list.c:326
+#, fuzzy
+msgid "_View Previous Conversations"
+msgstr "S_ledeći razgovor"
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:1
+msgid "Status"
+msgstr "Stanje"
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:4
+msgid "_Show Contact List"
+msgstr "_Prikaži spisak kontakata"
+
+#: ../libempathy-gtk/gossip-about-dialog.c:63
+msgid ""
+"Empathy is free software; you can redistribute it and/or modify it under the "
+"terms of the GNU General Public License as published by the Free Software "
+"Foundation; either version 2 of the License, or (at your option) any later "
+"version."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-about-dialog.c:67
+msgid ""
+"Empathy is distributed in the hope that it will be useful, but WITHOUT ANY "
+"WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS "
+"FOR A PARTICULAR PURPOSE. See the GNU General Public License for more "
+"details."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-about-dialog.c:71
+msgid ""
+"You should have received a copy of the GNU General Public License along with "
+"Empathy; if not, write to the Free Software Foundation, Inc., 51 Franklin "
+"Street, Fifth Floor, Boston, MA 02110-130159 USA"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-about-dialog.c:99
+#, fuzzy
+msgid "An Instant Messaging client for GNOME"
+msgstr "Brzi glasnik za Gnoma"
+
+# Note to translators: put here your name (and address) so it
+# * will shop up in the "about" box
+#: ../libempathy-gtk/gossip-about-dialog.c:105
+#, fuzzy
+msgid "translator-credits"
+msgstr "Dejan Matijević"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:224
+#, fuzzy
+msgid "Disable"
+msgstr "Dostupan"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:227
+msgid "Enable"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:261
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:3
+#, fuzzy
+msgid "<b>No Account Selected</b>"
+msgstr "<b>Nalog:</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:263
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to start configuring.\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want "
+"to configure in the list on the left."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:272
+#, fuzzy
+msgid "<b>No Accounts Configured</b>"
+msgstr "<b>Nalog:</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:274
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to start configuring."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:362
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:6
+#, fuzzy
+msgid "Accounts"
+msgstr "Ime naloga:"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:857
+#, c-format
+msgid ""
+"You are about to remove your %s account!\n"
+"Are you sure you want to proceed?"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:863
+msgid ""
+"Any associated conversations and chat rooms will NOT be removed if you "
+"decide to proceed.\n"
+"\n"
+"Should you decide to add the account back at a later time, they will still "
+"be available."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:1
+#, fuzzy
+msgid "<b>Account</b>"
+msgstr "<b>Nalog:</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:2
+#, fuzzy
+msgid "<b>New Account</b>"
+msgstr "<b>Nalog:</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:4
+#, fuzzy
+msgid "<b>Settings</b>"
+msgstr "<b>Zvuk</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:5
+msgid "A unique name for this account to identify it personally to you."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:7
+#, fuzzy
+msgid "Cr_eate"
+msgstr "Ćaskaj"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:8
+msgid "Imendio "
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:9
+msgid "Jabber"
+msgstr "DŽaber"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:10
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to started configuring.\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want "
+"to configure in the list on the left."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:13
+#, fuzzy
+msgid "_Name:"
+msgstr "Ime:"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:14
+#, fuzzy
+msgid "_Type:"
+msgstr "_Tema:"
+
+#: ../libempathy-gtk/gossip-account-widget-generic.c:144
+#: ../libempathy-gtk/gossip-account-widget-generic.c:186
+#, c-format
+msgid "%s:"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:1
+#, fuzzy
+msgid ""
+"<small><b><span foreground=\"#555\">Example: user@jabber.org</span></b></"
+"small>"
+msgstr "<span size=\"smaller\">Primer: korisnik@jabber.org</span>"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:2
+msgid "Forget password and clear the entry."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:3
+msgid "Login I_D:"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:4
+#, fuzzy
+msgid "Pass_word:"
+msgstr "_Lozinka:"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:5
+#, fuzzy
+msgid "Reso_urce:"
+msgstr "Izvor:"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:6
+#, fuzzy
+msgid "Use encryption (SS_L)"
+msgstr "Koristi _šifrovanje (SSL)"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:7
+#, fuzzy
+msgid "_Port:"
+msgstr "P_ort:"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:8
+msgid "_Server:"
+msgstr "_Server:"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:9
+msgid "jabber account settings"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.c:314
+msgid "Disconnected"
+msgstr "Nepovezan"
+
+#: ../libempathy-gtk/gossip-chat.c:858
+msgid "Insert Smiley"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.c:906
+msgid "_Check Word Spelling..."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.c:1244
+msgid "Connected"
+msgstr "Povezan"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:1
+msgid "C_lear"
+msgstr "Oč_isti"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:2
+msgid "Change _Topic..."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:3
+msgid "Chat"
+msgstr "Ćaskaj"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:4
+#, fuzzy
+msgid "Contact Infor_mation"
+msgstr "Po_daci za kontakt"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:5
+#, fuzzy
+msgid "Cu_t"
+msgstr "Ćaskaj"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:6
+#, fuzzy
+msgid "In_vite..."
+msgstr "Re_gistrovanje..."
+
+#: ../libempathy-gtk/gossip-chat.glade.h:7
+msgid "Insert _Smiley"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:8
+#, fuzzy
+msgid "Invitation _message:"
+msgstr "Unesite poruku o stanju:"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:9
+msgid "Invite"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:11
+msgid "Move Tab _Left"
+msgstr "Premesti jezičak _levo"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:12
+msgid "Move Tab _Right"
+msgstr "Premesti jezičak _desno"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:13
+msgid "Select who would you like to invite:"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:14
+msgid "You have been invited to join a chat conference."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:16
+#, fuzzy
+msgid "_Add To Favorites"
+msgstr "U_redi omiljene..."
+
+#: ../libempathy-gtk/gossip-chat.glade.h:17
+msgid "_Close"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:18
+msgid "_Conversation"
+msgstr "_Razgovor"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:19
+msgid "_Copy"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:20
+msgid "_Detach Tab"
+msgstr "_Odvoji list"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:22
+msgid "_Next Tab"
+msgstr "_Sledeći list"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:23
+msgid "_Paste"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:24
+msgid "_Previous Tab"
+msgstr "P_rethodni list"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:26
+#, fuzzy
+msgid "_Show Contacts"
+msgstr "_Prikaži spisak kontakata"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:27
+msgid "_Tabs"
+msgstr "_Listovi"
+
+#: ../libempathy-gtk/gossip-chat-view.c:544
+msgid "_Copy Link Address"
+msgstr "_Umnoži adresu veze"
+
+#: ../libempathy-gtk/gossip-chat-view.c:552
+msgid "_Open Link"
+msgstr "_Otvori vezu"
+
+#: ../libempathy-gtk/gossip-chat-view.c:889
+msgid "%A %d %B %Y"
+msgstr "%A, %d. %B %Y."
+
+#: ../libempathy-gtk/gossip-chat-window.c:685
+#: ../libempathy-gtk/gossip-chat-window.c:715
+#, fuzzy
+msgid "New Message"
+msgid_plural "New Messages"
+msgstr[0] "_Nova poruka..."
+msgstr[1] "_Nova poruka..."
+
+#: ../libempathy-gtk/gossip-chat-window.c:691
+#, fuzzy
+msgid "Chat Room"
+msgstr "Čavrljanje - Čavrljaj"
+
+#: ../libempathy-gtk/gossip-chat-window.c:696
+#: ../libempathy-gtk/gossip-chat-window.c:719
+#, fuzzy, c-format
+msgid "Conversation"
+msgid_plural "Conversations (%d)"
+msgstr[0] "_Razgovor"
+msgstr[1] "_Razgovor"
+
+#: ../libempathy-gtk/gossip-chat-window.c:1295
+#, fuzzy
+msgid "Typing a message."
+msgstr "Pošalji poruku čavrljanja..."
+
+#: ../libempathy-gtk/gossip-contact-list.c:290
+#, fuzzy
+msgid "_Contact"
+msgstr "Dodaj kontakt"
+
+#: ../libempathy-gtk/gossip-contact-list.c:294
+#, fuzzy
+msgid "_Group"
+msgstr "Grupa"
+
+#: ../libempathy-gtk/gossip-contact-list.c:298
+#, fuzzy
+msgid "Chat with contact"
+msgstr "Dodaj kontakt"
+
+#: ../libempathy-gtk/gossip-contact-list.c:302
+#, fuzzy
+msgid "Infor_mation"
+msgstr "Po_daci za kontakt"
+
+#: ../libempathy-gtk/gossip-contact-list.c:302
+#, fuzzy
+msgid "View contact information"
+msgstr "Informacije za kontakt"
+
+#: ../libempathy-gtk/gossip-contact-list.c:306
+#, fuzzy
+msgid "Re_name"
+msgstr "/Prei_menuj grupu"
+
+#: ../libempathy-gtk/gossip-contact-list.c:306
+#, fuzzy
+msgid "Rename"
+msgstr "Ukloni"
+
+#: ../libempathy-gtk/gossip-contact-list.c:310
+#, fuzzy
+msgid "Edit the groups and name for this contact"
+msgstr ""
+"Unesite novi nadimak za kontakt\n"
+"%s"
+
+#: ../libempathy-gtk/gossip-contact-list.c:314
+msgid "_Remove"
+msgstr "Ukloni"
+
+#: ../libempathy-gtk/gossip-contact-list.c:314
+#, fuzzy
+msgid "Remove contact"
+msgstr "/Ukloni kontakt"
+
+#: ../libempathy-gtk/gossip-contact-list.c:318
+#, fuzzy
+msgid "_Invite to Chat Room"
+msgstr "Čavrljanje - Uredi Grupno Čavrljanje"
+
+#: ../libempathy-gtk/gossip-contact-list.c:318
+msgid "Invite to a currently open chat room"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-contact-list.c:322
+#, fuzzy
+msgid "_Send File..."
+msgstr "Pošalji po_ruku..."
+
+#: ../libempathy-gtk/gossip-contact-list.c:322
+#, fuzzy
+msgid "Send a file"
+msgstr "Izaberi"
+
+#: ../libempathy-gtk/gossip-contact-list.c:326
+#, fuzzy
+msgid "View previous conversations with this contact"
+msgstr "S_ledeći razgovor"
+
+#: ../libempathy-gtk/gossip-preferences.c:250
+msgid "Language"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:1
+#, fuzzy
+msgid "<b>Appearance</b>"
+msgstr "Izgled"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:2
+#, fuzzy
+msgid "<b>Audio</b>"
+msgstr "<b>Nalog:</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:3
+#, fuzzy
+msgid "<b>Behaviour</b>"
+msgstr "<b>Omiljeno:</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:4
+#, fuzzy
+msgid "<b>Contact List</b>"
+msgstr "Poveži se"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:5
+#, fuzzy
+msgid "<b>Languages</b>"
+msgstr "<b>Podrazumevane poruke</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:6
+#, fuzzy
+msgid "<b>Options</b>"
+msgstr "<b>Zvuk</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:7
+#, fuzzy
+msgid "<b>Visual</b>"
+msgstr "<b>E-pošta:</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:8
+msgid ""
+"<small>The list of languages reflects only the languages for which you have "
+"a dictionary installed.</small>"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:9
+msgid "Avatars are user chosen images shown in the contact list"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:10
+#, fuzzy
+msgid "Chat Th_eme:"
+msgstr "Ime za čavrljanje:"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:11
+msgid "Display notifications when contacts come _online"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:12
+#, fuzzy
+msgid "Enable sounds when _away"
+msgstr "Isključi zvuk kada ste _odsutni"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:13
+#, fuzzy
+msgid "Enable sounds when _busy"
+msgstr "Isključi zvuk kada ste _zauzeti"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:14
+msgid "General"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:15
+#, fuzzy
+msgid "Notifications"
+msgstr "Obaveštenje"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:16
+#, fuzzy
+msgid "Preferences"
+msgstr "_Postavke"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:17
+msgid "Show _avatars"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:18
+#, fuzzy
+msgid "Show _smileys as images"
+msgstr "Pretvori _smeške u grafičke simbole"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:19
+#, fuzzy
+msgid "Show co_mpact contact list"
+msgstr "_Prikaži spisak kontakata"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:20
+msgid "Sort by _name"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:21
+#, fuzzy
+msgid "Sort by s_tate"
+msgstr "Podesite vaše stanje:"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:22
+msgid "Spell Checking"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:23
+msgid "Themes"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:24
+msgid "_Enable spell checking"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:25
+msgid "_Open new chats in separate windows"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:26
+#, fuzzy
+msgid "_Play sound when messages arrive"
+msgstr "Puštaj zvuk po pristizanju poruka"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:27
+#, fuzzy
+msgid "_Use for chat rooms"
+msgstr "Čavrljanje - Uredi Grupno Čavrljanje"
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:702
+#, fuzzy
+msgid "Custom message..."
+msgstr "Posebna poruka..."
+
+#. Clear list
+#: ../libempathy-gtk/gossip-presence-chooser.c:724
+#, fuzzy
+msgid "Clear List..."
+msgstr "Oč_isti"
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:803
+#, fuzzy
+msgid "Are you sure you want to clear the list?"
+msgstr "Da li želite da prihvatite zahtev?"
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:807
+msgid ""
+"This will remove any custom messages you have added to the list of preset "
+"status messages."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:812
+#, fuzzy
+msgid "Clear List"
+msgstr "Oč_isti"
+
+#: ../libempathy-gtk/gossip-presence-chooser.glade.h:1
+msgid "Enter status message:"
+msgstr "Unesite poruku o stanju:"
+
+#: ../libempathy-gtk/gossip-presence-chooser.glade.h:2
+#, fuzzy
+msgid "Status Message Presets"
+msgstr "Poruke o stanju"
+
+# Pretpostaviti je nešto smatrati datim bez izričitog navođenja, upravo kao i ovde.
+#: ../libempathy-gtk/gossip-presence-chooser.glade.h:3
+#, fuzzy
+msgid "_Add to status message list"
+msgstr "Pretpostavljene poruke stanja"
+
+#: ../libempathy-gtk/gossip-private-chat.c:198
+#, c-format
+msgid "%s went offline"
+msgstr "%s prekide vezu"
+
+#: ../libempathy-gtk/gossip-private-chat.c:212
+#, fuzzy, c-format
+msgid "%s has come online"
+msgstr "%s se poveza"
+
+#: ../libempathy-gtk/gossip-theme-manager.c:87
+msgid "Classic"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-theme-manager.c:88
+msgid "Simple"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-theme-manager.c:89
+#, fuzzy
+msgid "Clean"
+msgstr "Oč_isti"
+
+#: ../libempathy-gtk/gossip-theme-manager.c:90
+msgid "Blue"
+msgstr ""
+
+#: ../src/empathy-main.c:145
+msgid "Don't connect on startup"
+msgstr "Ne uspostavljaj vezu pri pokretanju"
+
+#: ../src/empathy-main.c:155
+#, fuzzy
+msgid "- Empathy Instant Messenger"
+msgstr "Brzi glasnik"
+
+#, fuzzy
+#~ msgid "Gossip Instant Messenger"
+#~ msgstr "Brzi glasnik"
+
+#, fuzzy
+#~ msgid "Joining"
+#~ msgstr "_Pridruži"
+
+#, fuzzy
+#~ msgid "Active"
+#~ msgstr "_Akcije"
+
+#, fuzzy
+#~ msgid "Unknown"
+#~ msgstr "Nepoznata greška"
+
+#, fuzzy
+#~ msgid "No affiliation"
+#~ msgstr "Obaveštenje"
+
+#, fuzzy
+#~ msgid "An unknown error occurred, check your details are correct."
+#~ msgstr "Nepoznata greška"
+
+#, fuzzy
+#~ msgid "Unavailable"
+#~ msgstr "Dostupan"
+
+#, fuzzy
+#~ msgid "An unknown error occurred."
+#~ msgstr "Nepoznata greška"
+
+#, fuzzy
+#~ msgid "Connection refused."
+#~ msgstr "Povezan"
+
+#, fuzzy
+#~ msgid "Connection timed out."
+#~ msgstr "Povezan"
+
+#, fuzzy
+#~ msgid "This feature is unavailable."
+#~ msgstr "Možda je server trenutno nedostupan."
+
+#, fuzzy
+#~ msgid "new account"
+#~ msgstr "Nov nalog"
+
+#~ msgid "Home"
+#~ msgstr "Početak"
+
+#, fuzzy
+#~ msgid "This service is unavailable or not found"
+#~ msgstr "Možda je server trenutno nedostupan."
+
+#, fuzzy
+#~ msgid "Registration is required"
+#~ msgstr "Registrovanje naloga"
+
+#, fuzzy
+#~ msgid "This feature is not implemented"
+#~ msgstr "Možda je server trenutno nedostupan."
+
+#, fuzzy
+#~ msgid "Disconnect"
+#~ msgstr "_Raskini vezu"
+
+#~ msgid "Connect"
+#~ msgstr "Poveži se"
+
+#, fuzzy
+#~ msgid "Successfully registered your new account settings."
+#~ msgstr "Uspešno registrovan nalog"
+
+#, fuzzy
+#~ msgid "Failed to register your new account settings."
+#~ msgstr "Nije uspeo da registruje nalog"
+
+#, fuzzy
+#~ msgid "Successfully changed your account password."
+#~ msgstr "Unesite vašu lozinku:"
+
+#, fuzzy
+#~ msgid "Failed to change your account password."
+#~ msgstr "Unesite vašu lozinku:"
+
+#, fuzzy
+#~ msgid ""
+#~ "Please enter a new password for this account:\n"
+#~ "%s"
+#~ msgstr ""
+#~ "Unesite novo ime za grupu\n"
+#~ "%s"
+
+#, fuzzy
+#~ msgid "No information is available for this contact."
+#~ msgstr "Preuzmite podatke o ovom kontaktu"
+
+#, fuzzy
+#~ msgid "Information requested, please wait..."
+#~ msgstr "<b>Tražio je informacije, molim sačekajte...</b>"
+
+#~ msgid "I would like to add you to my contact list."
+#~ msgstr "Ja bih voleo da dodam tebe na moju listu drugara."
+
+#, fuzzy
+#~ msgid "%d new message"
+#~ msgid_plural "%d new messages"
+#~ msgstr[0] "_Nova poruka..."
+#~ msgstr[1] "_Nova poruka..."
+
+#, fuzzy
+#~ msgid "%d subscription request"
+#~ msgid_plural "%d subscription requests"
+#~ msgstr[0] "Zahtev za poboljšanjem"
+#~ msgstr[1] "Zahtev za poboljšanjem"
+
+#, fuzzy
+#~ msgid "%d server message"
+#~ msgid_plural "%d server messages"
+#~ msgstr[0] "Poruka sa zahtevom"
+#~ msgstr[1] "Poruka sa zahtevom"
+
+#, fuzzy
+#~ msgid "Edit Account _Details"
+#~ msgstr "Uredi podatke o nalogu"
+
+#~ msgid "New message from %s"
+#~ msgstr "Nova poruka od %s"
+
+#, fuzzy
+#~ msgid "Accept"
+#~ msgstr "_Prihvati"
+
+#, fuzzy
+#~ msgid "Decline"
+#~ msgstr "Večera"
+
+#, fuzzy
+#~ msgid "Name"
+#~ msgstr "Ime:"
+
+#, fuzzy
+#~ msgid "Room"
+#~ msgstr "_Soba:"
+
+#, fuzzy
+#~ msgid "Auto Connect"
+#~ msgstr "Čavrljanje - Povezati se"
+
+#, fuzzy
+#~ msgid "Information requested..."
+#~ msgstr "<b>Tražio je informacije, molim sačekajte...</b>"
+
+#, fuzzy
+#~ msgid "Do you want to remove this contact from your roster?"
+#~ msgstr ""
+#~ "Da li želite da uklonite kontakt\n"
+#~ "%s\n"
+#~ "iz vašeg spiska drugara?"
+
+#, fuzzy
+#~ msgid ""
+#~ "Please enter a new name for the group:\n"
+#~ "%s"
+#~ msgstr ""
+#~ "Unesite novo ime za grupu\n"
+#~ "%s"
+
+#~ msgid "Select"
+#~ msgstr "Izaberi"
+
+# :-)
+#~ msgid "Unsorted"
+#~ msgstr "Nesvrstani"
+
+#, fuzzy
+#~ msgid "Unknown error occurred during file transfer."
+#~ msgstr "Nepoznata greška"
+
+#, fuzzy
+#~ msgid "%s would like to send you a file."
+#~ msgstr "Ja bih voleo da dodam tebe na moju listu drugara."
+
+#, fuzzy
+#~ msgid "Someone would like to send you a file."
+#~ msgstr "Ja bih voleo da dodam tebe na moju listu drugara."
+
+#, fuzzy
+#~ msgid "Select a file"
+#~ msgstr "Izaberi"
+
+#, fuzzy
+#~ msgid "Connecting..."
+#~ msgstr "Po_vezivanje..."
+
+#, fuzzy
+#~ msgid "Retry connection"
+#~ msgstr "Čavrljanje - Povezati se"
+
+#, fuzzy
+#~ msgid "Enter the new topic you want to set for this room:"
+#~ msgstr "Koji nadimak želite da koristite za ovog korisnika?"
+
+#, fuzzy
+#~ msgid "Topic: %s"
+#~ msgstr "_Tema:"
+
+#, fuzzy
+#~ msgid "Account"
+#~ msgstr "Ime naloga:"
+
+#, fuzzy
+#~ msgid "Conversation With"
+#~ msgstr "_Razgovor"
+
+#~ msgid "List the available accounts"
+#~ msgstr "Spisak dostupnih naloga"
+
+#~ msgid "Which account to connect to on startup"
+#~ msgstr "Sa kojim nalogom da uspostavi vezu pri pokretanju"
+
+#~ msgid "ACCOUNT-NAME"
+#~ msgstr "IME NALOGA"
+
+#~ msgid "Available accounts:"
+#~ msgstr "Dostupni nalozi:"
+
+#~ msgid "[default]"
+#~ msgstr "[podrazumevano]"
+
+#~ msgid "There is no account with the name '%s'."
+#~ msgstr "Nepostoji nalog sa imenom '%s'."
+
+#, fuzzy
+#~ msgid "Join"
+#~ msgstr "_Pridruži"
+
+#, fuzzy
+#~ msgid "Create"
+#~ msgstr "Ćaskaj"
+
+#, fuzzy
+#~ msgid "Chat Rooms"
+#~ msgstr "Čavrljanje - Čavrljaj"
+
+#, fuzzy
+#~ msgid "Browsing for conference rooms, please wait..."
+#~ msgstr "<b>Tražio je informacije, molim sačekajte...</b>"
+
+#~ msgid "Default"
+#~ msgstr "Podrazumevano"
+
+#, fuzzy
+#~ msgid "Chat!"
+#~ msgstr "Ćaskaj"
+
+#, fuzzy
+#~ msgid "%s wants to be added to your contact list."
+#~ msgstr "%s će biti dodat u vašu listu drugara."
+
+#, fuzzy
+#~ msgid "Someone wants to be added to your contact list."
+#~ msgstr "Kontant će biti dodat u vašu listu drugara"
+
+#, fuzzy
+#~ msgid "Subscription request"
+#~ msgstr "Zahtev za poboljšanjem"
+
+#, fuzzy
+#~ msgid "Contact Information"
+#~ msgstr "Po_daci za kontakt"
+
+#, fuzzy
+#~ msgid "New subscription request from %s"
+#~ msgstr "Zahtev za poboljšanjem"
+
+#, fuzzy
+#~ msgid "Do you want to add this person to your contact list?"
+#~ msgstr ""
+#~ "Da li želite da uklonite kontakt\n"
+#~ "%s\n"
+#~ "iz vašeg spiska drugara?"
+
+#, fuzzy
+#~ msgid "Do you want to add %s to your contact list?"
+#~ msgstr ""
+#~ "Da li želite da uklonite kontakt\n"
+#~ "%s\n"
+#~ "iz vašeg spiska drugara?"
+
+#, fuzzy
+#~ msgid "Please enter your %s account password"
+#~ msgstr "Unesite vašu lozinku:"
+
+#~ msgid "Remember Password?"
+#~ msgstr "Da li ste zapamtili lozinku?"
+
+#, fuzzy
+#~ msgid "Change"
+#~ msgstr "Ćaskaj"
+
+#, fuzzy
+#~ msgid "Contact goes online"
+#~ msgstr "%s se poveza"
+
+#, fuzzy
+#~ msgid "Do you want to accept this file?"
+#~ msgstr "Da li želite da prihvatite zahtev?"
+
+#, fuzzy
+#~ msgid "File name:"
+#~ msgstr "_Korisničko ime:"
+
+#, fuzzy
+#~ msgid "File size:"
+#~ msgstr "Veb sajt :"
+
+#~ msgid "Web site:"
+#~ msgstr "Veb sajt :"
+
+#~ msgid "_Accept"
+#~ msgstr "_Prihvati"
+
+#~ msgid "_Deny"
+#~ msgstr "O_dbij"
+
+#, fuzzy
+#~ msgid "<b>Topic:</b>"
+#~ msgstr "<b>Zvuk</b>"
+
+#, fuzzy
+#~ msgid "Account:"
+#~ msgstr "Ime naloga:"
+
+#, fuzzy
+#~ msgid "Edit Favorite Room"
+#~ msgstr "Čavrljanje - Uredi Grupno Čavrljanje"
+
+#, fuzzy
+#~ msgid "Group Chat"
+#~ msgstr "Čavrljanje - Čavrljaj"
+
+#, fuzzy
+#~ msgid "Join New"
+#~ msgstr "_Pridruži"
+
+#, fuzzy
+#~ msgid "Join room on start_up"
+#~ msgstr "Ne uspostavljaj vezu pri pokretanju"
+
+#, fuzzy
+#~ msgid "N_ame:"
+#~ msgstr "Ime:"
+
+#, fuzzy
+#~ msgid "S_erver:"
+#~ msgstr "Server:"
+
+#~ msgid "_Nickname:"
+#~ msgstr "_Nadimak:"
+
+#~ msgid "_Room:"
+#~ msgstr "_Soba:"
+
+#, fuzzy
+#~ msgid "<b>About</b>"
+#~ msgstr "<b>Nalog:</b>"
+
+#, fuzzy
+#~ msgid "<b>Client Information</b>"
+#~ msgstr "Podaci o klijentu"
+
+#, fuzzy
+#~ msgid "<b>Groups</b>"
+#~ msgstr "<b>Nalog:</b>"
+
+#, fuzzy
+#~ msgid "<b>Name</b>"
+#~ msgstr "<b>Ime:</b>"
+
+#, fuzzy
+#~ msgid "<b>Personal Details</b>"
+#~ msgstr "<b>Podešavanja naloga</b>"
+
+#, fuzzy
+#~ msgid "<b>Status</b>"
+#~ msgstr "<b>Zvuk</b>"
+
+#, fuzzy
+#~ msgid "<b>Subscription</b>"
+#~ msgstr "<b>Zvuk</b>"
+
+#, fuzzy
+#~ msgid "<span size=\"smaller\">Example: Mikael or user@server.org</span>"
+#~ msgstr "<span size=\"smaller\">Primer: korisnik@jabber.org</span>"
+
+#, fuzzy
+#~ msgid "Accou_nt:"
+#~ msgstr "Ime naloga:"
+
+#, fuzzy
+#~ msgid "Add Contact"
+#~ msgstr "Dodaj kontakt"
+
+#, fuzzy
+#~ msgid "Ch_at"
+#~ msgstr "Ćaskaj"
+
+#~ msgid "Client:"
+#~ msgstr "Klijent:"
+
+#, fuzzy
+#~ msgid "Con_tact:"
+#~ msgstr "Dodaj kontakt"
+
+#, fuzzy
+#~ msgid "Connect on S_tartup"
+#~ msgstr "Ne uspostavljaj vezu pri pokretanju"
+
+#, fuzzy
+#~ msgid "Contacts"
+#~ msgstr "Dodaj kontakt"
+
+#~ msgid "Country:"
+#~ msgstr "Država:"
+
+#, fuzzy
+#~ msgid "Decide _Later"
+#~ msgstr "O_dluči kasnije"
+
+#, fuzzy
+#~ msgid "Edit Contact"
+#~ msgstr "Dodaj kontakt"
+
+#~ msgid "Edit Groups"
+#~ msgstr "Uredi grupe"
+
+#~ msgid "Email:"
+#~ msgstr "E-pošta:"
+
+# DŽaber identifikaciona oznaka :-)
+#, fuzzy
+#~ msgid "ID:"
+#~ msgstr "DŽIO"
+
+#~ msgid "Name:"
+#~ msgstr "Ime:"
+
+#~ msgid "OS:"
+#~ msgstr "OS:"
+
+#, fuzzy
+#~ msgid "Personal Details"
+#~ msgstr "<b>Podešavanja naloga</b>"
+
+#, fuzzy
+#~ msgid "R_egister"
+#~ msgstr "Re_gistrovanje..."
+
+#, fuzzy
+#~ msgid "Search"
+#~ msgstr "_Traži..."
+
+#, fuzzy
+#~ msgid "Spell Checker"
+#~ msgstr "Čavrljanje - Pošalji poruku"
+
+#, fuzzy
+#~ msgid "Subscription Request"
+#~ msgstr "Zahtev za poboljšanjem"
+
+#, fuzzy
+#~ msgid "This is the name that will be used on your roster for this contact"
+#~ msgstr "Koji nadimak želite da koristite za ovog korisnika?"
+
+#~ msgid "Version:"
+#~ msgstr "Verzija:"
+
+#, fuzzy
+#~ msgid "View Previous Conversations"
+#~ msgstr "S_ledeći razgovor"
+
+#, fuzzy
+#~ msgid "Which account do you want to use?"
+#~ msgstr "Koji nadimak želite da koristite?"
+
+#, fuzzy
+#~ msgid "_Birthday:"
+#~ msgstr "_Važnost:"
+
+#, fuzzy
+#~ msgid "_Connect"
+#~ msgstr "Poveži se"
+
+#, fuzzy
+#~ msgid "_Description:"
+#~ msgstr "Opis"
+
+#~ msgid "_Disconnect"
+#~ msgstr "_Raskini vezu"
+
+#, fuzzy
+#~ msgid "_Email:"
+#~ msgstr "E-pošta:"
+
+#, fuzzy
+#~ msgid ""
+#~ "_Enter the name or contact ID of the person you want to chat to below:"
+#~ msgstr ""
+#~ "Unesite korisnički ID od osobe kojoj želite da pošanjete poruku za "
+#~ "čavrljanje."
+
+#, fuzzy
+#~ msgid "_For:"
+#~ msgstr "P_ort:"
+
+#, fuzzy
+#~ msgid "_Full Name:"
+#~ msgstr "Ime:"
+
+#, fuzzy
+#~ msgid "_Group:"
+#~ msgstr "Grupa"
+
+#, fuzzy
+#~ msgid "_Nick Name:"
+#~ msgstr "_Nadimak:"
+
+#, fuzzy
+#~ msgid "_Password:"
+#~ msgstr "_Lozinka:"
+
+#, fuzzy
+#~ msgid "_Quit Message:"
+#~ msgstr "Poruk_e o stanju"
+
+#, fuzzy
+#~ msgid "_Retrieve"
+#~ msgstr "Ukloni"
+
+#, fuzzy
+#~ msgid "_Web site:"
+#~ msgstr "Veb sajt :"
+
+# Pretpostaviti je nešto smatrati datim bez izričitog navođenja, upravo kao i ovde.
+#~ msgid "Preset status messages"
+#~ msgstr "Pretpostavljene poruke stanja"
+
+#~ msgid "Preset status messages."
+#~ msgstr "Pretpostavljene poruke stanja."
+
+#, fuzzy
+#~ msgid "Connecting"
+#~ msgstr "Poveži se"
+
+#~ msgid "%s will be added to your contact list."
+#~ msgstr "%s će biti dodat u vašu listu drugara."
+
+#, fuzzy
+#~ msgid "%s ID of new contact:"
+#~ msgstr "_DŽaber ID novog kontakta:"
+
+#, fuzzy
+#~ msgid ""
+#~ "Please enter your invitation message to:\n"
+#~ "%s"
+#~ msgstr "Unesite vašu lozinku:"
+
+#, fuzzy
+#~ msgid "Favourite"
+#~ msgstr "<b>Omiljeno:</b>"
+
+#~ msgid "Contact Information for %s"
+#~ msgstr "Kontakt informacije za %s"
+
+#, fuzzy
+#~ msgid "/Contact Infor_mation"
+#~ msgstr "/Informacije za kontakt"
+
+#, fuzzy
+#~ msgid "/Re_name Contact"
+#~ msgstr "/_Preimenuj kontakt"
+
+#, fuzzy
+#~ msgid "/_Edit Groups"
+#~ msgstr "/Uredi _grupe"
+
+#, fuzzy
+#~ msgid "/_View Previous Conversations"
+#~ msgstr "S_ledeći razgovor"
+
+#~ msgid ""
+#~ "Please enter a new nickname for the contact\n"
+#~ "%s"
+#~ msgstr ""
+#~ "Unesite novi nadimak za kontakt\n"
+#~ "%s"
+
+#~ msgid "Edit groups for %s"
+#~ msgstr "Uredi grupe za %s"
+
+#~ msgid "Conversation Log"
+#~ msgstr "Dnevnik razgovora"
+
+#~ msgid "Registering account"
+#~ msgstr "Registrovanje naloga"
+
+#, fuzzy
+#~ msgid "Respond"
+#~ msgstr "Razlog:"
+
+#, fuzzy
+#~ msgid "Add to _favourites"
+#~ msgstr "U_redi omiljene..."
+
+#, fuzzy
+#~ msgid "Na_me:"
+#~ msgstr "Ime:"
+
+#, fuzzy
+#~ msgid "New Chat Room"
+#~ msgstr "Čavrljanje - Čavrljaj"
+
+#~ msgid " "
+#~ msgstr " "
+
+#, fuzzy
+#~ msgid "<b>Information requested, please wait...</b>"
+#~ msgstr "<b>Tražio je informacije, molim sačekajte...</b>"
+
+#, fuzzy
+#~ msgid "<span size=\"smaller\">Example:</span>"
+#~ msgstr "<span size=\"smaller\">Primer: korisnik@jabber.org</span>"
+
+#, fuzzy
+#~ msgid "Account Name"
+#~ msgstr "Ime naloga:"
+
+#, fuzzy
+#~ msgid "Chat Rooms..."
+#~ msgstr "Čavrljanje - Čavrljaj"
+
+#, fuzzy
+#~ msgid "Do you already have an account set up on a server?"
+#~ msgstr "Da li već imate nalog na DŽaber serveru?"
+
+#, fuzzy
+#~ msgid "Enter the port used in the connection for this account"
+#~ msgstr ""
+#~ "Unesite novi nadimak za kontakt\n"
+#~ "%s"
+
+#, fuzzy
+#~ msgid "Enter the server used in the connection for this account"
+#~ msgstr ""
+#~ "Unesite novi nadimak za kontakt\n"
+#~ "%s"
+
+#, fuzzy
+#~ msgid "Enter the user's contact ID:"
+#~ msgstr "Kliknite da dobijete korisničke kontakt informacije"
+
+#, fuzzy
+#~ msgid "Finished"
+#~ msgstr "Podešavanje je završeno"
+
+#~ msgid "Gossip"
+#~ msgstr "Čavrljanje"
+
+#~ msgid ""
+#~ "Gossip is a modern client for the Jabber Instant Messaging system.\n"
+#~ "\n"
+#~ "This assistant will help you configure Gossip and connect you to your "
+#~ "favorite Jabber server.\n"
+#~ "\n"
+#~ "To get started, just click \"Forward\"."
+#~ msgstr ""
+#~ "Čavrljanje je moderan klijent za DŽaber sistem brzih poruka.\n"
+#~ "\n"
+#~ "Ovaj pomoćnik će vam pomoći da podesite Čavrljanje i povežete se na vaš "
+#~ "omiljen DŽaber server.\n"
+#~ "\n"
+#~ "Da počnete, samo kliknite „Napred“."
+
+#~ msgid ""
+#~ "In order to subscribe to presence notifications from the user, a request "
+#~ "will be sent. Until this request is approved, the user will always be "
+#~ "shown as \"Offline\" in your contact list."
+#~ msgstr ""
+#~ "Zahtev će biti poslat i tražiti da vidite prisutnost korisnika, Dok se "
+#~ "zahtev ne odobri, korisnik će uvek biti prikazan kao \"Ne povezan\" u "
+#~ "vašoj listi prijatelja."
+
+#~ msgid "In which group do you want to place this contact?"
+#~ msgstr "U koju grupu želite da rasporedite ovaj kontakt?"
+
+#~ msgid "Jabber ID:"
+#~ msgstr "DŽaber ID:"
+
+#, fuzzy
+#~ msgid "Nickname:"
+#~ msgstr "_Nadimak:"
+
+#, fuzzy
+#~ msgid "Port:"
+#~ msgstr "P_ort:"
+
+#, fuzzy
+#~ msgid "Registering Account"
+#~ msgstr "Registrovanje naloga"
+
+#, fuzzy
+#~ msgid "Resource:"
+#~ msgstr "Izvor:"
+
+#~ msgid "Sending request"
+#~ msgstr "Zahtev za slanje"
+
+#~ msgid "Server:"
+#~ msgstr "Server:"
+
+#, fuzzy
+#~ msgid "Web Site:"
+#~ msgstr "Veb sajt :"
+
+#~ msgid "Welcome to Gossip"
+#~ msgstr "Dobrodošli u Čavrljanje"
+
+#~ msgid "What instant messaging system does the contact use?"
+#~ msgstr "Koji sistem trenutnih poruka korisnik koristi?"
+
+#~ msgid "What is your name?"
+#~ msgstr "Kako se zovete?"
+
+#, fuzzy
+#~ msgid "What password do you want to use?"
+#~ msgstr "Koji server želite da koristite?"
+
+#~ msgid "What username do you use?"
+#~ msgstr "Koji nadimak koristite?"
+
+#~ msgid "What username do you want to use?"
+#~ msgstr "Koji nadimak želite da koristite?"
+
+#, fuzzy
+#~ msgid "Which account do you want to add this contact to?"
+#~ msgstr "U koju grupu želite da rasporedite ovaj kontakt?"
+
+#, fuzzy
+#~ msgid ""
+#~ "You can change your account settings later by selecting the Edit-"
+#~ ">Accounts menu item."
+#~ msgstr ""
+#~ "Sada je Čavrljanje odgovarajuće podešeno za vaš sistem.\n"
+#~ "Vi možete da promenite podešavanja vašeg naloga kasnije izborom menija "
+#~ "Razgovor->Povezivanje...."
+
+#, fuzzy
+#~ msgid "Your Account"
+#~ msgstr "DŽaber Nalog"
+
+#~ msgid "Your Identity"
+#~ msgstr "Vaš identitet"
+
+#, fuzzy
+#~ msgid "_Group Chat"
+#~ msgstr "Čavrljanje - Čavrljaj"
+
+#, fuzzy
+#~ msgid "_No"
+#~ msgstr "Ne"
+
+#~ msgid "_Search..."
+#~ msgstr "_Traži..."
+
+#, fuzzy
+#~ msgid "_Yes"
+#~ msgstr "Da"
+
+#~ msgid "Be silent when away"
+#~ msgstr "Budi tih na odsustvu"
+
+#~ msgid "Be silent when busy"
+#~ msgstr "Budi tih na odsustvu"
+
+#~ msgid "Height of main window"
+#~ msgstr "Visina glavnog prozora"
+
+#~ msgid "The X position of the main window."
+#~ msgstr "Vodoravni položaj glavnog prozora."
+
+#~ msgid "The Y position of the main window."
+#~ msgstr "Uspravni položaj glavnog prozora."
+
+#~ msgid "The width of the main window."
+#~ msgstr "Širina glavnog prozora."
+
+#~ msgid "Width of the main window"
+#~ msgstr "Širina glavnog prozora"
+
+#~ msgid "X position of main window"
+#~ msgstr "Vodoravni položaj glavnog prozora"
+
+#~ msgid "Y position of main window"
+#~ msgstr "Uspravni položaj glavnog prozora"
+
+#~ msgid "Gossip, Instant Messaging Client"
+#~ msgstr "Čavrljanje, brzi glasnik za Gnoma"
+
+#, fuzzy
+#~ msgid "Close this chat window"
+#~ msgstr "Sakrij glavni prozor."
+
+#, fuzzy
+#~ msgid "Requested Information"
+#~ msgstr "Podaci o _nalogu"
+
+#, fuzzy
+#~ msgid "Send Message"
+#~ msgstr "Pošalji poruku u _razgovor..."
+
+#, fuzzy
+#~ msgid "%s has gone offline"
+#~ msgstr "%s prekide vezu"
+
+#~ msgid "Available..."
+#~ msgstr "Dostupan..."
+
+#~ msgid "Busy..."
+#~ msgstr "Zauzet..."
+
+#~ msgid "Away..."
+#~ msgstr "Odsutan..."
+
+#~ msgid "Contact _Information"
+#~ msgstr "Po_daci za kontakt"
+
+#~ msgid "<b>Sound</b>"
+#~ msgstr "<b>Zvuk</b>"
+
+#, fuzzy
+#~ msgid "Gossip - Accounts"
+#~ msgstr "Čavrljanje - Uredi Nalog"
+
+#, fuzzy
+#~ msgid "Join _Group Chat..."
+#~ msgstr "_Priključi se grupnom čavrljanju..."
+
+#, fuzzy
+#~ msgid "Por_t:"
+#~ msgstr "P_ort:"
+
+#, fuzzy
+#~ msgid "Requested information."
+#~ msgstr "Podaci o klijentu"
+
+#, fuzzy
+#~ msgid "Could not find the server you wanted to use"
+#~ msgstr "Koji server želite da koristite?"
+
+#, fuzzy
+#~ msgid "Connection to the server failed."
+#~ msgstr "<b>Poveži se na server</b>"
+
+#~ msgid "Artwork by:"
+#~ msgstr "Crteži:"
+
+#, fuzzy
+#~ msgid "Account ID"
+#~ msgstr "Ime naloga:"
+
+#~ msgid "%sChat - %s"
+#~ msgstr "%sČavrljanje - %s"
+
+#~ msgid "/Show _Log"
+#~ msgstr "/Prikaži _dnevnik"
+
+#, fuzzy
+#~ msgid "Persian"
+#~ msgstr "Verzija:"
+
+#, fuzzy
+#~ msgid "Croatian"
+#~ msgstr "Razgovor"
+
+#, fuzzy
+#~ msgid "Latvian"
+#~ msgstr "Napuštam:"
+
+#~ msgid "View Lo_g"
+#~ msgstr "Pogledaj dne_vnik"
+
+#~ msgid "Gossip - Group Chat"
+#~ msgstr "Čavrljanje - Grupno Čavrljanje"
+
+#, fuzzy
+#~ msgid "Gossip - Add contact"
+#~ msgstr "Čavrljanje - Povezati se"
+
+#, fuzzy
+#~ msgid "Gossip - Contact Information"
+#~ msgstr "Po_daci za kontakt"
+
+#, fuzzy
+#~ msgid "Gossip - Edit Groups"
+#~ msgstr "Čavrljanje - Uredi Grupno Čavrljanje"
+
+#, fuzzy
+#~ msgid "Gossip - New Account"
+#~ msgstr "Čavrljanje - Uredi Nalog"
+
+#, fuzzy
+#~ msgid "Gossip - New Message"
+#~ msgstr "Čavrljanje - Pošalji poruku"
+
+#, fuzzy
+#~ msgid "Gossip - Personal Details"
+#~ msgstr "Čavrljanje - Povezati se"
+
+#, fuzzy
+#~ msgid "Gossip - Preferences"
+#~ msgstr "Postavke"
+
+#, fuzzy
+#~ msgid "Gossip - Status Message"
+#~ msgstr "Čavrljanje - Pošalji poruku"
+
+#~ msgid "What request message do you want to send to %s?"
+#~ msgstr "Koju poruku sa zahtevom želite da pošaljete %s?"
+
+#~ msgid "Make sure that your account information is correct."
+#~ msgstr "Proverite da li su podaci o nalogu ispravni."
+
+#~ msgid "%s wants to be notified of your presence."
+#~ msgstr "%s želi obaveštenja o vašem prisustvu."
+
+#~ msgid "You were disconnected from the server. Do you want to reconnect?"
+#~ msgstr "Vi ste razvezani sa servera. Želiteli da se ponovo povežete?"
+
+#, fuzzy
+#~ msgid ""
+#~ "Make sure that your account information is correct. The server may also "
+#~ "currently be unavailable."
+#~ msgstr ""
+#~ "Proverite da li su podaci o nalogu ispravni, kao što je korisničko ime i "
+#~ "lozinka.."
+
+#~ msgid "Edit List..."
+#~ msgstr "Uredi spisak..."
+
+#~ msgid "An error occurred when chatting with %s."
+#~ msgstr "Dogodila se greška prilikom čavrljanje sa %s."
+
+#~ msgid "Details:"
+#~ msgstr "Detalji:"
+
+#~ msgid "An error occurred when chatting in the group chat %s."
+#~ msgstr "Dogodila se greška prilikom čavrljanje u grupi %s."
+
+#~ msgid "Unable to enter the group chat %s."
+#~ msgstr "Nije moguće uneti grupu grupu za čavrljanje %s."
+
+#~ msgid "Gossip will now try to use your account:"
+#~ msgstr "Čavrljanje će sada probati da koristi vaš nalog:"
+
+#~ msgid "Gossip will now try to register the account:"
+#~ msgstr "Čavrljanje će sada probati da registruje vaš nalog:"
+
+#~ msgid "*"
+#~ msgstr "*"
+
+#~ msgid "From:"
+#~ msgstr "Od:"
+
+#~ msgid "Gossip - Received Message"
+#~ msgstr "Čavrljanje - Primi poruku"
+
+#~ msgid "In reply to:"
+#~ msgstr "Kao odgovor na:"
+
+#~ msgid "To:"
+#~ msgstr "Kome:"
+
+#~ msgid "_Reply..."
+#~ msgstr "Odgo_vori..."
+
+#~ msgid "_Send"
+#~ msgstr "_Pošalji"
+
+#~ msgid "C_onnect"
+#~ msgstr "P_oveži se"
+
+#~ msgid "_Resource:"
+#~ msgstr "_Resurs:"
+
+#~ msgid " "
+#~ msgstr " "
+
+#~ msgid "<b>Available chat rooms</b>"
+#~ msgstr "<b>Dostupne sobe za čavrljanje</b>"
+
+#~ msgid "<b>Chat room information</b>"
+#~ msgstr "<b>Informacija sobe za čavrljanje</b>"
+
+#~ msgid "Gossip - Join Group Chat"
+#~ msgstr "Čavrljanje - Pridruži se Grupnom Čavrljanju"
+
+#~ msgid "N_ickname:"
+#~ msgstr "Nad_imak:"
+
+#~ msgid ""
+#~ "Pick a favorite, or enter nickname, server name, and the name of the chat "
+#~ "room to enter."
+#~ msgstr ""
+#~ "Da uđete, izaberite omiljeno ili unesite nadimak, ime servera i ime od "
+#~ "sobe za čavrljanje."
+
+#~ msgid "R_emove"
+#~ msgstr "_Ukloni"
+
+#~ msgid "_Add"
+#~ msgstr "_Dodaj"
+
+#~ msgid " "
+#~ msgstr " "
+
+#~ msgid "<b>Preset status messages</b>"
+#~ msgstr "<b>Pretpostavljene poruke stanja</b>"
+
+#~ msgid "<i>Information not available</i>"
+#~ msgstr "<i>Informacija nije dostupana</i>"
+
+#~ msgid "Choose a Server"
+#~ msgstr "Izaberi server"
+
+#~ msgid "Choose from list:"
+#~ msgstr "Odaberite iz spiska:"
+
+#~ msgid "Information about ..."
+#~ msgstr "Informacije o..."
+
+#~ msgid "Jabber.com"
+#~ msgstr "Jabber.com"
+
+#~ msgid "Jabber.org"
+#~ msgstr "Jabber.org"
+
+#~ msgid "On what server do you have a Jabber account?"
+#~ msgstr "Na kom serveru imate DŽaber nalog?"
+
+#~ msgid "Sound"
+#~ msgstr "Zvuk"
+
+#~ msgid "Status Message"
+#~ msgstr "Poruka o stanju"
+
+#~ msgid "Use a different server"
+#~ msgstr "Koristi drugi server"
+
+#~ msgid "What request message do you want to send to ...?"
+#~ msgstr "Koju poruku sa zahtevom želite da pošaljete ...?"
+
+#, fuzzy
+#~ msgid "About Gossip"
+#~ msgstr "Čavrljanje"
+
+# Note to translators: put here your name (and address) so it
+# * will shop up in the "about" box
+#, fuzzy
+#~ msgid "translator_credits_old"
+#~ msgstr "Dejan Matijević <dejan@ns.sympatico.ca>"
+
+#~ msgid "Gossip Website"
+#~ msgstr "Veb stranica Čavrljanja"
+
+#~ msgid "Unable to Authenticate"
+#~ msgstr "Ne mogu da se identifikujem"
+
+#~ msgid "Gossip, Jabber Client"
+#~ msgstr "Čavrljanje, DŽaber Klijent"
+
+#~ msgid "About to leave..."
+#~ msgstr "Upravo odlazim..."
+
+#~ msgid "Autoaway message"
+#~ msgstr "Poruka za samoodsustvo"
+
+#~ msgid "Away messages"
+#~ msgstr "Poruke za odsustvo"
+
+#~ msgid "Busy messages"
+#~ msgstr "Poruke za zauzeće"
+
+#~ msgid "Message to show before going away"
+#~ msgstr "Poruka koja se prikazuje pre odlaska"
+
+#~ msgid "Not at the computer"
+#~ msgstr "Nisam za računarom"
+
+#~ msgid "Just about to leave..."
+#~ msgstr "Upravo odlazim..."
+
+#~ msgid "Custom Busy Message..."
+#~ msgstr "Posebna poruka za zauzeće..."
+
+#~ msgid "Leave..."
+#~ msgstr "Napusti..."
+
+#~ msgid "New Busy Message"
+#~ msgstr "Nova poruka za zauzeće"
+
+#~ msgid "New Away Message"
+#~ msgstr "Nova poruka za odsustvo"
+
+#~ msgid "Working"
+#~ msgstr "Radim"
+
+#~ msgid "Eating"
+#~ msgstr "Jedem"
+
+#~ msgid "Sleeping"
+#~ msgstr "Spavam"
+
+#~ msgid "Enter the new message:"
+#~ msgstr "Unesite novu poruku:"
+
+#~ msgid "Leave"
+#~ msgstr "Napusti"
+
+#~ msgid ""
+#~ "Note: contacts can belong to multiple groups or they can be in no group "
+#~ "at all."
+#~ msgstr ""
+#~ "Pažnja: kontakti mogu da pripadaju većem broju grupa ili nijednoj grupi."
+
+#~ msgid "Preset messages for quickly setting away status."
+#~ msgstr "Postavljanje poruke za brzo odlaženje na odsustvo."
+
+#~ msgid "Preset messages for quickly setting busy status."
+#~ msgstr "Postavljanje poruke za brzo podešavanje zauzeća."
+
+#~ msgid "Reason for being busy:"
+#~ msgstr "Razlog zauzeća:"
+
+#~ msgid "Reason for leaving:"
+#~ msgstr "Razlog odlaska:"
+
+#~ msgid "As _Windows"
+#~ msgstr "Kao _prozori"
+
+#~ msgid "As a _List"
+#~ msgstr "Kao _spisak"
+
+#~ msgid "_Go"
+#~ msgstr "_Idi"
+
+#~ msgid "Open conversations in single window with list view"
+#~ msgstr "Otvori razgovore u jednom prozoru prikazujući ih u spisku"
+
+#~ msgid "[Eating,Sleeping]"
+#~ msgstr "[Jedem,spavam]"
+
+#~ msgid "[Working]"
+#~ msgstr "[Radim]"
+
+#~ msgid "Add"
+#~ msgstr "Dodaj"
+
+#~ msgid "Open conversations in a single window with _list view"
+#~ msgstr "Otvori razgovore u jednom prozoru kao sp_isak"
+
+#~ msgid "<b>Away messages</b>"
+#~ msgstr "<b>Poruke za odsustvo</b>"
+
+#~ msgid "Available:"
+#~ msgstr "Dostupan:"
+
+#~ msgid "Away:"
+#~ msgstr "Odsutan:"
+
+#~ msgid "Messages"
+#~ msgstr "Poruke"
+
+#~ msgid ""
+#~ "These messages are used to describe your status when you're about to "
+#~ "leave and when you're away."
+#~ msgstr ""
+#~ "Ove poruke se koriste za opisivanje vašeg stanja kada upravo odlazite ili "
+#~ "ste odsutni."
+
+#~ msgid ""
+#~ "These messages are used to describe your status when you're available, "
+#~ "about to leave, or automatically set away due to inactivity."
+#~ msgstr ""
+#~ "Ove poruke se koriste za opisivanje vašeg stanja kada ste dostupni, "
+#~ "upravo odlazite ili ste odsutni usled neaktivnosti."
+
+#~ msgid "Use com_pact conversation style"
+#~ msgstr "Koristi stil sa_žetog razgovora"
+
+#~ msgid "Use sounds to _notify when new messages arrive"
+#~ msgstr "Koristi zvuk za _obaveštenje kada nova poruka stigne"
+
+#~ msgid "Timestamp all messages"
+#~ msgstr "Označi vreme za sve poruke"
+
+#~ msgid "Whether or not to timestamp all messages in conversations."
+#~ msgstr "Da li da doda oznake vremena na sve poruke u razgovorima."
+
+#~ msgid "_Timestamp all messages"
+#~ msgstr "Dodaj oznaku _vremenskog trenutka na sve poruke"
+
+#~ msgid "Custom Away Message..."
+#~ msgstr "Posebna poruka za odsustvo..."
+
+# Translators: See comment for "%sChat - %s".
+#~ msgid "%sChat"
+#~ msgstr "%sČavrljanje"
+
+# The extra space is to differentiate the string from Offline as status. It
+# * might need a different translation, at least in Swedish.
+#~ msgid "Offline "
+#~ msgstr "Nepovezan"
+
+#~ msgid "Others"
+#~ msgstr "Drugi"
+
+#~ msgid "Get _Info"
+#~ msgstr "_Podaci"
+
+#~ msgid "Use ta_bs instead of windows for conversations"
+#~ msgstr "Koristi _listove umesto prozora za razgovore"
+
+#~ msgid "I'm here"
+#~ msgstr "Ovde sam"
+
+#~ msgid "I'm not here right now"
+#~ msgstr "Trenutno nisam ovde"
+
+#~ msgid "Auto away enabled"
+#~ msgstr "Automatski odsutan uključeno"
+
+#~ msgid "Extended autoaway time"
+#~ msgstr "Produženo vreme za automatski odsutan"
+
+#~ msgid ""
+#~ "The number of minutes of idle time before automatically going into \"away"
+#~ "\" mode."
+#~ msgstr ""
+#~ "Broj minuta od neaktivnog vremena pre nego što automatski ode u mod "
+#~ "\"odsutan\""
+
+#~ msgid ""
+#~ "The number of minutes of idle time before automatically going into "
+#~ "\"extended away\" mode."
+#~ msgstr ""
+#~ "Broj minuta od neaktivnog vremena pre nego što automatski ode u mod "
+#~ "\"dugo odsutan\""
+
+#~ msgid ""
+#~ "Whether or not to go into \"away\" mode automatically when a certain time "
+#~ "of idling has passed."
+#~ msgstr ""
+#~ "Da li da ode u mod \"odsutan\" automatski kada određeno vreme "
+#~ "neaktivnosti prođe."
+
+#~ msgid "_Busy"
+#~ msgstr "_Zauzet"
+
+#~ msgid "Present"
+#~ msgstr "Prisutni"
+
+#~ msgid "Timestamp messages"
+#~ msgstr "Prikaži oznaku vremenskog trenutka na porukama"
+
+#~ msgid "Free to chat"
+#~ msgstr "Slobodan za ćaskanje"
+
+#~ msgid "Extended away"
+#~ msgstr "Dugo odsutan"
+
+#~ msgid "_Edit Account..."
+#~ msgstr "_Uređivanje naloga..."
+
+#~ msgid ""
+#~ "<b>Welcome to Gossip</b>\n"
+#~ "\n"
+#~ "Gossip is a modern client for the Jabber Instant Message system.\n"
+#~ "\n"
+#~ "This assistant will help you configure Gossip and connect you to your "
+#~ "favorite Jabber server."
+#~ msgstr ""
+#~ "<b>Dobrodošli u Čavrljanje</b>\n"
+#~ "\n"
+#~ "Čavrljanje je moderan klijent za DŽaber Trenutne Poruke.\n"
+#~ "\n"
+#~ "Ovaj pomoćnik će vam pomoći da podesite Čavrljanje i konektujete se na "
+#~ "vaš omiljen DŽaber server."
+
+#~ msgid "<b>Additional information</b>"
+#~ msgstr "<b>Dodatne informacije</b>"
+
+#~ msgid "<b>Address</b>"
+#~ msgstr "<b>Adresa</b>"
+
+#~ msgid "<b>Auto away</b>"
+#~ msgstr "<b>Automatski odsutan</b>"
+
+#~ msgid "Automatically enter away mode during inactivity"
+#~ msgstr "Automatski uđi u mod odsutnosti za vreme neaktivnosti"
+
+#~ msgid "Enter away mode after"
+#~ msgstr "Uđi u mod odsutnosti posle"
+
+#~ msgid "I'm away eating dinner, bbiab..."
+#~ msgstr "Ja sam odsutan dok večeram, vraćam se za..."
+
+#~ msgid "Priority:"
+#~ msgstr "Važnost:"
+
+#~ msgid "Set the status you want to use"
+#~ msgstr "Podesite stanje koje želite da koristite"
+
+#~ msgid "minutes"
+#~ msgstr "minuta"
+
+#~ msgid "<b>Jabber ID:</b>"
+#~ msgstr "<b>DŽaber ID:</b>"
+
+#~ msgid "<b>Setup Finished</b>"
+#~ msgstr "<b>Postavka je završena</b>"
+
+#~ msgid ""
+#~ "This user wants to subscribe to your presence.\n"
+#~ "Do you approve?"
+#~ msgstr ""
+#~ "Ovaj korisnik je poslao zahtev da vidi vašu prisutnost.\n"
+#~ "Da li odobravate?"
+
+#~ msgid "_Approve"
+#~ msgstr "Odo_bri"
+
+#~ msgid "_Defer"
+#~ msgstr "_Odbij"
+
+#~ msgid "Default Account"
+#~ msgstr "Podrazumevani Nalog"
+
+#~ msgid "Could not open the address \"%s\": %s"
+#~ msgstr "Ne može da pristupi adresi „%s“: %s"
+
+#~ msgid "<b>Available accounts</b>"
+#~ msgstr "<b>Dostupni nalozi</b>"
+
+#~ msgid "<b>What account do you want to use for this connection?</b>"
+#~ msgstr "<b>Koji nalog želite da koristite za ovu vezu?</b>"
+
+#~ msgid "Use SS_L"
+#~ msgstr "Koristi SSL"
+
+#~ msgid "_User:"
+#~ msgstr "Korisnik:"
+
+#~ msgid "What request message do you want to send to <b>micke</b>?"
+#~ msgstr "Koji zahtev želite da pošaljete <b>Miljenku</b>?"
diff --git a/gnome-2-22/po/sv.po b/gnome-2-22/po/sv.po
new file mode 100644
index 000000000..1e3bf0921
--- /dev/null
+++ b/gnome-2-22/po/sv.po
@@ -0,0 +1,2790 @@
+# Swedish messages for Empathy.
+# Copyright (C) 2002-2008 Free Software Foundation, Inc.
+# Daniel Nylander <po@danielnylander.se>, 2006, 2007, 2008.
+# Richard Hult <richard@imendio.com>, 2002, 2003.
+# Christian Rose <menthos@menthos.com>, 2003, 2004.
+#
+# Snälla, ta *INTE* bort de extra #~-meddelandena på slutet.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: empathy\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-07 20:38+0100\n"
+"PO-Revision-Date: 2008-03-07 20:40+0100\n"
+"Last-Translator: Daniel Nylander <po@danielnylander.se>\n"
+"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: ../data/empathy.desktop.in.in.h:1
+msgid "Empathy Instant Messenger"
+msgstr "Snabbmeddelandeklienten Empathy"
+
+#: ../data/empathy.desktop.in.in.h:2
+msgid "Send and receive instant messages"
+msgstr "Skicka och ta emot snabbmeddelanden"
+
+#: ../data/empathy.schemas.in.h:1
+msgid "Always open a separate chat window for new chats."
+msgstr "Öppna alltid ett separat fönster för nya chattar."
+
+#: ../data/empathy.schemas.in.h:2
+msgid "Character to add after nickname when using nick completion (tab) in group chat."
+msgstr "Tecken att lägga till efter smeknamn när smeknamnskomplettering (tab) används i gruppchatt."
+
+#: ../data/empathy.schemas.in.h:3
+msgid "Chat window theme"
+msgstr "Chattfönstertema"
+
+#: ../data/empathy.schemas.in.h:4
+msgid "Checks if Empathy should autoconnect on startup"
+msgstr "Kontrollerar om Empathy ska ansluta automatiskt vid uppstart"
+
+#: ../data/empathy.schemas.in.h:5
+msgid "Checks if NetworkManager should be used"
+msgstr "Kontrollerar om NetworkManager ska användas"
+
+#: ../data/empathy.schemas.in.h:6
+msgid "Checks if Salut account is created"
+msgstr "Kontrollerar om Salut-konto har skapats"
+
+#: ../data/empathy.schemas.in.h:7
+msgid "Comma separated list of spell checker languages to use (e.g. en, fr, nl)."
+msgstr "Kommaseparerad lista av språk att använda för stavningskontroll (tex en, fr, nl)."
+
+#: ../data/empathy.schemas.in.h:8
+msgid "Compact contact list"
+msgstr "Kompakt kontaktlista"
+
+#: ../data/empathy.schemas.in.h:9
+msgid "Contact list sort criterium"
+msgstr "Sorteringskriteria för kontaktlista"
+
+#: ../data/empathy.schemas.in.h:10
+msgid "Default directory to select an avatar image from"
+msgstr "Standardkatalog att välja avatarbild från"
+
+#: ../data/empathy.schemas.in.h:11
+msgid "Enable popup when contact is available"
+msgstr "Aktivera popup när kontakt är tillgänglig"
+
+#: ../data/empathy.schemas.in.h:12
+msgid "Enable sound when away"
+msgstr "Aktivera ljud under frånvaro"
+
+#: ../data/empathy.schemas.in.h:13
+msgid "Enable sound when busy"
+msgstr "Aktivera ljud under upptagetläge"
+
+#: ../data/empathy.schemas.in.h:14
+msgid "Enable spell checker"
+msgstr "Aktivera stavningskontroll"
+
+# Vi översätter "hide" med "dölj" i GNOME. Gömmer gör man något för att det
+# inte ska hittas, döljer gör man för att det inte ska synas.
+#: ../data/empathy.schemas.in.h:15
+msgid "Hide main window"
+msgstr "Dölj huvudfönstret"
+
+# Vi översätter "hide" med "dölj" i GNOME. Gömmer gör man något för att det
+# inte ska hittas, döljer gör man för att det inte ska synas.
+#: ../data/empathy.schemas.in.h:16
+msgid "Hide the main window."
+msgstr "Dölj huvudfönstret."
+
+#: ../data/empathy.schemas.in.h:17
+msgid "Nick completed character"
+msgstr "Tecken för smeknamnskomplettering"
+
+#: ../data/empathy.schemas.in.h:18
+msgid "Open new chats in separate windows"
+msgstr "Öppna nya chattar i separata fönster"
+
+#: ../data/empathy.schemas.in.h:19
+msgid "Show avatars"
+msgstr "Visa avatarer"
+
+#: ../data/empathy.schemas.in.h:20
+msgid "Show hint about closing the main window"
+msgstr "Visa tips om att stänga huvudfönstret"
+
+#: ../data/empathy.schemas.in.h:21
+msgid "Show offline contacts"
+msgstr "Visa frånkopplade kontakter"
+
+#: ../data/empathy.schemas.in.h:22
+msgid "Spell checking languages"
+msgstr "Rättstavningsspråk"
+
+#: ../data/empathy.schemas.in.h:23
+msgid "The last directory that an avatar image was chosen from."
+msgstr "Den senaste katalogen som en avatarbild valdes från."
+
+#: ../data/empathy.schemas.in.h:24
+msgid "The theme that is used to display the conversation in chat windows."
+msgstr "Det tema som används för att visa samtal i chattfönster."
+
+#: ../data/empathy.schemas.in.h:25
+msgid "Use graphical smileys"
+msgstr "Använd grafiska smilisar"
+
+#: ../data/empathy.schemas.in.h:26
+msgid "Use notification sounds"
+msgstr "Använd notifieringsljud"
+
+#: ../data/empathy.schemas.in.h:27
+msgid "Use theme for chat rooms"
+msgstr "Använd tema för chattrum"
+
+#: ../data/empathy.schemas.in.h:28
+msgid "Whether or not Empathy should automatically login to your accounts on startup."
+msgstr "Huruvida Empathy automatiskt ska logga in med dina konton vid uppstart eller inte."
+
+#: ../data/empathy.schemas.in.h:29
+msgid "Whether or not the Salut account has been created on the first empathy run."
+msgstr "Huruvida Salut-kontot har skapats eller inte vid första starten av empathy."
+
+#: ../data/empathy.schemas.in.h:30
+msgid "Whether or not the network manager should be used to automatically disconnect/reconnect."
+msgstr "Huruvida nätverkshanteraren ska användas för att automatiskt koppla från/återansluta eller inte."
+
+#: ../data/empathy.schemas.in.h:31
+msgid "Whether or not to check words typed against the languages you want to check with."
+msgstr "Huruvida ord som skrivs ska kontrolleras mot språken du valt."
+
+#: ../data/empathy.schemas.in.h:32
+msgid "Whether or not to convert smileys into graphical images in conversations."
+msgstr "Huruvida smilisar ska omvandlas till grafiska bilder eller inte i samtal."
+
+#: ../data/empathy.schemas.in.h:33
+msgid "Whether or not to play a sound when messages arrive."
+msgstr "Huruvida ljud ska spelas eller inte när meddelanden kommer."
+
+#: ../data/empathy.schemas.in.h:34
+msgid "Whether or not to play sounds when away."
+msgstr "Huruvida ljud ska spelas eller inte under frånvaro."
+
+#: ../data/empathy.schemas.in.h:35
+msgid "Whether or not to play sounds when busy."
+msgstr "Huruvida ljud ska spelas eller inte under upptagetläge."
+
+#: ../data/empathy.schemas.in.h:36
+msgid "Whether or not to show a popup when a contact becomes available."
+msgstr "Huruvida en popup ska visas eller inte när en kontakt blir tillgänglig."
+
+#: ../data/empathy.schemas.in.h:37
+msgid "Whether or not to show avatars for contacts in the contact list and chat windows."
+msgstr "Huruvida avatarer ska visas i kontaktlistan och chattfönster eller inte."
+
+#: ../data/empathy.schemas.in.h:38
+msgid "Whether or not to show contacts that are offline in the contact list."
+msgstr "Huruvida frånkopplade kontakter ska visas i kontaktlistan eller inte."
+
+#: ../data/empathy.schemas.in.h:39
+msgid "Whether or not to show the message dialog about closing the main window with the 'x' button in the title bar."
+msgstr "Huruvida meddelandedialogen om att stänga huvudfönstret ska visas eller inte när man klickar på \"x\"-knappen i titelraden."
+
+#: ../data/empathy.schemas.in.h:40
+msgid "Whether to show the contact list in compact mode or not."
+msgstr "Huruvida kontaktlistan ska visas i kompakt läge eller inte."
+
+#: ../data/empathy.schemas.in.h:41
+msgid "Whether to use the theme for chat rooms or not."
+msgstr "Huruvida tema ska användas för chattrum eller inte."
+
+#: ../data/empathy.schemas.in.h:42
+msgid "Which criterium to use when sorting the contact list. Default is to use sort by the contact's name with the value \"name\". A value of \"state\" will sort the contact list by state."
+msgstr "Vilket kriteria som ska användas när kontaktlistan sorteras. Standard är att sortera efter kontaktens namn med värdet \"name\". Värdet \"state\" kommer att sortera kontaktlistan efter tillstånd."
+
+#: ../libempathy/empathy-tp-contact-list.c:724
+#: ../src/empathy.c:149
+msgid "People nearby"
+msgstr "Personer i närheten"
+
+#: ../libempathy/empathy-utils.c:541
+msgid "Available"
+msgstr "Tillgänglig"
+
+#: ../libempathy/empathy-utils.c:543
+msgid "Busy"
+msgstr "Upptagen"
+
+#: ../libempathy/empathy-utils.c:546
+msgid "Away"
+msgstr "Frånvarande"
+
+#: ../libempathy/empathy-utils.c:548
+msgid "Hidden"
+msgstr "Dold"
+
+#: ../libempathy/empathy-utils.c:551
+msgid "Offline"
+msgstr "Frånkopplad"
+
+#: ../libempathy-gtk/empathy-about-dialog.c:63
+msgid "Empathy is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version."
+msgstr "Empathy är fri programvara. Du kan distribuera det och/eller modifiera det under villkoren i GNU General Public License, publicerad av Free Software Foundation, antingen version 2 eller (om du så vill) någon senare version."
+
+#: ../libempathy-gtk/empathy-about-dialog.c:67
+msgid "Empathy is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details."
+msgstr "Empathy distribueras i hopp om att det ska vara användbart, men UTAN NÅGON SOM HELST GARANTI, även utan underförstådd garanti om SÄLJBARHET eller LÄMPLIGHET FÖR NÅGOT SPECIELLT ÄNDAMÅL. Se GNU General Public License för ytterligare information."
+
+#: ../libempathy-gtk/empathy-about-dialog.c:71
+msgid "You should have received a copy of the GNU General Public License along with Empathy; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-130159 USA"
+msgstr "Du bör ha fått en kopia av GNU General Public License tillsammans med Empathy. Om inte, skriv till Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-130159 USA"
+
+#: ../libempathy-gtk/empathy-about-dialog.c:99
+msgid "An Instant Messaging client for GNOME"
+msgstr "En snabbmeddelandeklient för GNOME"
+
+#: ../libempathy-gtk/empathy-about-dialog.c:105
+msgid "translator-credits"
+msgstr ""
+"Daniel Nylander\n"
+"Christian Rose\n"
+"Richard Hult\n"
+"\n"
+"Skicka synpunkter på översättningen till\n"
+"tp-sv@listor.tp-sv.se"
+
+#: ../libempathy-gtk/empathy-account-chooser.c:337
+msgid "All"
+msgstr "Alla"
+
+#: ../libempathy-gtk/empathy-account-widget.c:276
+#: ../libempathy-gtk/empathy-account-widget.c:321
+#, c-format
+msgid "%s:"
+msgstr "%s:"
+
+#: ../libempathy-gtk/empathy-account-widget-icq.glade.h:1
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:1
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:1
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:1
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:1
+msgid "<b>Advanced</b>"
+msgstr "<b>Avancerat</b>"
+
+#: ../libempathy-gtk/empathy-account-widget-icq.glade.h:2
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:3
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:2
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:2
+msgid "Forget password and clear the entry."
+msgstr "Glöm lösenordet och töm inmatningen."
+
+#: ../libempathy-gtk/empathy-account-widget-icq.glade.h:3
+msgid "ICQ _UIN:"
+msgstr "ICQ _UIN:"
+
+#: ../libempathy-gtk/empathy-account-widget-icq.glade.h:4
+msgid "ICQ account settings"
+msgstr "Inställningar för ICQ-konto"
+
+#: ../libempathy-gtk/empathy-account-widget-icq.glade.h:5
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:5
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:4
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:5
+msgid "Pass_word:"
+msgstr "L_ösenord:"
+
+#: ../libempathy-gtk/empathy-account-widget-icq.glade.h:6
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:8
+msgid "_Charset:"
+msgstr "Tec_kenuppsättning:"
+
+#: ../libempathy-gtk/empathy-account-widget-icq.glade.h:7
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:11
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:5
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:10
+msgid "_Port:"
+msgstr "_Port:"
+
+#: ../libempathy-gtk/empathy-account-widget-icq.glade.h:8
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:12
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:6
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:12
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:10
+msgid "_Server:"
+msgstr "_Server:"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.c:246
+msgid "New Network"
+msgstr "Nytt nätverk"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:1
+msgid "<b>Network</b>"
+msgstr "<b>Nätverk</b>"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:2
+msgid "<b>Servers</b>"
+msgstr "<b>Servrar</b>"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:3
+msgid "Charset:"
+msgstr "Teckenuppsättning:"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:4
+msgid "Create a new IRC network"
+msgstr "Skapa ett nytt irc-nätverk"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:5
+msgid "Edit the selected IRC network"
+msgstr "Redigera markerat irc-nätverk"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:6
+msgid "Network"
+msgstr "Nätverk"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:7
+msgid "Network:"
+msgstr "Nätverk:"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:8
+msgid "Nickname:"
+msgstr "Smeknamn:"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:9
+msgid "Password:"
+msgstr "Lösenord:"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:10
+msgid "Quit message:"
+msgstr "Avslutningsmeddelande:"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:11
+msgid "Real name:"
+msgstr "Verkligt namn:"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:12
+msgid "Remove the selected IRC network"
+msgstr "Ta bort markerat irc-nätverk"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:13
+msgid "irc account settings"
+msgstr "inställningar för irc-konto"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:2
+msgid "<b>Override server settings</b>"
+msgstr "<b>Åsidosätt serverinställningar</b>"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:4
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:3
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:4
+msgid "Login I_D:"
+msgstr "Inloggningsid:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:6
+msgid "Pri_ority:"
+msgstr "Pri_oritet:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:7
+msgid "Reso_urce:"
+msgstr "_Resurs:"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:8
+msgid "Use old SS_L"
+msgstr "Använd gammal SS_L"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:9
+msgid "_Encryption required (TLS/SSL)"
+msgstr "_Kryptering krävs (TLS/SSL)"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:10
+msgid "_Ignore SSL certificate errors"
+msgstr "_Ignorera SSL-certifikatfel"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:13
+msgid "jabber account settings"
+msgstr "inställningar för jabberkonto"
+
+#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:7
+msgid "msn account settings"
+msgstr "inställningar för msn-konto"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:2
+msgid "_E-mail:"
+msgstr "_E-post:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:3
+msgid "_First Name: "
+msgstr "_Förnamn:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:4
+msgid "_Jabber ID:"
+msgstr "_Jabber-id:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:5
+msgid "_Last Name:"
+msgstr "_Efternamn:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:6
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:8
+msgid "_Nickname:"
+msgstr "Smek_namn:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:7
+msgid "_Published Name:"
+msgstr "_Publikt namn:"
+
+#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:8
+msgid "salut account settings"
+msgstr "inställningar för salut-konto"
+
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:3
+msgid "J_apan server:"
+msgstr "J_apansk server:"
+
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:6
+msgid "Use _Yahoo Japan"
+msgstr "Använd _Yahoo Japan"
+
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:7
+msgid "Yahoo! account settings"
+msgstr "Inställningar för Yahoo!-konto"
+
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:9
+msgid "_Ignore conference and chatroom invitations"
+msgstr "_Ignorera inbjudningar till konferenser och chattrum"
+
+#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:11
+msgid "_Room List locale:"
+msgstr "Lokalanpassning för _rumslista:"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:225
+msgid "To add a new account, you can click on the 'Add' button and a new entry will be created for you to start configuring."
+msgstr "För att lägga till ett nytt konto, klicka på knappen \"Lägg till\" och en ny post kommer att skapas för dig att börja konfigurera."
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:229
+msgid "To add a new account, you first have to install a backend for each protocol you want to use."
+msgstr "För att lägga till ett nytt konto måste du först installera en bakände för varje protokoll som du vill använda."
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:236
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:2
+msgid "<b>No Account Selected</b>"
+msgstr "<b>Inget konto valt</b>"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:237
+msgid ""
+"\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want to configure in the list on the left."
+msgstr ""
+"\n"
+"\n"
+"Om du inte vill lägga till ett konto, kan du helt enkelt klicka på kontot, i listan till vänster, som du vill konfigurera."
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:243
+msgid "<b>No Accounts Configured</b>"
+msgstr "<b>Inga konton konfigurerade</b>"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:411
+msgid "Enabled"
+msgstr "Aktiverad"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:421
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:4
+msgid "Accounts"
+msgstr "Konton"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:904
+#, c-format
+msgid ""
+"You are about to remove your %s account!\n"
+"Are you sure you want to proceed?"
+msgstr ""
+"Du håller på att ta bort kontot %s!\n"
+"Är du säker att du vill fortsätta?"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.c:910
+msgid ""
+"Any associated conversations and chat rooms will NOT be removed if you decide to proceed.\n"
+"\n"
+"Should you decide to add the account back at a later time, they will still be available."
+msgstr ""
+"Eventuella samtal och chattrum kommer inte tas bort.\n"
+"\n"
+"Om du senare lägger till kontot igen, kommer dessa fortfarande vara tillgängliga."
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:1
+msgid "<b>New Account</b>"
+msgstr "<b>Nytt konto</b>"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:3
+msgid "<b>Settings</b>"
+msgstr "<b>Inställningar</b>"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:5
+msgid "Cr_eate"
+msgstr "Ska_pa"
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:6
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will be created for you to started configuring.\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want to configure in the list on the left."
+msgstr ""
+"För att lägga till ett nytt konto kan du klicka på knappen \"Lägg till\" och en ny post kommer att skapas för dig att börja konfigurera.\n"
+"\n"
+"Om du inte vill lägga till ett konto, kan du helt enkelt klicka på kontot, i listan till vänster, som du vill konfigurera."
+
+#: ../libempathy-gtk/empathy-accounts-dialog.glade.h:9
+msgid "Type:"
+msgstr "Typ:"
+
+#: ../libempathy-gtk/empathy-avatar-chooser.c:449
+msgid "Select Your Avatar Image"
+msgstr "Välj din avatarbild"
+
+#: ../libempathy-gtk/empathy-avatar-chooser.c:452
+msgid "No Image"
+msgstr "Ingen bild"
+
+#: ../libempathy-gtk/empathy-avatar-chooser.c:512
+msgid "Images"
+msgstr "Bilder"
+
+#: ../libempathy-gtk/empathy-avatar-chooser.c:516
+msgid "All Files"
+msgstr "Alla filer"
+
+#: ../libempathy-gtk/empathy-avatar-image.c:298
+msgid "Click to enlarge"
+msgstr "Klicka för att förstora"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:1
+msgid "End Call"
+msgstr "Avsluta samtal"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:2
+msgid "Input"
+msgstr "Ingång"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:3
+msgid "Mute"
+msgstr "Tyst"
+
+# Det måste finnas ett bättre ord
+#: ../libempathy-gtk/empathy-call-window.glade.h:4
+msgid "Output"
+msgstr "Utgång"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:5
+msgid "Send Video"
+msgstr "Skicka video"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:6
+msgid "Start Call"
+msgstr "Påbörja samtal"
+
+#: ../libempathy-gtk/empathy-call-window.glade.h:7
+msgid "Volume"
+msgstr "Volym"
+
+#: ../libempathy-gtk/empathy-chat.c:445
+msgid "Disconnected"
+msgstr "Frånkopplad"
+
+#: ../libempathy-gtk/empathy-chat.c:580
+msgid "offline"
+msgstr "frånkopplad"
+
+#: ../libempathy-gtk/empathy-chat.c:583
+msgid "invalid contact"
+msgstr "ogiltig kontakt"
+
+#: ../libempathy-gtk/empathy-chat.c:586
+msgid "permission denied"
+msgstr "åtkomst nekad"
+
+#: ../libempathy-gtk/empathy-chat.c:589
+msgid "too long message"
+msgstr "för långt meddelande"
+
+#: ../libempathy-gtk/empathy-chat.c:592
+msgid "not implemented"
+msgstr "inte implementerat"
+
+#: ../libempathy-gtk/empathy-chat.c:595
+msgid "unknown"
+msgstr "okänt"
+
+#: ../libempathy-gtk/empathy-chat.c:599
+#, c-format
+msgid "Error sending message '%s': %s"
+msgstr "Fel vid sändning av meddelandet \"%s\": %s"
+
+#: ../libempathy-gtk/empathy-chat.c:1056
+msgid "Insert Smiley"
+msgstr "Infoga smilis"
+
+#: ../libempathy-gtk/empathy-chat.c:1103
+msgid "_Check Word Spelling..."
+msgstr "_Kontrollera stavning..."
+
+#: ../libempathy-gtk/empathy-chat.c:1558
+msgid "Connected"
+msgstr "Ansluten"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:1
+msgid "C_lear"
+msgstr "T_öm"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:2
+msgid "Ca_ll"
+msgstr "R_ing"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:3
+msgid "Change _Topic..."
+msgstr "Ändra _ämne..."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:4
+#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:3
+msgid "Chat"
+msgstr "Chatta"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:5
+msgid "Contact Infor_mation"
+msgstr "Kontaktinfor_mation"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:6
+msgid "Cu_t"
+msgstr "Klipp _ut"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:7
+msgid "In_vite..."
+msgstr "_Bjud in..."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:8
+msgid "Insert _Smiley"
+msgstr "Infoga _smilis"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:9
+msgid "Invitation _message:"
+msgstr "Inbjudnings_meddelande:"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:10
+msgid "Invite"
+msgstr "Bjud in"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:11
+#: ../libempathy-gtk/empathy-main-window.glade.h:4
+msgid "Join _New..."
+msgstr "Gå in i _nytt..."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:12
+msgid "Move Tab _Left"
+msgstr "Flytta flik till _vänster"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:13
+msgid "Move Tab _Right"
+msgstr "Flytta flik till _höger"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:14
+msgid "Select who would you like to invite:"
+msgstr "Välj vem du vill bjuda in:"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:15
+msgid "You have been invited to join a chat conference."
+msgstr "Du har blivit inbjuden till en chattkonferens."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:16
+#: ../libempathy-gtk/empathy-main-window.glade.h:9
+msgid "_Add Contact..."
+msgstr "_Lägg till kontakt..."
+
+#: ../libempathy-gtk/empathy-chat.glade.h:17
+msgid "_Add To Favorites"
+msgstr "_Lägg till i favoriter"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:18
+msgid "_Close"
+msgstr "S_täng"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:19
+#: ../libempathy-gtk/empathy-main-window.glade.h:11
+msgid "_Contents"
+msgstr "I_nnehåll"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:20
+msgid "_Conversation"
+msgstr "_Samtal"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:21
+msgid "_Copy"
+msgstr "_Kopiera"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:22
+msgid "_Detach Tab"
+msgstr "_Koppla loss flik"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:23
+#: ../libempathy-gtk/empathy-contact-list-view.c:217
+#: ../libempathy-gtk/empathy-main-window.glade.h:12
+msgid "_Edit"
+msgstr "R_edigera"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:24
+#: ../libempathy-gtk/empathy-main-window.glade.h:13
+msgid "_Help"
+msgstr "_Hjälp"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:25
+msgid "_Next Tab"
+msgstr "_Nästa flik"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:26
+msgid "_Paste"
+msgstr "Klistra _in"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:27
+msgid "_Previous Tab"
+msgstr "_Föregående flik"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:28
+#: ../libempathy-gtk/empathy-main-window.glade.h:18
+msgid "_Room"
+msgstr "_Rum"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:29
+msgid "_Show Contacts"
+msgstr "_Visa kontakter"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:30
+msgid "_Tabs"
+msgstr "_Flikar"
+
+#: ../libempathy-gtk/empathy-chat.glade.h:31
+#: ../libempathy-gtk/empathy-contact-list-view.c:233
+#: ../libempathy-gtk/empathy-main-window.glade.h:19
+msgid "_View Previous Conversations"
+msgstr "_Visa tidigare samtal"
+
+#: ../libempathy-gtk/empathy-chat-view.c:441
+msgid "_Copy Link Address"
+msgstr "_Kopiera länkadress"
+
+#: ../libempathy-gtk/empathy-chat-view.c:449
+msgid "_Open Link"
+msgstr "_Öppna länk"
+
+#: ../libempathy-gtk/empathy-chat-window.c:699
+#, c-format
+msgid "Conversations (%d)"
+msgstr "Samtal (%d)"
+
+#: ../libempathy-gtk/empathy-chat-window.c:1299
+msgid "Typing a message."
+msgstr "Skriver ett meddelande."
+
+#: ../libempathy-gtk/empathy-chatrooms-window.c:258
+msgid "Name"
+msgstr "Namn"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.c:276
+msgid "Room"
+msgstr "Rum"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.c:285
+msgid "Auto Connect"
+msgstr "Anslut automatiskt"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:1
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:5
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:1
+#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:1
+msgid "Account:"
+msgstr "Konto:"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:2
+msgid "Edit Favorite Room"
+msgstr "Redigera favoritrum"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:3
+msgid "Join room on start_up"
+msgstr "Gå in i rummet vid uppstart"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:4
+msgid "Join this chat room when Empathy starts and you are connected"
+msgstr "Gå in i detta chattrum när Empathy startar och du är ansluten"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:5
+msgid "Manage Favorite Rooms"
+msgstr "Hantera favoritrum"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:6
+msgid "N_ame:"
+msgstr "N_amn:"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:7
+msgid "S_erver:"
+msgstr "S_erver:"
+
+#: ../libempathy-gtk/empathy-chatrooms-window.glade.h:9
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:9
+msgid "_Room:"
+msgstr "_Rum:"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:176
+msgid "Personal Information"
+msgstr "Personlig information"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:179
+msgid "Edit Contact Information"
+msgstr "Redigera kontaktinformation"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:182
+msgid "Contact Information"
+msgstr "Kontaktinformation"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:277
+msgid "I would like to add you to my contact list."
+msgstr "Jag vill lägga till dig i min kontaktlista."
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:301
+msgid "New Contact"
+msgstr "Ny kontakt"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.glade.h:1
+msgid "Decide _Later"
+msgstr "Bestäm _senare"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.glade.h:2
+msgid "Subscription Request"
+msgstr "Prenumerationsförfrågan"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:197
+msgid "_Contact"
+msgstr "_Kontakt"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:201
+msgid "_Group"
+msgstr "_Grupp"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:205
+#: ../libempathy-gtk/empathy-main-window.glade.h:10
+msgid "_Chat"
+msgstr "_Chatt"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:205
+msgid "Chat with contact"
+msgstr "Chatta med kontakten"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:209
+msgid "Infor_mation"
+msgstr "Infor_mation"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:209
+msgid "View contact information"
+msgstr "Visa kontaktinformation"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:213
+msgid "Re_name"
+msgstr "Byt _namn"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:213
+msgid "Rename"
+msgstr "Byt namn"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:217
+msgid "Edit the groups and name for this contact"
+msgstr "Redigera grupper och namn för kontakten"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:221
+msgid "_Remove"
+msgstr "_Ta bort"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:221
+msgid "Remove contact"
+msgstr "Ta bort kontakt"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:225
+msgid "_Invite to Chat Room"
+msgstr "_Bjud in till chattrum"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:225
+msgid "Invite to a currently open chat room"
+msgstr "Bjud in till ett för tillfället öppet chattrum"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:229
+msgid "_Send File..."
+msgstr "_Skicka fil..."
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:229
+msgid "Send a file"
+msgstr "Skicka en fil"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:233
+msgid "View previous conversations with this contact"
+msgstr "Visa tidigare samtal med denna kontakt"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:238
+msgid "_Call"
+msgstr "_Ring"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:238
+msgid "Start a voice or video conversation with this contact"
+msgstr "Starta röst- eller videosamtal med denna kontakt"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:1469
+msgid "Sorry, I don't want you in my contact list anymore."
+msgstr "Tyvärr, jag vill inte längre ha dig i min kontaktlista."
+
+#: ../libempathy-gtk/empathy-contact-widget.c:688
+msgid "Select"
+msgstr "Markera"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:698
+#: ../libempathy-gtk/empathy-main-window.c:609
+msgid "Group"
+msgstr "Grupp"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:1
+msgid "<b>Client Information</b>"
+msgstr "<b>Klientinformation</b>"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:2
+msgid "<b>Contact Details</b>"
+msgstr "<b>Kontaktdetaljer</b>"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:3
+msgid "<b>Contact</b>"
+msgstr "<b>Kontakt</b>"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:4
+msgid "<b>Groups</b>"
+msgstr "<b>Grupper</b>"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:6
+msgid "Alias:"
+msgstr "Alias:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:7
+msgid "Birthday:"
+msgstr "Födelsedag:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:8
+msgid "Client:"
+msgstr "Klient:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:9
+msgid "Contact information"
+msgstr "Kontaktinformation"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:10
+msgid "Email:"
+msgstr "E-post:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:11
+msgid "Fullname:"
+msgstr "Fullständigt namn:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:12
+msgid "Identifier:"
+msgstr "Identifierare:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:13
+msgid "Information requested..."
+msgstr "Information begärd..."
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:14
+msgid "OS:"
+msgstr "OS:"
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:15
+msgid "Select the groups you want this contact to appear in, you can select more than one group or no groups."
+msgstr "Välj grupperna som du vill att denna kontakt ska finnas i, du kan välja fler än en grupp eller inga grupper alls."
+
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:16
+msgid "Version:"
+msgstr "Version:"
+
+# "Web site" är "webbplats". "Web page" är "webbsida".
+#: ../libempathy-gtk/empathy-contact-widget.glade.h:17
+msgid "Web site:"
+msgstr "Webbplats:"
+
+#: ../libempathy-gtk/empathy-group-chat.c:251
+msgid "Enter the new topic you want to set for this room:"
+msgstr "Ange det nya ämnet som du vill ställa in för det här rummet:"
+
+#: ../libempathy-gtk/empathy-group-chat.c:361
+#, c-format
+msgid "%s has joined the room"
+msgstr "%s har gått in i rummet"
+
+#: ../libempathy-gtk/empathy-group-chat.c:364
+#, c-format
+msgid "%s has left the room"
+msgstr "%s har lämnat rummet"
+
+#: ../libempathy-gtk/empathy-group-chat.c:445
+#, c-format
+msgid "Topic: %s"
+msgstr "Ämne: %s"
+
+#: ../libempathy-gtk/empathy-group-chat.c:574
+#, c-format
+msgid "Topic set to: %s"
+msgstr "Ämnet inställt till: %s"
+
+#: ../libempathy-gtk/empathy-group-chat.c:576
+msgid "No topic defined"
+msgstr "Inget ämne definierat"
+
+#: ../libempathy-gtk/empathy-group-chat.glade.h:1
+msgid "<b>Topic:</b>"
+msgstr "<b>Ämne:</b>"
+
+#: ../libempathy-gtk/empathy-group-chat.glade.h:2
+msgid "Group Chat"
+msgstr "Gruppchatt"
+
+#: ../libempathy-gtk/empathy-irc-network-dialog.c:287
+msgid "new server"
+msgstr "ny server"
+
+#: ../libempathy-gtk/empathy-irc-network-dialog.c:512
+msgid "Server"
+msgstr "Server"
+
+#: ../libempathy-gtk/empathy-irc-network-dialog.c:527
+msgid "Port"
+msgstr "Port"
+
+#: ../libempathy-gtk/empathy-irc-network-dialog.c:540
+msgid "SSL"
+msgstr "SSL"
+
+#: ../libempathy-gtk/empathy-log-window.c:499
+msgid "Account"
+msgstr "Konto"
+
+#: ../libempathy-gtk/empathy-log-window.c:506
+msgid "Conversation"
+msgstr "Samtal"
+
+#: ../libempathy-gtk/empathy-log-window.c:516
+msgid "Date"
+msgstr "Datum"
+
+#: ../libempathy-gtk/empathy-log-window.glade.h:1
+msgid "Conversations"
+msgstr "Samtal"
+
+#: ../libempathy-gtk/empathy-log-window.glade.h:2
+msgid "Previous Conversations"
+msgstr "Tidigare samtal"
+
+#: ../libempathy-gtk/empathy-log-window.glade.h:3
+msgid "Search"
+msgstr "Sök"
+
+#: ../libempathy-gtk/empathy-log-window.glade.h:4
+msgid "_For:"
+msgstr "_För:"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.c:286
+msgid "Chat Rooms"
+msgstr "Chattrum"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:2
+msgid "Browse:"
+msgstr "Bläddra:"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:3
+msgid "Enter the room name to join here or click on one or more rooms in the list."
+msgstr "Ange rumsnamnet för att gå in i eller klicka på ett eller flera rum i listan."
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:4
+msgid "Enter the server which hosts the room, or leave it empty if the room is on the current account's server"
+msgstr "Ange servern som tillhandahåller rummet, eller lämna den tom om rummet finns på servern för det aktuella kontot"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:5
+msgid "Join"
+msgstr "Gå in"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:6
+msgid "Join New"
+msgstr "Gå in i nytt"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:7
+msgid "Re_fresh"
+msgstr "Uppda_tera"
+
+#: ../libempathy-gtk/empathy-new-chatroom-dialog.glade.h:8
+msgid "This list represents all chat rooms hosted on the server you have entered."
+msgstr "Den här listan representerar alla chattrum som finns på servern som du har gått in på."
+
+#: ../libempathy-gtk/empathy-main-window.c:266
+msgid "Show and edit accounts"
+msgstr "Visa och redigera konton"
+
+#: ../libempathy-gtk/empathy-main-window.c:630
+msgid "Contact"
+msgstr "Kontakt"
+
+#: ../libempathy-gtk/empathy-main-window.c:813
+msgid "_Edit account"
+msgstr "_Redigera konto"
+
+#: ../libempathy-gtk/empathy-main-window.c:896
+msgid "Network error"
+msgstr "Nätverksfel"
+
+#: ../libempathy-gtk/empathy-main-window.c:899
+msgid "Authentication failed"
+msgstr "Autentisering misslyckades"
+
+#: ../libempathy-gtk/empathy-main-window.c:902
+msgid "Encryption error"
+msgstr "Krypteringsfel"
+
+#: ../libempathy-gtk/empathy-main-window.c:905
+msgid "Name in use"
+msgstr "Namnet används"
+
+#: ../libempathy-gtk/empathy-main-window.c:908
+msgid "Certificate not provided"
+msgstr "Certifikat inte tillhandahållet"
+
+#: ../libempathy-gtk/empathy-main-window.c:911
+msgid "Certificate untrusted"
+msgstr "Certifikatet är inte betrott"
+
+#: ../libempathy-gtk/empathy-main-window.c:914
+msgid "Certificate expired"
+msgstr "Certifikatet har gått ut"
+
+#: ../libempathy-gtk/empathy-main-window.c:917
+msgid "Certificate not activated"
+msgstr "Certifikatet är inte aktiverat"
+
+#: ../libempathy-gtk/empathy-main-window.c:920
+msgid "Certificate hostname mismatch"
+msgstr "Värdnamnet i certifikatet stämmer inte"
+
+#: ../libempathy-gtk/empathy-main-window.c:923
+msgid "Certificate fingerprint mismatch"
+msgstr "Certifikatets fingeravtryck stämmer inte"
+
+#: ../libempathy-gtk/empathy-main-window.c:926
+msgid "Certificate self signed"
+msgstr "Certifikatet är självsignerat"
+
+#: ../libempathy-gtk/empathy-main-window.c:929
+msgid "Certificate error"
+msgstr "Certifikatfel"
+
+#: ../libempathy-gtk/empathy-main-window.c:932
+msgid "Unknown error"
+msgstr "Okänt fel"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:1
+msgid "Contact List"
+msgstr "Kontaktlista"
+
+# Hm?
+#: ../libempathy-gtk/empathy-main-window.glade.h:2
+msgid "Context"
+msgstr "Sammanhang"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:3
+msgid "Join _Favorites"
+msgstr "Gå in i _favoriter"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:5
+msgid "Manage Favorites"
+msgstr "Hantera favoriter"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:6
+msgid "Show _Offline Contacts"
+msgstr "Visa _frånkopplade kontakter"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:7
+#: ../megaphone/data/GNOME_Megaphone_Applet.xml.h:1
+#: ../nothere/data/GNOME_NotHere_Applet.xml.h:1
+msgid "_About"
+msgstr "_Om"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:8
+msgid "_Accounts"
+msgstr "_Konton"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:14
+#: ../libempathy-gtk/empathy-status-icon.glade.h:2
+msgid "_New Conversation..."
+msgstr "_Nytt samtal..."
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:15
+msgid "_Personal Information"
+msgstr "_Personlig information"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:16
+#: ../megaphone/data/GNOME_Megaphone_Applet.xml.h:3
+msgid "_Preferences"
+msgstr "In_ställningar"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:17
+#: ../libempathy-gtk/empathy-status-icon.glade.h:3
+msgid "_Quit"
+msgstr "_Avsluta"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:2
+msgid "Call"
+msgstr "Ring"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:4
+msgid "Contact ID:"
+msgstr "Kontakt-id:"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:5
+msgid "New Conversation"
+msgstr "Nytt samtal"
+
+#: ../libempathy-gtk/empathy-preferences.c:247
+msgid "Language"
+msgstr "Språk"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:1
+msgid "<b>Appearance</b>"
+msgstr "<b>Utseende</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:2
+msgid "<b>Audio</b>"
+msgstr "<b>Ljud</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:3
+msgid "<b>Behaviour</b>"
+msgstr "<b>Beteende</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:4
+msgid "<b>Contact List</b>"
+msgstr "<b>Kontaktlista</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:5
+msgid "<b>Enable spell checking for languages:</b>"
+msgstr "<b>Aktivera rättstavning för språk:</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:6
+msgid "<b>Options</b>"
+msgstr "<b>Alternativ</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:7
+msgid "<b>Visual</b>"
+msgstr "<b>Visuellt</b>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:8
+msgid "<small>The list of languages reflects only the languages for which you have a dictionary installed.</small>"
+msgstr "<small>Listan visar endast språk du har en ordlista installerad för.</small>"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:9
+msgid "Automatically _connect on startup "
+msgstr "Anslut _automatiskt vid uppstart"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:10
+msgid "Avatars are user chosen images shown in the contact list"
+msgstr "Avatarer är användarvalda bilder som visas i kontaktlistan"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:11
+msgid "Chat Th_eme:"
+msgstr "Chatt_ema:"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:12
+msgid "Display notifications when contacts come _online"
+msgstr "Visa notifiering när kontakter _ansluts"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:13
+msgid "Enable sounds when _away"
+msgstr "Aktivera ljud under _frånvaro"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:14
+msgid "Enable sounds when _busy"
+msgstr "Aktivera ljud under _upptagetläge"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:15
+msgid "General"
+msgstr "Allmänt"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:16
+msgid "Notifications"
+msgstr "Notifieringar"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:17
+msgid "Preferences"
+msgstr "Inställningar"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:18
+msgid "Show _avatars"
+msgstr "Visa _avatarer"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:19
+msgid "Show _smileys as images"
+msgstr "Visa _smilisar som bilder"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:20
+msgid "Show co_mpact contact list"
+msgstr "Visa ko_mpakt kontaktlista"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:21
+msgid "Sort by _name"
+msgstr "Sortera efter _namn"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:22
+msgid "Sort by s_tate"
+msgstr "Sortera efter _tillstånd"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:23
+msgid "Spell Checking"
+msgstr "Stavningskontroll"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:24
+msgid "Themes"
+msgstr "Teman"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:25
+msgid "_Open new chats in separate windows"
+msgstr "_Öppna nya chattar i separata fönster"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:26
+msgid "_Play sound when messages arrive"
+msgstr "_Spela ljud när meddelanden kommer"
+
+#: ../libempathy-gtk/empathy-preferences.glade.h:27
+msgid "_Use for chat rooms"
+msgstr "Använd för _chattrum"
+
+#. Custom messages
+#: ../libempathy-gtk/empathy-presence-chooser.c:691
+msgid "Custom messages..."
+msgstr "Anpassade meddelanden..."
+
+#: ../libempathy-gtk/empathy-presence-chooser.glade.h:1
+msgid "Custom message"
+msgstr "Anpassat meddelande"
+
+#: ../libempathy-gtk/empathy-presence-chooser.glade.h:2
+msgid "Message:"
+msgstr "Meddelande:"
+
+#: ../libempathy-gtk/empathy-presence-chooser.glade.h:3
+msgid "Save message"
+msgstr "Spara meddelande"
+
+#: ../libempathy-gtk/empathy-presence-chooser.glade.h:4
+msgid "Status:"
+msgstr "Status:"
+
+#: ../libempathy-gtk/empathy-private-chat.c:229
+#, c-format
+msgid "%s went offline"
+msgstr "%s kopplade från"
+
+#: ../libempathy-gtk/empathy-private-chat.c:243
+#, c-format
+msgid "%s has come online"
+msgstr "%s anslöt sig"
+
+#: ../libempathy-gtk/empathy-spell-dialog.c:85
+msgid "Word"
+msgstr "Ord"
+
+#: ../libempathy-gtk/empathy-spell-dialog.c:258
+msgid "Suggestions for the word"
+msgstr "Förslag för ordet"
+
+#: ../libempathy-gtk/empathy-spell-dialog.glade.h:1
+msgid "Spell Checker"
+msgstr "Stavningskontroll"
+
+#: ../libempathy-gtk/empathy-spell-dialog.glade.h:2
+msgid "Suggestions for the word:"
+msgstr "Förslag för ordet:"
+
+#: ../libempathy-gtk/empathy-status-icon.c:369
+#, c-format
+msgid ""
+"New message from %s:\n"
+"%s"
+msgstr ""
+"Nytt meddelande från %s:\n"
+"%s"
+
+#: ../libempathy-gtk/empathy-status-icon.c:434
+#, c-format
+msgid ""
+"Incoming call from %s:\n"
+"%s"
+msgstr ""
+"Inkommande samtal från %s:\n"
+"%s"
+
+#: ../libempathy-gtk/empathy-status-icon.c:738
+#, c-format
+msgid "Subscription requested by %s"
+msgstr "Prenumeration begärd av %s"
+
+#: ../libempathy-gtk/empathy-status-icon.c:741
+#, c-format
+msgid ""
+"\n"
+"Message: %s"
+msgstr ""
+"\n"
+"Meddelande: %s"
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:1
+msgid "Status"
+msgstr "Status"
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:4
+msgid "_Show Contact List"
+msgstr "_Visa kontaktlista"
+
+#: ../libempathy-gtk/empathy-theme-boxes.c:780
+#: ../libempathy-gtk/empathy-theme-irc.c:297
+msgid "%A %d %B %Y"
+msgstr "%A %d %B %Y"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:78
+msgid "Classic"
+msgstr "Klassiskt"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:79
+msgid "Simple"
+msgstr "Enkelt"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:80
+msgid "Clean"
+msgstr "Rent"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:81
+msgid "Blue"
+msgstr "Blått"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:158
+msgid "Current Locale"
+msgstr "Aktuell lokal"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:161
+#: ../libempathy-gtk/totem-subtitle-encoding.c:163
+#: ../libempathy-gtk/totem-subtitle-encoding.c:165
+#: ../libempathy-gtk/totem-subtitle-encoding.c:167
+msgid "Arabic"
+msgstr "Arabisk"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:170
+msgid "Armenian"
+msgstr "Armenisk"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:173
+#: ../libempathy-gtk/totem-subtitle-encoding.c:175
+#: ../libempathy-gtk/totem-subtitle-encoding.c:177
+msgid "Baltic"
+msgstr "Baltisk"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:180
+msgid "Celtic"
+msgstr "Kymrisk"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:183
+#: ../libempathy-gtk/totem-subtitle-encoding.c:185
+#: ../libempathy-gtk/totem-subtitle-encoding.c:187
+#: ../libempathy-gtk/totem-subtitle-encoding.c:189
+msgid "Central European"
+msgstr "Centraleuropeisk"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:192
+#: ../libempathy-gtk/totem-subtitle-encoding.c:194
+#: ../libempathy-gtk/totem-subtitle-encoding.c:196
+#: ../libempathy-gtk/totem-subtitle-encoding.c:198
+msgid "Chinese Simplified"
+msgstr "Kinesisk (förenklad)"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:201
+#: ../libempathy-gtk/totem-subtitle-encoding.c:203
+#: ../libempathy-gtk/totem-subtitle-encoding.c:205
+msgid "Chinese Traditional"
+msgstr "Kinesisk (traditionell)"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:208
+msgid "Croatian"
+msgstr "Kroatisk"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:211
+#: ../libempathy-gtk/totem-subtitle-encoding.c:213
+#: ../libempathy-gtk/totem-subtitle-encoding.c:215
+#: ../libempathy-gtk/totem-subtitle-encoding.c:217
+#: ../libempathy-gtk/totem-subtitle-encoding.c:219
+#: ../libempathy-gtk/totem-subtitle-encoding.c:221
+msgid "Cyrillic"
+msgstr "Kyrillisk"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:224
+msgid "Cyrillic/Russian"
+msgstr "Kyrillisk/Rysk"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:227
+#: ../libempathy-gtk/totem-subtitle-encoding.c:229
+msgid "Cyrillic/Ukrainian"
+msgstr "Kyrillisk/Ukrainsk"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:232
+msgid "Georgian"
+msgstr "Georgisk"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:235
+#: ../libempathy-gtk/totem-subtitle-encoding.c:237
+#: ../libempathy-gtk/totem-subtitle-encoding.c:239
+msgid "Greek"
+msgstr "Grekisk"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:242
+msgid "Gujarati"
+msgstr "Gujarati"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:245
+msgid "Gurmukhi"
+msgstr "Gurmukhi"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:248
+#: ../libempathy-gtk/totem-subtitle-encoding.c:250
+#: ../libempathy-gtk/totem-subtitle-encoding.c:252
+#: ../libempathy-gtk/totem-subtitle-encoding.c:254
+msgid "Hebrew"
+msgstr "Hebreisk"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:257
+msgid "Hebrew Visual"
+msgstr "Hebreisk (visuell)"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:260
+msgid "Hindi"
+msgstr "Hindi"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:263
+msgid "Icelandic"
+msgstr "Isländsk"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:266
+#: ../libempathy-gtk/totem-subtitle-encoding.c:268
+#: ../libempathy-gtk/totem-subtitle-encoding.c:270
+msgid "Japanese"
+msgstr "Japansk"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:273
+#: ../libempathy-gtk/totem-subtitle-encoding.c:275
+#: ../libempathy-gtk/totem-subtitle-encoding.c:277
+#: ../libempathy-gtk/totem-subtitle-encoding.c:279
+msgid "Korean"
+msgstr "Koreansk"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:282
+msgid "Nordic"
+msgstr "Nordisk"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:285
+msgid "Persian"
+msgstr "Persisk"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:288
+#: ../libempathy-gtk/totem-subtitle-encoding.c:290
+msgid "Romanian"
+msgstr "Rumänsk"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:293
+msgid "South European"
+msgstr "Sydeuropeisk"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:296
+msgid "Thai"
+msgstr "Thailändsk"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:299
+#: ../libempathy-gtk/totem-subtitle-encoding.c:301
+#: ../libempathy-gtk/totem-subtitle-encoding.c:303
+#: ../libempathy-gtk/totem-subtitle-encoding.c:305
+msgid "Turkish"
+msgstr "Turkisk"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:308
+#: ../libempathy-gtk/totem-subtitle-encoding.c:310
+#: ../libempathy-gtk/totem-subtitle-encoding.c:312
+#: ../libempathy-gtk/totem-subtitle-encoding.c:314
+#: ../libempathy-gtk/totem-subtitle-encoding.c:316
+msgid "Unicode"
+msgstr "Unicode"
+
+# "Web site" är "webbplats". "Web page" är "webbsida".
+#: ../libempathy-gtk/totem-subtitle-encoding.c:319
+#: ../libempathy-gtk/totem-subtitle-encoding.c:321
+#: ../libempathy-gtk/totem-subtitle-encoding.c:323
+#: ../libempathy-gtk/totem-subtitle-encoding.c:325
+#: ../libempathy-gtk/totem-subtitle-encoding.c:327
+msgid "Western"
+msgstr "Västlig"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:330
+#: ../libempathy-gtk/totem-subtitle-encoding.c:332
+#: ../libempathy-gtk/totem-subtitle-encoding.c:334
+msgid "Vietnamese"
+msgstr "Vietnamesisk"
+
+#.
+#. * vim: sw=2 ts=8 cindent noai bs=2
+#.
+#: ../megaphone/data/GNOME_Megaphone_Applet.schemas.in.h:1
+msgid "The contact to display in the applet. Empty means no contact is displayed."
+msgstr "Kontakten att visa i panelprogrammet. Tom betyder att ingen kontakt visas."
+
+#: ../megaphone/data/GNOME_Megaphone_Applet.schemas.in.h:2
+msgid "The contact's avatar token. Empty means contact has no avatar."
+msgstr "Kontaktens avatarsymbol. Tom betyder att kontakten saknar avatar."
+
+#: ../megaphone/data/GNOME_Megaphone_Applet.server.in.in.h:1
+msgid "Megaphone"
+msgstr "Megaphone"
+
+#: ../megaphone/data/GNOME_Megaphone_Applet.server.in.in.h:2
+#: ../megaphone/src/megaphone-applet.c:419
+msgid "Talk!"
+msgstr "Prata!"
+
+#: ../megaphone/data/GNOME_Megaphone_Applet.xml.h:2
+msgid "_Information"
+msgstr "_Information"
+
+#: ../nothere/data/GNOME_NotHere_Applet.server.in.in.h:1
+msgid "Presence"
+msgstr "Närvaro"
+
+#: ../nothere/data/GNOME_NotHere_Applet.server.in.in.h:2
+#: ../nothere/src/nothere-applet.c:89
+msgid "Set your own presence"
+msgstr "Ställ in din egna närvaro"
+
+#: ../src/empathy.c:205
+msgid "- Empathy Instant Messenger"
+msgstr "- Empathy snabbmeddelandeklient"
+
+#~ msgid "Disable"
+#~ msgstr "Inaktivera"
+#~ msgid "Call from %s"
+#~ msgstr "Samtal från %s"
+#~ msgid "Edit Account _Details"
+#~ msgstr "Redigera konto_detaljer"
+#~ msgid "_New Message..."
+#~ msgstr "_Nytt meddelande..."
+#~ msgid "New message"
+#~ msgstr "Nytt meddelande"
+#~ msgid "gtk-cancel"
+#~ msgstr "Avbryt"
+#~ msgid "gtk-ok"
+#~ msgstr "OK"
+#~ msgid "A unique name for this account to identify it personally to you."
+#~ msgstr ""
+#~ "Ett unikt namn på kontot för att personligen identifiera det till dig."
+#~ msgid "Chat Room"
+#~ msgstr "Chattrum"
+#~ msgid "Contact List - Empathy"
+#~ msgstr "Kontaktlista - Empathy"
+#~ msgid "<b>Languages</b>"
+#~ msgstr "<b>Språk</b>"
+#~ msgid "_Enable spell checking"
+#~ msgstr "_Aktivera stavningskontroll"
+#~ msgid "Clear List..."
+#~ msgstr "Töm listan..."
+#~ msgid "Are you sure you want to clear the list?"
+#~ msgstr "Är du säker på att du vill tömma listan?"
+#~ msgid ""
+#~ "This will remove any custom messages you have added to the list of preset "
+#~ "status messages."
+#~ msgstr ""
+#~ "Detta kommer att ta bort de meddelanden du har lagt till i listan med "
+#~ "förinställda statusmeddelanden"
+#~ msgid "Clear List"
+#~ msgstr "Töm listan"
+#~ msgid "Enter status message:"
+#~ msgstr "Ange statusmeddelande:"
+#~ msgid "Status Message Presets"
+#~ msgstr "Förinställda statusmeddelanden"
+#~ msgid "_Add to status message list"
+#~ msgstr "_Lägg till i statusmeddelandelistan"
+#~ msgid ""
+#~ "Subscription requested for %s\n"
+#~ "Message: %s"
+#~ msgstr ""
+#~ "Prenumerationsförfrågan för %s\n"
+#~ "Meddelande: %s"
+#~ msgid "Instant Messenger"
+#~ msgstr "Snabbmeddelandeklient"
+#~ msgid "Sorry, I don't want you in my contact list."
+#~ msgstr "Tyvärr, jag vill inte ha dig i min kontaktlista."
+#~ msgid "<b>Account</b>"
+#~ msgstr "<b>Konto</b>"
+#~ msgid "Imendio "
+#~ msgstr "Imendio "
+#~ msgid "Jabber"
+#~ msgstr "Jabber"
+#~ msgid "Create"
+#~ msgstr "Skapa"
+#~ msgid ""
+#~ "<small><b><span foreground=\"#555\">Example: user@jabber.org</span></b></"
+#~ "small>"
+#~ msgstr ""
+#~ "<small><b><span foreground=\"#555\">Exempel: användare@jabber.org</span></"
+#~ "b></small>"
+#~ msgid "Empathy"
+#~ msgstr "Empathy"
+#~ msgid "Gnome Instant Messaging Client"
+#~ msgstr "Snabbmeddelandeklient för Gnome"
+#~ msgid "-"
+#~ msgstr "-"
+#~ msgid "<b>About</b>"
+#~ msgstr "<b>Om</b>"
+#~ msgid "<b>Personal Details</b>"
+#~ msgstr "<b>Personliga detaljer</b>"
+#~ msgid "<b>Status</b>"
+#~ msgstr "<b>Status</b>"
+#~ msgid "<b>Subscription</b>"
+#~ msgstr "<b>Prenumeration</b>"
+#~ msgid "<span size=\"smaller\">Example: Mikael or user@server.org</span>"
+#~ msgstr ""
+#~ "<span size=\"smaller\">Exempel: Mikael eller användare@server.org</span>"
+#~ msgid ""
+#~ "<span size=\"smaller\">Note: You must select an account if the contact is "
+#~ "unknown</span>"
+#~ msgstr ""
+#~ "<span size=\"smaller\">Observera: Du måste välja ett konto om kontakten "
+#~ "är okänd</span>"
+#~ msgid "Accou_nt:"
+#~ msgstr "Ko_nto:"
+#~ msgid "Add Contact"
+#~ msgstr "Lägg till kontakt"
+#~ msgid "Avatar:"
+#~ msgstr "Avatar:"
+#~ msgid "C_hange"
+#~ msgstr "_Ändra"
+#~ msgid "Ch_at"
+#~ msgstr "Ch_atta"
+#~ msgid "Con_tact:"
+#~ msgstr "_Kontakt:"
+#~ msgid "Connect on S_tartup"
+#~ msgstr "Anslut vid _uppstart"
+#~ msgid "Contact List - Gossip"
+#~ msgstr "Kontaktlista - Gossip"
+#~ msgid "Country:"
+#~ msgstr "Land:"
+#~ msgid "Edit Contact"
+#~ msgstr "Redigera kontakt"
+#~ msgid "Edit Groups"
+#~ msgstr "Redigera grupper"
+#~ msgid "ID:"
+#~ msgstr "Id:"
+#~ msgid ""
+#~ "If you chose to decide later you will be asked the next time you log on."
+#~ msgstr ""
+#~ "Om du väljer att bestämma dig senare kommer du att bli frågad nästa gång "
+#~ "du logga in."
+#~ msgid "Name:"
+#~ msgstr "Namn:"
+#~ msgid "Personal Details"
+#~ msgstr "Personliga detaljer"
+#~ msgid "R_egister"
+#~ msgstr "Re_gistrera"
+#~ msgid ""
+#~ "Set the alias you want to use for:\n"
+#~ "<b>foo@bar.baz</b>\n"
+#~ "\n"
+#~ "You can retrieve contact information from the server. "
+#~ msgstr ""
+#~ "Ställ in det alias du vill använda för:\n"
+#~ "<b>foo@bar.baz</b>\n"
+#~ "\n"
+#~ "Du kan hämta kontaktinformation från servern."
+#~ msgid ""
+#~ "This acts as a filter to the contact list below.\n"
+#~ "\n"
+#~ "You can use segments of contact's name or ID, for example, \"jabber.org\" "
+#~ "will list everyone using that server.\n"
+#~ "\n"
+#~ "You can also use the name of a group to show only contacts in a specific "
+#~ "group."
+#~ msgstr ""
+#~ "Detta fungerar som ett filter till kontaktlistan nedan.\n"
+#~ "\n"
+#~ "Du kan använda delar av kontaktens namn eller id, till exempel \"jabber."
+#~ "org\" kommer att lista alla som använder den servern.\n"
+#~ "\n"
+#~ "Du kan även använda namnet på en grupp för att endast visa kontakterna i "
+#~ "en specifik grupp."
+#~ msgid ""
+#~ "This acts as a filter to the contact list below. You can use segments of "
+#~ "contact's name or ID, for example, \"jabber.org\" will list everyone "
+#~ "using that server"
+#~ msgstr ""
+#~ "Detta fungerar som ett filter till kontaktlistan nedan. Du kan använda "
+#~ "delar av kontaktens namn eller id, till exempel \"jabber.org\" kommer att "
+#~ "lista alla som använder den servern"
+#~ msgid "This is the name that will be used on your roster for this contact"
+#~ msgstr ""
+#~ "Detta är namnet som kommer att användas på din kontaktlista för denna "
+#~ "kontakt"
+#~ msgid "This name will be used to identify you in chat windows"
+#~ msgstr ""
+#~ "Detta namn kommer att användas för att identifiera dig i chattfönster"
+#~ msgid ""
+#~ "This name will be used to identify you when new contacts lookup your "
+#~ "details"
+#~ msgstr ""
+#~ "Detta namn kommer att användas för att identifiera dig när nya kontakter "
+#~ "kontrollerar din information"
+#~ msgid "Use default name here from the contact's VCard."
+#~ msgstr "Använd standardnamnet här från kontaktens VCard."
+#~ msgid "Use system pro_xy"
+#~ msgstr "Använd systemets pro_xyinställningar"
+#~ msgid "Which account do you want to use?"
+#~ msgstr "Vilket konto vill du använda?"
+#~ msgid "You are not subscribed to this contact."
+#~ msgstr "Du prenumererar inte på denna kontakt."
+#~ msgid "_Accept"
+#~ msgstr "_Acceptera"
+#~ msgid "_Birthday:"
+#~ msgstr "_Födelsedag:"
+#~ msgid "_Connect"
+#~ msgstr "An_slut"
+#~ msgid "_Deny"
+#~ msgstr "_Neka"
+#~ msgid "_Description:"
+#~ msgstr "_Beskrivning:"
+#~ msgid "_Disconnect"
+#~ msgstr "_Koppla ifrån"
+#~ msgid ""
+#~ "_Enter the name or contact ID of the person you want to chat to below:"
+#~ msgstr "Ange _namnet eller kontakt-id för den person du vill chatta med:"
+#~ msgid "_Group:"
+#~ msgstr "_Grupp:"
+#~ msgid "_Password:"
+#~ msgstr "_Lösenord:"
+#~ msgid "_Retrieve"
+#~ msgstr "_Hämta"
+#~ msgid "_Search"
+#~ msgstr "_Sök"
+#~ msgid "_Subscribe"
+#~ msgstr "_Prenumerera"
+
+# "Web site" är "webbplats". "Web page" är "webbsida".
+#~ msgid "_Web site:"
+#~ msgstr "_Webbplats:"
+#~ msgid "Gossip Instant Messenger"
+#~ msgstr "Snabbmeddelandeklienten Gossip"
+#~ msgid "Normal"
+#~ msgstr "Normalt"
+#~ msgid "Joining"
+#~ msgstr "Går in"
+#~ msgid "Active"
+#~ msgstr "Aktivt"
+#~ msgid "Inactive"
+#~ msgstr "Inaktivt"
+#~ msgid "Error"
+#~ msgstr "Fel"
+#~ msgid "Moderator"
+#~ msgid_plural "Moderators"
+#~ msgstr[0] "Moderator"
+#~ msgstr[1] "Moderatorer"
+#~ msgid "Participant"
+#~ msgid_plural "Participants"
+#~ msgstr[0] "Deltagare"
+#~ msgstr[1] "Deltagare"
+#~ msgid "Visitor"
+#~ msgid_plural "Visitors"
+#~ msgstr[0] "Besökare"
+#~ msgstr[1] "Besökare"
+#~ msgid "No role"
+#~ msgstr "Ingen roll"
+#~ msgid "Owner"
+#~ msgid_plural "Owners"
+#~ msgstr[0] "Ägare"
+#~ msgstr[1] "Ägare"
+#~ msgid "Administrator"
+#~ msgid_plural "Administrators"
+#~ msgstr[0] "Administrator"
+#~ msgstr[1] "Administratörer"
+#~ msgid "Member"
+#~ msgid_plural "Members"
+#~ msgstr[0] "Medlem"
+#~ msgstr[1] "Medlemmar"
+#~ msgid "No affiliation"
+#~ msgstr "Ingen anknytning"
+#~ msgid "The nickname you have chosen is already in use."
+#~ msgstr "Smeknamnet du har valt är upptaget."
+#~ msgid "The chat room you tried to join requires a password."
+#~ msgstr "Chattrummet du försökte gå in i kräver ett lösenord."
+#~ msgid "The remote conference server did not respond in a sensible time."
+#~ msgstr "Fjärrkonferensservern svarade inte inom en rimlig tid."
+#~ msgid "The conference server you tried to join could not be found."
+#~ msgstr "Konferensservern du försökte gå in på kunde inte hittas."
+#~ msgid "An unknown error occurred, check your details are correct."
+#~ msgstr ""
+#~ "Ett okänt fel har inträffat, kontrollera att dina detaljer är korrekta."
+#~ msgid "Joining the chatroom was canceled."
+#~ msgstr "Gå in i chattrummet avbröts."
+#~ msgid "Unavailable"
+#~ msgstr "Otillgänglig"
+#~ msgid "An unknown error occurred."
+#~ msgstr "Ett okänt fel inträffade."
+#~ msgid "Connection refused."
+#~ msgstr "Anslutning vägrades."
+#~ msgid "Server address could not be resolved."
+#~ msgstr "Serverns address kunde inte slås upp."
+#~ msgid "Connection timed out."
+#~ msgstr "Anslutning timade ut."
+#~ msgid "Authentication failed."
+#~ msgstr "Autentisering misslyckades."
+#~ msgid "The username you are trying already exists."
+#~ msgstr "Användarnamnet du försöker använda existerar redan."
+#~ msgid "The username you are trying is not valid."
+#~ msgstr "Användarnamnet du försöker använda är inte giltigt."
+#~ msgid "This feature is unavailable."
+#~ msgstr "Denna funktion är inte tillgänglig."
+#~ msgid "This feature is unauthorized."
+#~ msgstr "Denna funktion är inte auktoriserad."
+#~ msgid "A specific protocol error occurred that was unexpected."
+#~ msgstr "Ett oväntat specifikt protokollfel inträffade."
+#~ msgid "Home"
+#~ msgstr "Hemma"
+#~ msgid "Couldn't send message!"
+#~ msgstr "Kunde inte sända meddelande!"
+#~ msgid "Connection could not be opened"
+#~ msgstr "Anslutning kunde inte öppnas"
+#~ msgid "Service has gone and is no longer available"
+#~ msgstr "Tjänsten ar försvunnit och finns inte längre tillgänglig"
+#~ msgid "Bad or malformed request to this service"
+#~ msgstr "Felaktig eller felformulerad begäran till den här tjänsten"
+#~ msgid "Unauthorized request to this service"
+#~ msgstr "Obehörig begäran till den här tjänsten"
+#~ msgid "Payment is required for this service"
+#~ msgstr "Betalning krävs för den här tjänsten"
+#~ msgid "This service is forbidden"
+#~ msgstr "Den här tjänsten är förbjuden"
+#~ msgid "This service is unavailable or not found"
+#~ msgstr "Den här tjänsten är inte tillgänglig eller hittades inte"
+#~ msgid "Unacceptable request sent to this services"
+#~ msgstr "Oaccepterbar begäran skickades till den här tjänsten"
+#~ msgid "Registration is required"
+#~ msgstr "Registrering krävs"
+#~ msgid "There was a conflict of interest trying to use this service"
+#~ msgstr ""
+#~ "Det inträffade en intressekonflikt vid försök att använda den här "
+#~ "tjänsten "
+#~ msgid "There was an internal service error"
+#~ msgstr "Det inträffade ett internt fel i tjänsten"
+#~ msgid "This feature is not implemented"
+#~ msgstr "Den här funktionen är inte implementerad"
+#~ msgid "The remote service timed out"
+#~ msgstr "Tidsgränsen för fjärrtjänsten överstegs"
+#~ msgid "Using the %s backend"
+#~ msgstr "Använder bakänden %s"
+#~ msgid "Stop"
+#~ msgstr "Stopp"
+#~ msgid "Disconnect"
+#~ msgstr "Koppla ifrån"
+#~ msgid "Connect"
+#~ msgstr "Anslut"
+#~ msgid "Bye bye"
+#~ msgstr "Hej då"
+#~ msgid "Successfully registered your new account settings."
+#~ msgstr "Registrering av dina nya kontoinställningar lyckades."
+#~ msgid "You should now be able to connect to your new account."
+#~ msgstr "Du ska nu kunna ansluta med ditt nya konto."
+#~ msgid "Failed to register your new account settings."
+#~ msgstr "Misslyckades med att registrera dina nya kontoinställningar."
+#~ msgid "Successfully changed your account password."
+#~ msgstr "Ditt kontolösenord ändrades."
+#~ msgid "You should now be able to connect with your new password."
+#~ msgstr "Du ska nu kunna ansluta med ditt nya lösenord."
+#~ msgid "Failed to change your account password."
+#~ msgstr "Misslyckades med att ändra ditt kontolösenord."
+#~ msgid ""
+#~ "Please enter a new password for this account:\n"
+#~ "%s"
+#~ msgstr ""
+#~ "Ange ett nytt lösenord för det här kontot:\n"
+#~ "%s"
+#~ msgid "No information is available for this contact."
+#~ msgstr "Ingen information finns tillgänglig för denna kontakt."
+#~ msgid "Information requested, please wait..."
+#~ msgstr "Information begärd, var vänlig vänta..."
+#~ msgid "To summarize:"
+#~ msgstr "Sammanfattning:"
+#~ msgid "%d subscription request"
+#~ msgid_plural "%d subscription requests"
+#~ msgstr[0] "%d prenumerationsförfrågan"
+#~ msgstr[1] "%d prenumerationsförfrågan"
+#~ msgid "%d file transfer request"
+#~ msgid_plural "%d file transfer requests"
+#~ msgstr[0] "%d filöverföringsförfrågan"
+#~ msgstr[1] "%d filöverföringsförfrågan"
+#~ msgid "%d server message"
+#~ msgid_plural "%d server messages"
+#~ msgstr[0] "%d servermeddelande"
+#~ msgstr[1] "%d servermeddelanden"
+#~ msgid "%d error"
+#~ msgid_plural "%d errors"
+#~ msgstr[0] "%d fel"
+#~ msgstr[1] "%d fel"
+#~ msgid "If you quit, you will lose all unread information."
+#~ msgstr "Om du avslutar kommer all oläst information förloras."
+#~ msgid "Gossip is still running, it is just hidden."
+#~ msgstr "Gossip kör fortfarande, den är bara dold."
+#~ msgid "Click on the notification area icon to show Gossip."
+#~ msgstr "Klicka på ikonen i notifieringsytan för att visa Gossip."
+#~ msgid "You were about to quit!"
+#~ msgstr "Du är på väg att avsluta!"
+#~ msgid ""
+#~ "Since no system or notification tray has been found, this action would "
+#~ "normally quit Gossip.\n"
+#~ "\n"
+#~ "This is just a reminder, from now on, Gossip will quit when performing "
+#~ "this action unless you uncheck the option below."
+#~ msgstr ""
+#~ "Eftersom ingen system- eller notifieringslåda har hittats skulle denna "
+#~ "åtgärd normalt sett avslutat Gossip.\n"
+#~ "\n"
+#~ "Detta är bara en påminnelse, från och med nu kommer Gossip att avslutas "
+#~ "när denna åtgärd genomförs såvida du inte avkryssar alternativet nedan."
+#~ msgid "Select who would you like to invite to room:"
+#~ msgstr "Välj vilka du vill bjuda in till rummet:"
+#~ msgid "Select which room you would like to invite:"
+#~ msgstr "Välj vilket rum du vill bjuda in till:"
+#~ msgid "Your invitation has been declined"
+#~ msgstr "Ditt inbjudan har nekats."
+#~ msgid "Accept"
+#~ msgstr "Acceptera"
+#~ msgid "Decline"
+#~ msgstr "Neka"
+#~ msgid "Do you want to remove this contact from your roster?"
+#~ msgstr "Vill du ta bort denna kontakt från din kontaktlista?"
+#~ msgid ""
+#~ "Please enter a new name for the group:\n"
+#~ "%s"
+#~ msgstr ""
+#~ "Ange ett nytt namn för gruppen:\n"
+#~ "%s"
+#~ msgid "Unsorted"
+#~ msgstr "Osorterade"
+#~ msgid ""
+#~ "Set the alias you want to use for:\n"
+#~ "<b>%s</b>\n"
+#~ "\n"
+#~ "You can retrieve contact information from the server."
+#~ msgstr ""
+#~ "Ställ in det alias du vill använda för:\n"
+#~ "<b>%s</b>\n"
+#~ "\n"
+#~ "Du kan hämta kontaktinformation från servern."
+#~ msgid "New file transfer request from %s"
+#~ msgstr "Ny filöverföringsförfrågan från %s"
+#~ msgid "File transfer is not supported by both parties."
+#~ msgstr "Filöverföring stöds inte av båda parter."
+#~ msgid "Your file transfer offer declined."
+#~ msgstr "Ditt erbjudande om filöverföring nekades."
+#~ msgid "The other user decided not to continue."
+#~ msgstr "Den andra användaren beslöts sig för att inte fortsätta."
+#~ msgid "Unknown error occurred during file transfer."
+#~ msgstr "Ett okänt fel inträffade under filöverföringen."
+#~ msgid "%s would like to send you a file."
+#~ msgstr "%s vill skicka en fil till dig."
+#~ msgid "Someone would like to send you a file."
+#~ msgstr "Någon vill skicka en fil till dig."
+#~ msgid "Select a file"
+#~ msgstr "Välj en fil"
+#~ msgid "Connecting..."
+#~ msgstr "Ansluter..."
+#~ msgid "Retry connection"
+#~ msgstr "Återanslut"
+#~ msgid "Invited %s to join this chat conference."
+#~ msgstr "Inbjöd %s till att gå med i chattkonferens."
+#~ msgid "%s has set the topic: %s"
+#~ msgstr "%s har satt ämnet: %s"
+#~ msgid "Conversation With"
+#~ msgstr "Samtal med"
+#~ msgid "Allow multiple instances of the application to run at the same time"
+#~ msgstr "Tillåt flera instanser av applikationen att köras samtidigt"
+# "Lista" som verb brukar vi inte använda; hellre "visa" eller möjligtvis
+# "visa i lista"
+#~ msgid "List the available accounts"
+#~ msgstr "Visa tillgängliga konton"
+#~ msgid "ACCOUNT-NAME"
+#~ msgstr "KONTONAMN"
+#~ msgid "You can not use --no-connect together with --account"
+#~ msgstr "Du kan inte använda --no-connect tillsammans med --account"
+#~ msgid "No accounts available."
+#~ msgstr "Inga konton tillgängliga."
+#~ msgid "Available accounts:"
+#~ msgstr "Tillgängliga konton:"
+#~ msgid "[default]"
+#~ msgstr "[standard]"
+#~ msgid "There is no account with the name '%s'."
+#~ msgstr "Det finns inget konto med namnet \"%s\"."
+#~ msgid "Found %d conference rooms"
+#~ msgstr "Hittade %d konferensrum"
+#~ msgid "Browsing for conference rooms, please wait..."
+#~ msgstr "Bläddrar efter konferensrum, vänta..."
+#~ msgid "Browsing cancelled!"
+#~ msgstr "Bläddring avbröts!"
+#~ msgid "Default"
+#~ msgstr "Standard"
+#~ msgid "Chat!"
+#~ msgstr "Chatta!"
+#~ msgid "%s wants to be added to your contact list."
+#~ msgstr "%s vill bli tillagd till din kontaktlista."
+#~ msgid "Someone wants to be added to your contact list."
+#~ msgstr "Någon vill bli tillagd till din kontaktlista."
+#~ msgid "Show"
+#~ msgstr "Visa"
+#~ msgid "Contact has been removed"
+#~ msgstr "Kontakten har tagits bort"
+#~ msgid "Subject: %s"
+#~ msgstr "Ämne: %s"
+#~ msgid "Do you want to add this person to your contact list?"
+#~ msgstr "Vill du lägga till denna person till din kontaktlista?"
+#~ msgid "Do you want to add %s to your contact list?"
+#~ msgstr "Vill du lägga till %s till din kontaktlista?"
+#~ msgid "Please enter your %s account password"
+#~ msgstr "Ange lösenordet för kontot %s"
+#~ msgid "Logging in to account '%s'"
+#~ msgstr "Loggar in mot kontot \"%s\""
+#~ msgid "Remember Password?"
+#~ msgstr "Kom ihåg lösenord?"
+#~ msgid "Do not show this again"
+#~ msgstr "Visa inte det här igen"
+#~ msgid "Could not display the help contents."
+#~ msgstr "Kunde inte visa hjälpinnehållet."
+#~ msgid "OK"
+#~ msgstr "OK"
+#~ msgid "The server does not seem to be responding."
+#~ msgstr "Servern verkar inte svara."
+#~ msgid "Try again later."
+#~ msgstr "Försök igen senare."
+#~ msgid "Change"
+#~ msgstr "Ändra"
+#~ msgid "Contact goes offline"
+#~ msgstr "Kontakt kopplas ner"
+#~ msgid "Contact goes online"
+#~ msgstr "Kontakt ansluts"
+#~ msgid "Do you want to accept this file?"
+#~ msgstr "Vill du acceptera denna fil?"
+#~ msgid "File Transfer Request"
+#~ msgstr "Filöverföringsförfrågan"
+#~ msgid "File name:"
+#~ msgstr "Filnamn:"
+# "Web site" är "webbplats". "Web page" är "webbsida".
+#~ msgid "File size:"
+#~ msgstr "Filstorlek:"
+#~ msgid "Not supported yet"
+#~ msgstr "Stöds inte ännu"
+#~ msgid "This person wishes to send you this file:"
+#~ msgstr "Denna person vill skicka den här filen till dig:"
+#~ msgid "me"
+#~ msgstr "jag"
+#~ msgid "Protocol:"
+#~ msgstr "Protokoll:"
+#~ msgid "Choose the protocol"
+#~ msgstr "Välj protokollet"
+#~ msgid "Gossip"
+#~ msgstr "Gossip"
+#~ msgid "%s - New Message"
+#~ msgstr "%s - Nytt meddelande"
+#~ msgid "%s - Conversation"
+#~ msgstr "%s - Samtal"
+#~ msgid "_Forget"
+#~ msgstr "_Glöm"
+#~ msgid "Martyn Russell"
+#~ msgstr "Martyn Russell"
+#~ msgid ""
+#~ "Set the alias you want to use for:\n"
+#~ "<b>martyn@imendio.com</b>\n"
+#~ "\n"
+#~ "You can retrieve contact information from the server. "
+#~ msgstr ""
+#~ "Ställ in det alias du vill använda för:\n"
+#~ "<b>martyn@imendio.com</b>\n"
+#~ "\n"
+#~ "Du kan hämta kontaktinformation från servern. "
+#~ msgid " "
+#~ msgstr " "
+#~ msgid "Group:"
+#~ msgstr "Grupp:"
+# "Web site" är "webbplats". "Web page" är "webbsida".
+#~ msgid "Web Site:"
+#~ msgstr "Webbplats:"
+#~ msgid "Favourite"
+#~ msgstr "Favorit"
+#~ msgid "Add to _favourites"
+#~ msgstr "_Lägg till i favoriter"
+#~ msgid ""
+#~ "Customize your own nickname, the server and chatroom which you wish to "
+#~ "join."
+#~ msgstr "Anpassa ditt smeknamn, servern och chattrummet du vill gå in i."
+#~ msgid "Edit your chat room details:"
+#~ msgstr "Redigera chattrumsdetaljer:"
+#~ msgid "Na_me:"
+#~ msgstr "Na_mn:"
+#~ msgid "New Chat Room"
+#~ msgstr "Nytt chattrum"
+#~ msgid ""
+#~ "Pick a saved chat room from the presets available below and click Join to "
+#~ "start chatting."
+#~ msgstr ""
+#~ "Välj ett sparat chattrum nedan och tryck Gå in för att börja chatta."
+#~ msgid "Save _this chat room"
+#~ msgstr "Spara detta chattrum"
+#~ msgid "Press Subscribe to request to receive their status"
+#~ msgstr "Tryck på Prenumerera för att ta emot kontaktens status"
+#~ msgid "_Group Chat"
+#~ msgstr "_Gruppchatt"
+#~ msgid "You have no Instant Messaging accounts configured!"
+#~ msgstr "Du har inte konfigurerar ett snabbmeddelandekonto!"
+#~ msgid ""
+#~ "Next you will be presented with the Account Information dialog to set "
+#~ "your details up."
+#~ msgstr ""
+#~ "Kontoinformationsdialogen kommer nu att visas så att du kan mata in din "
+#~ "information."
+#~ msgid "Registering account"
+#~ msgstr "Registrerar konto"
+#~ msgid "<span size=\"smaller\">Example:</span>"
+#~ msgstr "<span size=\"smaller\">Exempel:</span>"
+#~ msgid "Account Name"
+#~ msgstr "Kontonamn"
+#~ msgid "Connection Details"
+#~ msgstr "Anslutningsdetaljer"
+#~ msgid "Do you already have an account set up on a server?"
+#~ msgstr "Har du redan ett konto på en server?"
+#~ msgid "Enter a name for this account"
+#~ msgstr "Ange ett namn för detta konto"
+#~ msgid "Enter the port used in the connection for this account"
+#~ msgstr "Ange porten att ansluta till för detta konto"
+#~ msgid "Enter the server used in the connection for this account"
+#~ msgstr "Ange den server som ska anslutas till för detta konto"
+#~ msgid "Enter your real name here"
+#~ msgstr "Ange ditt riktiga namn här"
+#~ msgid "Finished"
+#~ msgstr "Slutfört"
+#~ msgid "For increased security, enable this option"
+#~ msgstr "För ökad säkerhet, aktivera detta val"
+#~ msgid ""
+#~ "Gossip is a modern client for the Jabber Instant Messaging system.\n"
+#~ "\n"
+#~ "This assistant will help you configure Gossip and connect you to your "
+#~ "favorite Jabber server.\n"
+#~ "\n"
+#~ "To get started, just click \"Forward\"."
+#~ msgstr ""
+#~ "Gossip är en modern klient för snabbmeddelandesystemet Jabber.\n"
+#~ "\n"
+#~ "Denna guide kommer att hjälpa dig att konfigurera Gossip och ansluta dig "
+#~ "till din Jabber-favoritserver.\n"
+#~ "\n"
+#~ "För att börja klickar du bara på \"Framåt\"."
+#~ msgid ""
+#~ "If you have another machine on your network which 'proxies' the "
+#~ "connection to the internet and you want to use it, enable this option"
+#~ msgstr ""
+#~ "Om du har en annan dator på ditt nätverk som fungerar som proxy för "
+#~ "anslutningar till internet och du vill använda den, aktivera detta "
+#~ "alternativ"
+#~ msgid ""
+#~ "If you need to set specific connection details, like a different server "
+#~ "or port, you can configure that here:"
+#~ msgstr ""
+#~ "Om du behöver ställa in specifika anslutningsdetaljer, som en annan "
+#~ "server eller port, kan du konfigurera det här:"
+#~ msgid ""
+#~ "Leave this blank if you don't want your password stored on a public "
+#~ "machine. If you decide to do this, you will be prompted each time you "
+#~ "connect for a password"
+#~ msgstr ""
+#~ "Lämna denna blank om du inte vill lagra ditt lösenord på en publik dator. "
+#~ "Om du väljer att göra det, kommer du att frågas efter ett lösenord varje "
+#~ "gång du ansluter"
+#~ msgid "Registering Account"
+#~ msgstr "Registrerar konto"
+#~ msgid "Resource:"
+#~ msgstr "Resurs:"
+#~ msgid "Welcome to Gossip"
+#~ msgstr "Välkommen till Gossip"
+#~ msgid "What is your name?"
+#~ msgstr "Vad heter du?"
+#~ msgid ""
+#~ "What name do you want to use to identify this account?\n"
+#~ "\n"
+#~ "This name could be something associated with the service provider, for "
+#~ "example, <b>Google</b>."
+#~ msgstr ""
+#~ "Vilket namn vill du använda för att identifiera detta konto?\n"
+#~ "\n"
+#~ "Detta namn skulle kunna vara något som kan kopplas ihop med "
+#~ "tjänsteleverantören, till exempel <b>Google</b>."
+#~ msgid "What password do you want to use?"
+#~ msgstr "Vilket lösenord vill du använda?"
+#~ msgid "What username do you use?"
+#~ msgstr "Vad använder du för användarnamn?"
+#~ msgid "What username do you want to use?"
+#~ msgstr "Vilket användarnamn vill du använda?"
+#~ msgid ""
+#~ "You can change your account settings later by selecting the Edit-"
+#~ ">Accounts menu item."
+#~ msgstr ""
+#~ "Du kan ändra dina kontoinställningar senare genom att välja menyvalet "
+#~ "Redigera->Konton."
+#~ msgid ""
+#~ "You need to set a name for the connection, for example, <b>Home</b> or "
+#~ "<b>Laptop</b>."
+#~ msgstr ""
+#~ "Du behöver ställa in ett namn för anslutningen, till exempel <b>Hem</b> "
+#~ "eller <b>Bärbar dator</b>."
+#~ msgid "Your Account"
+#~ msgstr "Ditt konto"
+#~ msgid "Your Identity"
+#~ msgstr "Din identitet"
+#~ msgid "Your new account has now been set up."
+#~ msgstr "Ditt nya konto är nu inställt."
+#~ msgid "_No"
+#~ msgstr "_Nej"
+#~ msgid "_Yes"
+#~ msgstr "_Ja"
+#~ msgid "<b>Information requested, please wait...</b>"
+#~ msgstr "<b>Information begärd, var vänlig vänta...</b>"
+#~ msgid "%s will be added to your contact list."
+#~ msgstr "%s kommer att läggas till i din kontaktlista."
+#~ msgid "%s ID of new contact:"
+#~ msgstr "%s id för ny kontakt:"
+#~ msgid "Example: %s"
+#~ msgstr "Exempel: %s"
+#~ msgid "Add a contact"
+#~ msgstr "Lägg till en kontakt"
+#~ msgid "Enter the user's contact ID:"
+#~ msgstr "Ange användarens kontakt-ID:"
+#~ msgid ""
+#~ "In order to subscribe to presence notifications from the user, a request "
+#~ "will be sent. Until this request is approved, the user will always be "
+#~ "shown as \"Offline\" in your contact list."
+#~ msgstr ""
+#~ "För att kunna prenumerera på närvaronotifikationer från användaren kommer "
+#~ "en förfrågan att skickas. Användaren kommer alltid att visas som "
+#~ "\"Frånkopplad\" i din kontaktlista till dess att denna förfrågan är "
+#~ "godkänd."
+#~ msgid "In which group do you want to place this contact?"
+#~ msgstr "I vilken grupp vill du placera denna kontakt?"
+#~ msgid "Jabber ID:"
+#~ msgstr "Jabber-id:"
+#~ msgid "Sending request"
+#~ msgstr "Skickar förfrågan"
+#~ msgid "What instant messaging system does the contact use?"
+#~ msgstr "Vilket meddelandesystem använder kontakten?"
+#~ msgid "Which account do you want to add this contact to?"
+#~ msgstr "Till vilket konto vill du lägga till denna kontakt?"
+#~ msgid "_Search..."
+#~ msgstr "_Sök..."
+#~ msgid "_Compact contact list"
+#~ msgstr "_Kompakt kontaktlista"
+#~ msgid "Show accounts and pending connections"
+#~ msgstr "Visa konton och avvaktande anslutningar"
+#~ msgid "Edit"
+#~ msgstr "Redigera"
+#~ msgid "Connecting"
+#~ msgstr "Ansluter"
+#~ msgid "Perhaps you are trying to connect to the wrong port?"
+#~ msgstr "Försöker du kanske ansluta till fel port?"
+#~ msgid "Perhaps the service is not currently running?"
+#~ msgstr "Tjänsten kanske inte är igång just nu?"
+#~ msgid "Check your connection details."
+#~ msgstr "Kontrollera dina anslutningsdetaljer."
+#~ msgid "Perhaps the server is not running this service."
+#~ msgstr "Servern kanske inte kör denna tjänsten."
+#~ msgid "Check your username and password are correct."
+#~ msgstr "Kontrollera att användarnamn och lösenord är korrekta."
+#~ msgid "Re_name group"
+#~ msgstr "Byt _namn på grupp"
+#~ msgid "Rename group"
+#~ msgstr "Byt namn på grupp"
+#~ msgid "_Remove contact"
+#~ msgstr "_Ta bort kontakt"
+#~ msgid ""
+#~ "Please enter your invitation message to:\n"
+#~ "%s"
+#~ msgstr ""
+#~ "Ange ditt inbjudningsmeddelande till:\n"
+#~ "%s"
+# Vi brukar förvisso låta R:et vara åtkomsttangent i "Redigera"
+#~ msgid "_Edit Groups"
+#~ msgstr "R_edigera grupper"
+#~ msgid ""
+#~ "Please enter a new nickname for the contact\n"
+#~ "%s"
+#~ msgstr ""
+#~ "Ange ett nytt smeknamn för kontakten\n"
+#~ "%s"
+#~ msgid "Edit groups for %s"
+#~ msgstr "Redigera grupper för %s"
+# Vi översätter "hide" med "dölj" i GNOME. Gömmer gör man något för att det
+# inte ska hittas, döljer gör man för att det inte ska synas.
+#~ msgid "_Hide Contact List"
+#~ msgstr "_Dölj kontaktlista"
+#~ msgid "/Contact Infor_mation"
+#~ msgstr "/Kontaktinfor_mation"
+#~ msgid "/_View Previous Conversations"
+#~ msgstr "/Visa tidigare samtal"
+#~ msgid "Enable Spell Checker"
+#~ msgstr "Aktivera stavningskontroll"
+#~ msgid "Preset status messages"
+#~ msgstr "Förinställda statusmeddelanden"
+#~ msgid "Preset status messages."
+#~ msgstr "Förinställda statusmeddelanden."
+#~ msgid "Peekaboo"
+#~ msgstr "Peekaboo"
+# Vi översätter "hide" med "dölj" i GNOME. Gömmer gör man något för att det
+# inte ska hittas, döljer gör man för att det inte ska synas.
+#~ msgid "_Show/Hide Contact List"
+#~ msgstr "_Dölj/Visa kontaktlista"
+#~ msgid "An instant messaging applet."
+#~ msgstr "En snabbmeddelandeklient för GNOME"
+#~ msgid "Contact Information for %s"
+#~ msgstr "Kontaktinformation för %s"
+#~ msgid "Convert smiley text into images when chatting"
+#~ msgstr "Konvertera textsmilisar till bilder"
+#~ msgid "Be silent when away"
+#~ msgstr "Var tyst under frånvaro"
+#~ msgid "Be silent when busy"
+#~ msgstr "Var tyst under upptagetläge"
+#~ msgid "<b>Chat Window</b>"
+#~ msgstr "<b>Chattfönster</b>"
+#~ msgid "Join _Group Chat..."
+#~ msgstr "_Gå in i gruppchatt..."
+#~ msgid "Available..."
+#~ msgstr "Tillgänglig..."
+#~ msgid "Busy..."
+#~ msgstr "Upptagen..."
+#~ msgid "Away..."
+#~ msgstr "Frånvarande..."
+#~ msgid "Requesting contact information, please wait..."
+#~ msgstr "Begär kontaktinformation, var vänlig vänta..."
+#~ msgid "Height of main window"
+#~ msgstr "Höjden på huvudfönstret"
+#~ msgid "The X position of the main window."
+#~ msgstr "X-positionen av huvudfönstret."
+#~ msgid "The Y position of the main window."
+#~ msgstr "Y-positionen av huvudfönstret."
+#~ msgid "The width of the main window."
+#~ msgstr "Bredden på huvudfönstret."
+#~ msgid "Whether spell checking should be turned on."
+#~ msgstr "Huruvida stavningskontroll ska vara påslaget."
+#~ msgid "Width of the main window"
+#~ msgstr "Bredden på huvudfönstret"
+#~ msgid "X position of main window"
+#~ msgstr "X-positionen av huvudfönstret"
+#~ msgid "Y position of main window"
+#~ msgstr "Y-positionen av huvudfönstret"
+#~ msgid "<b>Appearance and Behavior</b>"
+#~ msgstr "<b>Utseende och beteende</b>"
+#~ msgid "Check spelling while I _type"
+#~ msgstr "Kontrollera stavning medan jag skriver"
+#~ msgid "Close this chat window"
+#~ msgstr "Stäng detta chattfönster"
+#~ msgid "Requested Information"
+#~ msgstr "Information efterfrågad"
+#~ msgid "Requested information."
+#~ msgstr "Information efterfrågad."
+#~ msgid "/_Contact Information"
+#~ msgstr "/_Kontaktinformation"
+#~ msgid "Contact _Information"
+#~ msgstr "Kontakti_nformation"
+#~ msgid "Gossip - Accounts"
+#~ msgstr "Gossip - konton"
+#~ msgid "Por_t:"
+#~ msgstr "_Port:"
+#~ msgid "/_Invite to Chat Conference"
+#~ msgstr "/_Bjud in till chattkonferens"
+#~ msgid "%s has gone offline"
+#~ msgstr "%s kopplade från"
+#~ msgid "/View Message _History"
+#~ msgstr "/Visa _meddelandehistorik"
+#~ msgid "View Message _History"
+#~ msgstr "Visa _meddelandehistorik"
+#~ msgid "View Message Hi_story"
+#~ msgstr "Visa _meddelandehistorik"
+#~ msgid "View Message History"
+#~ msgstr "Visa meddelandehistorik"
+#~ msgid "%sChat - %s"
+#~ msgstr "%sChatt - %s"
+#~ msgid "Gossip - Group Chat"
+#~ msgstr "Gossip - gruppchatt"
+#~ msgid "Gossip - New Chatroom"
+#~ msgstr "Gossip - nytt chattrum"
+#~ msgid "Gossip - Add contact"
+#~ msgstr "Gossip - lägg till kontakt"
+#~ msgid "Gossip - Contact Information"
+#~ msgstr "Gossip - kontaktinformation"
+#~ msgid "Gossip - Edit Groups"
+#~ msgstr "Gossip - redigera grupper"
+#~ msgid "Gossip - New Account"
+#~ msgstr "Gossip - nytt konto"
+#~ msgid "Gossip - Personal Details"
+#~ msgstr "Gossip - personlig information"
+#~ msgid "Gossip - Preferences"
+#~ msgstr "Gossip - inställningar"
+#~ msgid "Gossip - Spell Checker"
+#~ msgstr "Gossip - stavningskontroll"
+#~ msgid "Gossip - Status Message"
+#~ msgstr "Gossip - statusmeddelande"
+#~ msgid "Gossip - View Message History"
+#~ msgstr "Gossip - visa meddelandehistorik"
+#~ msgid "Written by:"
+#~ msgstr "Skrivet av:"
+#~ msgid "Artwork by:"
+#~ msgstr "Grafik av:"
+#~ msgid "Translated by:"
+#~ msgstr "Översatt av:"
+#~ msgid "/Show _Log"
+#~ msgstr "/_Visa logg"
+#~ msgid "View Lo_g"
+#~ msgstr "_Visa logg"
+#~ msgid ""
+#~ "You can identify this account with a name, for example, <b>Home</b> or "
+#~ "<b>Work</b>. Choose a name for this account:"
+#~ msgstr ""
+#~ "Du kan identifiera detta kontot med ett namn, till exempel <b>Hemma</b> "
+#~ "eller <b>Jobb</b>. Välj ett namn för kontot:"
+#~ msgid "Open"
+#~ msgstr "Öppet"
+#~ msgid "Account ID"
+#~ msgstr "Kontoid"
+#~ msgid "Could not open connection"
+#~ msgstr "Kunde inte öppna anslutning"
+#~ msgid "Could not find the server you wanted to use"
+#~ msgstr "Kunde inte hitta servern du ville använda"
+#~ msgid "Connection to the server failed."
+#~ msgstr "Anslutningen till servern misslyckades."
+#~ msgid "Connection could not be created"
+#~ msgstr "Anslutning kunde inte skapas"
+#~ msgid "Bad Request"
+#~ msgstr "Felaktig förfrågan"
+#~ msgid "Payment Required"
+#~ msgstr "Betalning krävd"
+#~ msgid "Not Found"
+#~ msgstr "Inte hittad"
+#~ msgid "Not Allowed"
+#~ msgstr "Inte tillåten"
+#~ msgid "Not Acceptable"
+#~ msgstr "Inte acceptabel"
+#~ msgid "Request Timeout"
+#~ msgstr "Förfrågan timade ut"
+#~ msgid "Conflict"
+#~ msgstr "Konflikt"
+#~ msgid "Remote Server Error"
+#~ msgstr "Fjärrserverfel"
+#~ msgid "Service Unavailable"
+#~ msgstr "Tjänst otillgänglig"
+#~ msgid "Custom"
+#~ msgstr "Anpassad"
+#~ msgid "Check the server host name is correct and is available."
+#~ msgstr ""
+#~ "Kontrollera att serverns namn är korrent och att den finns tillgänglig."
+# Dessa meddelanden slutar inte båda i punkt, borde kanske rapporteras
+#~ msgid "Gossip will now try to use your account:"
+#~ msgstr "Gossip kommer nu att försöka använda ditt konto:"
+#~ msgid "Gossip will now try to register the account:"
+#~ msgstr "Gossip kommer nu att försöka registrera kontot:"
+#~ msgid "Reason:"
+#~ msgstr "Orsak:"
+#~ msgid "R_esource:"
+#~ msgstr "R_esurs:"
+#~ msgid "<b>Personal Information</b>"
+#~ msgstr "<b>Personlig information</b>"
+#~ msgid "Choose a Server"
+#~ msgstr "Välj en server"
+#~ msgid "On what server do you have an account?"
+#~ msgstr "På vilken server har du ett konto?"
+#~ msgid "_Jabber ID of new contact:"
+#~ msgstr "_Jabber-id för ny kontakt:"
+#~ msgid "<b>Preferences</b>"
+#~ msgstr "<b>Inställningar</b>"
+#~ msgid "Connect _Server:"
+#~ msgstr "Anslut till _server:"
+#~ msgid "_Automatically Connect"
+#~ msgstr "_Anslut automatiskt"
+#~ msgid "_Resource:"
+#~ msgstr "_Resurs:"
+#~ msgid ""
+#~ "The default account is used for information like your name in chat "
+#~ "windows."
+#~ msgstr ""
+#~ "Standardkontot används för information som ditt namn i chattfönster."
+#~ msgid "_Connect..."
+#~ msgstr "_Anslut..."
+#, fuzzy
+#~ msgid ""
+#~ "<b>Configuring your new service...</b>\n"
+#~ "This will take a few moments, please wait."
+#~ msgstr ""
+#~ "<b>Söker efter den bästa servern...</b>\n"
+#~ "Detta kommer att ta en stund, var god vänta."
+
+#, fuzzy
+#~ msgid "<b>Preferred Service</b>"
+#~ msgstr "<b>Rekommenderade tjänster</b>"
+#~ msgid "<b>Recommended Services</b>"
+#~ msgstr "<b>Rekommenderade tjänster</b>"
+
+#, fuzzy
+#~ msgid ""
+#~ "<b>Requested service requirements...</b>\n"
+#~ "This will take a few moments, please wait."
+#~ msgstr ""
+#~ "<b>Söker efter den bästa servern...</b>\n"
+#~ "Detta kommer att ta en stund, var god vänta."
+#~ msgid "Add Account"
+#~ msgstr "Lägg till konto"
+#~ msgid "Add Another Account"
+#~ msgstr "Lägg till ytterligare konto"
+#~ msgid "Configuring Service"
+#~ msgstr "Konfigurerar tjänst"
+#~ msgid "Nick name:"
+#~ msgstr "Smeknamn:"
+#~ msgid "Please complete the details below to set up your account: "
+#~ msgstr "Fyll i detaljerna nedan för att ställa in ditt konto: "
+#~ msgid "Remove Account"
+#~ msgstr "Ta bort konto"
+#~ msgid "Service Details"
+#~ msgstr "Tjänstedetaljer"
+#~ msgid "Service:"
+#~ msgstr "Tjänst:"
+#~ msgid ""
+#~ "This wizard will allow you to configure your account settings for another "
+#~ "protocol. "
+#~ msgstr ""
+#~ "Denna guide kommer att låta dig konfigurera dina kontoinställningar för "
+#~ "ytterligare ett protokoll. "
+
+#, fuzzy
+#~ msgid "Transport Accounts"
+#~ msgstr "Jabberkonto"
+#~ msgid "Which protocol would you like to set up? "
+#~ msgstr "Vilket protokoll vill du konfigurera? "
+#~ msgid "Edit List..."
+#~ msgstr "Redigera listan..."
+#~ msgid "Gossip - Status Presets"
+#~ msgstr "Gossip - förinställd status"
+
+#, fuzzy
+#~ msgid "Choose _from list:"
+#~ msgstr "Välj från lista:"
+#~ msgid "Jabber.com"
+#~ msgstr "Jabber.com"
+#~ msgid "Jabber.org"
+#~ msgstr "Jabber.org"
+
+#, fuzzy
+#~ msgid "Use a _different server"
+#~ msgstr "Använd en annan server"
+#~ msgid "_Account Information"
+#~ msgstr "_Kontoinformation"
+#~ msgid "Searching Local Services..."
+#~ msgstr "Söker lokala tjänster..."
+
+#, fuzzy
+#~ msgid "This will be used to configure your account details."
+#~ msgstr ""
+#~ "Denna guide kommer att låta dig konfigurera dina kontoinställningar för "
+#~ "ytterligare ett protokoll."
+
+#, fuzzy
+#~ msgid "Configuring Roster"
+#~ msgstr "Konfigurerar tjänst"
+
+#, fuzzy
+#~ msgid "Registration Successful!"
+#~ msgstr "Registrerar konto"
+#~ msgid "Service"
+#~ msgstr "Tjänst"
+
+#, fuzzy
+#~ msgid "Registering With Service"
+#~ msgstr "Konfigurerar tjänst"
+#~ msgid "From:"
+#~ msgstr "Från:"
+#~ msgid "In reply to:"
+#~ msgstr "Svar på:"
+#~ msgid "To:"
+#~ msgstr "Till:"
+#~ msgid "_Reply..."
+#~ msgstr "_Svara..."
+#~ msgid "_Send"
+#~ msgstr "_Skicka"
+#~ msgid "<b>Connect to server</b>"
+#~ msgstr "<b>Anslut till server</b>"
+#~ msgid "C_onnect"
+#~ msgstr "A_nslut"
+#~ msgid " "
+#~ msgstr " "
+#~ msgid "<b>Available chat rooms</b>"
+#~ msgstr "<b>Tillgängliga chattrum</b>"
+#~ msgid "N_ickname:"
+#~ msgstr "Smek_namn:"
+#~ msgid "_Add"
+#~ msgstr "_Lägg till"
+#~ msgid "<b>Preset status messages</b>"
+#~ msgstr "<b>Förinställda statusmeddelanden</b>"
+#~ msgid "<i>Information not available</i>"
+#~ msgstr "<i>Informationen inte tillgänglig</i>"
+#~ msgid "Information about ..."
+#~ msgstr "Information om..."
+#~ msgid "Jabber Account"
+#~ msgstr "Jabberkonto"
+#~ msgid "Personal information"
+#~ msgstr "Personlig information"
+#~ msgid "Status Message"
+#~ msgstr "Statusmeddelande"
+#~ msgid "What request message do you want to send to %s?"
+#~ msgstr "Vilket förfrågansmeddelande vill du skicka till %s?"
+#~ msgid "%s wants to be notified of your status."
+#~ msgstr "%s vill bli meddelad om din status."
+#~ msgid "Add to your contact list"
+#~ msgstr "Lägg till i din kontaktlista"
+#~ msgid "What request message do you want to send to ...?"
+#~ msgstr "Vilket förfrågansmeddelande vill du skicka till ..."
+#~ msgid "Make sure that your account information is correct."
+#~ msgstr "Kontrollera att din kontoinformation är korrekt."
+#~ msgid "You were disconnected from the server. Do you want to reconnect?"
+#~ msgstr "Du frånkopplades från servern. Vill du återansluta?"
+#~ msgid ""
+#~ "Make sure that your account information is correct. The server may also "
+#~ "currently be unavailable."
+#~ msgstr ""
+#~ "Kontrollera att din kontoinformation är korrekt. Servern kan också vara "
+#~ "otillgänglig för tillfället."
+#~ msgid "An error occurred when chatting in the group chat %s."
+#~ msgstr "Ett fel inträffade under samtal i gruppchatten %s."
+#~ msgid "Details:"
+#~ msgstr "Detaljer:"
+#~ msgid "Unable to enter the group chat %s."
+#~ msgstr "Kunde inte gå in i gruppchatten %s."
+#~ msgid "An error occurred when chatting with %s."
+#~ msgstr "Ett fel inträffade under chatt med %s."
+#~ msgid "Discover Services"
+#~ msgstr "Upptäck tjänster"
+#~ msgid "Sound"
+#~ msgstr "Ljud"
+#~ msgid ""
+#~ "Please enter your user name, password and all other required details "
+#~ "below to set up your account."
+#~ msgstr ""
+#~ "Ange ditt användarnamn, lösenord och alla andra nödvändiga detaljer nedan "
+#~ "för att konfigurera ditt konto."
+#~ msgid "Username:"
+#~ msgstr "Användarnamn:"
+
diff --git a/gnome-2-22/po/tr.po b/gnome-2-22/po/tr.po
new file mode 100644
index 000000000..6d60e755e
--- /dev/null
+++ b/gnome-2-22/po/tr.po
@@ -0,0 +1,854 @@
+# translation of tr.po to Turkish
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+# Görkem Çetin <gorkem@kde.org>, 2004.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: tr\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-05-15 23:46+0200\n"
+"PO-Revision-Date: 2004-03-21 11:55+0000\n"
+"Last-Translator: Görkem Çetin <gorkem@kde.org>\n"
+"Language-Team: Turkish <kde-i18n-tr@kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.3.1\n"
+
+#: ../data/empathy.desktop.in.h:1
+msgid "Empathy Instant Messenger"
+msgstr ""
+
+#: ../data/empathy.desktop.in.h:2
+msgid "Instant Messenger"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:1
+msgid "Always open a separate chat window for new chats."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:2
+msgid "Chat window theme"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:3
+msgid ""
+"Comma separated list of spell checker languages to use (e.g. en, fr, nl)."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:4
+msgid "Compact contact list"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:5
+msgid "Contact list sort criterium"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:6
+msgid "Default directory to select an avatar image from"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:7
+msgid "Enable popup when contact is available"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:8
+msgid "Enable sound when away"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:9
+msgid "Enable sound when busy"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:10
+msgid "Enable spell checker"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:11
+msgid "Hide main window"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:12
+msgid "Hide the main window."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:13
+msgid "Open new chats in separate windows"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:14
+msgid "Show avatars"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:15
+msgid "Show hint about closing the main window"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:16
+msgid "Show offline contacts"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:17
+msgid "Spell checking languages"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:18
+msgid "The last directory that an avatar image was chosen from."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:19
+msgid "The theme that is used to display the conversation in chat windows."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:20
+msgid "Use graphical smileys"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:21
+msgid "Use notification sounds"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:22
+msgid "Use theme for chat rooms"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:23
+msgid ""
+"Whether or not to check words typed against the languages you want to check "
+"with."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:24
+msgid ""
+"Whether or not to convert smileys into graphical images in conversations."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:25
+msgid "Whether or not to play a sound when messages arrive."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:26
+msgid "Whether or not to play sounds when away."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:27
+msgid "Whether or not to play sounds when busy."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:28
+msgid "Whether or not to show a popup when a contact becomes available."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:29
+msgid ""
+"Whether or not to show avatars for contacts in the contact list and chat "
+"windows."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:30
+msgid "Whether or not to show contacts that are offline in the contact list."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:31
+msgid ""
+"Whether or not to show the message dialog about closing the main window with "
+"the 'x' button in the title bar."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:32
+msgid "Whether to show the contact list in compact mode or not."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:33
+msgid "Whether to use the theme for chat rooms or not."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:34
+msgid ""
+"Which criterium to use when sorting the contact list. Default is to use sort "
+"by the contact's name with the value \"name\". A value of \"state\" will "
+"sort the contact list by state."
+msgstr ""
+
+#: ../libempathy/gossip-contact.c:654 ../libempathy/gossip-presence.c:184
+#: ../libempathy/gossip-presence.c:283
+msgid "Offline"
+msgstr ""
+
+#: ../libempathy/gossip-presence.c:274
+msgid "Available"
+msgstr ""
+
+#: ../libempathy/gossip-presence.c:276
+msgid "Busy"
+msgstr ""
+
+#: ../libempathy/gossip-presence.c:279
+msgid "Away"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.c:254
+msgid "Show and edit accounts"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.c:456
+msgid "Group"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.c:477
+msgid "Contact"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:1
+msgid "Contact List - Empathy"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:2
+msgid "Context"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:3
+msgid "Join _Favorites"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:4
+#: ../libempathy-gtk/gossip-chat.glade.h:10
+msgid "Join _New..."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:5
+msgid "Manage Favorites..."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:6
+msgid "Show _Offline Contacts"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:7
+msgid "_About"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:8
+msgid "_Accounts"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:9
+#: ../libempathy-gtk/gossip-chat.glade.h:15
+msgid "_Add Contact..."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:10
+#: ../libempathy-gtk/gossip-contact-list.c:298
+msgid "_Chat"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:11
+msgid "_Contents"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:12
+#: ../libempathy-gtk/gossip-chat.glade.h:21
+#: ../libempathy-gtk/gossip-contact-list.c:310
+msgid "_Edit"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:13
+msgid "_Help"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:14
+#: ../libempathy-gtk/empathy-status-icon.glade.h:2
+msgid "_New Message..."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:15
+msgid "_Personal Information"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:16
+msgid "_Preferences"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:17
+#: ../libempathy-gtk/empathy-status-icon.glade.h:3
+msgid "_Quit"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:18
+#: ../libempathy-gtk/gossip-chat.glade.h:25
+msgid "_Room"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:19
+#: ../libempathy-gtk/gossip-chat.glade.h:28
+#: ../libempathy-gtk/gossip-contact-list.c:326
+msgid "_View Previous Conversations"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:1
+msgid "Status"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:4
+msgid "_Show Contact List"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-about-dialog.c:63
+msgid ""
+"Empathy is free software; you can redistribute it and/or modify it under the "
+"terms of the GNU General Public License as published by the Free Software "
+"Foundation; either version 2 of the License, or (at your option) any later "
+"version."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-about-dialog.c:67
+msgid ""
+"Empathy is distributed in the hope that it will be useful, but WITHOUT ANY "
+"WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS "
+"FOR A PARTICULAR PURPOSE. See the GNU General Public License for more "
+"details."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-about-dialog.c:71
+msgid ""
+"You should have received a copy of the GNU General Public License along with "
+"Empathy; if not, write to the Free Software Foundation, Inc., 51 Franklin "
+"Street, Fifth Floor, Boston, MA 02110-130159 USA"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-about-dialog.c:99
+msgid "An Instant Messaging client for GNOME"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-about-dialog.c:105
+msgid "translator-credits"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:224
+msgid "Disable"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:227
+msgid "Enable"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:261
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:3
+msgid "<b>No Account Selected</b>"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:263
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to start configuring.\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want "
+"to configure in the list on the left."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:272
+msgid "<b>No Accounts Configured</b>"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:274
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to start configuring."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:362
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:6
+msgid "Accounts"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:857
+#, c-format
+msgid ""
+"You are about to remove your %s account!\n"
+"Are you sure you want to proceed?"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:863
+msgid ""
+"Any associated conversations and chat rooms will NOT be removed if you "
+"decide to proceed.\n"
+"\n"
+"Should you decide to add the account back at a later time, they will still "
+"be available."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:1
+msgid "<b>Account</b>"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:2
+msgid "<b>New Account</b>"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:4
+msgid "<b>Settings</b>"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:5
+msgid "A unique name for this account to identify it personally to you."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:7
+msgid "Cr_eate"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:8
+msgid "Imendio "
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:9
+msgid "Jabber"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:10
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to started configuring.\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want "
+"to configure in the list on the left."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:13
+msgid "_Name:"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:14
+msgid "_Type:"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-account-widget-generic.c:144
+#: ../libempathy-gtk/gossip-account-widget-generic.c:186
+#, c-format
+msgid "%s:"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:1
+msgid ""
+"<small><b><span foreground=\"#555\">Example: user@jabber.org</span></b></"
+"small>"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:2
+msgid "Forget password and clear the entry."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:3
+msgid "Login I_D:"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:4
+msgid "Pass_word:"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:5
+msgid "Reso_urce:"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:6
+msgid "Use encryption (SS_L)"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:7
+msgid "_Port:"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:8
+msgid "_Server:"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:9
+msgid "jabber account settings"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.c:314
+msgid "Disconnected"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.c:858
+msgid "Insert Smiley"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.c:906
+msgid "_Check Word Spelling..."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.c:1244
+msgid "Connected"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:1
+msgid "C_lear"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:2
+msgid "Change _Topic..."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:3
+msgid "Chat"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:4
+msgid "Contact Infor_mation"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:5
+msgid "Cu_t"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:6
+msgid "In_vite..."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:7
+msgid "Insert _Smiley"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:8
+msgid "Invitation _message:"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:9
+msgid "Invite"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:11
+msgid "Move Tab _Left"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:12
+msgid "Move Tab _Right"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:13
+msgid "Select who would you like to invite:"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:14
+msgid "You have been invited to join a chat conference."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:16
+msgid "_Add To Favorites"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:17
+msgid "_Close"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:18
+msgid "_Conversation"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:19
+msgid "_Copy"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:20
+msgid "_Detach Tab"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:22
+msgid "_Next Tab"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:23
+msgid "_Paste"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:24
+msgid "_Previous Tab"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:26
+msgid "_Show Contacts"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:27
+msgid "_Tabs"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat-view.c:544
+msgid "_Copy Link Address"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat-view.c:552
+msgid "_Open Link"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat-view.c:889
+msgid "%A %d %B %Y"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat-window.c:685
+#: ../libempathy-gtk/gossip-chat-window.c:715
+msgid "New Message"
+msgid_plural "New Messages"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../libempathy-gtk/gossip-chat-window.c:691
+msgid "Chat Room"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat-window.c:696
+#: ../libempathy-gtk/gossip-chat-window.c:719
+#, c-format
+msgid "Conversation"
+msgid_plural "Conversations (%d)"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../libempathy-gtk/gossip-chat-window.c:1295
+msgid "Typing a message."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-contact-list.c:290
+msgid "_Contact"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-contact-list.c:294
+msgid "_Group"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-contact-list.c:298
+msgid "Chat with contact"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-contact-list.c:302
+msgid "Infor_mation"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-contact-list.c:302
+msgid "View contact information"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-contact-list.c:306
+msgid "Re_name"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-contact-list.c:306
+msgid "Rename"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-contact-list.c:310
+msgid "Edit the groups and name for this contact"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-contact-list.c:314
+msgid "_Remove"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-contact-list.c:314
+msgid "Remove contact"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-contact-list.c:318
+msgid "_Invite to Chat Room"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-contact-list.c:318
+msgid "Invite to a currently open chat room"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-contact-list.c:322
+msgid "_Send File..."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-contact-list.c:322
+msgid "Send a file"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-contact-list.c:326
+msgid "View previous conversations with this contact"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.c:250
+msgid "Language"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:1
+msgid "<b>Appearance</b>"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:2
+msgid "<b>Audio</b>"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:3
+msgid "<b>Behaviour</b>"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:4
+msgid "<b>Contact List</b>"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:5
+msgid "<b>Languages</b>"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:6
+msgid "<b>Options</b>"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:7
+msgid "<b>Visual</b>"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:8
+msgid ""
+"<small>The list of languages reflects only the languages for which you have "
+"a dictionary installed.</small>"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:9
+msgid "Avatars are user chosen images shown in the contact list"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:10
+msgid "Chat Th_eme:"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:11
+msgid "Display notifications when contacts come _online"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:12
+msgid "Enable sounds when _away"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:13
+msgid "Enable sounds when _busy"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:14
+msgid "General"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:15
+msgid "Notifications"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:16
+msgid "Preferences"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:17
+msgid "Show _avatars"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:18
+msgid "Show _smileys as images"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:19
+msgid "Show co_mpact contact list"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:20
+msgid "Sort by _name"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:21
+msgid "Sort by s_tate"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:22
+msgid "Spell Checking"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:23
+msgid "Themes"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:24
+msgid "_Enable spell checking"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:25
+msgid "_Open new chats in separate windows"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:26
+msgid "_Play sound when messages arrive"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:27
+msgid "_Use for chat rooms"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:702
+msgid "Custom message..."
+msgstr ""
+
+#. Clear list
+#: ../libempathy-gtk/gossip-presence-chooser.c:724
+msgid "Clear List..."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:803
+msgid "Are you sure you want to clear the list?"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:807
+msgid ""
+"This will remove any custom messages you have added to the list of preset "
+"status messages."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:812
+msgid "Clear List"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-presence-chooser.glade.h:1
+msgid "Enter status message:"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-presence-chooser.glade.h:2
+msgid "Status Message Presets"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-presence-chooser.glade.h:3
+msgid "_Add to status message list"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-private-chat.c:198
+#, c-format
+msgid "%s went offline"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-private-chat.c:212
+#, c-format
+msgid "%s has come online"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-theme-manager.c:87
+msgid "Classic"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-theme-manager.c:88
+msgid "Simple"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-theme-manager.c:89
+msgid "Clean"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-theme-manager.c:90
+msgid "Blue"
+msgstr ""
+
+#: ../src/empathy-main.c:145
+msgid "Don't connect on startup"
+msgstr ""
+
+#: ../src/empathy-main.c:155
+msgid "- Empathy Instant Messenger"
+msgstr ""
diff --git a/gnome-2-22/po/uk.po b/gnome-2-22/po/uk.po
new file mode 100644
index 000000000..92f447985
--- /dev/null
+++ b/gnome-2-22/po/uk.po
@@ -0,0 +1,1915 @@
+# Ukrainian translation for gossip
+# Copyright (C) 2004 Free Software Foundation, Inc.
+# This file is distributed under the same license as the gossip package.
+# Sergiy Dolgopolov <virgo@gnome.org.ua>, 2004.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gossip 0.7.5\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-05-15 23:46+0200\n"
+"PO-Revision-Date: 2004-05-17 20:45+0200\n"
+"Last-Translator: Sergiy Dolgopolov <virgo@gnome.org.ua>\n"
+"Language-Team: Ukrainian <uk@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../data/empathy.desktop.in.h:1
+#, fuzzy
+msgid "Empathy Instant Messenger"
+msgstr "Програма для обміну повідомленнями"
+
+#: ../data/empathy.desktop.in.h:2
+msgid "Instant Messenger"
+msgstr "Програма для обміну повідомленнями"
+
+#: ../data/empathy.schemas.in.h:1
+msgid "Always open a separate chat window for new chats."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:2
+msgid "Chat window theme"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:3
+msgid ""
+"Comma separated list of spell checker languages to use (e.g. en, fr, nl)."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:4
+#, fuzzy
+msgid "Compact contact list"
+msgstr "Додати в список контактів"
+
+#: ../data/empathy.schemas.in.h:5
+msgid "Contact list sort criterium"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:6
+msgid "Default directory to select an avatar image from"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:7
+msgid "Enable popup when contact is available"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:8
+#, fuzzy
+msgid "Enable sound when away"
+msgstr "Не програвати звук у стані \"Відійшов\""
+
+#: ../data/empathy.schemas.in.h:9
+#, fuzzy
+msgid "Enable sound when busy"
+msgstr "Не програвати звук у стані \"зайнятий \""
+
+#: ../data/empathy.schemas.in.h:10
+#, fuzzy
+msgid "Enable spell checker"
+msgstr "Gossіp - Відправлення повідомлення"
+
+#: ../data/empathy.schemas.in.h:11
+msgid "Hide main window"
+msgstr "Сховати головне вікно"
+
+#: ../data/empathy.schemas.in.h:12
+msgid "Hide the main window."
+msgstr "Сховати головне вікно"
+
+#: ../data/empathy.schemas.in.h:13
+msgid "Open new chats in separate windows"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:14
+#, fuzzy
+msgid "Show avatars"
+msgstr "Показати список контактів"
+
+#: ../data/empathy.schemas.in.h:15
+#, fuzzy
+msgid "Show hint about closing the main window"
+msgstr "Висота головного вікна."
+
+#: ../data/empathy.schemas.in.h:16
+msgid "Show offline contacts"
+msgstr "Показувати відсутніх"
+
+#: ../data/empathy.schemas.in.h:17
+msgid "Spell checking languages"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:18
+msgid "The last directory that an avatar image was chosen from."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:19
+msgid "The theme that is used to display the conversation in chat windows."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:20
+msgid "Use graphical smileys"
+msgstr "Використовувати графічні смайли"
+
+#: ../data/empathy.schemas.in.h:21
+msgid "Use notification sounds"
+msgstr "Використовувати звуки"
+
+#: ../data/empathy.schemas.in.h:22
+msgid "Use theme for chat rooms"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:23
+msgid ""
+"Whether or not to check words typed against the languages you want to check "
+"with."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:24
+msgid ""
+"Whether or not to convert smileys into graphical images in conversations."
+msgstr "Чи конвертувати смайли в графічне представлення."
+
+#: ../data/empathy.schemas.in.h:25
+msgid "Whether or not to play a sound when messages arrive."
+msgstr "Чи використовувати звук при приході повідомлення."
+
+#: ../data/empathy.schemas.in.h:26
+msgid "Whether or not to play sounds when away."
+msgstr "Чи програвати звук коли статус відсутність."
+
+#: ../data/empathy.schemas.in.h:27
+msgid "Whether or not to play sounds when busy."
+msgstr "Чи програвати звук коли статус зайнятий."
+
+#: ../data/empathy.schemas.in.h:28
+#, fuzzy
+msgid "Whether or not to show a popup when a contact becomes available."
+msgstr "Чи використовувати звук при приході повідомлення."
+
+#: ../data/empathy.schemas.in.h:29
+#, fuzzy
+msgid ""
+"Whether or not to show avatars for contacts in the contact list and chat "
+"windows."
+msgstr "Чи показувати відсутніх користувачів у контактному листі."
+
+#: ../data/empathy.schemas.in.h:30
+msgid "Whether or not to show contacts that are offline in the contact list."
+msgstr "Чи показувати відсутніх користувачів у контактному листі."
+
+#: ../data/empathy.schemas.in.h:31
+msgid ""
+"Whether or not to show the message dialog about closing the main window with "
+"the 'x' button in the title bar."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:32
+#, fuzzy
+msgid "Whether to show the contact list in compact mode or not."
+msgstr "Чи показувати відсутніх користувачів у контактному листі."
+
+#: ../data/empathy.schemas.in.h:33
+msgid "Whether to use the theme for chat rooms or not."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:34
+msgid ""
+"Which criterium to use when sorting the contact list. Default is to use sort "
+"by the contact's name with the value \"name\". A value of \"state\" will "
+"sort the contact list by state."
+msgstr ""
+
+#: ../libempathy/gossip-contact.c:654 ../libempathy/gossip-presence.c:184
+#: ../libempathy/gossip-presence.c:283
+msgid "Offline"
+msgstr "Відключений"
+
+#: ../libempathy/gossip-presence.c:274
+msgid "Available"
+msgstr "Доступний"
+
+#: ../libempathy/gossip-presence.c:276
+msgid "Busy"
+msgstr "Зайнятий"
+
+#: ../libempathy/gossip-presence.c:279
+msgid "Away"
+msgstr "Відійшов"
+
+#: ../libempathy-gtk/empathy-main-window.c:254
+#, fuzzy
+msgid "Show and edit accounts"
+msgstr "Показати список контактів"
+
+#: ../libempathy-gtk/empathy-main-window.c:456
+msgid "Group"
+msgstr "Група"
+
+#: ../libempathy-gtk/empathy-main-window.c:477
+#, fuzzy
+msgid "Contact"
+msgstr "_Додати контакт..."
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:1
+#, fuzzy
+msgid "Contact List - Empathy"
+msgstr "_Сховати список контактів"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:2
+#, fuzzy
+msgid "Context"
+msgstr "З'єднатися"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:3
+#, fuzzy
+msgid "Join _Favorites"
+msgstr "_Редагувати переваги..."
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:4
+#: ../libempathy-gtk/gossip-chat.glade.h:10
+msgid "Join _New..."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:5
+msgid "Manage Favorites..."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:6
+msgid "Show _Offline Contacts"
+msgstr "_Показувати відсутніх"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:7
+#, fuzzy
+msgid "_About"
+msgstr "_Підтвердити"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:8
+#, fuzzy
+msgid "_Accounts"
+msgstr "_Підтвердити"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:9
+#: ../libempathy-gtk/gossip-chat.glade.h:15
+msgid "_Add Contact..."
+msgstr "_Додати контакт..."
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:10
+#: ../libempathy-gtk/gossip-contact-list.c:298
+msgid "_Chat"
+msgstr "_Дії"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:11
+#, fuzzy
+msgid "_Contents"
+msgstr "З'єднатися"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:12
+#: ../libempathy-gtk/gossip-chat.glade.h:21
+#: ../libempathy-gtk/gossip-contact-list.c:310
+msgid "_Edit"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:13
+msgid "_Help"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:14
+#: ../libempathy-gtk/empathy-status-icon.glade.h:2
+msgid "_New Message..."
+msgstr "_Послати повідомлення..."
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:15
+#, fuzzy
+msgid "_Personal Information"
+msgstr "Особиста інформація"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:16
+msgid "_Preferences"
+msgstr "_Настройки"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:17
+#: ../libempathy-gtk/empathy-status-icon.glade.h:3
+msgid "_Quit"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:18
+#: ../libempathy-gtk/gossip-chat.glade.h:25
+#, fuzzy
+msgid "_Room"
+msgstr "_Кімната:"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:19
+#: ../libempathy-gtk/gossip-chat.glade.h:28
+#: ../libempathy-gtk/gossip-contact-list.c:326
+#, fuzzy
+msgid "_View Previous Conversations"
+msgstr "_Бесіда"
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:1
+msgid "Status"
+msgstr "Стан"
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:4
+msgid "_Show Contact List"
+msgstr "Показати список контактів"
+
+#: ../libempathy-gtk/gossip-about-dialog.c:63
+msgid ""
+"Empathy is free software; you can redistribute it and/or modify it under the "
+"terms of the GNU General Public License as published by the Free Software "
+"Foundation; either version 2 of the License, or (at your option) any later "
+"version."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-about-dialog.c:67
+msgid ""
+"Empathy is distributed in the hope that it will be useful, but WITHOUT ANY "
+"WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS "
+"FOR A PARTICULAR PURPOSE. See the GNU General Public License for more "
+"details."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-about-dialog.c:71
+msgid ""
+"You should have received a copy of the GNU General Public License along with "
+"Empathy; if not, write to the Free Software Foundation, Inc., 51 Franklin "
+"Street, Fifth Floor, Boston, MA 02110-130159 USA"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-about-dialog.c:99
+#, fuzzy
+msgid "An Instant Messaging client for GNOME"
+msgstr "Gossip, Клієнт Jabber для середовища GNOME"
+
+#: ../libempathy-gtk/gossip-about-dialog.c:105
+#, fuzzy
+msgid "translator-credits"
+msgstr "Sergiy Dolgopolov"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:224
+#, fuzzy
+msgid "Disable"
+msgstr "Доступний"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:227
+msgid "Enable"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:261
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:3
+#, fuzzy
+msgid "<b>No Account Selected</b>"
+msgstr "<b>Переваги:</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:263
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to start configuring.\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want "
+"to configure in the list on the left."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:272
+#, fuzzy
+msgid "<b>No Accounts Configured</b>"
+msgstr "<b>Переваги:</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:274
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to start configuring."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:362
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:6
+#, fuzzy
+msgid "Accounts"
+msgstr "Обліковий запис Jabber"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:857
+#, c-format
+msgid ""
+"You are about to remove your %s account!\n"
+"Are you sure you want to proceed?"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:863
+msgid ""
+"Any associated conversations and chat rooms will NOT be removed if you "
+"decide to proceed.\n"
+"\n"
+"Should you decide to add the account back at a later time, they will still "
+"be available."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:1
+#, fuzzy
+msgid "<b>Account</b>"
+msgstr "<b>Переваги:</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:2
+#, fuzzy
+msgid "<b>New Account</b>"
+msgstr "<b>Переваги:</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:4
+#, fuzzy
+msgid "<b>Settings</b>"
+msgstr "Стан"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:5
+msgid "A unique name for this account to identify it personally to you."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:7
+#, fuzzy
+msgid "Cr_eate"
+msgstr "Розмова"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:8
+msgid "Imendio "
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:9
+msgid "Jabber"
+msgstr "Jabber"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:10
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to started configuring.\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want "
+"to configure in the list on the left."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:13
+#, fuzzy
+msgid "_Name:"
+msgstr "Назва:"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:14
+#, fuzzy
+msgid "_Type:"
+msgstr "_Тема:"
+
+#: ../libempathy-gtk/gossip-account-widget-generic.c:144
+#: ../libempathy-gtk/gossip-account-widget-generic.c:186
+#, c-format
+msgid "%s:"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:1
+#, fuzzy
+msgid ""
+"<small><b><span foreground=\"#555\">Example: user@jabber.org</span></b></"
+"small>"
+msgstr "<span size=\"smaller\">Приклад: user@jabber.org</span>"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:2
+msgid "Forget password and clear the entry."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:3
+msgid "Login I_D:"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:4
+#, fuzzy
+msgid "Pass_word:"
+msgstr "_Пароль:"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:5
+#, fuzzy
+msgid "Reso_urce:"
+msgstr "_Ресурс:"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:6
+#, fuzzy
+msgid "Use encryption (SS_L)"
+msgstr "Використовувати _шифрування (SSL)"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:7
+#, fuzzy
+msgid "_Port:"
+msgstr "П_орт:"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:8
+msgid "_Server:"
+msgstr "_Сервер:"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:9
+msgid "jabber account settings"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.c:314
+msgid "Disconnected"
+msgstr "Від'єднаний"
+
+#: ../libempathy-gtk/gossip-chat.c:858
+msgid "Insert Smiley"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.c:906
+msgid "_Check Word Spelling..."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.c:1244
+msgid "Connected"
+msgstr "З'єднаний"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:1
+msgid "C_lear"
+msgstr "О_чистити"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:2
+msgid "Change _Topic..."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:3
+msgid "Chat"
+msgstr "Розмова"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:4
+#, fuzzy
+msgid "Contact Infor_mation"
+msgstr "_Контактна інформація"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:5
+#, fuzzy
+msgid "Cu_t"
+msgstr "Розмова"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:6
+#, fuzzy
+msgid "In_vite..."
+msgstr "_Реєстрація..."
+
+#: ../libempathy-gtk/gossip-chat.glade.h:7
+msgid "Insert _Smiley"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:8
+#, fuzzy
+msgid "Invitation _message:"
+msgstr "Вести повідомлення стану:"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:9
+msgid "Invite"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:11
+msgid "Move Tab _Left"
+msgstr "Перемістити закладку вліво"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:12
+msgid "Move Tab _Right"
+msgstr "Перемістити закладку вправо"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:13
+msgid "Select who would you like to invite:"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:14
+msgid "You have been invited to join a chat conference."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:16
+#, fuzzy
+msgid "_Add To Favorites"
+msgstr "_Редагувати переваги..."
+
+#: ../libempathy-gtk/gossip-chat.glade.h:17
+msgid "_Close"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:18
+msgid "_Conversation"
+msgstr "_Бесіда"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:19
+msgid "_Copy"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:20
+msgid "_Detach Tab"
+msgstr "_Відокремити закладку"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:22
+msgid "_Next Tab"
+msgstr "_Наступна закладка"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:23
+msgid "_Paste"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:24
+msgid "_Previous Tab"
+msgstr "_Попередня закладка"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:26
+#, fuzzy
+msgid "_Show Contacts"
+msgstr "Показати список контактів"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:27
+msgid "_Tabs"
+msgstr "_Закладки"
+
+#: ../libempathy-gtk/gossip-chat-view.c:544
+msgid "_Copy Link Address"
+msgstr "_Скопіювати адресу посилання"
+
+#: ../libempathy-gtk/gossip-chat-view.c:552
+msgid "_Open Link"
+msgstr "_Відкрити посилання"
+
+#: ../libempathy-gtk/gossip-chat-view.c:889
+msgid "%A %d %B %Y"
+msgstr "%A %d %B %Y"
+
+#: ../libempathy-gtk/gossip-chat-window.c:685
+#: ../libempathy-gtk/gossip-chat-window.c:715
+#, fuzzy
+msgid "New Message"
+msgid_plural "New Messages"
+msgstr[0] "_Послати повідомлення..."
+msgstr[1] "_Послати повідомлення..."
+
+#: ../libempathy-gtk/gossip-chat-window.c:691
+#, fuzzy
+msgid "Chat Room"
+msgstr "Gossіp - Розмова"
+
+#: ../libempathy-gtk/gossip-chat-window.c:696
+#: ../libempathy-gtk/gossip-chat-window.c:719
+#, fuzzy, c-format
+msgid "Conversation"
+msgid_plural "Conversations (%d)"
+msgstr[0] "_Бесіда"
+msgstr[1] "_Бесіда"
+
+#: ../libempathy-gtk/gossip-chat-window.c:1295
+msgid "Typing a message."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-contact-list.c:290
+#, fuzzy
+msgid "_Contact"
+msgstr "_Додати контакт..."
+
+#: ../libempathy-gtk/gossip-contact-list.c:294
+#, fuzzy
+msgid "_Group"
+msgstr "Група"
+
+#: ../libempathy-gtk/gossip-contact-list.c:298
+#, fuzzy
+msgid "Chat with contact"
+msgstr "Додати контакт"
+
+#: ../libempathy-gtk/gossip-contact-list.c:302
+#, fuzzy
+msgid "Infor_mation"
+msgstr "_Контактна інформація"
+
+#: ../libempathy-gtk/gossip-contact-list.c:302
+#, fuzzy
+msgid "View contact information"
+msgstr "Контактна інформація"
+
+#: ../libempathy-gtk/gossip-contact-list.c:306
+#, fuzzy
+msgid "Re_name"
+msgstr "/_Перейменувати групу"
+
+#: ../libempathy-gtk/gossip-contact-list.c:306
+#, fuzzy
+msgid "Rename"
+msgstr "_Ім'я користувача:"
+
+#: ../libempathy-gtk/gossip-contact-list.c:310
+#, fuzzy
+msgid "Edit the groups and name for this contact"
+msgstr ""
+"Ведіть псевдонім для контакту\n"
+"%s"
+
+#: ../libempathy-gtk/gossip-contact-list.c:314
+msgid "_Remove"
+msgstr "Видалити"
+
+#: ../libempathy-gtk/gossip-contact-list.c:314
+#, fuzzy
+msgid "Remove contact"
+msgstr "/_Видалити контакт"
+
+#: ../libempathy-gtk/gossip-contact-list.c:318
+#, fuzzy
+msgid "_Invite to Chat Room"
+msgstr "Gossіp - Редагування кімнат"
+
+#: ../libempathy-gtk/gossip-contact-list.c:318
+msgid "Invite to a currently open chat room"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-contact-list.c:322
+msgid "_Send File..."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-contact-list.c:322
+#, fuzzy
+msgid "Send a file"
+msgstr "Вибір"
+
+#: ../libempathy-gtk/gossip-contact-list.c:326
+#, fuzzy
+msgid "View previous conversations with this contact"
+msgstr "_Бесіда"
+
+#: ../libempathy-gtk/gossip-preferences.c:250
+msgid "Language"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:1
+msgid "<b>Appearance</b>"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:2
+#, fuzzy
+msgid "<b>Audio</b>"
+msgstr "<b>Переваги:</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:3
+#, fuzzy
+msgid "<b>Behaviour</b>"
+msgstr "<b>Переваги:</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:4
+#, fuzzy
+msgid "<b>Contact List</b>"
+msgstr "Стан"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:5
+msgid "<b>Languages</b>"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:6
+#, fuzzy
+msgid "<b>Options</b>"
+msgstr "З'єднатися"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:7
+#, fuzzy
+msgid "<b>Visual</b>"
+msgstr "<b>Переваги:</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:8
+msgid ""
+"<small>The list of languages reflects only the languages for which you have "
+"a dictionary installed.</small>"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:9
+msgid "Avatars are user chosen images shown in the contact list"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:10
+#, fuzzy
+msgid "Chat Th_eme:"
+msgstr "Назва _кімнати:"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:11
+msgid "Display notifications when contacts come _online"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:12
+#, fuzzy
+msgid "Enable sounds when _away"
+msgstr "Не програвати звук у стані \"Відійшов\""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:13
+#, fuzzy
+msgid "Enable sounds when _busy"
+msgstr "Не програвати звук у стані \"зайнятий \""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:14
+msgid "General"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:15
+#, fuzzy
+msgid "Notifications"
+msgstr "Використовувати звуки"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:16
+#, fuzzy
+msgid "Preferences"
+msgstr "_Настройки"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:17
+msgid "Show _avatars"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:18
+#, fuzzy
+msgid "Show _smileys as images"
+msgstr "Показувати графічні смайли"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:19
+#, fuzzy
+msgid "Show co_mpact contact list"
+msgstr "Показати список контактів"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:20
+msgid "Sort by _name"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:21
+msgid "Sort by s_tate"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:22
+msgid "Spell Checking"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:23
+msgid "Themes"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:24
+msgid "_Enable spell checking"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:25
+msgid "_Open new chats in separate windows"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:26
+#, fuzzy
+msgid "_Play sound when messages arrive"
+msgstr "Програвати звук при приході повідомлення"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:27
+#, fuzzy
+msgid "_Use for chat rooms"
+msgstr "Gossіp - Редагування кімнат"
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:702
+#, fuzzy
+msgid "Custom message..."
+msgstr "Повідомлення запиту"
+
+#. Clear list
+#: ../libempathy-gtk/gossip-presence-chooser.c:724
+#, fuzzy
+msgid "Clear List..."
+msgstr "О_чистити"
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:803
+#, fuzzy
+msgid "Are you sure you want to clear the list?"
+msgstr "Підтвердити запит?"
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:807
+msgid ""
+"This will remove any custom messages you have added to the list of preset "
+"status messages."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:812
+#, fuzzy
+msgid "Clear List"
+msgstr "О_чистити"
+
+#: ../libempathy-gtk/gossip-presence-chooser.glade.h:1
+msgid "Enter status message:"
+msgstr "Вести повідомлення стану:"
+
+#: ../libempathy-gtk/gossip-presence-chooser.glade.h:2
+#, fuzzy
+msgid "Status Message Presets"
+msgstr "Повідомлення стану"
+
+#: ../libempathy-gtk/gossip-presence-chooser.glade.h:3
+#, fuzzy
+msgid "_Add to status message list"
+msgstr "Задані повідомлення стану"
+
+#: ../libempathy-gtk/gossip-private-chat.c:198
+#, c-format
+msgid "%s went offline"
+msgstr "%s відключився"
+
+#: ../libempathy-gtk/gossip-private-chat.c:212
+#, fuzzy, c-format
+msgid "%s has come online"
+msgstr "%s підключився"
+
+#: ../libempathy-gtk/gossip-theme-manager.c:87
+msgid "Classic"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-theme-manager.c:88
+msgid "Simple"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-theme-manager.c:89
+#, fuzzy
+msgid "Clean"
+msgstr "О_чистити"
+
+#: ../libempathy-gtk/gossip-theme-manager.c:90
+msgid "Blue"
+msgstr ""
+
+#: ../src/empathy-main.c:145
+msgid "Don't connect on startup"
+msgstr "Не з'єднуватися при запуску"
+
+#: ../src/empathy-main.c:155
+#, fuzzy
+msgid "- Empathy Instant Messenger"
+msgstr "Програма для обміну повідомленнями"
+
+#, fuzzy
+#~ msgid "Gossip Instant Messenger"
+#~ msgstr "Програма для обміну повідомленнями"
+
+#, fuzzy
+#~ msgid "Joining"
+#~ msgstr "_Приєднатися"
+
+#, fuzzy
+#~ msgid "Unknown"
+#~ msgstr "Невідома помилка"
+
+#, fuzzy
+#~ msgid "No affiliation"
+#~ msgstr "Використовувати звуки"
+
+#, fuzzy
+#~ msgid "An unknown error occurred, check your details are correct."
+#~ msgstr "Невідома помилка"
+
+#, fuzzy
+#~ msgid "Unavailable"
+#~ msgstr "Доступний"
+
+#, fuzzy
+#~ msgid "An unknown error occurred."
+#~ msgstr "Невідома помилка"
+
+#, fuzzy
+#~ msgid "Connection refused."
+#~ msgstr "З'єднаний"
+
+#, fuzzy
+#~ msgid "Connection timed out."
+#~ msgstr "З'єднаний"
+
+#, fuzzy
+#~ msgid "new account"
+#~ msgstr "Обліковий запис Jabber"
+
+#~ msgid "Home"
+#~ msgstr "Додому"
+
+#, fuzzy
+#~ msgid "Registration is required"
+#~ msgstr "Реєстрація облікового запису"
+
+#, fuzzy
+#~ msgid "Disconnect"
+#~ msgstr "Відключитися"
+
+#~ msgid "Connect"
+#~ msgstr "З'єднатися"
+
+#, fuzzy
+#~ msgid "Successfully registered your new account settings."
+#~ msgstr "Облікова запису зареєстрована"
+
+#, fuzzy
+#~ msgid "Failed to register your new account settings."
+#~ msgstr "Помилка реєстрації облікового запису"
+
+#, fuzzy
+#~ msgid "Successfully changed your account password."
+#~ msgstr "Ведіть пароль:"
+
+#, fuzzy
+#~ msgid "Failed to change your account password."
+#~ msgstr "Ведіть пароль:"
+
+#, fuzzy
+#~ msgid ""
+#~ "Please enter a new password for this account:\n"
+#~ "%s"
+#~ msgstr ""
+#~ "Ведіть нові ім'я для групи\n"
+#~ "%s"
+
+#, fuzzy
+#~ msgid "Information requested, please wait..."
+#~ msgstr "<b>Запит інформації...</b>"
+
+#~ msgid "I would like to add you to my contact list."
+#~ msgstr "Я хотів би додати Вас у свій список контактів."
+
+#, fuzzy
+#~ msgid "%d new message"
+#~ msgid_plural "%d new messages"
+#~ msgstr[0] "_Послати повідомлення..."
+#~ msgstr[1] "_Послати повідомлення..."
+
+#, fuzzy
+#~ msgid "Edit Account _Details"
+#~ msgstr "Редагувати інформацію облікового запису"
+
+#~ msgid "New message from %s"
+#~ msgstr "Нове повідомлення від %s"
+
+#, fuzzy
+#~ msgid "Accept"
+#~ msgstr "_Підтвердити"
+
+#, fuzzy
+#~ msgid "Name"
+#~ msgstr "Назва:"
+
+#, fuzzy
+#~ msgid "Room"
+#~ msgstr "_Кімната:"
+
+#, fuzzy
+#~ msgid "Auto Connect"
+#~ msgstr "З'єднатися"
+
+#, fuzzy
+#~ msgid "Information requested..."
+#~ msgstr "<b>Запит інформації...</b>"
+
+#, fuzzy
+#~ msgid "Do you want to remove this contact from your roster?"
+#~ msgstr ""
+#~ "Видалити контакт\n"
+#~ "%s\n"
+#~ "зі списку контактів?"
+
+#, fuzzy
+#~ msgid ""
+#~ "Please enter a new name for the group:\n"
+#~ "%s"
+#~ msgstr ""
+#~ "Ведіть нові ім'я для групи\n"
+#~ "%s"
+
+#~ msgid "Select"
+#~ msgstr "Вибір"
+
+#~ msgid "Unsorted"
+#~ msgstr "Невідсортований"
+
+#, fuzzy
+#~ msgid "Unknown error occurred during file transfer."
+#~ msgstr "Невідома помилка"
+
+#, fuzzy
+#~ msgid "%s would like to send you a file."
+#~ msgstr "Я хотів би додати Вас у свій список контактів."
+
+#, fuzzy
+#~ msgid "Someone would like to send you a file."
+#~ msgstr "Я хотів би додати Вас у свій список контактів."
+
+#, fuzzy
+#~ msgid "Select a file"
+#~ msgstr "Вибір"
+
+#, fuzzy
+#~ msgid "Connecting..."
+#~ msgstr "_З'єднатися..."
+
+#, fuzzy
+#~ msgid "Retry connection"
+#~ msgstr "З'єднатися"
+
+#, fuzzy
+#~ msgid "Enter the new topic you want to set for this room:"
+#~ msgstr "Який псевдонім Ви хочете використовувати для цього контакту?"
+
+#, fuzzy
+#~ msgid "Topic: %s"
+#~ msgstr "_Тема:"
+
+#, fuzzy
+#~ msgid "Account"
+#~ msgstr "Обліковий запис Jabber"
+
+#, fuzzy
+#~ msgid "Conversation With"
+#~ msgstr "_Бесіда"
+
+#~ msgid "List the available accounts"
+#~ msgstr "Список облікових записів"
+
+#~ msgid "Which account to connect to on startup"
+#~ msgstr "Обліковий запис який використовується при запуску"
+
+#~ msgid "ACCOUNT-NAME"
+#~ msgstr "ACCOUNT-NAME"
+
+#~ msgid "Available accounts:"
+#~ msgstr "Доступні облікові записи:"
+
+#~ msgid "[default]"
+#~ msgstr "[За замовчуванням]"
+
+#~ msgid "There is no account with the name '%s'."
+#~ msgstr "Немає облікового запису з ім'ям '%s'."
+
+#, fuzzy
+#~ msgid "Join"
+#~ msgstr "_Приєднатися"
+
+#, fuzzy
+#~ msgid "Create"
+#~ msgstr "Розмова"
+
+#, fuzzy
+#~ msgid "Chat Rooms"
+#~ msgstr "Gossіp - Розмова"
+
+#, fuzzy
+#~ msgid "Browsing for conference rooms, please wait..."
+#~ msgstr "<b>Запит інформації...</b>"
+
+#, fuzzy
+#~ msgid "Default"
+#~ msgstr "[За замовчуванням]"
+
+#, fuzzy
+#~ msgid "Chat!"
+#~ msgstr "Розмова"
+
+#, fuzzy
+#~ msgid "%s wants to be added to your contact list."
+#~ msgstr "%s буде доданий у список контактів."
+
+#, fuzzy
+#~ msgid "Someone wants to be added to your contact list."
+#~ msgstr "%s буде доданий у список контактів."
+
+#, fuzzy
+#~ msgid "Subscription request"
+#~ msgstr "Відправлення запиту"
+
+#, fuzzy
+#~ msgid "Contact Information"
+#~ msgstr "_Контактна інформація"
+
+#, fuzzy
+#~ msgid "Do you want to add this person to your contact list?"
+#~ msgstr ""
+#~ "Видалити контакт\n"
+#~ "%s\n"
+#~ "зі списку контактів?"
+
+#, fuzzy
+#~ msgid "Do you want to add %s to your contact list?"
+#~ msgstr ""
+#~ "Видалити контакт\n"
+#~ "%s\n"
+#~ "зі списку контактів?"
+
+#, fuzzy
+#~ msgid "Please enter your %s account password"
+#~ msgstr "Ведіть пароль:"
+
+#~ msgid "Remember Password?"
+#~ msgstr "Запам'ятати пароль?"
+
+#, fuzzy
+#~ msgid "Change"
+#~ msgstr "Розмова"
+
+#, fuzzy
+#~ msgid "Contact goes online"
+#~ msgstr "%s підключився"
+
+#, fuzzy
+#~ msgid "Do you want to accept this file?"
+#~ msgstr "Підтвердити запит?"
+
+#, fuzzy
+#~ msgid "File name:"
+#~ msgstr "_Ім'я користувача:"
+
+#, fuzzy
+#~ msgid "File size:"
+#~ msgstr "Сайт:"
+
+#~ msgid "Web site:"
+#~ msgstr "Сайт:"
+
+#~ msgid "_Accept"
+#~ msgstr "_Підтвердити"
+
+#~ msgid "_Deny"
+#~ msgstr "Ві_дкинути"
+
+#, fuzzy
+#~ msgid "<b>Topic:</b>"
+#~ msgstr "<b>Переваги:</b>"
+
+#, fuzzy
+#~ msgid "Account:"
+#~ msgstr "Обліковий запис Jabber"
+
+#, fuzzy
+#~ msgid "Edit Favorite Room"
+#~ msgstr "Gossіp - Редагування кімнат"
+
+#, fuzzy
+#~ msgid "Group Chat"
+#~ msgstr "Gossіp - Розмова"
+
+#, fuzzy
+#~ msgid "Join New"
+#~ msgstr "_Приєднатися"
+
+#, fuzzy
+#~ msgid "Join room on start_up"
+#~ msgstr "Не з'єднуватися при запуску"
+
+#, fuzzy
+#~ msgid "N_ame:"
+#~ msgstr "Назва:"
+
+#, fuzzy
+#~ msgid "S_erver:"
+#~ msgstr "Сервер:"
+
+#~ msgid "_Nickname:"
+#~ msgstr "Псевдонім:"
+
+#~ msgid "_Room:"
+#~ msgstr "_Кімната:"
+
+#, fuzzy
+#~ msgid "<b>About</b>"
+#~ msgstr "<b>Переваги:</b>"
+
+#, fuzzy
+#~ msgid "<b>Client Information</b>"
+#~ msgstr "Інформація про клієнта"
+
+#, fuzzy
+#~ msgid "<b>Groups</b>"
+#~ msgstr "<b>Переваги:</b>"
+
+#, fuzzy
+#~ msgid "<b>Name</b>"
+#~ msgstr "Стан"
+
+#, fuzzy
+#~ msgid "<b>Personal Details</b>"
+#~ msgstr "<b>Параметри облікового запису</b>"
+
+#, fuzzy
+#~ msgid "<b>Subscription</b>"
+#~ msgstr "З'єднатися"
+
+#, fuzzy
+#~ msgid "<span size=\"smaller\">Example: Mikael or user@server.org</span>"
+#~ msgstr "<span size=\"smaller\">Приклад: user@jabber.org</span>"
+
+#, fuzzy
+#~ msgid "Accou_nt:"
+#~ msgstr "Обліковий запис Jabber"
+
+#, fuzzy
+#~ msgid "Add Contact"
+#~ msgstr "_Додати контакт..."
+
+#, fuzzy
+#~ msgid "Ch_at"
+#~ msgstr "Розмова"
+
+#~ msgid "Client:"
+#~ msgstr "Клієнт:"
+
+#, fuzzy
+#~ msgid "Con_tact:"
+#~ msgstr "_Додати контакт..."
+
+#, fuzzy
+#~ msgid "Connect on S_tartup"
+#~ msgstr "Не з'єднуватися при запуску"
+
+#, fuzzy
+#~ msgid "Contacts"
+#~ msgstr "_Додати контакт..."
+
+#~ msgid "Country:"
+#~ msgstr "Країна:"
+
+#, fuzzy
+#~ msgid "Decide _Later"
+#~ msgstr "_Вирішити пізніше"
+
+#, fuzzy
+#~ msgid "Edit Contact"
+#~ msgstr "_Додати контакт..."
+
+#~ msgid "Edit Groups"
+#~ msgstr "Редагувати групи"
+
+#~ msgid "Email:"
+#~ msgstr "Email:"
+
+#, fuzzy
+#~ msgid "ID:"
+#~ msgstr "JID"
+
+#~ msgid "Name:"
+#~ msgstr "Назва:"
+
+#~ msgid "OS:"
+#~ msgstr "ОС:"
+
+#, fuzzy
+#~ msgid "Personal Details"
+#~ msgstr "<b>Параметри облікового запису</b>"
+
+#, fuzzy
+#~ msgid "R_egister"
+#~ msgstr "_Реєстрація..."
+
+#, fuzzy
+#~ msgid "Search"
+#~ msgstr "Пошук..."
+
+#, fuzzy
+#~ msgid "Spell Checker"
+#~ msgstr "Gossіp - Відправлення повідомлення"
+
+#, fuzzy
+#~ msgid "This is the name that will be used on your roster for this contact"
+#~ msgstr "Який псевдонім Ви хочете використовувати для цього контакту?"
+
+#~ msgid "Version:"
+#~ msgstr "Версія:"
+
+#, fuzzy
+#~ msgid "View Previous Conversations"
+#~ msgstr "_Бесіда"
+
+#, fuzzy
+#~ msgid "Which account do you want to use?"
+#~ msgstr "Яке ім'я користувача ви хочете використовувати?"
+
+#, fuzzy
+#~ msgid "_Connect"
+#~ msgstr "З'єднатися"
+
+#, fuzzy
+#~ msgid "_Description:"
+#~ msgstr "Опис"
+
+#~ msgid "_Disconnect"
+#~ msgstr "Відключитися"
+
+#, fuzzy
+#~ msgid "_Email:"
+#~ msgstr "Email:"
+
+#, fuzzy
+#~ msgid ""
+#~ "_Enter the name or contact ID of the person you want to chat to below:"
+#~ msgstr ""
+#~ "Введіть ідентифікатор користувача якому ви хочете послати повідомлення."
+
+#, fuzzy
+#~ msgid "_For:"
+#~ msgstr "П_орт:"
+
+#, fuzzy
+#~ msgid "_Full Name:"
+#~ msgstr "Назва:"
+
+#, fuzzy
+#~ msgid "_Group:"
+#~ msgstr "Група"
+
+#, fuzzy
+#~ msgid "_Nick Name:"
+#~ msgstr "Псевдонім:"
+
+#, fuzzy
+#~ msgid "_Password:"
+#~ msgstr "_Пароль:"
+
+#, fuzzy
+#~ msgid "_Quit Message:"
+#~ msgstr "Повідомлення стану"
+
+#, fuzzy
+#~ msgid "_Retrieve"
+#~ msgstr "Видалити"
+
+#, fuzzy
+#~ msgid "_Web site:"
+#~ msgstr "Сайт:"
+
+#~ msgid "Preset status messages"
+#~ msgstr "Задані повідомлення стану"
+
+#~ msgid "Preset status messages."
+#~ msgstr "Задані повідомлення стану."
+
+#, fuzzy
+#~ msgid "Connecting"
+#~ msgstr "З'єднатися"
+
+#~ msgid "%s will be added to your contact list."
+#~ msgstr "%s буде доданий у список контактів."
+
+#, fuzzy
+#~ msgid "%s ID of new contact:"
+#~ msgstr "_Jabber ІD нового контакту:"
+
+#, fuzzy
+#~ msgid ""
+#~ "Please enter your invitation message to:\n"
+#~ "%s"
+#~ msgstr "Ведіть пароль:"
+
+#~ msgid "Contact Information for %s"
+#~ msgstr "Інформація про контакт %s"
+
+#, fuzzy
+#~ msgid "/Contact Infor_mation"
+#~ msgstr "/_Контактна інформація"
+
+#, fuzzy
+#~ msgid "/Re_name Contact"
+#~ msgstr "/_Перейменувати контакт"
+
+#, fuzzy
+#~ msgid "/_Edit Groups"
+#~ msgstr "/_Редагувати групи"
+
+#, fuzzy
+#~ msgid "/_View Previous Conversations"
+#~ msgstr "_Бесіда"
+
+#~ msgid ""
+#~ "Please enter a new nickname for the contact\n"
+#~ "%s"
+#~ msgstr ""
+#~ "Ведіть псевдонім для контакту\n"
+#~ "%s"
+
+#~ msgid "Edit groups for %s"
+#~ msgstr "Редагувати групу для %s"
+
+#~ msgid "Conversation Log"
+#~ msgstr "Журнал розмов"
+
+#~ msgid "Registering account"
+#~ msgstr "Реєстрація облікового запису"
+
+#, fuzzy
+#~ msgid "Respond"
+#~ msgstr "Причина:"
+
+#, fuzzy
+#~ msgid "Add to _favourites"
+#~ msgstr "_Редагувати переваги..."
+
+#, fuzzy
+#~ msgid "Na_me:"
+#~ msgstr "Назва:"
+
+#, fuzzy
+#~ msgid "New Chat Room"
+#~ msgstr "Gossіp - Розмова"
+
+#~ msgid " "
+#~ msgstr " "
+
+#, fuzzy
+#~ msgid "<b>Information requested, please wait...</b>"
+#~ msgstr "<b>Запит інформації...</b>"
+
+#, fuzzy
+#~ msgid "<span size=\"smaller\">Example:</span>"
+#~ msgstr "<span size=\"smaller\">Приклад: user@jabber.org</span>"
+
+#, fuzzy
+#~ msgid "Chat Rooms..."
+#~ msgstr "Gossіp - Розмова"
+
+#, fuzzy
+#~ msgid "Do you already have an account set up on a server?"
+#~ msgstr "Обліковий запис на сервері Jabber уже зареєстрований?"
+
+#, fuzzy
+#~ msgid "Enter the port used in the connection for this account"
+#~ msgstr ""
+#~ "Ведіть псевдонім для контакту\n"
+#~ "%s"
+
+#, fuzzy
+#~ msgid "Enter the server used in the connection for this account"
+#~ msgstr ""
+#~ "Ведіть псевдонім для контакту\n"
+#~ "%s"
+
+#, fuzzy
+#~ msgid "Finished"
+#~ msgstr "Установка закінчена"
+
+#~ msgid "Gossip"
+#~ msgstr "Gossip"
+
+#~ msgid ""
+#~ "Gossip is a modern client for the Jabber Instant Messaging system.\n"
+#~ "\n"
+#~ "This assistant will help you configure Gossip and connect you to your "
+#~ "favorite Jabber server.\n"
+#~ "\n"
+#~ "To get started, just click \"Forward\"."
+#~ msgstr ""
+#~ "Gossіp це сучасний клієнт системи обміну повідомленнями Jabber.\n"
+#~ "\n"
+#~ "Асистент допоможе вам настроїти Gossіp для з'єднання з вашим сервером "
+#~ "Jabber.\n"
+#~ "\n"
+#~ "Натисніть кнопку \"Уперед\"."
+
+#~ msgid ""
+#~ "In order to subscribe to presence notifications from the user, a request "
+#~ "will be sent. Until this request is approved, the user will always be "
+#~ "shown as \"Offline\" in your contact list."
+#~ msgstr ""
+#~ "Щоб одержувати інформацію про приступність користувача повинний бути "
+#~ "відправлений запит. Поки запит не підтверджений, користувач завжди буде "
+#~ "показуватися як \"Відключений\"."
+
+#~ msgid "In which group do you want to place this contact?"
+#~ msgstr "У яку групу помістити цей контакт?"
+
+#~ msgid "Jabber ID:"
+#~ msgstr "Jabber ID:"
+
+#, fuzzy
+#~ msgid "Nickname:"
+#~ msgstr "Псевдонім:"
+
+#, fuzzy
+#~ msgid "Port:"
+#~ msgstr "П_орт:"
+
+#, fuzzy
+#~ msgid "Registering Account"
+#~ msgstr "Реєстрація облікового запису"
+
+#, fuzzy
+#~ msgid "Resource:"
+#~ msgstr "_Ресурс:"
+
+#~ msgid "Server:"
+#~ msgstr "Сервер:"
+
+#, fuzzy
+#~ msgid "Web Site:"
+#~ msgstr "Сайт:"
+
+#~ msgid "Welcome to Gossip"
+#~ msgstr "Ласкаво просимо в Gossіp"
+
+#~ msgid "What instant messaging system does the contact use?"
+#~ msgstr "Яка система обміну повідомленнями використовується цим контактом?"
+
+#~ msgid "What is your name?"
+#~ msgstr "Ваше ім'я?"
+
+#, fuzzy
+#~ msgid "What password do you want to use?"
+#~ msgstr "Який сервер Ви хочете використовувати?"
+
+#~ msgid "What username do you use?"
+#~ msgstr "Яке ім'я користувача Ви використовуєте?"
+
+#~ msgid "What username do you want to use?"
+#~ msgstr "Яке ім'я користувача ви хочете використовувати?"
+
+#, fuzzy
+#~ msgid "Which account do you want to add this contact to?"
+#~ msgstr "У яку групу помістити цей контакт?"
+
+#, fuzzy
+#~ msgid ""
+#~ "You can change your account settings later by selecting the Edit-"
+#~ ">Accounts menu item."
+#~ msgstr ""
+#~ "Gossіp набудований для роботи з вашою системою.\n"
+#~ "Ви можете настроїти Ваш обліковий запис пізніше, у меню Дії->З'єднатися..."
+
+#, fuzzy
+#~ msgid "Your Account"
+#~ msgstr "Обліковий запис Jabber"
+
+#~ msgid "Your Identity"
+#~ msgstr "Ваші дані"
+
+#, fuzzy
+#~ msgid "_Group Chat"
+#~ msgstr "Gossіp - Розмова"
+
+#, fuzzy
+#~ msgid "_No"
+#~ msgstr "Ні"
+
+#~ msgid "_Search..."
+#~ msgstr "Пошук..."
+
+#, fuzzy
+#~ msgid "_Yes"
+#~ msgstr "Так"
+
+#~ msgid "Be silent when away"
+#~ msgstr ""
+#~ "Не посилати повідомлення\n"
+#~ "у стані \"відсутній\""
+
+#~ msgid "Be silent when busy"
+#~ msgstr ""
+#~ "Не посилати повідомлення\n"
+#~ "у стані \"зайнятий\""
+
+#~ msgid "Height of main window"
+#~ msgstr "Висота головного вікна"
+
+#~ msgid "The X position of the main window."
+#~ msgstr "Х позиція головного вікна."
+
+#~ msgid "The Y position of the main window."
+#~ msgstr "Y позиція головного вікна"
+
+#~ msgid "The width of the main window."
+#~ msgstr "Ширина головного вікна."
+
+#~ msgid "Width of the main window"
+#~ msgstr "Ширина головного вікна"
+
+#~ msgid "X position of main window"
+#~ msgstr "Х позиція головного вікна"
+
+#~ msgid "Y position of main window"
+#~ msgstr "Y позиція головного вікна"
+
+#~ msgid "Gossip, Instant Messaging Client"
+#~ msgstr "Gossip, Клієнт Jabber для середовища GNOME"
+
+#, fuzzy
+#~ msgid "Close this chat window"
+#~ msgstr "Сховати головне вікно"
+
+#, fuzzy
+#~ msgid "Requested Information"
+#~ msgstr "_Інформація про обліковий запис"
+
+#, fuzzy
+#~ msgid "Send Message"
+#~ msgstr "Повідомлення стану"
+
+#, fuzzy
+#~ msgid "%s has gone offline"
+#~ msgstr "%s відключився"
+
+#~ msgid "Available..."
+#~ msgstr "Доступний..."
+
+#~ msgid "Busy..."
+#~ msgstr "Зайнятий..."
+
+#~ msgid "Away..."
+#~ msgstr "Відійшов..."
+
+#~ msgid "Contact _Information"
+#~ msgstr "_Контактна інформація"
+
+#, fuzzy
+#~ msgid "Gossip - Accounts"
+#~ msgstr "Gossіp - Кімната"
+
+#, fuzzy
+#~ msgid "Join _Group Chat..."
+#~ msgstr "Зайти в кімнату..."
+
+#, fuzzy
+#~ msgid "Por_t:"
+#~ msgstr "П_орт:"
+
+#, fuzzy
+#~ msgid "Requested information."
+#~ msgstr "Інформація про клієнта"
+
+#, fuzzy
+#~ msgid "Could not open connection"
+#~ msgstr "Не зміг з'єднатися"
+
+#, fuzzy
+#~ msgid "Could not find the server you wanted to use"
+#~ msgstr "Який сервер Ви хочете використовувати?"
+
+#, fuzzy
+#~ msgid "Connection to the server failed."
+#~ msgstr "<b>З'єднання із сервером</b>"
+
+#~ msgid "Written by:"
+#~ msgstr "Створили:"
+
+#~ msgid "Translated by:"
+#~ msgstr "Перекладено:"
+
+#, fuzzy
+#~ msgid "Account ID"
+#~ msgstr "_Інформація про обліковий запис"
+
+#~ msgid "%sChat - %s"
+#~ msgstr "%s %s - Розмова"
+
+#~ msgid "/Show _Log"
+#~ msgstr "/_Журнал розмов"
+
+#, fuzzy
+#~ msgid "Persian"
+#~ msgstr "Версія:"
+
+#~ msgid "View Lo_g"
+#~ msgstr "Журнал розмов"
+
+#~ msgid "Gossip - Group Chat"
+#~ msgstr "Gossіp - Кімната"
+
+#, fuzzy
+#~ msgid "Gossip - Add contact"
+#~ msgstr "Додати контакт"
+
+#, fuzzy
+#~ msgid "Gossip - Contact Information"
+#~ msgstr "_Контактна інформація"
+
+#, fuzzy
+#~ msgid "Gossip - Edit Groups"
+#~ msgstr "Gossіp - Редагування кімнат"
+
+#, fuzzy
+#~ msgid "Gossip - New Account"
+#~ msgstr "Gossіp - Кімната"
+
+#, fuzzy
+#~ msgid "Gossip - New Message"
+#~ msgstr "Gossіp - Відправлення повідомлення"
+
+#, fuzzy
+#~ msgid "Gossip - Personal Details"
+#~ msgstr "Gossіp - Відправлення повідомлення"
+
+#, fuzzy
+#~ msgid "Gossip - Preferences"
+#~ msgstr "Настройки"
+
+#, fuzzy
+#~ msgid "Gossip - Status Message"
+#~ msgstr "Gossіp - Відправлення повідомлення"
+
+#~ msgid "What request message do you want to send to %s?"
+#~ msgstr "Яке повідомлення потрібно послати користувачеві %s?"
+
+#~ msgid "Make sure that your account information is correct."
+#~ msgstr "Переконаєтеся що дані облікового запису правильні."
+
+#~ msgid "%s wants to be notified of your presence."
+#~ msgstr "%s хоче бути сповіщеним щодо вашої присутності."
+
+#~ msgid "You were disconnected from the server. Do you want to reconnect?"
+#~ msgstr "Відбулося від'єднання від сервера. Відновити з'єднання?"
+
+#~ msgid ""
+#~ "Make sure that your account information is correct. The server may also "
+#~ "currently be unavailable."
+#~ msgstr ""
+#~ "Переконаєтеся що дані облікового запису коректні. Сервер також може бути "
+#~ "недоступний."
+
+#~ msgid "Edit List..."
+#~ msgstr "Редагувати список..."
+
+#~ msgid "An error occurred when chatting with %s."
+#~ msgstr "При спілкуванні з %s відбулася помилка."
+
+#~ msgid "Details:"
+#~ msgstr "Подробиці:"
+
+#~ msgid "An error occurred when chatting in the group chat %s."
+#~ msgstr "При спілкуванні в кімнаті %s відбулася помилка."
+
+#~ msgid "Unable to enter the group chat %s."
+#~ msgstr "Неможливо ввійти в кімнату %s."
+
+#~ msgid "Gossip will now try to use your account:"
+#~ msgstr "Gossіp спробує використати обліковий запис:"
+
+#~ msgid "Gossip will now try to register the account:"
+#~ msgstr "Gossіp спробує зареєструвати обліковий запис:"
+
+#~ msgid "From:"
+#~ msgstr "Від:"
+
+#~ msgid "Gossip - Received Message"
+#~ msgstr "Gossіp - Отримане повідомлення"
+
+#~ msgid "In reply to:"
+#~ msgstr "У відповідь на:"
+
+#~ msgid "To:"
+#~ msgstr "Кому:"
+
+#~ msgid "_Reply..."
+#~ msgstr "_Відповідь..."
+
+#~ msgid "_Send"
+#~ msgstr "_Відіслати"
+
+#~ msgid "C_onnect"
+#~ msgstr "З'є_днатися"
+
+#~ msgid " "
+#~ msgstr " "
+
+#~ msgid "<b>Available chat rooms</b>"
+#~ msgstr "<b><iДоступні кімнати/b>"
+
+#~ msgid "<b>Chat room information</b>"
+#~ msgstr "<b>Інформація про кімнату</b>"
+
+#~ msgid "Gossip - Join Group Chat"
+#~ msgstr "Gossіp - Зайти в кімнату"
+
+#~ msgid "N_ickname:"
+#~ msgstr "_Псевдонім:"
+
+#~ msgid ""
+#~ "Pick a favorite, or enter nickname, server name, and the name of the chat "
+#~ "room to enter."
+#~ msgstr "Виберіть одну з кімнат або введіть псевдонім, сервер і кімнату."
+
+#~ msgid "R_emove"
+#~ msgstr "В_идалити"
+
+#~ msgid "_Add"
+#~ msgstr "_Додати"
+
+#~ msgid " "
+#~ msgstr " "
+
+#~ msgid "<b>Preset status messages</b>"
+#~ msgstr "<b>Задані повідомлення стану</b>"
+
+#~ msgid "<i>Information not available</i>"
+#~ msgstr "<i>Інформація недоступна</i>"
+
+#~ msgid "Choose a Server"
+#~ msgstr "Вибір сервера"
+
+#~ msgid "Choose from list:"
+#~ msgstr "Вибір зі списку:"
+
+#~ msgid "Information about ..."
+#~ msgstr "Інформація про ..."
+
+#~ msgid "Jabber.com"
+#~ msgstr "Jabber.com"
+
+#~ msgid "Jabber.org"
+#~ msgstr "Jabber.org"
+
+#~ msgid "On what server do you have a Jabber account?"
+#~ msgstr "На якому сервері ви маєте обліковий запис?"
+
+#~ msgid "Sound"
+#~ msgstr "Звук"
+
+#~ msgid "Use a different server"
+#~ msgstr "Використовувати інший сервер"
+
+#~ msgid "What request message do you want to send to ...?"
+#~ msgstr "Яке повідомлення хочете відправити ...?"
diff --git a/gnome-2-22/po/vi.po b/gnome-2-22/po/vi.po
new file mode 100644
index 000000000..f1a3d0bab
--- /dev/null
+++ b/gnome-2-22/po/vi.po
@@ -0,0 +1,1940 @@
+# Vietnamese translation for Gossip.
+# Copyright © 2006 Gnome i18n Project for Vietnamese.
+# Clytie Siddall <clytie@riverland.net.au>, 2006.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gossip HEAD\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-05-15 23:46+0200\n"
+"PO-Revision-Date: 2006-08-28 20:58+0930\n"
+"Last-Translator: Clytie Siddall <clytie@riverland.net.au>\n"
+"Language-Team: Vietnamese <gnomevi-list@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: LocFactoryEditor 1.6fc1\n"
+
+#: ../data/empathy.desktop.in.h:1
+#, fuzzy
+msgid "Empathy Instant Messenger"
+msgstr "Bộ tin nhắn tức khắc"
+
+#: ../data/empathy.desktop.in.h:2
+msgid "Instant Messenger"
+msgstr "Bộ tin nhắn tức khắc"
+
+#: ../data/empathy.schemas.in.h:1
+msgid "Always open a separate chat window for new chats."
+msgstr "Luôn mở cửa sổ riêng cho cuộc trò chuyện mới."
+
+#: ../data/empathy.schemas.in.h:2
+msgid "Chat window theme"
+msgstr "Sắc thái cửa sổ trò chuyện"
+
+#: ../data/empathy.schemas.in.h:3
+msgid ""
+"Comma separated list of spell checker languages to use (e.g. en, fr, nl)."
+msgstr ""
+"Danh sách định giới bằng dấu phẩy các ngôn ngữ kiểm tra chính tả cần dùng (v."
+"d. en, fr, ja, vi)."
+
+#: ../data/empathy.schemas.in.h:4
+#, fuzzy
+msgid "Compact contact list"
+msgstr "Hiện danh _sách liên lạc"
+
+#: ../data/empathy.schemas.in.h:5
+msgid "Contact list sort criterium"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:6
+msgid "Default directory to select an avatar image from"
+msgstr "Thư mục mặc định nơi cần chọn ảnh riêng"
+
+#: ../data/empathy.schemas.in.h:7
+msgid "Enable popup when contact is available"
+msgstr "Bật lên khi liên lạc sẵn sàng"
+
+#: ../data/empathy.schemas.in.h:8
+msgid "Enable sound when away"
+msgstr "Bật âm thanh khi vắng mặt"
+
+#: ../data/empathy.schemas.in.h:9
+msgid "Enable sound when busy"
+msgstr "Bật âm thanh khi bận"
+
+#: ../data/empathy.schemas.in.h:10
+msgid "Enable spell checker"
+msgstr "Kiểm tra chính tả"
+
+#: ../data/empathy.schemas.in.h:11
+msgid "Hide main window"
+msgstr "Ẩn cửa sổ chính"
+
+#: ../data/empathy.schemas.in.h:12
+msgid "Hide the main window."
+msgstr "Ẩn cửa sổ chính."
+
+#: ../data/empathy.schemas.in.h:13
+msgid "Open new chats in separate windows"
+msgstr "Mở mỗi cuộc trò chuyện mới trong cửa sổ riêng."
+
+#: ../data/empathy.schemas.in.h:14
+msgid "Show avatars"
+msgstr "Hiện ảnh riêng"
+
+#: ../data/empathy.schemas.in.h:15
+msgid "Show hint about closing the main window"
+msgstr "Hiện mẹo về việc đóng cửa sổ chính"
+
+#: ../data/empathy.schemas.in.h:16
+msgid "Show offline contacts"
+msgstr "Hiện liên lạc ngoại tuyến"
+
+#: ../data/empathy.schemas.in.h:17
+msgid "Spell checking languages"
+msgstr "Ngôn ngữ kiểm tra chính tả"
+
+#: ../data/empathy.schemas.in.h:18
+msgid "The last directory that an avatar image was chosen from."
+msgstr "Thư mục cuối cùng nơi đã chọn ảnh riêng."
+
+#: ../data/empathy.schemas.in.h:19
+msgid "The theme that is used to display the conversation in chat windows."
+msgstr "Sắc thái được dùng để hiển thị cuộc đối thoại trong cửa sổ trò chuyện."
+
+#: ../data/empathy.schemas.in.h:20
+msgid "Use graphical smileys"
+msgstr "Dùng biểu tượng xúc cảm"
+
+#: ../data/empathy.schemas.in.h:21
+msgid "Use notification sounds"
+msgstr "Dùng âm thanh thông báo"
+
+#: ../data/empathy.schemas.in.h:22
+msgid "Use theme for chat rooms"
+msgstr "Dùng sắc thái cho phòng trò chuyện"
+
+#: ../data/empathy.schemas.in.h:23
+msgid ""
+"Whether or not to check words typed against the languages you want to check "
+"with."
+msgstr "Có nên kiểm tra đoạn gõ so với những ngôn ngữ đã chọn hay không."
+
+#: ../data/empathy.schemas.in.h:24
+msgid ""
+"Whether or not to convert smileys into graphical images in conversations."
+msgstr ""
+"Bật/tắt chuyển đổi ký tự miêu tả mặt cười thành biểu tượng xúc cảm trong đối "
+"thoại."
+
+#: ../data/empathy.schemas.in.h:25
+msgid "Whether or not to play a sound when messages arrive."
+msgstr "Bật/tắt phát âm thanh khi mới nhận tin nhẳn."
+
+#: ../data/empathy.schemas.in.h:26
+msgid "Whether or not to play sounds when away."
+msgstr "Bật/tắt phát âm thanh khi vắng mặt."
+
+#: ../data/empathy.schemas.in.h:27
+msgid "Whether or not to play sounds when busy."
+msgstr "Bật/tắt phát âm thanh khi bận."
+
+#: ../data/empathy.schemas.in.h:28
+msgid "Whether or not to show a popup when a contact becomes available."
+msgstr "Có nên bật lên khi liên lạc mới sẵn sàng hay không."
+
+#: ../data/empathy.schemas.in.h:29
+msgid ""
+"Whether or not to show avatars for contacts in the contact list and chat "
+"windows."
+msgstr ""
+"Có nên hiển thị ảnh riêng cho mỗi liên lạc nằm trong danh sách liên lạc và "
+"cửa sổ trò chuyện hay không."
+
+#: ../data/empathy.schemas.in.h:30
+msgid "Whether or not to show contacts that are offline in the contact list."
+msgstr ""
+"Bật/tắt hiển thị các liên lác đang ngoại tuyến trong danh sách liên lạc."
+
+#: ../data/empathy.schemas.in.h:31
+msgid ""
+"Whether or not to show the message dialog about closing the main window with "
+"the 'x' button in the title bar."
+msgstr ""
+"Có nên hiển thị hộp thoại thông điệp về việc đóng cửa sổ chính bằng cái nút "
+"« x » trên thanh tựa hay không."
+
+#: ../data/empathy.schemas.in.h:32
+#, fuzzy
+msgid "Whether to show the contact list in compact mode or not."
+msgstr "Có nên dùng sắc thái cho các phòng trò chuyện hay không."
+
+#: ../data/empathy.schemas.in.h:33
+msgid "Whether to use the theme for chat rooms or not."
+msgstr "Có nên dùng sắc thái cho các phòng trò chuyện hay không."
+
+#: ../data/empathy.schemas.in.h:34
+msgid ""
+"Which criterium to use when sorting the contact list. Default is to use sort "
+"by the contact's name with the value \"name\". A value of \"state\" will "
+"sort the contact list by state."
+msgstr ""
+
+#: ../libempathy/gossip-contact.c:654 ../libempathy/gossip-presence.c:184
+#: ../libempathy/gossip-presence.c:283
+msgid "Offline"
+msgstr "Ngoại tuyến"
+
+#: ../libempathy/gossip-presence.c:274
+msgid "Available"
+msgstr "Sẵn sàng"
+
+#: ../libempathy/gossip-presence.c:276
+msgid "Busy"
+msgstr "Bận"
+
+#: ../libempathy/gossip-presence.c:279
+msgid "Away"
+msgstr "Vắng mặt"
+
+#: ../libempathy-gtk/empathy-main-window.c:254
+#, fuzzy
+msgid "Show and edit accounts"
+msgstr "_Hiện các liên lạc"
+
+#: ../libempathy-gtk/empathy-main-window.c:456
+msgid "Group"
+msgstr "Nhóm"
+
+#: ../libempathy-gtk/empathy-main-window.c:477
+msgid "Contact"
+msgstr "Liên lạc"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:1
+#, fuzzy
+msgid "Contact List - Empathy"
+msgstr "Hiện danh _sách liên lạc"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:2
+msgid "Context"
+msgstr "Ngữ cảnh"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:3
+#, fuzzy
+msgid "Join _Favorites"
+msgstr "Vào Ư_a thích"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:4
+#: ../libempathy-gtk/gossip-chat.glade.h:10
+msgid "Join _New..."
+msgstr "Vào _Mới..."
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:5
+#, fuzzy
+msgid "Manage Favorites..."
+msgstr "Vào Ư_a thích"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:6
+msgid "Show _Offline Contacts"
+msgstr "Hiện các liên lạc ng_oại tuyến"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:7
+msgid "_About"
+msgstr "_Giới thiệu"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:8
+msgid "_Accounts"
+msgstr "_Tài khoản"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:9
+#: ../libempathy-gtk/gossip-chat.glade.h:15
+msgid "_Add Contact..."
+msgstr "Thê_m liên lạc..."
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:10
+#: ../libempathy-gtk/gossip-contact-list.c:298
+msgid "_Chat"
+msgstr "Trò _chuyện"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:11
+msgid "_Contents"
+msgstr "Mục lụ_c"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:12
+#: ../libempathy-gtk/gossip-chat.glade.h:21
+#: ../libempathy-gtk/gossip-contact-list.c:310
+msgid "_Edit"
+msgstr "_Sửa"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:13
+msgid "_Help"
+msgstr "Trợ _giúp"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:14
+#: ../libempathy-gtk/empathy-status-icon.glade.h:2
+msgid "_New Message..."
+msgstr "Ti_n nhẳn mới..."
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:15
+msgid "_Personal Information"
+msgstr "_Thông tin cá nhân"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:16
+msgid "_Preferences"
+msgstr "Tù_y thích"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:17
+#: ../libempathy-gtk/empathy-status-icon.glade.h:3
+msgid "_Quit"
+msgstr "T_hoát"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:18
+#: ../libempathy-gtk/gossip-chat.glade.h:25
+msgid "_Room"
+msgstr "_Phóng"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:19
+#: ../libempathy-gtk/gossip-chat.glade.h:28
+#: ../libempathy-gtk/gossip-contact-list.c:326
+msgid "_View Previous Conversations"
+msgstr "_Xem đối thoại trước"
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:1
+msgid "Status"
+msgstr "Trạng thái"
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:4
+msgid "_Show Contact List"
+msgstr "Hiện danh _sách liên lạc"
+
+#: ../libempathy-gtk/gossip-about-dialog.c:63
+#, fuzzy
+msgid ""
+"Empathy is free software; you can redistribute it and/or modify it under the "
+"terms of the GNU General Public License as published by the Free Software "
+"Foundation; either version 2 of the License, or (at your option) any later "
+"version."
+msgstr ""
+"Gossip là phần mềm tự do : bạn có thể phân phái lại và/hay sửa đổi nó với "
+"điều kiện của Quyền Công Chung GNU (GPL), như do Tổ chức Phần mềm Tự do xuất "
+"bản, hoặc phiên bản 2 của Quyền này, hoặc (tùy chọn) bất kỳ phiên bản mới "
+"hơn."
+
+#: ../libempathy-gtk/gossip-about-dialog.c:67
+#, fuzzy
+msgid ""
+"Empathy is distributed in the hope that it will be useful, but WITHOUT ANY "
+"WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS "
+"FOR A PARTICULAR PURPOSE. See the GNU General Public License for more "
+"details."
+msgstr ""
+"Chúng tôi phân phối Gossip vì mong muốn nó có ích, nhưng KHÔNG bảo đảm gì "
+"cả, dù khả năng bán hay khả năng làm việc dứt khoát. Xem Quyền Công Chung "
+"GNU để tìm chi tiết."
+
+#: ../libempathy-gtk/gossip-about-dialog.c:71
+#, fuzzy
+msgid ""
+"You should have received a copy of the GNU General Public License along with "
+"Empathy; if not, write to the Free Software Foundation, Inc., 51 Franklin "
+"Street, Fifth Floor, Boston, MA 02110-130159 USA"
+msgstr ""
+"Bạn đã nhận một bản sao của Giấy Phép Công Cộng GNU cùng với chương trình "
+"này; nếu không, hãy viết thư cho Tổ Chức Phần Mềm Tự Do,\n"
+"Free Software Foundation, Inc.,\n"
+" 51 Franklin Street, Fifth Floor,\n"
+"Boston, MA 02110-1301, USA."
+
+#: ../libempathy-gtk/gossip-about-dialog.c:99
+msgid "An Instant Messaging client for GNOME"
+msgstr "Ứng dụng khách tin nhắn tức khắc cho Gnome"
+
+#: ../libempathy-gtk/gossip-about-dialog.c:105
+msgid "translator-credits"
+msgstr "Nhóm Việt hóa Gnome <gnomevi-list@lists.sourceforge.net>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:224
+#, fuzzy
+msgid "Disable"
+msgstr "Sẵn sàng"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:227
+#, fuzzy
+msgid "Enable"
+msgstr "Ví dụ"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:261
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:3
+#, fuzzy
+msgid "<b>No Account Selected</b>"
+msgstr "<b>Tài khoản</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:263
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to start configuring.\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want "
+"to configure in the list on the left."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:272
+#, fuzzy
+msgid "<b>No Accounts Configured</b>"
+msgstr "<b>Tài khoản</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:274
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to start configuring."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:362
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:6
+msgid "Accounts"
+msgstr "Tài khoản"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:857
+#, c-format
+msgid ""
+"You are about to remove your %s account!\n"
+"Are you sure you want to proceed?"
+msgstr ""
+"Bạn sắp gỡ bỏ tài khoản %s của mình !\n"
+"Bạn có chắc muốn tiếp tục không?"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:863
+msgid ""
+"Any associated conversations and chat rooms will NOT be removed if you "
+"decide to proceed.\n"
+"\n"
+"Should you decide to add the account back at a later time, they will still "
+"be available."
+msgstr ""
+"Cuộc đối thoại nào hay phòng trò chuyện nào tương ứng sẽ KHÔNG bị gỡ bỏ nếu "
+"bạn chọn tiếp tục.\n"
+"\n"
+"Như thế thì chúng sẽ vẫn còn sẵn sàng nếu bạn chọn thêm lại tài khoản này "
+"vào lúc sau."
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:1
+msgid "<b>Account</b>"
+msgstr "<b>Tài khoản</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:2
+#, fuzzy
+msgid "<b>New Account</b>"
+msgstr "<b>Tài khoản</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:4
+#, fuzzy
+msgid "<b>Settings</b>"
+msgstr "<b>Trạng thái</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:5
+msgid "A unique name for this account to identify it personally to you."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:7
+#, fuzzy
+msgid "Cr_eate"
+msgstr "Trò chuyện !"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:8
+msgid "Imendio "
+msgstr ""
+
+# Name: don't translate / Tên: đừng dịch
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:9
+msgid "Jabber"
+msgstr "Jabber"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:10
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to started configuring.\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want "
+"to configure in the list on the left."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:13
+msgid "_Name:"
+msgstr "Tê_n:"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:14
+#, fuzzy
+msgid "_Type:"
+msgstr "_Chủ đề:"
+
+#: ../libempathy-gtk/gossip-account-widget-generic.c:144
+#: ../libempathy-gtk/gossip-account-widget-generic.c:186
+#, c-format
+msgid "%s:"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:1
+#, fuzzy
+msgid ""
+"<small><b><span foreground=\"#555\">Example: user@jabber.org</span></b></"
+"small>"
+msgstr "<span size=\"smaller\">Ví dụ : người_dùng@jabber.org</span>"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:2
+msgid "Forget password and clear the entry."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:3
+msgid "Login I_D:"
+msgstr "I_D đăng nhập:"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:4
+msgid "Pass_word:"
+msgstr "_Mật khẩu :"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:5
+msgid "Reso_urce:"
+msgstr "Tài ng_uyên:"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:6
+#, fuzzy
+msgid "Use encryption (SS_L)"
+msgstr "Dùng _mật mã (SSL)"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:7
+msgid "_Port:"
+msgstr "_Cổng:"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:8
+msgid "_Server:"
+msgstr "Máy phục _vụ :"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:9
+msgid "jabber account settings"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.c:314
+msgid "Disconnected"
+msgstr "Kết nối bị ngắt"
+
+#: ../libempathy-gtk/gossip-chat.c:858
+msgid "Insert Smiley"
+msgstr "Chèn ảnh cười"
+
+#: ../libempathy-gtk/gossip-chat.c:906
+msgid "_Check Word Spelling..."
+msgstr "Kiểm tra _chính tả từ..."
+
+#: ../libempathy-gtk/gossip-chat.c:1244
+msgid "Connected"
+msgstr "Được kết nối"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:1
+msgid "C_lear"
+msgstr "X_oá"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:2
+msgid "Change _Topic..."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:3
+msgid "Chat"
+msgstr "Trò chuyện"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:4
+msgid "Contact Infor_mation"
+msgstr "Thông tin _liên lạc"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:5
+msgid "Cu_t"
+msgstr "Cắ_t"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:6
+#, fuzzy
+msgid "In_vite..."
+msgstr "_Mời"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:7
+msgid "Insert _Smiley"
+msgstr "Chèn ảnh _cười"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:8
+#, fuzzy
+msgid "Invitation _message:"
+msgstr "Thông điệp mời:"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:9
+msgid "Invite"
+msgstr "Mời"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:11
+msgid "Move Tab _Left"
+msgstr "Chuyển thanh t_rái"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:12
+msgid "Move Tab _Right"
+msgstr "Chuyển thanh _phải"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:13
+msgid "Select who would you like to invite:"
+msgstr "Chọn người nào bạn muốn mời:"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:14
+msgid "You have been invited to join a chat conference."
+msgstr "Bạn đã được mời tham gia một hội thảo trò chuyện."
+
+#: ../libempathy-gtk/gossip-chat.glade.h:16
+msgid "_Add To Favorites"
+msgstr "Thêm vào Ư_a thích"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:17
+msgid "_Close"
+msgstr "Đón_g"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:18
+msgid "_Conversation"
+msgstr "Đối th_oại"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:19
+msgid "_Copy"
+msgstr "_Chép"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:20
+msgid "_Detach Tab"
+msgstr "Gỡ _ra thanh"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:22
+msgid "_Next Tab"
+msgstr "Tha_nh kế"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:23
+msgid "_Paste"
+msgstr "_Dán"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:24
+msgid "_Previous Tab"
+msgstr "Thanh t_rước"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:26
+msgid "_Show Contacts"
+msgstr "_Hiện các liên lạc"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:27
+msgid "_Tabs"
+msgstr "_Thanh"
+
+#: ../libempathy-gtk/gossip-chat-view.c:544
+msgid "_Copy Link Address"
+msgstr "_Chép địa chỉ liên kết"
+
+#: ../libempathy-gtk/gossip-chat-view.c:552
+msgid "_Open Link"
+msgstr "_Mở liên kết"
+
+#: ../libempathy-gtk/gossip-chat-view.c:889
+msgid "%A %d %B %Y"
+msgstr "%A %d %B %Y"
+
+#: ../libempathy-gtk/gossip-chat-window.c:685
+#: ../libempathy-gtk/gossip-chat-window.c:715
+#, fuzzy
+msgid "New Message"
+msgid_plural "New Messages"
+msgstr[0] "Tin nhẳn mới"
+
+#: ../libempathy-gtk/gossip-chat-window.c:691
+msgid "Chat Room"
+msgstr "Phòng trò chuyện"
+
+#: ../libempathy-gtk/gossip-chat-window.c:696
+#: ../libempathy-gtk/gossip-chat-window.c:719
+#, fuzzy, c-format
+msgid "Conversation"
+msgid_plural "Conversations (%d)"
+msgstr[0] "Đối th_oại"
+
+#: ../libempathy-gtk/gossip-chat-window.c:1295
+msgid "Typing a message."
+msgstr "Đang gõ tin nhẳn."
+
+#: ../libempathy-gtk/gossip-contact-list.c:290
+msgid "_Contact"
+msgstr "Liên lạ_c"
+
+#: ../libempathy-gtk/gossip-contact-list.c:294
+msgid "_Group"
+msgstr "_Nhóm"
+
+#: ../libempathy-gtk/gossip-contact-list.c:298
+msgid "Chat with contact"
+msgstr "Trò chuyện với liên lạc"
+
+#: ../libempathy-gtk/gossip-contact-list.c:302
+msgid "Infor_mation"
+msgstr "_Thông tin"
+
+#: ../libempathy-gtk/gossip-contact-list.c:302
+msgid "View contact information"
+msgstr "Xem thông tin liên lạc"
+
+#: ../libempathy-gtk/gossip-contact-list.c:306
+msgid "Re_name"
+msgstr "Thay tê_n"
+
+#: ../libempathy-gtk/gossip-contact-list.c:306
+msgid "Rename"
+msgstr "Thay tên"
+
+#: ../libempathy-gtk/gossip-contact-list.c:310
+msgid "Edit the groups and name for this contact"
+msgstr "Hiệu chỉnh những nhóm và tên cho liên lạc này"
+
+#: ../libempathy-gtk/gossip-contact-list.c:314
+msgid "_Remove"
+msgstr "Gỡ _bỏ"
+
+#: ../libempathy-gtk/gossip-contact-list.c:314
+msgid "Remove contact"
+msgstr "Gỡ bỏ liên lạc"
+
+#: ../libempathy-gtk/gossip-contact-list.c:318
+msgid "_Invite to Chat Room"
+msgstr "Mờ_i vào phòng trò chuyện"
+
+#: ../libempathy-gtk/gossip-contact-list.c:318
+msgid "Invite to a currently open chat room"
+msgstr "Mời vào một phòng trò chuyện hiện thời được mở"
+
+#: ../libempathy-gtk/gossip-contact-list.c:322
+msgid "_Send File..."
+msgstr "_Gởi tập tin..."
+
+#: ../libempathy-gtk/gossip-contact-list.c:322
+msgid "Send a file"
+msgstr "Gởi một tập tin"
+
+#: ../libempathy-gtk/gossip-contact-list.c:326
+msgid "View previous conversations with this contact"
+msgstr "Xem cuộc đối thoại trước đây với liên lạc này"
+
+#: ../libempathy-gtk/gossip-preferences.c:250
+msgid "Language"
+msgstr "Ngôn ngữ"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:1
+msgid "<b>Appearance</b>"
+msgstr "<b>Diện mạo</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:2
+msgid "<b>Audio</b>"
+msgstr "<b>Âm thanh</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:3
+msgid "<b>Behaviour</b>"
+msgstr "<b>Ứng xử</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:4
+#, fuzzy
+msgid "<b>Contact List</b>"
+msgstr "<b>Kết nối</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:5
+msgid "<b>Languages</b>"
+msgstr "<b>Ngôn ngữ</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:6
+msgid "<b>Options</b>"
+msgstr "<b>Tùy chọn</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:7
+msgid "<b>Visual</b>"
+msgstr "<b>Hiển thị</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:8
+msgid ""
+"<small>The list of languages reflects only the languages for which you have "
+"a dictionary installed.</small>"
+msgstr ""
+"<small>Danh sách ngôn ngữ phản ánh chỉ mỗi ngôn ngữ cho đó bạn đã cài đặt từ "
+"điển.</small>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:9
+msgid "Avatars are user chosen images shown in the contact list"
+msgstr ""
+"Ảnh riêng là ảnh được người dùng chọn, được hiển thị trong danh sách liên lạc"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:10
+msgid "Chat Th_eme:"
+msgstr "_Sắc thái trò chuyện:"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:11
+msgid "Display notifications when contacts come _online"
+msgstr "Thông bá_o khi liên lạc mới trực tuyến"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:12
+msgid "Enable sounds when _away"
+msgstr "Bật âm th_anh khi vắng mặt"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:13
+msgid "Enable sounds when _busy"
+msgstr "Bật âm thanh khi _bận"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:14
+msgid "General"
+msgstr "Chung"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:15
+msgid "Notifications"
+msgstr "Thông báo"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:16
+msgid "Preferences"
+msgstr "Tùy thích"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:17
+msgid "Show _avatars"
+msgstr "Hiện ảnh _riêng"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:18
+msgid "Show _smileys as images"
+msgstr "Hiện _mặt cười là ảnh"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:19
+#, fuzzy
+msgid "Show co_mpact contact list"
+msgstr "Hiện danh _sách liên lạc"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:20
+msgid "Sort by _name"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:21
+msgid "Sort by s_tate"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:22
+msgid "Spell Checking"
+msgstr "Kiểm tra chính tả"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:23
+msgid "Themes"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:24
+msgid "_Enable spell checking"
+msgstr "_Kiểm tra chính tả"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:25
+msgid "_Open new chats in separate windows"
+msgstr "Mở cuộc trò chuyện mới tr_ong cửa sổ riêng"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:26
+msgid "_Play sound when messages arrive"
+msgstr "_Phát âm thanh khi mới nhận tin nhẳn"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:27
+msgid "_Use for chat rooms"
+msgstr "Dùng cho phòng trò ch_uyện"
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:702
+msgid "Custom message..."
+msgstr "Tin nhẳn tự chọn..."
+
+#. Clear list
+#: ../libempathy-gtk/gossip-presence-chooser.c:724
+msgid "Clear List..."
+msgstr "Xoá danh sách..."
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:803
+msgid "Are you sure you want to clear the list?"
+msgstr "Bạn có chắc muốn xoá danh sách này không?"
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:807
+msgid ""
+"This will remove any custom messages you have added to the list of preset "
+"status messages."
+msgstr ""
+"Việc này sẽ gỡ bỏ thông điệp riêng nào bạn đã thêm vào danh sách các thông "
+"điệp trạng thái định sẵn."
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:812
+msgid "Clear List"
+msgstr "Xoá danh sách"
+
+#: ../libempathy-gtk/gossip-presence-chooser.glade.h:1
+msgid "Enter status message:"
+msgstr "Gõ thông điệp trạng thái:"
+
+#: ../libempathy-gtk/gossip-presence-chooser.glade.h:2
+msgid "Status Message Presets"
+msgstr "Định sẵn thông điệp trạng thái"
+
+#: ../libempathy-gtk/gossip-presence-chooser.glade.h:3
+msgid "_Add to status message list"
+msgstr "Thêm vào d_anh sách thông điệp trạng thái"
+
+#: ../libempathy-gtk/gossip-private-chat.c:198
+#, c-format
+msgid "%s went offline"
+msgstr "%s mới ngoại tuyến"
+
+#: ../libempathy-gtk/gossip-private-chat.c:212
+#, c-format
+msgid "%s has come online"
+msgstr "%s mới trực tuyến"
+
+#: ../libempathy-gtk/gossip-theme-manager.c:87
+msgid "Classic"
+msgstr "Cổ điển"
+
+#: ../libempathy-gtk/gossip-theme-manager.c:88
+msgid "Simple"
+msgstr "Đơn giản"
+
+#: ../libempathy-gtk/gossip-theme-manager.c:89
+msgid "Clean"
+msgstr "Làm sạch"
+
+#: ../libempathy-gtk/gossip-theme-manager.c:90
+msgid "Blue"
+msgstr "Xanh dương"
+
+#: ../src/empathy-main.c:145
+msgid "Don't connect on startup"
+msgstr "Đừng kết nối khi khởi chạy"
+
+#: ../src/empathy-main.c:155
+#, fuzzy
+msgid "- Empathy Instant Messenger"
+msgstr "- Bộ tin nhắn tức khắc Gossip"
+
+#~ msgid "Gossip Instant Messenger"
+#~ msgstr "Bộ tin nhắn tức khắc Gossip"
+
+#~ msgid "Normal"
+#~ msgstr "Chuẩn"
+
+#~ msgid "Joining"
+#~ msgstr "Tham gia"
+
+#~ msgid "Active"
+#~ msgstr "Hoạt động"
+
+#~ msgid "Inactive"
+#~ msgstr "Bị động"
+
+#~ msgid "Unknown"
+#~ msgstr "Không rõ"
+
+#~ msgid "Error"
+#~ msgstr "Lỗi"
+
+#, fuzzy
+#~ msgid "No role"
+#~ msgstr "Chuẩn"
+
+#, fuzzy
+#~ msgid "No affiliation"
+#~ msgstr "Thông báo"
+
+#~ msgid "The nickname you have chosen is already in use."
+#~ msgstr "Bạn đã chọn một tên hiệu đang được dùng."
+
+#~ msgid "The chat room you tried to join requires a password."
+#~ msgstr "Bạn đang cố tham gia một phòng trò chuyện cần thiết mật khẩu."
+
+#~ msgid "The remote conference server did not respond in a sensible time."
+#~ msgstr "Máy phục vụ hội thảo ở xa chưa đáp ứng sau một thời gian hợp lý."
+
+#~ msgid "The conference server you tried to join could not be found."
+#~ msgstr "Bạn đã cố tham gia một máy phục vụ hội thảo không thể được tìm."
+
+#~ msgid "An unknown error occurred, check your details are correct."
+#~ msgstr "Gặp lỗi lạ: hãy kiểm tra xem bạn đã gõ đúng chi tiết mình."
+
+#, fuzzy
+#~ msgid "Joining the chatroom was canceled."
+#~ msgstr "Vào phòng trò chuyện"
+
+#~ msgid "Unavailable"
+#~ msgstr "Không sẵn sàng"
+
+#~ msgid "An unknown error occurred."
+#~ msgstr "Gặp lỗi không rõ."
+
+#~ msgid "Connection refused."
+#~ msgstr "Kết nối bị từ chối."
+
+#~ msgid "Server address could not be resolved."
+#~ msgstr "Không thể quyết định địa chỉ của máy phục vụ."
+
+#~ msgid "Connection timed out."
+#~ msgstr "Kết nối đã quá giờ."
+
+#~ msgid "Authentication failed."
+#~ msgstr "Việc xác thực bị lỗi."
+
+#~ msgid "The username you are trying already exists."
+#~ msgstr "Bạn đang thử ra một tên người dùng đã có."
+
+#~ msgid "The username you are trying is not valid."
+#~ msgstr "Bạn đang thử ra một tên người dùng không hợp lệ."
+
+#~ msgid "This feature is unavailable."
+#~ msgstr "Không có tính năng này."
+
+#~ msgid "This feature is unauthorized."
+#~ msgstr "Tính năng này không được xác thực."
+
+#~ msgid "A specific protocol error occurred that was unexpected."
+#~ msgstr "Gặp một lỗi giao thức dứt khoát mà bất ngờ."
+
+#, fuzzy
+#~ msgid "new account"
+#~ msgstr "Tài khoản mới"
+
+#~ msgid "Home"
+#~ msgstr "Nhà"
+
+#~ msgid "Couldn't send message!"
+#~ msgstr "Không thể gởi tin nhẳn."
+
+#~ msgid "Connection could not be opened"
+#~ msgstr "Không thể mở kết nối."
+
+#, fuzzy
+#~ msgid "This service is unavailable or not found"
+#~ msgstr "Không có tính năng này."
+
+#, fuzzy
+#~ msgid "Registration is required"
+#~ msgstr "Đang ký"
+
+#, fuzzy
+#~ msgid "This feature is not implemented"
+#~ msgstr "Tính năng này không được xác thực."
+
+#~ msgid "Stop"
+#~ msgstr "Dừng"
+
+#~ msgid "Disconnect"
+#~ msgstr "Ngắt kết nối"
+
+#~ msgid "Connect"
+#~ msgstr "Kết nối"
+
+#, fuzzy
+#~ msgid "Successfully registered your new account settings."
+#~ msgstr "Việc đăng ký thiết lập tài khoản mới của bạn bị lỗi."
+
+#, fuzzy
+#~ msgid "You should now be able to connect to your new account."
+#~ msgstr ""
+#~ "Bạn không thể sử dụng tùy chọn « --no-connect » (không kết nối) cùng với "
+#~ "tùy chọn « --account » (tài khoản)"
+
+#, fuzzy
+#~ msgid "Failed to register your new account settings."
+#~ msgstr "Việc đăng ký thiết lập tài khoản mới của bạn bị lỗi."
+
+#, fuzzy
+#~ msgid "Successfully changed your account password."
+#~ msgstr "Hãy gõ mật khẩu tài khoản:"
+
+#, fuzzy
+#~ msgid "Failed to change your account password."
+#~ msgstr "Hãy gõ mật khẩu tài khoản:"
+
+#, fuzzy
+#~ msgid ""
+#~ "Please enter a new password for this account:\n"
+#~ "%s"
+#~ msgstr ""
+#~ "Hãy gõ tên mới cho nhóm này:\n"
+#~ "%s"
+
+#~ msgid "No information is available for this contact."
+#~ msgstr "Không có thông tin công bố về liên lạc này."
+
+#~ msgid "Information requested, please wait..."
+#~ msgstr "Thông tin đã được yêu cầu, hãy đợi..."
+
+#~ msgid "I would like to add you to my contact list."
+#~ msgstr "Tôi muốn thêm bạn vào danh sách liên lạc mình."
+
+#~ msgid "To summarize:"
+#~ msgstr "Tóm tắt:"
+
+#~ msgid "%d new message"
+#~ msgid_plural "%d new messages"
+#~ msgstr[0] "%d tin nhẳn mới"
+
+#~ msgid "%d subscription request"
+#~ msgid_plural "%d subscription requests"
+#~ msgstr[0] "%d yêu cầu đăng ký"
+
+#~ msgid "%d file transfer request"
+#~ msgid_plural "%d file transfer requests"
+#~ msgstr[0] "%d yêu cầu truyền tập tin"
+
+#~ msgid "%d server message"
+#~ msgid_plural "%d server messages"
+#~ msgstr[0] "%d thông điệp máy phục vụ"
+
+#~ msgid "%d error"
+#~ msgid_plural "%d errors"
+#~ msgstr[0] "%d lỗi"
+
+#~ msgid "If you quit, you will lose all unread information."
+#~ msgstr "Nếu bạn thoát, các thông tin chưa đọc sẽ bị mất hoàn toàn."
+
+#~ msgid "Gossip is still running, it is just hidden."
+#~ msgstr "Trình Gossip vẫn còn chạy, chỉ ẩn."
+
+#~ msgid "Click on the notification area icon to show Gossip."
+#~ msgstr "Nhấn vào vùng thông báo để hiển thị trình Gossip."
+
+#~ msgid "You were about to quit!"
+#~ msgstr "Bạn đã sắp thoát !"
+
+#~ msgid ""
+#~ "Since no system or notification tray has been found, this action would "
+#~ "normally quit Gossip.\n"
+#~ "\n"
+#~ "This is just a reminder, from now on, Gossip will quit when performing "
+#~ "this action unless you uncheck the option below."
+#~ msgstr ""
+#~ "Vì không tìm thấy khay hệ thống hay thông báo, hành động này thường thoát "
+#~ "khỏi trình Gossip.\n"
+#~ "\n"
+#~ "Đây chỉ là lời nhắc nhở, kể từ bây giờ, trình Gossip sẽ thoát khi thực "
+#~ "hiện hành động này, nếu bạn không bỏ chọn tùy chọn bên dưới."
+
+#~ msgid "Edit Account _Details"
+#~ msgstr "Sử_a chi tiết tài khoản"
+
+#~ msgid "Click to enlarge"
+#~ msgstr "Nhấn để phóng to"
+
+#~ msgid "Word"
+#~ msgstr "Từ"
+
+#~ msgid "Select who would you like to invite to room:"
+#~ msgstr "Chọn người nào bạn muốn mời vào phòng:"
+
+#~ msgid "Select which room you would like to invite:"
+#~ msgstr "Chọn phòng vào đó bạn muốn mời người:"
+
+#~ msgid "New message from %s"
+#~ msgstr "Tin nhẳn mới từ %s"
+
+#~ msgid "Your invitation has been declined"
+#~ msgstr "Lời mời của bạn đã bị từ chối"
+
+#~ msgid "Accept"
+#~ msgstr "Chấp nhận"
+
+#~ msgid "Decline"
+#~ msgstr "Từ chối"
+
+#, fuzzy
+#~ msgid "Name"
+#~ msgstr "Tên:"
+
+#, fuzzy
+#~ msgid "Room"
+#~ msgstr "_Phóng"
+
+#~ msgid "Auto Connect"
+#~ msgstr "Kết nối tự động"
+
+#~ msgid "Information requested..."
+#~ msgstr "Thông tin được yêu cầu..."
+
+#~ msgid "Do you want to remove this contact from your roster?"
+#~ msgstr "Bạn có muốn gỡ bỏ liên lạc này ra bản liệt kê không?"
+
+#~ msgid ""
+#~ "Please enter a new name for the group:\n"
+#~ "%s"
+#~ msgstr ""
+#~ "Hãy gõ tên mới cho nhóm này:\n"
+#~ "%s"
+
+#~ msgid "Select"
+#~ msgstr "Chọn"
+
+#~ msgid "Unsorted"
+#~ msgstr "Chưa sắp xếp"
+
+#~ msgid ""
+#~ "Set the alias you want to use for:\n"
+#~ "<b>%s</b>\n"
+#~ "\n"
+#~ "You can retrieve contact information from the server."
+#~ msgstr ""
+#~ "Đặt tên hiệu bạn muốn dùng cho :\n"
+#~ "<b>%s</b>\n"
+#~ "\n"
+#~ "Bạn có khả năng lấy thông tin liên lạc từ máy phục vụ."
+
+#~ msgid "New file transfer request from %s"
+#~ msgstr "Yêu cầu truyền tập tin mới từ %s"
+
+#~ msgid "File transfer is not supported by both parties."
+#~ msgstr "Không phải cả hai người hỗ trợ việc truyền tập tin."
+
+#~ msgid "Your file transfer offer declined."
+#~ msgstr "Người khác đã từ chối truyền tập tin."
+
+#~ msgid "The other user decided not to continue."
+#~ msgstr "Người dùng khác đã quyết định sẽ không tiếp tục."
+
+#~ msgid "Unknown error occurred during file transfer."
+#~ msgstr "Gặp lỗi lạ trong khi truyền tập tin."
+
+#~ msgid "%s would like to send you a file."
+#~ msgstr "%s muốn gởi tập tin cho bạn."
+
+#~ msgid "Someone would like to send you a file."
+#~ msgstr "Người nào muốn gởi tập tin cho bạn."
+
+#~ msgid "Select a file"
+#~ msgstr "Chọn tập tin"
+
+#, fuzzy
+#~ msgid "Connecting..."
+#~ msgstr "Đang kết nối..."
+
+#, fuzzy
+#~ msgid "Retry connection"
+#~ msgstr "Dừng kết nối"
+
+#~ msgid "Invited %s to join this chat conference."
+#~ msgstr "Đã mời %s tham gia hội thảo trò chuyện này."
+
+#, fuzzy
+#~ msgid "%s has set the topic: %s"
+#~ msgstr "%s đã đặt chủ đề"
+
+#, fuzzy
+#~ msgid "Enter the new topic you want to set for this room:"
+#~ msgstr "Cho liên lạc này, bạn có muốn sử dụng tên hiệu nào?"
+
+#, fuzzy
+#~ msgid "%s has joined the room"
+#~ msgstr "%s đã đặt chủ đề"
+
+#, fuzzy
+#~ msgid "%s has left the room"
+#~ msgstr "%s đã đặt chủ đề"
+
+#, fuzzy
+#~ msgid "Topic: %s"
+#~ msgstr "_Chủ đề:"
+
+#~ msgid "Account"
+#~ msgstr "Tài khoản"
+
+#~ msgid "Conversation With"
+#~ msgstr "Đối thoại với"
+
+#~ msgid "Date"
+#~ msgstr "Ngày"
+
+#~ msgid "Allow multiple instances of the application to run at the same time"
+#~ msgstr "Cho phép nhiều bản sao của ứng dụng này có chạy đồng thời"
+
+#~ msgid "List the available accounts"
+#~ msgstr "Liệt kê các tài khoản sẵn sàng"
+
+#~ msgid "Which account to connect to on startup"
+#~ msgstr "Tài khoản nào cần kết nối khi khởi chạy"
+
+#~ msgid "ACCOUNT-NAME"
+#~ msgstr "TÊN TÀI KHOẢN"
+
+#~ msgid "You can not use --no-connect together with --account"
+#~ msgstr ""
+#~ "Bạn không thể sử dụng tùy chọn « --no-connect » (không kết nối) cùng với "
+#~ "tùy chọn « --account » (tài khoản)"
+
+#~ msgid "No accounts available."
+#~ msgstr "Không có tài khoản sẵn sàng."
+
+#~ msgid "Available accounts:"
+#~ msgstr "Các tài khoản sẵn sàng:"
+
+#~ msgid "[default]"
+#~ msgstr "[mặc định]"
+
+#~ msgid "There is no account with the name '%s'."
+#~ msgstr "Không có tài khoản tên « %s »."
+
+#~ msgid "Join"
+#~ msgstr "Tham gia"
+
+#, fuzzy
+#~ msgid "Create"
+#~ msgstr "Ngày"
+
+#~ msgid "Chat Rooms"
+#~ msgstr "Phòng trò chuyện"
+
+#, fuzzy
+#~ msgid "Browsing for conference rooms, please wait..."
+#~ msgstr "Thông tin đã được yêu cầu, hãy đợi..."
+
+#~ msgid "Default"
+#~ msgstr "Mặc định"
+
+#~ msgid "Chat!"
+#~ msgstr "Trò chuyện !"
+
+#~ msgid "%s wants to be added to your contact list."
+#~ msgstr "%s muốn được thêm vào danh sách liên lạc của bạn."
+
+#~ msgid "Someone wants to be added to your contact list."
+#~ msgstr "Người nào muốn được thêm vào danh sách liên lạc của bạn."
+
+#~ msgid "Subscription request"
+#~ msgstr "Yêu cầu đăng ký"
+
+#~ msgid "Show"
+#~ msgstr "Hiện"
+
+#~ msgid "Contact Information"
+#~ msgstr "Thông tin liên lạc"
+
+#~ msgid "Subject: %s"
+#~ msgstr "Chủ đề : %s"
+
+#~ msgid "Suggestions for the word"
+#~ msgstr "Đề nghị từ"
+
+#~ msgid "New subscription request from %s"
+#~ msgstr "Yêu cầu đăng ký mới từ %s"
+
+#~ msgid "Do you want to add this person to your contact list?"
+#~ msgstr "Bạn có muốn thêm họ vào danh sách liên lạc không?"
+
+#~ msgid "Do you want to add %s to your contact list?"
+#~ msgstr "Bạn có muốn thêm %s vào danh sách liên lạc không?"
+
+#~ msgid "Please enter your %s account password"
+#~ msgstr "Hãy gõ mật khẩu của bạn cho tài khoản %s"
+
+#, fuzzy
+#~ msgid "Logging in to account '%s'"
+#~ msgstr "Đang đăng nhập với : %s"
+
+#~ msgid "Remember Password?"
+#~ msgstr "Nhớ mật khẩu ?"
+
+#~ msgid "Do not show this again"
+#~ msgstr "Đừng hiện câu này lần nữa"
+
+#~ msgid "Could not display the help contents."
+#~ msgstr "Không thể hiển thị nội dung trợ giúp."
+
+#~ msgid "Select Your Avatar Image"
+#~ msgstr "Chọn ảnh riêng"
+
+#~ msgid "No Image"
+#~ msgstr "Không có ảnh"
+
+#~ msgid "The server does not seem to be responding."
+#~ msgstr "Máy phục vụ có vẻ không phải đáp ứng."
+
+#~ msgid "Try again later."
+#~ msgstr "Thử lại sau."
+
+#, fuzzy
+#~ msgid "Change"
+#~ msgstr "Trò chuyện"
+
+#~ msgid "Contact goes offline"
+#~ msgstr "Liên lạc mới ngoại tuyến"
+
+#~ msgid "Contact goes online"
+#~ msgstr "Liên lạc mới trực tuyến"
+
+#~ msgid "Contact ID:"
+#~ msgstr "ID liên lạc:"
+
+#~ msgid "Do you want to accept this file?"
+#~ msgstr "Bạn có muốn chấp nhận tập tin này không?"
+
+#~ msgid "File Transfer Request"
+#~ msgstr "Yêu cầu truyền tập tin"
+
+#~ msgid "File name:"
+#~ msgstr "Tên tập tin:"
+
+#~ msgid "File size:"
+#~ msgstr "Cỡ tập tin:"
+
+#~ msgid "Not supported yet"
+#~ msgstr "Chưa hỗ trợ"
+
+#~ msgid "This person wishes to send you this file:"
+#~ msgstr "Người này muốn gởi cho bạn tập tin này:"
+
+#~ msgid "Web site:"
+#~ msgstr "Chỗ Mạng:"
+
+#~ msgid "_Accept"
+#~ msgstr "Chấ_p nhận"
+
+#~ msgid "_Deny"
+#~ msgstr "_Từ chối"
+
+#, fuzzy
+#~ msgid "<b>Topic:</b>"
+#~ msgstr "<b>Nhóm</b>"
+
+#~ msgid "Account:"
+#~ msgstr "Tài khoản:"
+
+#, fuzzy
+#~ msgid "Edit Favorite Room"
+#~ msgstr "Sửa đổi phòng trò chuyện"
+
+#~ msgid "Group Chat"
+#~ msgstr "Trò chuyện nhóm"
+
+#, fuzzy
+#~ msgid "Join New"
+#~ msgstr "Vào _Mới..."
+
+#~ msgid "Join room on start_up"
+#~ msgstr "Vào phòng khi khởi chạ_y"
+
+#~ msgid "Join this chat room when Gossip starts and you are connected"
+#~ msgstr ""
+#~ "Vào phòng trò chuyện này khi trình Gossip khởi chạy và bạn đã kết nối"
+
+#, fuzzy
+#~ msgid "Manage Favorite Rooms"
+#~ msgstr "Quản lý phòng trò chuyện"
+
+#~ msgid "N_ame:"
+#~ msgstr "_Tên:"
+
+#~ msgid "S_erver:"
+#~ msgstr "Máy _phục vụ :"
+
+#~ msgid "_Nickname:"
+#~ msgstr "Tê_n hiệu :"
+
+#~ msgid "_Room:"
+#~ msgstr "_Phóng:"
+
+#~ msgid "-"
+#~ msgstr "—"
+
+#~ msgid "<b>About</b>"
+#~ msgstr "<b>Giới thiệu</b>"
+
+#~ msgid "<b>Client Information</b>"
+#~ msgstr "<b>Thông tin ứng dụng khách</b>"
+
+#~ msgid "<b>Groups</b>"
+#~ msgstr "<b>Nhóm</b>"
+
+#~ msgid "<b>Name</b>"
+#~ msgstr "<b>Tên</b>"
+
+#~ msgid "<b>Personal Details</b>"
+#~ msgstr "<b>Chi tiết cá nhân</b>"
+
+#~ msgid "<b>Status</b>"
+#~ msgstr "<b>Trạng thái</b>"
+
+#, fuzzy
+#~ msgid "<b>Subscription</b>"
+#~ msgstr "<b>Tùy chọn</b>"
+
+#~ msgid "<span size=\"smaller\">Example: Mikael or user@server.org</span>"
+#~ msgstr ""
+#~ "<span size=\"smaller\">Ví dụ : Văn Minh hoặc người_dùng@máy_phục_vụ.org</"
+#~ "span>"
+
+#, fuzzy
+#~ msgid "Accou_nt:"
+#~ msgstr "Tài khoản:"
+
+#~ msgid "Add Contact"
+#~ msgstr "Thêm liên lạc"
+
+#~ msgid "Avatar:"
+#~ msgstr "Ảnh riêng:"
+
+#~ msgid "Ch_at"
+#~ msgstr "Trò ch_uyện"
+
+#~ msgid "Client:"
+#~ msgstr "Ứng dụng khách:"
+
+#, fuzzy
+#~ msgid "Con_tact:"
+#~ msgstr "Liên lạc"
+
+#~ msgid "Connect on S_tartup"
+#~ msgstr "Kế_t nối khi khởi chạy"
+
+#~ msgid "Contacts"
+#~ msgstr "Liên lạc"
+
+#~ msgid "Country:"
+#~ msgstr "Quốc gia:"
+
+#~ msgid "Decide _Later"
+#~ msgstr "Quyết định _sau này"
+
+#~ msgid "Edit Contact"
+#~ msgstr "Sửa liên lạc"
+
+#~ msgid "Edit Groups"
+#~ msgstr "Sửa nhóm"
+
+#~ msgid "Email:"
+#~ msgstr "Thư điện tử :"
+
+#~ msgid "ID:"
+#~ msgstr "ID:"
+
+#~ msgid ""
+#~ "If you chose to decide later you will be asked the next time you log on."
+#~ msgstr ""
+#~ "Nếu bạn chọn quyết định sau này, bạn sẽ được nhắc lại lần kế tiếp đăng "
+#~ "nhập."
+
+#~ msgid "Name:"
+#~ msgstr "Tên:"
+
+#~ msgid "OS:"
+#~ msgstr "HĐH:"
+
+#~ msgid "Personal Details"
+#~ msgstr "Chi tiết cá nhân"
+
+#, fuzzy
+#~ msgid "R_egister"
+#~ msgstr "Đang ký"
+
+#~ msgid "Search"
+#~ msgstr "Tìm kiếm"
+
+#~ msgid ""
+#~ "Select the groups you want this contact to appear in, you can select more "
+#~ "than one group or no groups."
+#~ msgstr ""
+#~ "Chọn những nhóm nơi bạn muốn liên lạc này xuất hiện; bạn có khả năng chọn "
+#~ "một hay nhiều nhóm, hay không chọn nhóm (≥0 nhóm)."
+
+#, fuzzy
+#~ msgid ""
+#~ "Set the alias you want to use for:\n"
+#~ "<b>foo@bar.baz</b>\n"
+#~ "\n"
+#~ "You can retrieve contact information from the server. "
+#~ msgstr ""
+#~ "Đặt tên hiệu bạn muốn dùng cho :\n"
+#~ "<b>%s</b>\n"
+#~ "\n"
+#~ "Bạn có khả năng lấy thông tin liên lạc từ máy phục vụ."
+
+#~ msgid "Spell Checker"
+#~ msgstr "Kiểm tra chính tả"
+
+#~ msgid "Subscription Request"
+#~ msgstr "Yêu cầu đăng ký"
+
+#~ msgid "Suggestions for the word:"
+#~ msgstr "Đề nghị từ :"
+
+#~ msgid ""
+#~ "This acts as a filter to the contact list below. You can use segments of "
+#~ "contact's name or ID, for example, \"jabber.org\" will list everyone "
+#~ "using that server"
+#~ msgstr ""
+#~ "Điều này lọc danh sách liên lạc bên dưới. Bạn có khả năng sử dụng phần "
+#~ "tên hoặc ID của liên lạc; thí dụ, « jabber.org » sẽ liệt kê mọi người sử "
+#~ "dụng máy phục vụ đó."
+
+#~ msgid "This is the name that will be used on your roster for this contact"
+#~ msgstr ""
+#~ "Điều này là tên sẽ được dùng trên bản liệt kê của bạn cho liên lạc này"
+
+#~ msgid "This name will be used to identify you in chat windows"
+#~ msgstr "Tên này sẽ được dùng để nhận diện bạn trong cửa sổ trò chuyện"
+
+#~ msgid ""
+#~ "This name will be used to identify you when new contacts lookup your "
+#~ "details"
+#~ msgstr ""
+#~ "Tên này sẽ được dùng để nhận diện bạn khi liên lạc mới tra tìm chi tiết "
+#~ "về bạn"
+
+#~ msgid "Use default name here from the contact's VCard."
+#~ msgstr "Ở đây dùng tên mặc định từ vCard của liên lạc."
+
+#~ msgid "Use system pro_xy"
+#~ msgstr "Dùng ủ_y nhiệm hệ thống"
+
+#~ msgid "Version:"
+#~ msgstr "Phiên bản:"
+
+#~ msgid "View Previous Conversations"
+#~ msgstr "Xem đối thoại trước"
+
+#~ msgid "Which account do you want to use?"
+#~ msgstr "Bạn có muốn sử dụng tài khoản nào?"
+
+#~ msgid "You are not subscribed to this contact."
+#~ msgstr "Bạn chưa đăng ký với liên lạc này."
+
+#~ msgid "_Connect"
+#~ msgstr "_Kết nối"
+
+#, fuzzy
+#~ msgid "_Description:"
+#~ msgstr "Mô tả:"
+
+#~ msgid "_Disconnect"
+#~ msgstr "_Ngắt kết nối"
+
+#, fuzzy
+#~ msgid "_Email:"
+#~ msgstr "Thư điện tử :"
+
+#, fuzzy
+#~ msgid ""
+#~ "_Enter the name or contact ID of the person you want to chat to below:"
+#~ msgstr ""
+#~ "Hãy gõ bên dưới tên hoặc ID liên lạc của người với mà bạn muốn trò chuyện:"
+
+#, fuzzy
+#~ msgid "_For:"
+#~ msgstr "_Cổng:"
+
+#, fuzzy
+#~ msgid "_Full Name:"
+#~ msgstr "Tê_n:"
+
+#, fuzzy
+#~ msgid "_Group:"
+#~ msgstr "_Nhóm"
+
+#, fuzzy
+#~ msgid "_Nick Name:"
+#~ msgstr "Tê_n hiệu :"
+
+#, fuzzy
+#~ msgid "_Password:"
+#~ msgstr "_Mật khẩu :"
+
+#, fuzzy
+#~ msgid "_Quit Message:"
+#~ msgstr "Tin nhẳn mới"
+
+#~ msgid "_Retrieve"
+#~ msgstr "_Lấy"
+
+#~ msgid "_Subscribe"
+#~ msgstr "Đăng _ký"
+
+#, fuzzy
+#~ msgid "_Web site:"
+#~ msgstr "Chỗ Mạng:"
+
+#, fuzzy
+#~ msgid "irc account settings"
+#~ msgstr "Sử_a chi tiết tài khoản"
+
+#~ msgid "Edit"
+#~ msgstr "Hiệu chỉnh"
+
+#~ msgid "Perhaps you are trying to connect to the wrong port?"
+#~ msgstr "Có lẽ bạn đang cố kết nối đến cổng không đúng?"
+
+#~ msgid "Perhaps the service is not currently running?"
+#~ msgstr "Có lẽ dịch vụ không đang chạy?"
+
+#~ msgid "Check your connection details."
+#~ msgstr "Hãy kiểm tra xem chi tiết kết nối là đúng."
+
+#~ msgid "Perhaps the server is not running this service."
+#~ msgstr "Có lẽ máy phục vụ không đang chạy dịch vụ này."
+
+#~ msgid "Check your username and password are correct."
+#~ msgstr "Hãy kiểm tra xem đã gõ tên người dùng và mật khẩu đúng."
+
+#~ msgid "%s will be added to your contact list."
+#~ msgstr "%s sẽ được thêm vào danh sách liên lạc của bạn."
+
+#~ msgid "%s ID of new contact:"
+#~ msgstr "%s ID của liên lạc mới :"
+
+#~ msgid "Example: %s"
+#~ msgstr "Ví dụ : %s"
+
+#~ msgid "Show accounts and pending connections"
+#~ msgstr "Hiện các tài khoản và kết nối bị hoãn"
+
+#~ msgid "You have no Instant Messaging accounts configured!"
+#~ msgstr "Bạn chưa cấu hình tài khoản Tin nhắn tức khắc."
+
+#~ msgid ""
+#~ "Next you will be presented with the Account Information dialog to set "
+#~ "your details up."
+#~ msgstr ""
+#~ "Bước sau, bạn có thể thiết lập chi tiết mình trong hộp thoại Thông tin "
+#~ "Tài khoản."
+
+#~ msgid "Favourite"
+#~ msgstr "Ưa thích"
+
+#~ msgid "Registering account"
+#~ msgstr "Đang đăng ký tài khoản..."
+
+#~ msgid "Add to _favourites"
+#~ msgstr "Thêm vào ư_a thích"
+
+#~ msgid ""
+#~ "Customize your own nickname, the server and chatroom which you wish to "
+#~ "join."
+#~ msgstr ""
+#~ "Tùy chỉnh tên hiệu mình, máy phục vụ và phòng trò chuyện bạn muốn vào."
+
+#~ msgid "Edit your chat room details:"
+#~ msgstr "Hiệu chỉnh chi tiết phòng trò chuyện:"
+
+#~ msgid "Na_me:"
+#~ msgstr "Tê_n:"
+
+#~ msgid "New Chat Room"
+#~ msgstr "Phòng trò chuyện mới"
+
+#~ msgid ""
+#~ "Pick a saved chat room from the presets available below and click Join to "
+#~ "start chatting."
+#~ msgstr ""
+#~ "Chọn một phòng trò chuyện đã lưu trong danh sách định sẵn bên dưới, rồi "
+#~ "nhắp vào nút « Tham gia » để bắt đầu nói chuyện."
+
+#~ msgid "Save _this chat room"
+#~ msgstr "Lưu phòng _trò chuyện này"
+
+#~ msgid " "
+#~ msgstr " "
+
+#~ msgid "<b>Information requested, please wait...</b>"
+#~ msgstr "<b>Thông tin được yêu cầu, hãy đợi...</b>"
+
+#~ msgid "<span size=\"smaller\">Example:</span>"
+#~ msgstr "<span size=\"smaller\">Ví dụ</span>"
+
+#~ msgid "Account Name"
+#~ msgstr "Tên tài khoản"
+
+#~ msgid "Add a contact"
+#~ msgstr "Thêm liên lạc"
+
+#~ msgid "Connection Details"
+#~ msgstr "Chi tiết kết nối"
+
+#~ msgid "Contact information"
+#~ msgstr "Thông tin liên lạc"
+
+#~ msgid "Do you already have an account set up on a server?"
+#~ msgstr "Bạn đã thiết lập tài khoản trên máy phục vụ chưa?"
+
+#~ msgid "Enter a name for this account"
+#~ msgstr "Gõ tên cho tài khoản này"
+
+#~ msgid "Enter the port used in the connection for this account"
+#~ msgstr "Hãy gõ số hiệu cổng dùng khi kết nối tài khoản này"
+
+#~ msgid "Enter the server used in the connection for this account"
+#~ msgstr "Hãy gõ máy phục vụ dùng khi kết nối tài khoản này"
+
+#~ msgid "Enter the user's contact ID:"
+#~ msgstr "Hãy gõ ID liên lạc của người dùng:"
+
+#~ msgid "Enter your real name here"
+#~ msgstr "Hãy gõ vào đây tên thật của bạn"
+
+#~ msgid "Finished"
+#~ msgstr "Đã xong"
+
+#~ msgid "For increased security, enable this option"
+#~ msgstr "Bật tùy chọn này để bảo mật hơn"
+
+#~ msgid "Gossip"
+#~ msgstr "Gossip"
+
+#~ msgid ""
+#~ "Gossip is a modern client for the Jabber Instant Messaging system.\n"
+#~ "\n"
+#~ "This assistant will help you configure Gossip and connect you to your "
+#~ "favorite Jabber server.\n"
+#~ "\n"
+#~ "To get started, just click \"Forward\"."
+#~ msgstr ""
+#~ "Gossip là một ứng dụng khách hiện thời cho hệ thống Tin nhắn tức khắc "
+#~ "Jabber.\n"
+#~ "\n"
+#~ "Trợ lý này sẽ giúp đỡ bạn cấu hình trình Gossip và kết nối bạn đến mấy "
+#~ "phục vụ Jabber ưa thích.\n"
+#~ "\n"
+#~ "Để bắt đầu tiến trình cấu hình, đơn giản hãy nhắp vào nút « Tiếp »."
+
+#~ msgid "Group:"
+#~ msgstr "Nhóm:"
+
+#~ msgid ""
+#~ "If you have another machine on your network which 'proxies' the "
+#~ "connection to the internet and you want to use it, enable this option"
+#~ msgstr ""
+#~ "Nếu bạn có máy khác nằm trên mạng mà làm « ủy nhiệm » kết nối đến Mạng và "
+#~ "bạn muốn sử dụng nó, hãy bật tùy chọn này"
+
+#~ msgid ""
+#~ "If you need to set specific connection details, like a different server "
+#~ "or port, you can configure that here:"
+#~ msgstr ""
+#~ "Nếu bạn cần phải đặt một số chi tiết kết nối riêng, lấy thí dụ, máy phục "
+#~ "vụ hay cổng khác, có thể cấu hình nó ở đây."
+
+#~ msgid ""
+#~ "In order to subscribe to presence notifications from the user, a request "
+#~ "will be sent. Until this request is approved, the user will always be "
+#~ "shown as \"Offline\" in your contact list."
+#~ msgstr ""
+#~ "Bạn cần yêu cầu nhận thông báo sự có mặt của người dùng. Người dùng này "
+#~ "sẽ được hiển thị « Ngoại tuyến » trong danh sách liên lạc của bạn, cho "
+#~ "đến khi yêu cầu thông báo đã được chấp nhận."
+
+#~ msgid "In which group do you want to place this contact?"
+#~ msgstr "Bạn có muốn để liên lạc này vào nhóm nào?"
+
+#~ msgid "Jabber ID:"
+#~ msgstr "ID Jabber:"
+
+#~ msgid ""
+#~ "Leave this blank if you don't want your password stored on a public "
+#~ "machine. If you decide to do this, you will be prompted each time you "
+#~ "connect for a password"
+#~ msgstr ""
+#~ "Bỏ rỗng nếu bạn không muốn cho phép mật khẩu của mình được cất giữ trên "
+#~ "máy công. Tuy nhiên, bạn sẽ được nhắc với mật khẩu mỗi lần kết nối"
+
+#~ msgid "Nickname:"
+#~ msgstr "Tên hiệu :"
+
+#~ msgid "Port:"
+#~ msgstr "Cổng:"
+
+#~ msgid "Press Subscribe to request to receive their status"
+#~ msgstr "Ấn nút « Đăng ký » để yêu cầu nhận thông báo trạng thái của họ"
+
+#~ msgid "Registering Account"
+#~ msgstr "Đăng ký tài khoản"
+
+#~ msgid "Resource:"
+#~ msgstr "Tài nguyên:"
+
+#~ msgid "Sending request"
+#~ msgstr "Đang gởi yêu cầu..."
+
+#~ msgid "Server:"
+#~ msgstr "Máy phục vụ :"
+
+#~ msgid ""
+#~ "Set the alias you want to use for:\n"
+#~ "<b>martyn@imendio.com</b>\n"
+#~ "\n"
+#~ "You can retrieve contact information from the server. "
+#~ msgstr ""
+#~ "Đặt tên hiệu bạn muốn dùng cho:\n"
+#~ "<b>martyn@imendio.com</b>\n"
+#~ "\n"
+#~ "Bạn có khả năng lấy thông tin liên lạc từ máy phục vụ. "
+
+#~ msgid "Web Site:"
+#~ msgstr "Chỗ Mạng:"
+
+#~ msgid "Welcome to Gossip"
+#~ msgstr "Chúc mừng bạn dùng Gossip"
+
+#~ msgid "What instant messaging system does the contact use?"
+#~ msgstr "Liên lạc này có sử dụng hệ thống tin nhắn tức khắc nào?"
+
+#~ msgid "What is your name?"
+#~ msgstr "Bạn tên nào?"
+
+#~ msgid ""
+#~ "What name do you want to use to identify this account?\n"
+#~ "\n"
+#~ "This name could be something associated with the service provider, for "
+#~ "example, <b>Google</b>."
+#~ msgstr ""
+#~ "Để nhận diện tài khoản này, bạn có muốn sử dụng tên nào?\n"
+#~ "\n"
+#~ "Lấy thí dụ, có thể chọn một tên liên quan đến bộ cung cấp dịch vụ, như "
+#~ "<b>Google</b>."
+
+#~ msgid "What password do you want to use?"
+#~ msgstr "Bạn có muốn sử dụng mật khẩu nào?"
+
+#~ msgid "What username do you use?"
+#~ msgstr "Bạn có sử dụng tên người dùng nào?"
+
+#~ msgid "What username do you want to use?"
+#~ msgstr "Bạn có muốn sử dụng tên người dùng nào?"
+
+#~ msgid "Which account do you want to add this contact to?"
+#~ msgstr "Bạn có muốn thêm liên lạc này vào tài khoản nào?"
+
+#~ msgid ""
+#~ "You can change your account settings later by selecting the Edit-"
+#~ ">Accounts menu item."
+#~ msgstr ""
+#~ "Bạn có thể thay đổi thiết lập tài khoản sau này, bằng cách chọn mục trình "
+#~ "đơn Hiệu chỉnh → Tài khoản."
+
+#~ msgid ""
+#~ "You need to set a name for the connection, for example, <b>Home</b> or "
+#~ "<b>Laptop</b>."
+#~ msgstr ""
+#~ "Bạn cần đặt tên riêng cho sự kết nối này, lấy thí dụ <b>Ở nhà</b> hoặc "
+#~ "<b>Máy tính xách tay</b>."
+
+#~ msgid "Your Account"
+#~ msgstr "Tài khoản của bạn"
+
+#~ msgid "Your Identity"
+#~ msgstr "Thực thể của bạn"
+
+#~ msgid "Your new account has now been set up."
+#~ msgstr "Tài khoản mới của bạn đã được thiết lập."
+
+#~ msgid "_Forget"
+#~ msgstr "_Quên"
+
+#~ msgid "_Group Chat"
+#~ msgstr "T_rò chuyện nhóm"
+
+#~ msgid "_No"
+#~ msgstr "Khô_ng"
+
+#~ msgid "_Search..."
+#~ msgstr "Tìm _kiếm..."
+
+#~ msgid "_Yes"
+#~ msgstr "_Có"
diff --git a/gnome-2-22/po/zh_CN.po b/gnome-2-22/po/zh_CN.po
new file mode 100644
index 000000000..775ce629c
--- /dev/null
+++ b/gnome-2-22/po/zh_CN.po
@@ -0,0 +1,1961 @@
+# traditional Chinese translation of gossip.
+# Convert to Simp. Chinese translation of gossip.
+# Copyright (C) 2003-2004 Free Software Foundation, Inc.
+# Abel Cheung <maddog@linux.org.hk>, 2003.
+# Mai Haohui <maihaohui@hotmail.com>, 2003.
+# Rongjun Mu <elanmu@sina.com>, 2003.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gossip\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-05-15 23:46+0200\n"
+"PO-Revision-Date: 2004-06-19 11:02+0800\n"
+"Last-Translator: Mai Haohui <maihaohui@hotmail.com>\n"
+"Language-Team: zh_CN <i18n-translation@lists.linux.net.cn>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: UTF-8\n"
+
+#: ../data/empathy.desktop.in.h:1
+#, fuzzy
+msgid "Empathy Instant Messenger"
+msgstr "即时通讯程序"
+
+#: ../data/empathy.desktop.in.h:2
+msgid "Instant Messenger"
+msgstr "即时通讯程序"
+
+#: ../data/empathy.schemas.in.h:1
+msgid "Always open a separate chat window for new chats."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:2
+msgid "Chat window theme"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:3
+msgid ""
+"Comma separated list of spell checker languages to use (e.g. en, fr, nl)."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:4
+#, fuzzy
+msgid "Compact contact list"
+msgstr "添加到您的联系人清单"
+
+#: ../data/empathy.schemas.in.h:5
+msgid "Contact list sort criterium"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:6
+msgid "Default directory to select an avatar image from"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:7
+msgid "Enable popup when contact is available"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:8
+#, fuzzy
+msgid "Enable sound when away"
+msgstr "当“离开”时关闭声音(_A)"
+
+#: ../data/empathy.schemas.in.h:9
+#, fuzzy
+msgid "Enable sound when busy"
+msgstr "当“忙碌”时关闭声音(_B)"
+
+#: ../data/empathy.schemas.in.h:10
+#, fuzzy
+msgid "Enable spell checker"
+msgstr "Gossip - 发送消息"
+
+#: ../data/empathy.schemas.in.h:11
+msgid "Hide main window"
+msgstr "隐藏主窗口"
+
+#: ../data/empathy.schemas.in.h:12
+msgid "Hide the main window."
+msgstr "隐藏主窗口。"
+
+#: ../data/empathy.schemas.in.h:13
+msgid "Open new chats in separate windows"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:14
+#, fuzzy
+msgid "Show avatars"
+msgstr "显示联系人清单(_S)"
+
+#: ../data/empathy.schemas.in.h:15
+#, fuzzy
+msgid "Show hint about closing the main window"
+msgstr "主窗口高度。"
+
+#: ../data/empathy.schemas.in.h:16
+msgid "Show offline contacts"
+msgstr "显示离线联系人"
+
+#: ../data/empathy.schemas.in.h:17
+msgid "Spell checking languages"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:18
+msgid "The last directory that an avatar image was chosen from."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:19
+#, fuzzy
+msgid "The theme that is used to display the conversation in chat windows."
+msgstr "此名称将在聊天窗口中标识您。"
+
+#: ../data/empathy.schemas.in.h:20
+msgid "Use graphical smileys"
+msgstr "使用表情图标"
+
+#: ../data/empathy.schemas.in.h:21
+msgid "Use notification sounds"
+msgstr "使用通知声音"
+
+#: ../data/empathy.schemas.in.h:22
+msgid "Use theme for chat rooms"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:23
+msgid ""
+"Whether or not to check words typed against the languages you want to check "
+"with."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:24
+msgid ""
+"Whether or not to convert smileys into graphical images in conversations."
+msgstr "对话时是否将表情符号转换为真正的图标。"
+
+#: ../data/empathy.schemas.in.h:25
+msgid "Whether or not to play a sound when messages arrive."
+msgstr "收到消息时是否播放声音。"
+
+#: ../data/empathy.schemas.in.h:26
+msgid "Whether or not to play sounds when away."
+msgstr "“离开”时是否播放声音。"
+
+#: ../data/empathy.schemas.in.h:27
+msgid "Whether or not to play sounds when busy."
+msgstr "“忙碌”时是否播放声音。"
+
+#: ../data/empathy.schemas.in.h:28
+#, fuzzy
+msgid "Whether or not to show a popup when a contact becomes available."
+msgstr "收到消息时是否播放声音。"
+
+#: ../data/empathy.schemas.in.h:29
+#, fuzzy
+msgid ""
+"Whether or not to show avatars for contacts in the contact list and chat "
+"windows."
+msgstr "是否显示联系人清单中离线的联系人。"
+
+#: ../data/empathy.schemas.in.h:30
+msgid "Whether or not to show contacts that are offline in the contact list."
+msgstr "是否显示联系人清单中离线的联系人。"
+
+#: ../data/empathy.schemas.in.h:31
+msgid ""
+"Whether or not to show the message dialog about closing the main window with "
+"the 'x' button in the title bar."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:32
+#, fuzzy
+msgid "Whether to show the contact list in compact mode or not."
+msgstr "是否显示联系人清单中离线的联系人。"
+
+#: ../data/empathy.schemas.in.h:33
+msgid "Whether to use the theme for chat rooms or not."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:34
+msgid ""
+"Which criterium to use when sorting the contact list. Default is to use sort "
+"by the contact's name with the value \"name\". A value of \"state\" will "
+"sort the contact list by state."
+msgstr ""
+
+#: ../libempathy/gossip-contact.c:654 ../libempathy/gossip-presence.c:184
+#: ../libempathy/gossip-presence.c:283
+msgid "Offline"
+msgstr "离线"
+
+#: ../libempathy/gossip-presence.c:274
+msgid "Available"
+msgstr "在线"
+
+#: ../libempathy/gossip-presence.c:276
+msgid "Busy"
+msgstr "忙碌"
+
+#: ../libempathy/gossip-presence.c:279
+msgid "Away"
+msgstr "离开"
+
+#: ../libempathy-gtk/empathy-main-window.c:254
+#, fuzzy
+msgid "Show and edit accounts"
+msgstr "显示联系人清单(_S)"
+
+#: ../libempathy-gtk/empathy-main-window.c:456
+msgid "Group"
+msgstr "组"
+
+#: ../libempathy-gtk/empathy-main-window.c:477
+#, fuzzy
+msgid "Contact"
+msgstr "添加联系人(_A)..."
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:1
+#, fuzzy
+msgid "Contact List - Empathy"
+msgstr "隐藏联系人清单(_H)"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:2
+#, fuzzy
+msgid "Context"
+msgstr "连接"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:3
+#, fuzzy
+msgid "Join _Favorites"
+msgstr "编辑收藏夹(_E)..."
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:4
+#: ../libempathy-gtk/gossip-chat.glade.h:10
+msgid "Join _New..."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:5
+msgid "Manage Favorites..."
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:6
+msgid "Show _Offline Contacts"
+msgstr "显示离线联系人(_O)"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:7
+#, fuzzy
+msgid "_About"
+msgstr "接受(_A)"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:8
+#, fuzzy
+msgid "_Accounts"
+msgstr "接受(_A)"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:9
+#: ../libempathy-gtk/gossip-chat.glade.h:15
+msgid "_Add Contact..."
+msgstr "添加联系人(_A)..."
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:10
+#: ../libempathy-gtk/gossip-contact-list.c:298
+msgid "_Chat"
+msgstr "聊天(_C)"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:11
+#, fuzzy
+msgid "_Contents"
+msgstr "连接"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:12
+#: ../libempathy-gtk/gossip-chat.glade.h:21
+#: ../libempathy-gtk/gossip-contact-list.c:310
+msgid "_Edit"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:13
+msgid "_Help"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:14
+#: ../libempathy-gtk/empathy-status-icon.glade.h:2
+msgid "_New Message..."
+msgstr "新建消息(_C)..."
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:15
+#, fuzzy
+msgid "_Personal Information"
+msgstr "个人信息"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:16
+msgid "_Preferences"
+msgstr "首选项(_P)"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:17
+#: ../libempathy-gtk/empathy-status-icon.glade.h:3
+msgid "_Quit"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:18
+#: ../libempathy-gtk/gossip-chat.glade.h:25
+#, fuzzy
+msgid "_Room"
+msgstr "房间(_R):"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:19
+#: ../libempathy-gtk/gossip-chat.glade.h:28
+#: ../libempathy-gtk/gossip-contact-list.c:326
+#, fuzzy
+msgid "_View Previous Conversations"
+msgstr "对话(_C)"
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:1
+msgid "Status"
+msgstr "状态"
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:4
+msgid "_Show Contact List"
+msgstr "显示联系人清单(_S)"
+
+#: ../libempathy-gtk/gossip-about-dialog.c:63
+msgid ""
+"Empathy is free software; you can redistribute it and/or modify it under the "
+"terms of the GNU General Public License as published by the Free Software "
+"Foundation; either version 2 of the License, or (at your option) any later "
+"version."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-about-dialog.c:67
+msgid ""
+"Empathy is distributed in the hope that it will be useful, but WITHOUT ANY "
+"WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS "
+"FOR A PARTICULAR PURPOSE. See the GNU General Public License for more "
+"details."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-about-dialog.c:71
+msgid ""
+"You should have received a copy of the GNU General Public License along with "
+"Empathy; if not, write to the Free Software Foundation, Inc., 51 Franklin "
+"Street, Fifth Floor, Boston, MA 02110-130159 USA"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-about-dialog.c:99
+#, fuzzy
+msgid "An Instant Messaging client for GNOME"
+msgstr "Gossip 即时通讯客户端"
+
+#: ../libempathy-gtk/gossip-about-dialog.c:105
+#, fuzzy
+msgid "translator-credits"
+msgstr ""
+"开源软件国际化简体中文组\n"
+"(http://i18n.linux.net.cn)\n"
+"Abel Cheung\n"
+"Mai Haohui\n"
+"Rongjun Mu"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:224
+#, fuzzy
+msgid "Disable"
+msgstr "在线"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:227
+msgid "Enable"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:261
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:3
+#, fuzzy
+msgid "<b>No Account Selected</b>"
+msgstr "<b>帐户设置</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:263
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to start configuring.\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want "
+"to configure in the list on the left."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:272
+#, fuzzy
+msgid "<b>No Accounts Configured</b>"
+msgstr "<b>帐户设置</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:274
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to start configuring."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:362
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:6
+#, fuzzy
+msgid "Accounts"
+msgstr "Jabber 帐户"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:857
+#, c-format
+msgid ""
+"You are about to remove your %s account!\n"
+"Are you sure you want to proceed?"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:863
+msgid ""
+"Any associated conversations and chat rooms will NOT be removed if you "
+"decide to proceed.\n"
+"\n"
+"Should you decide to add the account back at a later time, they will still "
+"be available."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:1
+#, fuzzy
+msgid "<b>Account</b>"
+msgstr "<b>收藏夹:</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:2
+#, fuzzy
+msgid "<b>New Account</b>"
+msgstr "<b>收藏夹:</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:4
+#, fuzzy
+msgid "<b>Settings</b>"
+msgstr "<b>帐户设置</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:5
+msgid "A unique name for this account to identify it personally to you."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:7
+#, fuzzy
+msgid "Cr_eate"
+msgstr "聊天"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:8
+msgid "Imendio "
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:9
+msgid "Jabber"
+msgstr "Jabber"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:10
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to started configuring.\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want "
+"to configure in the list on the left."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:13
+#, fuzzy
+msgid "_Name:"
+msgstr "名字:"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:14
+#, fuzzy
+msgid "_Type:"
+msgstr "话题(_T):"
+
+#: ../libempathy-gtk/gossip-account-widget-generic.c:144
+#: ../libempathy-gtk/gossip-account-widget-generic.c:186
+#, c-format
+msgid "%s:"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:1
+#, fuzzy
+msgid ""
+"<small><b><span foreground=\"#555\">Example: user@jabber.org</span></b></"
+"small>"
+msgstr "<span size=\"smaller\">例如:user@jabber.org</span>"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:2
+msgid "Forget password and clear the entry."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:3
+msgid "Login I_D:"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:4
+#, fuzzy
+msgid "Pass_word:"
+msgstr "密码(_P):"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:5
+#, fuzzy
+msgid "Reso_urce:"
+msgstr "资源(_R):"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:6
+#, fuzzy
+msgid "Use encryption (SS_L)"
+msgstr "将消息用 SSL 加密(_E)"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:7
+#, fuzzy
+msgid "_Port:"
+msgstr "端口(_O):"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:8
+msgid "_Server:"
+msgstr "服务器(_S):"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:9
+#, fuzzy
+msgid "jabber account settings"
+msgstr "<b>帐户设置</b>"
+
+#: ../libempathy-gtk/gossip-chat.c:314
+msgid "Disconnected"
+msgstr "已断开连接"
+
+#: ../libempathy-gtk/gossip-chat.c:858
+msgid "Insert Smiley"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.c:906
+msgid "_Check Word Spelling..."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.c:1244
+msgid "Connected"
+msgstr "已连接"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:1
+msgid "C_lear"
+msgstr "清除(_L)"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:2
+msgid "Change _Topic..."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:3
+msgid "Chat"
+msgstr "聊天"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:4
+#, fuzzy
+msgid "Contact Infor_mation"
+msgstr "联系人信息(_I)"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:5
+#, fuzzy
+msgid "Cu_t"
+msgstr "聊天"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:6
+#, fuzzy
+msgid "In_vite..."
+msgstr "注册(_G)..."
+
+#: ../libempathy-gtk/gossip-chat.glade.h:7
+msgid "Insert _Smiley"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:8
+#, fuzzy
+msgid "Invitation _message:"
+msgstr "输入状态消息:"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:9
+msgid "Invite"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:11
+msgid "Move Tab _Left"
+msgstr "左移标签(_L)"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:12
+msgid "Move Tab _Right"
+msgstr "右移标签(_R)"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:13
+msgid "Select who would you like to invite:"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:14
+msgid "You have been invited to join a chat conference."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:16
+#, fuzzy
+msgid "_Add To Favorites"
+msgstr "编辑收藏夹(_E)..."
+
+#: ../libempathy-gtk/gossip-chat.glade.h:17
+msgid "_Close"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:18
+msgid "_Conversation"
+msgstr "对话(_C)"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:19
+msgid "_Copy"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:20
+msgid "_Detach Tab"
+msgstr "分离标签(_D)"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:22
+msgid "_Next Tab"
+msgstr "下一标签(_N)"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:23
+msgid "_Paste"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:24
+msgid "_Previous Tab"
+msgstr "上一标签(_P)"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:26
+#, fuzzy
+msgid "_Show Contacts"
+msgstr "显示联系人清单(_S)"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:27
+msgid "_Tabs"
+msgstr "标签(_T)"
+
+#: ../libempathy-gtk/gossip-chat-view.c:544
+msgid "_Copy Link Address"
+msgstr "复制链接地址(_C)"
+
+#: ../libempathy-gtk/gossip-chat-view.c:552
+msgid "_Open Link"
+msgstr "打开链接(_O)"
+
+#: ../libempathy-gtk/gossip-chat-view.c:889
+msgid "%A %d %B %Y"
+msgstr "%Y年%-m月%-d日%A"
+
+#: ../libempathy-gtk/gossip-chat-window.c:685
+#: ../libempathy-gtk/gossip-chat-window.c:715
+#, fuzzy
+msgid "New Message"
+msgid_plural "New Messages"
+msgstr[0] "新建消息(_C)..."
+msgstr[1] "新建消息(_C)..."
+
+#: ../libempathy-gtk/gossip-chat-window.c:691
+#, fuzzy
+msgid "Chat Room"
+msgstr "Gossip - 聊天"
+
+#: ../libempathy-gtk/gossip-chat-window.c:696
+#: ../libempathy-gtk/gossip-chat-window.c:719
+#, fuzzy, c-format
+msgid "Conversation"
+msgid_plural "Conversations (%d)"
+msgstr[0] "对话(_C)"
+msgstr[1] "对话(_C)"
+
+#: ../libempathy-gtk/gossip-chat-window.c:1295
+msgid "Typing a message."
+msgstr "输入消息。"
+
+#: ../libempathy-gtk/gossip-contact-list.c:290
+#, fuzzy
+msgid "_Contact"
+msgstr "添加联系人(_A)..."
+
+#: ../libempathy-gtk/gossip-contact-list.c:294
+#, fuzzy
+msgid "_Group"
+msgstr "组"
+
+#: ../libempathy-gtk/gossip-contact-list.c:298
+#, fuzzy
+msgid "Chat with contact"
+msgstr "加入一位联系人"
+
+#: ../libempathy-gtk/gossip-contact-list.c:302
+#, fuzzy
+msgid "Infor_mation"
+msgstr "联系人信息(_I)"
+
+#: ../libempathy-gtk/gossip-contact-list.c:302
+#, fuzzy
+msgid "View contact information"
+msgstr "联系人信息"
+
+#: ../libempathy-gtk/gossip-contact-list.c:306
+#, fuzzy
+msgid "Re_name"
+msgstr "/更改组名(_N)"
+
+#: ../libempathy-gtk/gossip-contact-list.c:306
+#, fuzzy
+msgid "Rename"
+msgstr "用户名(_U):"
+
+#: ../libempathy-gtk/gossip-contact-list.c:310
+#, fuzzy
+msgid "Edit the groups and name for this contact"
+msgstr "请输入联系人 %s 的新昵称"
+
+#: ../libempathy-gtk/gossip-contact-list.c:314
+msgid "_Remove"
+msgstr "删除(_R)"
+
+#: ../libempathy-gtk/gossip-contact-list.c:314
+#, fuzzy
+msgid "Remove contact"
+msgstr "/删除联系人(_R)"
+
+#: ../libempathy-gtk/gossip-contact-list.c:318
+#, fuzzy
+msgid "_Invite to Chat Room"
+msgstr "Gossip - 编辑聊天组"
+
+#: ../libempathy-gtk/gossip-contact-list.c:318
+msgid "Invite to a currently open chat room"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-contact-list.c:322
+msgid "_Send File..."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-contact-list.c:322
+#, fuzzy
+msgid "Send a file"
+msgstr "选择"
+
+#: ../libempathy-gtk/gossip-contact-list.c:326
+#, fuzzy
+msgid "View previous conversations with this contact"
+msgstr "对话(_C)"
+
+#: ../libempathy-gtk/gossip-preferences.c:250
+msgid "Language"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:1
+#, fuzzy
+msgid "<b>Appearance</b>"
+msgstr "外观"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:2
+#, fuzzy
+msgid "<b>Audio</b>"
+msgstr "<b>收藏夹:</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:3
+#, fuzzy
+msgid "<b>Behaviour</b>"
+msgstr "<b>收藏夹:</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:4
+#, fuzzy
+msgid "<b>Contact List</b>"
+msgstr "状态"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:5
+msgid "<b>Languages</b>"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:6
+#, fuzzy
+msgid "<b>Options</b>"
+msgstr "连接"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:7
+#, fuzzy
+msgid "<b>Visual</b>"
+msgstr "<b>描述</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:8
+msgid ""
+"<small>The list of languages reflects only the languages for which you have "
+"a dictionary installed.</small>"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:9
+msgid "Avatars are user chosen images shown in the contact list"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:10
+#, fuzzy
+msgid "Chat Th_eme:"
+msgstr "聊天名称(_N):"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:11
+msgid "Display notifications when contacts come _online"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:12
+#, fuzzy
+msgid "Enable sounds when _away"
+msgstr "当“离开”时关闭声音(_A)"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:13
+#, fuzzy
+msgid "Enable sounds when _busy"
+msgstr "当“忙碌”时关闭声音(_B)"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:14
+msgid "General"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:15
+#, fuzzy
+msgid "Notifications"
+msgstr "使用通知声音"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:16
+#, fuzzy
+msgid "Preferences"
+msgstr "首选项(_P)"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:17
+msgid "Show _avatars"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:18
+#, fuzzy
+msgid "Show _smileys as images"
+msgstr "将表情符号转换为图形(_S)"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:19
+#, fuzzy
+msgid "Show co_mpact contact list"
+msgstr "显示联系人清单(_S)"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:20
+msgid "Sort by _name"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:21
+msgid "Sort by s_tate"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:22
+msgid "Spell Checking"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:23
+msgid "Themes"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:24
+msgid "_Enable spell checking"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:25
+msgid "_Open new chats in separate windows"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:26
+#, fuzzy
+msgid "_Play sound when messages arrive"
+msgstr "收到消息时播放声音"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:27
+#, fuzzy
+msgid "_Use for chat rooms"
+msgstr "Gossip - 编辑聊天组"
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:702
+#, fuzzy
+msgid "Custom message..."
+msgstr "请求消息"
+
+#. Clear list
+#: ../libempathy-gtk/gossip-presence-chooser.c:724
+#, fuzzy
+msgid "Clear List..."
+msgstr "清除(_L)"
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:803
+#, fuzzy
+msgid "Are you sure you want to clear the list?"
+msgstr "您要接受请求吗?"
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:807
+msgid ""
+"This will remove any custom messages you have added to the list of preset "
+"status messages."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:812
+#, fuzzy
+msgid "Clear List"
+msgstr "清除(_L)"
+
+#: ../libempathy-gtk/gossip-presence-chooser.glade.h:1
+msgid "Enter status message:"
+msgstr "输入状态消息:"
+
+#: ../libempathy-gtk/gossip-presence-chooser.glade.h:2
+#, fuzzy
+msgid "Status Message Presets"
+msgstr "状态消息"
+
+#: ../libempathy-gtk/gossip-presence-chooser.glade.h:3
+#, fuzzy
+msgid "_Add to status message list"
+msgstr "预设状态消息"
+
+#: ../libempathy-gtk/gossip-private-chat.c:198
+#, c-format
+msgid "%s went offline"
+msgstr "%s 离线了"
+
+#: ../libempathy-gtk/gossip-private-chat.c:212
+#, fuzzy, c-format
+msgid "%s has come online"
+msgstr "%s 上线了"
+
+#: ../libempathy-gtk/gossip-theme-manager.c:87
+msgid "Classic"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-theme-manager.c:88
+msgid "Simple"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-theme-manager.c:89
+#, fuzzy
+msgid "Clean"
+msgstr "清除(_L)"
+
+#: ../libempathy-gtk/gossip-theme-manager.c:90
+msgid "Blue"
+msgstr ""
+
+#: ../src/empathy-main.c:145
+msgid "Don't connect on startup"
+msgstr "启动时不自动登录"
+
+#: ../src/empathy-main.c:155
+#, fuzzy
+msgid "- Empathy Instant Messenger"
+msgstr "即时通讯程序"
+
+#, fuzzy
+#~ msgid "Gossip Instant Messenger"
+#~ msgstr "即时通讯程序"
+
+#, fuzzy
+#~ msgid "Joining"
+#~ msgstr "加入(_J)"
+
+#, fuzzy
+#~ msgid "Unknown"
+#~ msgstr "未知的错误"
+
+#, fuzzy
+#~ msgid "No affiliation"
+#~ msgstr "使用通知声音"
+
+#, fuzzy
+#~ msgid "An unknown error occurred, check your details are correct."
+#~ msgstr "未知的错误"
+
+#, fuzzy
+#~ msgid "Unavailable"
+#~ msgstr "在线"
+
+#, fuzzy
+#~ msgid "An unknown error occurred."
+#~ msgstr "未知的错误"
+
+#, fuzzy
+#~ msgid "Connection refused."
+#~ msgstr "已连接"
+
+#, fuzzy
+#~ msgid "Connection timed out."
+#~ msgstr "已连接"
+
+#, fuzzy
+#~ msgid "new account"
+#~ msgstr "Jabber 帐户"
+
+#~ msgid "Home"
+#~ msgstr "首页"
+
+#, fuzzy
+#~ msgid "Registration is required"
+#~ msgstr "正在注册帐户"
+
+#, fuzzy
+#~ msgid "Disconnect"
+#~ msgstr "断开连接(_D)"
+
+#~ msgid "Connect"
+#~ msgstr "连接"
+
+#, fuzzy
+#~ msgid "Successfully registered your new account settings."
+#~ msgstr "成功注册帐户"
+
+#, fuzzy
+#~ msgid "Failed to register your new account settings."
+#~ msgstr "注册帐户失败"
+
+#, fuzzy
+#~ msgid "Successfully changed your account password."
+#~ msgstr "请输入您的密码:"
+
+#, fuzzy
+#~ msgid "Failed to change your account password."
+#~ msgstr "请输入您的密码:"
+
+#, fuzzy
+#~ msgid ""
+#~ "Please enter a new password for this account:\n"
+#~ "%s"
+#~ msgstr "请为组 %s 输入新名称"
+
+#, fuzzy
+#~ msgid "Information requested, please wait..."
+#~ msgstr "<b>已请求信息,请稍等...</b>"
+
+#~ msgid "I would like to add you to my contact list."
+#~ msgstr "我希望可以将您加入我的联系人清单内。"
+
+#, fuzzy
+#~ msgid "%d new message"
+#~ msgid_plural "%d new messages"
+#~ msgstr[0] "新建消息(_C)..."
+#~ msgstr[1] "新建消息(_C)..."
+
+#, fuzzy
+#~ msgid "%d subscription request"
+#~ msgid_plural "%d subscription requests"
+#~ msgstr[0] "订阅请求"
+#~ msgstr[1] "订阅请求"
+
+#, fuzzy
+#~ msgid "Edit Account _Details"
+#~ msgstr "修改帐户信息"
+
+#~ msgid "New message from %s"
+#~ msgstr "收到来自 %s 的消息"
+
+#, fuzzy
+#~ msgid "Accept"
+#~ msgstr "接受(_A)"
+
+#, fuzzy
+#~ msgid "Name"
+#~ msgstr "名字:"
+
+#, fuzzy
+#~ msgid "Room"
+#~ msgstr "房间(_R):"
+
+#, fuzzy
+#~ msgid "Auto Connect"
+#~ msgstr "连接"
+
+#, fuzzy
+#~ msgid "Information requested..."
+#~ msgstr "<b>已请求信息,请稍等...</b>"
+
+#, fuzzy
+#~ msgid "Do you want to remove this contact from your roster?"
+#~ msgstr ""
+#~ "您是否想从联系人清单中删除\n"
+#~ "%s?"
+
+#, fuzzy
+#~ msgid ""
+#~ "Please enter a new name for the group:\n"
+#~ "%s"
+#~ msgstr "请为组 %s 输入新名称"
+
+#~ msgid "Select"
+#~ msgstr "选择"
+
+#~ msgid "Unsorted"
+#~ msgstr "未排序"
+
+#, fuzzy
+#~ msgid "Unknown error occurred during file transfer."
+#~ msgstr "未知的错误"
+
+#, fuzzy
+#~ msgid "%s would like to send you a file."
+#~ msgstr "我希望可以将您加入我的联系人清单内。"
+
+#, fuzzy
+#~ msgid "Someone would like to send you a file."
+#~ msgstr "我希望可以将您加入我的联系人清单内。"
+
+#, fuzzy
+#~ msgid "Select a file"
+#~ msgstr "选择"
+
+#, fuzzy
+#~ msgid "Connecting..."
+#~ msgstr "连接(_C)..."
+
+#, fuzzy
+#~ msgid "Retry connection"
+#~ msgstr "连接"
+
+#, fuzzy
+#~ msgid "Enter the new topic you want to set for this room:"
+#~ msgstr "您想使用什么昵称来代表这个联系人?"
+
+#, fuzzy
+#~ msgid "Topic: %s"
+#~ msgstr "话题(_T):"
+
+#, fuzzy
+#~ msgid "Account"
+#~ msgstr "Jabber 帐户"
+
+#, fuzzy
+#~ msgid "Conversation With"
+#~ msgstr "对话(_C)"
+
+#~ msgid "List the available accounts"
+#~ msgstr "列出可使用的帐户"
+
+#~ msgid "Which account to connect to on startup"
+#~ msgstr "启动时连接到哪个帐户"
+
+#~ msgid "ACCOUNT-NAME"
+#~ msgstr "帐户名称"
+
+#~ msgid "Available accounts:"
+#~ msgstr "可使用的帐户:"
+
+#~ msgid "[default]"
+#~ msgstr "[默认]"
+
+#~ msgid "There is no account with the name '%s'."
+#~ msgstr "没有名为“%s”的帐户。"
+
+#, fuzzy
+#~ msgid "Join"
+#~ msgstr "加入(_J)"
+
+#, fuzzy
+#~ msgid "Create"
+#~ msgstr "聊天"
+
+#, fuzzy
+#~ msgid "Chat Rooms"
+#~ msgstr "Gossip - 聊天"
+
+#, fuzzy
+#~ msgid "Browsing for conference rooms, please wait..."
+#~ msgstr "<b>已请求信息,请稍等...</b>"
+
+#, fuzzy
+#~ msgid "Default"
+#~ msgstr "[默认]"
+
+#, fuzzy
+#~ msgid "Chat!"
+#~ msgstr "聊天"
+
+#, fuzzy
+#~ msgid "%s wants to be added to your contact list."
+#~ msgstr "%s 将会被加入至您的联系人清单。"
+
+#, fuzzy
+#~ msgid "Someone wants to be added to your contact list."
+#~ msgstr "%s 将会被加入至您的联系人清单。"
+
+#, fuzzy
+#~ msgid "Subscription request"
+#~ msgstr "订阅请求"
+
+#, fuzzy
+#~ msgid "Contact Information"
+#~ msgstr "联系人信息(_I)"
+
+#, fuzzy
+#~ msgid "New subscription request from %s"
+#~ msgstr "订阅请求"
+
+#, fuzzy
+#~ msgid "Do you want to add this person to your contact list?"
+#~ msgstr ""
+#~ "您是否想从联系人清单中删除\n"
+#~ "%s?"
+
+#, fuzzy
+#~ msgid "Do you want to add %s to your contact list?"
+#~ msgstr ""
+#~ "您是否想从联系人清单中删除\n"
+#~ "%s?"
+
+#, fuzzy
+#~ msgid "Please enter your %s account password"
+#~ msgstr "请输入您的密码:"
+
+#~ msgid "Remember Password?"
+#~ msgstr "是否记住密码?"
+
+#, fuzzy
+#~ msgid "Change"
+#~ msgstr "聊天"
+
+#, fuzzy
+#~ msgid "Contact goes online"
+#~ msgstr "%s 上线了"
+
+#, fuzzy
+#~ msgid "Do you want to accept this file?"
+#~ msgstr "您要接受请求吗?"
+
+#, fuzzy
+#~ msgid "File name:"
+#~ msgstr "用户名(_U):"
+
+#, fuzzy
+#~ msgid "File size:"
+#~ msgstr "网站:"
+
+#~ msgid "Web site:"
+#~ msgstr "网站:"
+
+#~ msgid "_Accept"
+#~ msgstr "接受(_A)"
+
+#~ msgid "_Deny"
+#~ msgstr "拒绝(_D)"
+
+#, fuzzy
+#~ msgid "<b>Topic:</b>"
+#~ msgstr "<b>收藏夹:</b>"
+
+#, fuzzy
+#~ msgid "Account:"
+#~ msgstr "Jabber 帐户"
+
+#, fuzzy
+#~ msgid "Edit Favorite Room"
+#~ msgstr "Gossip - 编辑聊天组"
+
+#, fuzzy
+#~ msgid "Group Chat"
+#~ msgstr "Gossip - 聊天"
+
+#, fuzzy
+#~ msgid "Join New"
+#~ msgstr "加入(_J)"
+
+#, fuzzy
+#~ msgid "Join room on start_up"
+#~ msgstr "启动时不自动登录"
+
+#, fuzzy
+#~ msgid "N_ame:"
+#~ msgstr "名字:"
+
+#, fuzzy
+#~ msgid "S_erver:"
+#~ msgstr "服务器:"
+
+#~ msgid "_Nickname:"
+#~ msgstr "昵称(_N):"
+
+#~ msgid "_Room:"
+#~ msgstr "房间(_R):"
+
+#, fuzzy
+#~ msgid "<b>About</b>"
+#~ msgstr "<b>收藏夹:</b>"
+
+#, fuzzy
+#~ msgid "<b>Client Information</b>"
+#~ msgstr "客户信息"
+
+#, fuzzy
+#~ msgid "<b>Groups</b>"
+#~ msgstr "<b>收藏夹:</b>"
+
+#, fuzzy
+#~ msgid "<b>Name</b>"
+#~ msgstr "状态"
+
+#, fuzzy
+#~ msgid "<b>Personal Details</b>"
+#~ msgstr "个人信息"
+
+#, fuzzy
+#~ msgid "<b>Subscription</b>"
+#~ msgstr "订阅"
+
+#, fuzzy
+#~ msgid "<span size=\"smaller\">Example: Mikael or user@server.org</span>"
+#~ msgstr "<span size=\"smaller\">例如:user@jabber.org</span>"
+
+#, fuzzy
+#~ msgid "Accou_nt:"
+#~ msgstr "Jabber 帐户"
+
+#, fuzzy
+#~ msgid "Add Contact"
+#~ msgstr "添加联系人(_A)..."
+
+#, fuzzy
+#~ msgid "Ch_at"
+#~ msgstr "聊天"
+
+#~ msgid "Client:"
+#~ msgstr "客户:"
+
+#, fuzzy
+#~ msgid "Con_tact:"
+#~ msgstr "添加联系人(_A)..."
+
+#, fuzzy
+#~ msgid "Connect on S_tartup"
+#~ msgstr "启动时不自动登录"
+
+#, fuzzy
+#~ msgid "Contacts"
+#~ msgstr "添加联系人(_A)..."
+
+#~ msgid "Country:"
+#~ msgstr "国籍:"
+
+#~ msgid "Decide _Later"
+#~ msgstr "以后再决定(_L)"
+
+#, fuzzy
+#~ msgid "Edit Contact"
+#~ msgstr "添加联系人(_A)..."
+
+#~ msgid "Edit Groups"
+#~ msgstr "编辑组"
+
+#~ msgid "Email:"
+#~ msgstr "电子邮件:"
+
+#, fuzzy
+#~ msgid "ID:"
+#~ msgstr "JID"
+
+#~ msgid "Name:"
+#~ msgstr "名字:"
+
+#~ msgid "OS:"
+#~ msgstr "操作系统:"
+
+#, fuzzy
+#~ msgid "Personal Details"
+#~ msgstr "个人信息(_P)"
+
+#, fuzzy
+#~ msgid "R_egister"
+#~ msgstr "注册(_G)..."
+
+#, fuzzy
+#~ msgid "Search"
+#~ msgstr "搜索(_S)..."
+
+#, fuzzy
+#~ msgid "Spell Checker"
+#~ msgstr "Gossip - 发送消息"
+
+#, fuzzy
+#~ msgid "Subscription Request"
+#~ msgstr "订阅请求"
+
+#, fuzzy
+#~ msgid "This is the name that will be used on your roster for this contact"
+#~ msgstr "您想使用什么昵称来代表这个联系人?"
+
+#, fuzzy
+#~ msgid "This name will be used to identify you in chat windows"
+#~ msgstr "此名称将在聊天窗口中标识您。"
+
+#, fuzzy
+#~ msgid ""
+#~ "This name will be used to identify you when new contacts lookup your "
+#~ "details"
+#~ msgstr "此名称将在聊天窗口中标识您。"
+
+#~ msgid "Version:"
+#~ msgstr "版本:"
+
+#, fuzzy
+#~ msgid "View Previous Conversations"
+#~ msgstr "对话(_C)"
+
+#, fuzzy
+#~ msgid "Which account do you want to use?"
+#~ msgstr "您想使用什么用户名?"
+
+#, fuzzy
+#~ msgid "_Connect"
+#~ msgstr "连接"
+
+#, fuzzy
+#~ msgid "_Description:"
+#~ msgstr "描述"
+
+#~ msgid "_Disconnect"
+#~ msgstr "断开连接(_D)"
+
+#, fuzzy
+#~ msgid "_Email:"
+#~ msgstr "电子邮件:"
+
+#, fuzzy
+#~ msgid ""
+#~ "_Enter the name or contact ID of the person you want to chat to below:"
+#~ msgstr "输入您想与他聊天的人的用户 ID"
+
+#, fuzzy
+#~ msgid "_For:"
+#~ msgstr "端口(_O):"
+
+#, fuzzy
+#~ msgid "_Full Name:"
+#~ msgstr "名字:"
+
+#, fuzzy
+#~ msgid "_Group:"
+#~ msgstr "组"
+
+#, fuzzy
+#~ msgid "_Nick Name:"
+#~ msgstr "昵称(_N):"
+
+#, fuzzy
+#~ msgid "_Password:"
+#~ msgstr "密码(_P):"
+
+#, fuzzy
+#~ msgid "_Quit Message:"
+#~ msgstr "状态消息(_S)"
+
+#, fuzzy
+#~ msgid "_Retrieve"
+#~ msgstr "删除(_R)"
+
+#~ msgid "_Subscribe"
+#~ msgstr "订阅(_S)"
+
+#, fuzzy
+#~ msgid "_Web site:"
+#~ msgstr "网站:"
+
+#, fuzzy
+#~ msgid "irc account settings"
+#~ msgstr "<b>帐户设置</b>"
+
+#, fuzzy
+#~ msgid "msn account settings"
+#~ msgstr "<b>帐户设置</b>"
+
+#~ msgid "Preset status messages"
+#~ msgstr "预设状态消息"
+
+#~ msgid "Preset status messages."
+#~ msgstr "预设状态消息。"
+
+#, fuzzy
+#~ msgid "Connecting"
+#~ msgstr "连接"
+
+#~ msgid "%s will be added to your contact list."
+#~ msgstr "%s 将会被加入至您的联系人清单。"
+
+#, fuzzy
+#~ msgid "%s ID of new contact:"
+#~ msgstr "新联系人的 Jabber ID(_J):"
+
+#, fuzzy
+#~ msgid ""
+#~ "Please enter your invitation message to:\n"
+#~ "%s"
+#~ msgstr "请输入您的密码:"
+
+#~ msgid "Contact Information for %s"
+#~ msgstr "%s 的联系人信息"
+
+#, fuzzy
+#~ msgid "/Contact Infor_mation"
+#~ msgstr "/联系人信息(_I)"
+
+#, fuzzy
+#~ msgid "/Re_name Contact"
+#~ msgstr "/更改联系人名称(_N)"
+
+#, fuzzy
+#~ msgid "/_Edit Groups"
+#~ msgstr "/编辑组(_E)"
+
+#, fuzzy
+#~ msgid "/_View Previous Conversations"
+#~ msgstr "对话(_C)"
+
+#~ msgid ""
+#~ "Please enter a new nickname for the contact\n"
+#~ "%s"
+#~ msgstr "请输入联系人 %s 的新昵称"
+
+#~ msgid "Edit groups for %s"
+#~ msgstr "编辑 %s 的组"
+
+#~ msgid "Conversation Log"
+#~ msgstr "对话日志"
+
+#~ msgid "Registering account"
+#~ msgstr "正在注册帐户"
+
+#, fuzzy
+#~ msgid "Respond"
+#~ msgstr "原因:"
+
+#, fuzzy
+#~ msgid "Add to _favourites"
+#~ msgstr "编辑收藏夹(_E)..."
+
+#, fuzzy
+#~ msgid "Na_me:"
+#~ msgstr "名字:"
+
+#, fuzzy
+#~ msgid "New Chat Room"
+#~ msgstr "Gossip - 聊天"
+
+#~ msgid " "
+#~ msgstr " "
+
+#, fuzzy
+#~ msgid "<b>Information requested, please wait...</b>"
+#~ msgstr "<b>已请求信息,请稍等...</b>"
+
+#, fuzzy
+#~ msgid "<span size=\"smaller\">Example:</span>"
+#~ msgstr "<span size=\"smaller\">例如:user@jabber.org</span>"
+
+#, fuzzy
+#~ msgid "Chat Rooms..."
+#~ msgstr "Gossip - 聊天"
+
+#, fuzzy
+#~ msgid "Connection Details"
+#~ msgstr "个人信息"
+
+#, fuzzy
+#~ msgid "Do you already have an account set up on a server?"
+#~ msgstr "您是否已经在 Jabber 服务器中有帐户了?"
+
+#, fuzzy
+#~ msgid "Enter the port used in the connection for this account"
+#~ msgstr "请输入联系人 %s 的新昵称"
+
+#, fuzzy
+#~ msgid "Enter the server used in the connection for this account"
+#~ msgstr "请输入联系人 %s 的新昵称"
+
+#, fuzzy
+#~ msgid "Finished"
+#~ msgstr "设置完成"
+
+#~ msgid "Gossip"
+#~ msgstr "Gossip"
+
+#~ msgid ""
+#~ "Gossip is a modern client for the Jabber Instant Messaging system.\n"
+#~ "\n"
+#~ "This assistant will help you configure Gossip and connect you to your "
+#~ "favorite Jabber server.\n"
+#~ "\n"
+#~ "To get started, just click \"Forward\"."
+#~ msgstr ""
+#~ "Gossip 是一个新潮的 Jabber 即时通讯客户端程序。\n"
+#~ "\n"
+#~ "此助理会帮助您配置 Gossip,并连接至您最喜欢的 Jabber 服务器。\n"
+#~ "\n"
+#~ "要开始,请点击“前进”。"
+
+#~ msgid ""
+#~ "In order to subscribe to presence notifications from the user, a request "
+#~ "will be sent. Until this request is approved, the user will always be "
+#~ "shown as \"Offline\" in your contact list."
+#~ msgstr ""
+#~ "您要发送一个请求才能订阅用户的在线通知。在您的联系人清单中,该用户会被显示"
+#~ "为“离线”直至他同意您的请求。"
+
+#~ msgid "In which group do you want to place this contact?"
+#~ msgstr "您想将这个联系人加入哪个组之内?"
+
+#~ msgid "Jabber ID:"
+#~ msgstr "Jabber ID:"
+
+#~ msgid "Nickname:"
+#~ msgstr "昵称:"
+
+#, fuzzy
+#~ msgid "Port:"
+#~ msgstr "端口(_O):"
+
+#, fuzzy
+#~ msgid "Registering Account"
+#~ msgstr "正在注册帐户"
+
+#, fuzzy
+#~ msgid "Resource:"
+#~ msgstr "资源(_R):"
+
+#~ msgid "Sending request"
+#~ msgstr "发送请求"
+
+#~ msgid "Server:"
+#~ msgstr "服务器:"
+
+#, fuzzy
+#~ msgid "Web Site:"
+#~ msgstr "网站:"
+
+#~ msgid "Welcome to Gossip"
+#~ msgstr "欢迎使用 Gossip"
+
+#~ msgid "What instant messaging system does the contact use?"
+#~ msgstr "该联系人使用哪种即时通讯系统?"
+
+#~ msgid "What is your name?"
+#~ msgstr "您的名字是?"
+
+#, fuzzy
+#~ msgid "What password do you want to use?"
+#~ msgstr "您想使用哪个服务器?"
+
+#~ msgid "What username do you use?"
+#~ msgstr "您使用什么用户名?"
+
+#~ msgid "What username do you want to use?"
+#~ msgstr "您想使用什么用户名?"
+
+#, fuzzy
+#~ msgid "Which account do you want to add this contact to?"
+#~ msgstr "您想将这个联系人加入哪个组之内?"
+
+#, fuzzy
+#~ msgid ""
+#~ "You can change your account settings later by selecting the Edit-"
+#~ ">Accounts menu item."
+#~ msgstr ""
+#~ "Gossip 已经正确完成设定。\n"
+#~ "您可以在稍后在菜单中选取“聊天→连接...”,更改帐户设定。"
+
+#, fuzzy
+#~ msgid "Your Account"
+#~ msgstr "Jabber 帐户"
+
+#~ msgid "Your Identity"
+#~ msgstr "您的身份"
+
+#, fuzzy
+#~ msgid "_Group Chat"
+#~ msgstr "Gossip - 聊天"
+
+#, fuzzy
+#~ msgid "_No"
+#~ msgstr "否"
+
+#~ msgid "_Search..."
+#~ msgstr "搜索(_S)..."
+
+#, fuzzy
+#~ msgid "_Yes"
+#~ msgstr "是"
+
+#~ msgid "Be silent when away"
+#~ msgstr "离开时不发出声音"
+
+#~ msgid "Be silent when busy"
+#~ msgstr "忙碌时不发出声音"
+
+#~ msgid "Height of main window"
+#~ msgstr "主窗口高度"
+
+#~ msgid "The X position of the main window."
+#~ msgstr "主窗口水平位置。"
+
+#~ msgid "The Y position of the main window."
+#~ msgstr "主窗口垂直位置。"
+
+#~ msgid "The width of the main window."
+#~ msgstr "主窗口宽度。"
+
+#~ msgid "Width of the main window"
+#~ msgstr "主窗口宽度"
+
+#~ msgid "X position of main window"
+#~ msgstr "主窗口水平位置"
+
+#~ msgid "Y position of main window"
+#~ msgstr "主窗口垂直位置"
+
+#~ msgid "Gossip, Instant Messaging Client"
+#~ msgstr "Gossip 即时通讯客户端"
+
+#, fuzzy
+#~ msgid "Close this chat window"
+#~ msgstr "隐藏主窗口。"
+
+#, fuzzy
+#~ msgid "Requested Information"
+#~ msgstr "帐户信息(_A)"
+
+#, fuzzy
+#~ msgid "Send Message"
+#~ msgstr "状态消息"
+
+#, fuzzy
+#~ msgid "%s has gone offline"
+#~ msgstr "%s 离线了"
+
+#~ msgid "Available..."
+#~ msgstr "在线..."
+
+#~ msgid "Busy..."
+#~ msgstr "忙碌..."
+
+#~ msgid "Away..."
+#~ msgstr "离开..."
+
+#~ msgid "Contact _Information"
+#~ msgstr "联系人信息(_I)"
+
+#, fuzzy
+#~ msgid "<b>Sound</b>"
+#~ msgstr "<b>描述</b>"
+
+#, fuzzy
+#~ msgid "Gossip - Accounts"
+#~ msgstr "Gossip - 聊天组"
+
+#, fuzzy
+#~ msgid "Join _Group Chat..."
+#~ msgstr "加入聊天组(_J)..."
+
+#, fuzzy
+#~ msgid "Por_t:"
+#~ msgstr "端口(_O):"
+
+#, fuzzy
+#~ msgid "Requested information."
+#~ msgstr "客户信息"
+
+#, fuzzy
+#~ msgid "Could not open connection"
+#~ msgstr "无法连接"
+
+#, fuzzy
+#~ msgid "Could not find the server you wanted to use"
+#~ msgstr "您想使用哪个服务器?"
+
+#, fuzzy
+#~ msgid "Connection to the server failed."
+#~ msgstr "<b>连接至服务器</b>"
+
+#~ msgid "Written by:"
+#~ msgstr "作者:"
+
+#~ msgid "Artwork by:"
+#~ msgstr "美工:"
+
+#~ msgid "Translated by:"
+#~ msgstr "翻译:"
+
+#, fuzzy
+#~ msgid "Account ID"
+#~ msgstr "帐户信息(_A)"
+
+#~ msgid "%sChat - %s"
+#~ msgstr "%s聊天 - %s"
+
+#~ msgid "/Show _Log"
+#~ msgstr "/显示日志(_L)"
+
+#, fuzzy
+#~ msgid "Persian"
+#~ msgstr "版本:"
+
+#~ msgid "View Lo_g"
+#~ msgstr "查看日志(_G)"
+
+#~ msgid "Gossip - Group Chat"
+#~ msgstr "Gossip - 聊天组"
+
+#, fuzzy
+#~ msgid "Gossip - Add contact"
+#~ msgstr "添加联系人"
+
+#, fuzzy
+#~ msgid "Gossip - Contact Information"
+#~ msgstr "联系人信息(_I)"
+
+#, fuzzy
+#~ msgid "Gossip - Edit Groups"
+#~ msgstr "Gossip - 编辑聊天组"
+
+#, fuzzy
+#~ msgid "Gossip - New Account"
+#~ msgstr "Gossip - 聊天组"
+
+#, fuzzy
+#~ msgid "Gossip - New Message"
+#~ msgstr "Gossip - 发送消息"
+
+#, fuzzy
+#~ msgid "Gossip - Personal Details"
+#~ msgstr "个人信息"
+
+#, fuzzy
+#~ msgid "Gossip - Preferences"
+#~ msgstr "首选项"
+
+#, fuzzy
+#~ msgid "Gossip - Status Message"
+#~ msgstr "Gossip - 发送消息"
+
+#, fuzzy
+#~ msgid "Personal Details Saved!"
+#~ msgstr "个人信息"
+
+#~ msgid "What request message do you want to send to %s?"
+#~ msgstr "您想给 %s 发送什么请求?"
+
+#~ msgid "Make sure that your account information is correct."
+#~ msgstr "请确保您的帐户信息是正确的。"
+
+#~ msgid "%s wants to be notified of your status."
+#~ msgstr "%s 想收到您状态的通知。"
+
+#~ msgid "You were disconnected from the server. Do you want to reconnect?"
+#~ msgstr "服务器方面已经中断连接。是否重新连接?"
+
+#~ msgid ""
+#~ "Make sure that your account information is correct. The server may also "
+#~ "currently be unavailable."
+#~ msgstr "请确保您的帐户信息是正确的。服务器目前也可能不可用。"
+
+#~ msgid "Edit List..."
+#~ msgstr "编辑清单..."
+
+#~ msgid "An error occurred when chatting with %s."
+#~ msgstr "和 %s 聊天时发生错误。"
+
+#~ msgid "Details:"
+#~ msgstr "详细资料:"
+
+#~ msgid "An error occurred when chatting in the group chat %s."
+#~ msgstr "在聊天组 %s 聊天时发生错误。"
+
+#~ msgid "Unable to enter the group chat %s."
+#~ msgstr "无法进入聊天组 %s。"
+
+#~ msgid "Gossip will now try to use your account:"
+#~ msgstr "Gossip 现在会尝试使用您的帐户:"
+
+#~ msgid "Gossip will now try to register the account:"
+#~ msgstr "Gossip 现在会尝试注册帐户:"
+
+#~ msgid "*"
+#~ msgstr "*"
+
+#~ msgid "From:"
+#~ msgstr "来自:"
+
+#~ msgid "Gossip - Received Message"
+#~ msgstr "Gossip - 收到消息"
+
+#~ msgid "In reply to:"
+#~ msgstr "回复到:"
+
+#~ msgid "To:"
+#~ msgstr "接收人:"
+
+#~ msgid "_Reply..."
+#~ msgstr "回复(_R)..."
+
+#~ msgid "_Send"
+#~ msgstr "发送(_S)"
+
+#~ msgid "C_onnect"
+#~ msgstr "连接(_O)"
+
+#~ msgid " "
+#~ msgstr " "
+
+#~ msgid "<b>Available chat rooms</b>"
+#~ msgstr "<b>可供选择的聊天室</b>"
+
+#~ msgid "<b>Chat room information</b>"
+#~ msgstr "<b>聊天室信息</b>"
+
+#~ msgid "Gossip - Join Group Chat"
+#~ msgstr "Gossip - 加入聊天组"
+
+#~ msgid "N_ickname:"
+#~ msgstr "昵称(_I):"
+
+#~ msgid ""
+#~ "Pick a favorite, or enter nickname, server name, and the name of the chat "
+#~ "room to enter."
+#~ msgstr "从收藏夹选择一个,或者输入昵称、服务器和要进入的聊天室名称。"
+
+#~ msgid "R_emove"
+#~ msgstr "删除(_E)"
+
+#~ msgid "_Add"
+#~ msgstr "添加(_A)"
+
+#~ msgid " "
+#~ msgstr " "
+
+#~ msgid "<b>Personal information</b>"
+#~ msgstr "<b>个人信息</b>"
+
+#~ msgid "<b>Preset status messages</b>"
+#~ msgstr "<b>预设状态消息</b>"
+
+#~ msgid "<i>Information not available</i>"
+#~ msgstr "<i>信息不可用</i>"
+
+#~ msgid "Choose a Server"
+#~ msgstr "选择服务器"
+
+#~ msgid "Choose from list:"
+#~ msgstr "从清单中选择:"
+
+#~ msgid "Information about ..."
+#~ msgstr "信息关于..."
+
+#~ msgid "Jabber.com"
+#~ msgstr "Jabber.com"
+
+#~ msgid "Jabber.org"
+#~ msgstr "Jabber.org"
+
+#~ msgid "On what server do you have a Jabber account?"
+#~ msgstr "您在哪个服务器有 Jabber 帐户?"
+
+#~ msgid "Sound"
+#~ msgstr "声音"
+
+#~ msgid "Use a different server"
+#~ msgstr "使用另一个服务器"
+
+#~ msgid "What request message do you want to send to ...?"
+#~ msgstr "您要给联系人发送什么请求?"
+
+#~ msgid "subscription_label"
+#~ msgstr "订阅标签"
diff --git a/gnome-2-22/po/zh_HK.po b/gnome-2-22/po/zh_HK.po
new file mode 100644
index 000000000..36a663cae
--- /dev/null
+++ b/gnome-2-22/po/zh_HK.po
@@ -0,0 +1,2561 @@
+# traditional Chinese translation of gossip.
+# Copyright (C) 2003, 2004 Free Software Foundation, Inc.
+# Abel Cheung <abel@oaka.org>, 2003, 2004.
+# Chao-Hsiung Liao <j_h_liau@yahoo.com.tw>, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gossip 0.13\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-05-15 23:46+0200\n"
+"PO-Revision-Date: 2006-08-24 18:45+0800\n"
+"Last-Translator: Chao-Hsiung Liao <j_h_liau@yahoo.com.tw>\n"
+"Language-Team: Chinese (traditional) <community@linuxhall.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../data/empathy.desktop.in.h:1
+#, fuzzy
+msgid "Empathy Instant Messenger"
+msgstr "即時通訊程式"
+
+#: ../data/empathy.desktop.in.h:2
+msgid "Instant Messenger"
+msgstr "即時通訊程式"
+
+#: ../data/empathy.schemas.in.h:1
+msgid "Always open a separate chat window for new chats."
+msgstr "永遠為新的聊天開啟個別的聊天視窗。"
+
+#: ../data/empathy.schemas.in.h:2
+msgid "Chat window theme"
+msgstr "聊天視窗佈景主題"
+
+#: ../data/empathy.schemas.in.h:3
+msgid ""
+"Comma separated list of spell checker languages to use (e.g. en, fr, nl)."
+msgstr "以逗號分隔的拼字檢查程式語言清單(例. en, fr, nl)。"
+
+#: ../data/empathy.schemas.in.h:4
+#, fuzzy
+msgid "Compact contact list"
+msgstr "顯示好友名單(_S)"
+
+#: ../data/empathy.schemas.in.h:5
+msgid "Contact list sort criterium"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:6
+msgid "Default directory to select an avatar image from"
+msgstr "預設用以選擇大頭貼圖像的目錄"
+
+#: ../data/empathy.schemas.in.h:7
+msgid "Enable popup when contact is available"
+msgstr "當聯絡人上線時使用彈出式選單"
+
+#: ../data/empathy.schemas.in.h:8
+msgid "Enable sound when away"
+msgstr "當「離開」時啟用音效"
+
+#: ../data/empathy.schemas.in.h:9
+msgid "Enable sound when busy"
+msgstr "當「忙碌」時啟用音效"
+
+#: ../data/empathy.schemas.in.h:10
+#, fuzzy
+msgid "Enable spell checker"
+msgstr "啟用拼字檢查"
+
+#: ../data/empathy.schemas.in.h:11
+msgid "Hide main window"
+msgstr "隱藏主視窗"
+
+#: ../data/empathy.schemas.in.h:12
+msgid "Hide the main window."
+msgstr "隱藏主視窗。"
+
+#: ../data/empathy.schemas.in.h:13
+msgid "Open new chats in separate windows"
+msgstr "在個別視窗中開啟新聊天"
+
+#: ../data/empathy.schemas.in.h:14
+msgid "Show avatars"
+msgstr "顯示大頭貼"
+
+#: ../data/empathy.schemas.in.h:15
+#, fuzzy
+msgid "Show hint about closing the main window"
+msgstr "主視窗高度"
+
+#: ../data/empathy.schemas.in.h:16
+msgid "Show offline contacts"
+msgstr "顯示已離線的好友"
+
+#: ../data/empathy.schemas.in.h:17
+msgid "Spell checking languages"
+msgstr "拼字檢查程式語言"
+
+#: ../data/empathy.schemas.in.h:18
+msgid "The last directory that an avatar image was chosen from."
+msgstr "用來選擇大頭貼圖像的最後目錄。"
+
+#: ../data/empathy.schemas.in.h:19
+msgid "The theme that is used to display the conversation in chat windows."
+msgstr "這個佈景主題會用在聊天視窗中顯示交談。"
+
+#: ../data/empathy.schemas.in.h:20
+msgid "Use graphical smileys"
+msgstr "使用表情圖示"
+
+#: ../data/empathy.schemas.in.h:21
+msgid "Use notification sounds"
+msgstr "使用音效來通知收到訊息"
+
+#: ../data/empathy.schemas.in.h:22
+#, fuzzy
+msgid "Use theme for chat rooms"
+msgstr "加入該聊天室"
+
+#: ../data/empathy.schemas.in.h:23
+msgid ""
+"Whether or not to check words typed against the languages you want to check "
+"with."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:24
+msgid ""
+"Whether or not to convert smileys into graphical images in conversations."
+msgstr "在對話時,是否將代表表情圖示的字符轉換為真正的圖示。"
+
+#: ../data/empathy.schemas.in.h:25
+msgid "Whether or not to play a sound when messages arrive."
+msgstr "將收到訊息時,是否播放音效。"
+
+#: ../data/empathy.schemas.in.h:26
+msgid "Whether or not to play sounds when away."
+msgstr "當離開時是否播放音效。"
+
+#: ../data/empathy.schemas.in.h:27
+msgid "Whether or not to play sounds when busy."
+msgstr "當忙碌時是否播放音效。"
+
+#: ../data/empathy.schemas.in.h:28
+msgid "Whether or not to show a popup when a contact becomes available."
+msgstr "當聯絡人上線時,是否顯示彈出式視窗。"
+
+#: ../data/empathy.schemas.in.h:29
+msgid ""
+"Whether or not to show avatars for contacts in the contact list and chat "
+"windows."
+msgstr "是否在聯絡人清單與聊天視窗中顯示大頭貼。"
+
+#: ../data/empathy.schemas.in.h:30
+msgid "Whether or not to show contacts that are offline in the contact list."
+msgstr "是否顯示清單中離線的好友。"
+
+#: ../data/empathy.schemas.in.h:31
+msgid ""
+"Whether or not to show the message dialog about closing the main window with "
+"the 'x' button in the title bar."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:32
+#, fuzzy
+msgid "Whether to show the contact list in compact mode or not."
+msgstr "是否在聯絡人清單與聊天視窗中顯示大頭貼。"
+
+#: ../data/empathy.schemas.in.h:33
+msgid "Whether to use the theme for chat rooms or not."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:34
+msgid ""
+"Which criterium to use when sorting the contact list. Default is to use sort "
+"by the contact's name with the value \"name\". A value of \"state\" will "
+"sort the contact list by state."
+msgstr ""
+
+#: ../libempathy/gossip-contact.c:654 ../libempathy/gossip-presence.c:184
+#: ../libempathy/gossip-presence.c:283
+msgid "Offline"
+msgstr "離線"
+
+#: ../libempathy/gossip-presence.c:274
+msgid "Available"
+msgstr "已連線"
+
+#: ../libempathy/gossip-presence.c:276
+msgid "Busy"
+msgstr "忙碌"
+
+#: ../libempathy/gossip-presence.c:279
+msgid "Away"
+msgstr "離開"
+
+#: ../libempathy-gtk/empathy-main-window.c:254
+#, fuzzy
+msgid "Show and edit accounts"
+msgstr "顯示好友名單(_S)"
+
+#: ../libempathy-gtk/empathy-main-window.c:456
+msgid "Group"
+msgstr "群組"
+
+#: ../libempathy-gtk/empathy-main-window.c:477
+#, fuzzy
+msgid "Contact"
+msgstr "聯絡人"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:1
+#, fuzzy
+msgid "Contact List - Empathy"
+msgstr "隱藏好友名單(_H)"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:2
+#, fuzzy
+msgid "Context"
+msgstr "內容(_C)"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:3
+#, fuzzy
+msgid "Join _Favorites"
+msgstr "加入喜好(_F)"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:4
+#: ../libempathy-gtk/gossip-chat.glade.h:10
+msgid "Join _New..."
+msgstr "加入新的(_N)..."
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:5
+#, fuzzy
+msgid "Manage Favorites..."
+msgstr "加入喜好(_F)"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:6
+msgid "Show _Offline Contacts"
+msgstr "顯示已離線的好友(_O)"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:7
+#, fuzzy
+msgid "_About"
+msgstr "帳號(_A)"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:8
+msgid "_Accounts"
+msgstr "帳號(_A)"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:9
+#: ../libempathy-gtk/gossip-chat.glade.h:15
+msgid "_Add Contact..."
+msgstr "加入好友(_A)..."
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:10
+#: ../libempathy-gtk/gossip-contact-list.c:298
+msgid "_Chat"
+msgstr "聊天(_C)"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:11
+msgid "_Contents"
+msgstr "內容(_C)"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:12
+#: ../libempathy-gtk/gossip-chat.glade.h:21
+#: ../libempathy-gtk/gossip-contact-list.c:310
+#, fuzzy
+msgid "_Edit"
+msgstr "編輯"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:13
+msgid "_Help"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:14
+#: ../libempathy-gtk/empathy-status-icon.glade.h:2
+msgid "_New Message..."
+msgstr "新增訊息(_N)..."
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:15
+msgid "_Personal Information"
+msgstr "個人資訊(_P)"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:16
+msgid "_Preferences"
+msgstr "偏好設定(_P)"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:17
+#: ../libempathy-gtk/empathy-status-icon.glade.h:3
+msgid "_Quit"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:18
+#: ../libempathy-gtk/gossip-chat.glade.h:25
+msgid "_Room"
+msgstr "聊天室(_R)"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:19
+#: ../libempathy-gtk/gossip-chat.glade.h:28
+#: ../libempathy-gtk/gossip-contact-list.c:326
+msgid "_View Previous Conversations"
+msgstr "顯示前一次交談(_V)"
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:1
+msgid "Status"
+msgstr "狀態"
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:4
+msgid "_Show Contact List"
+msgstr "顯示好友名單(_S)"
+
+#: ../libempathy-gtk/gossip-about-dialog.c:63
+#, fuzzy
+msgid ""
+"Empathy is free software; you can redistribute it and/or modify it under the "
+"terms of the GNU General Public License as published by the Free Software "
+"Foundation; either version 2 of the License, or (at your option) any later "
+"version."
+msgstr ""
+"Gossip 是自由軟件;你可以遵照Free Software Foundation (Free Software "
+"Foundation) 出版的 GNU 通用公共許可證條款 (GNU General Public License) 第二版"
+"來修改和重新發佈這一程式,或者自由選擇使用任何更新的版本。"
+
+#: ../libempathy-gtk/gossip-about-dialog.c:67
+#, fuzzy
+msgid ""
+"Empathy is distributed in the hope that it will be useful, but WITHOUT ANY "
+"WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS "
+"FOR A PARTICULAR PURPOSE. See the GNU General Public License for more "
+"details."
+msgstr ""
+"發佈 Gossip 的目的是希望它有用,但沒有任何擔保。甚至沒有適合特定目的而隱含的"
+"擔保。更詳細的情況請參閱 GNU 通用公共許可證。"
+
+#: ../libempathy-gtk/gossip-about-dialog.c:71
+#, fuzzy
+msgid ""
+"You should have received a copy of the GNU General Public License along with "
+"Empathy; if not, write to the Free Software Foundation, Inc., 51 Franklin "
+"Street, Fifth Floor, Boston, MA 02110-130159 USA"
+msgstr ""
+"你應該已經和 Gossip 一起收到一份 GNU 通用公共許可證的副本;如果還沒有,寫信"
+"給: Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA "
+"02111-1307 USA"
+
+#: ../libempathy-gtk/gossip-about-dialog.c:99
+msgid "An Instant Messaging client for GNOME"
+msgstr "GNOME 的即時通訊軟件"
+
+# Abel's note: The dialog is really not wide enough to show email with name.
+#
+#: ../libempathy-gtk/gossip-about-dialog.c:105
+msgid "translator-credits"
+msgstr ""
+"如對翻譯有任何意見,請送一封電郵給\n"
+"以下地址,GNOME 翻譯隊伍會盡快回覆你:\n"
+"community@linuxhall.org\n"
+"\n"
+"Chao-Hsiung Liao <j_h_liau@yahoo.com.tw>, 2003, 05\n"
+"Craig Jeffares <cjeffares@novell.com>, 2004\n"
+"Joe Man <trmetal@yahoo.com.hk>, 2001"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:224
+#, fuzzy
+msgid "Disable"
+msgstr "已連線"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:227
+msgid "Enable"
+msgstr "啟用"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:261
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:3
+#, fuzzy
+msgid "<b>No Account Selected</b>"
+msgstr "<b>帳號設定</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:263
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to start configuring.\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want "
+"to configure in the list on the left."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:272
+#, fuzzy
+msgid "<b>No Accounts Configured</b>"
+msgstr "<b>帳號設定</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:274
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to start configuring."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:362
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:6
+msgid "Accounts"
+msgstr "帳號"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:857
+#, c-format
+msgid ""
+"You are about to remove your %s account!\n"
+"Are you sure you want to proceed?"
+msgstr ""
+"即將移除你的 %s 帳號!\n"
+"確定要繼續嗎?"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:863
+msgid ""
+"Any associated conversations and chat rooms will NOT be removed if you "
+"decide to proceed.\n"
+"\n"
+"Should you decide to add the account back at a later time, they will still "
+"be available."
+msgstr ""
+"如果你決定繼續,任何相關的交談及聊天室將 不會 被移除。\n"
+"\n"
+"若你稍後決定將該帳號加回來,它們仍然可以使用。"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:1
+msgid "<b>Account</b>"
+msgstr "<b>帳戶</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:2
+#, fuzzy
+msgid "<b>New Account</b>"
+msgstr "<b>帳戶</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:4
+#, fuzzy
+msgid "<b>Settings</b>"
+msgstr "<b>帳號設定</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:5
+msgid "A unique name for this account to identify it personally to you."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:7
+#, fuzzy
+msgid "Cr_eate"
+msgstr "聊天!"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:8
+msgid "Imendio "
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:9
+msgid "Jabber"
+msgstr "Jabber"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:10
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to started configuring.\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want "
+"to configure in the list on the left."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:13
+msgid "_Name:"
+msgstr "名稱(_N):"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:14
+#, fuzzy
+msgid "_Type:"
+msgstr "題目(_T):"
+
+#: ../libempathy-gtk/gossip-account-widget-generic.c:144
+#: ../libempathy-gtk/gossip-account-widget-generic.c:186
+#, c-format
+msgid "%s:"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:1
+#, fuzzy
+msgid ""
+"<small><b><span foreground=\"#555\">Example: user@jabber.org</span></b></"
+"small>"
+msgstr "<span size=\"smaller\">範例:user@jabber.org</span>"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:2
+msgid "Forget password and clear the entry."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:3
+msgid "Login I_D:"
+msgstr "登入 I_D:"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:4
+msgid "Pass_word:"
+msgstr "密碼(_W):"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:5
+msgid "Reso_urce:"
+msgstr "資源(_U):"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:6
+#, fuzzy
+msgid "Use encryption (SS_L)"
+msgstr "將訊息加密(_SSL)"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:7
+msgid "_Port:"
+msgstr "連接埠(_P):"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:8
+msgid "_Server:"
+msgstr "伺服器(_S):"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:9
+#, fuzzy
+msgid "jabber account settings"
+msgstr "<b>帳號設定</b>"
+
+#: ../libempathy-gtk/gossip-chat.c:314
+msgid "Disconnected"
+msgstr "已斷線"
+
+#: ../libempathy-gtk/gossip-chat.c:858
+msgid "Insert Smiley"
+msgstr "插入笑臉圖像"
+
+#: ../libempathy-gtk/gossip-chat.c:906
+msgid "_Check Word Spelling..."
+msgstr "檢查拼字(_C)..."
+
+#: ../libempathy-gtk/gossip-chat.c:1244
+msgid "Connected"
+msgstr "已連線"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:1
+#, fuzzy
+msgid "C_lear"
+msgstr "清除(_L)"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:2
+msgid "Change _Topic..."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:3
+msgid "Chat"
+msgstr "聊天"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:4
+msgid "Contact Infor_mation"
+msgstr "聯絡人資訊(_M)"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:5
+#, fuzzy
+msgid "Cu_t"
+msgstr "聊天(_A)"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:6
+#, fuzzy
+msgid "In_vite..."
+msgstr "邀請(_V)"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:7
+msgid "Insert _Smiley"
+msgstr "插入笑臉圖像(_S)"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:8
+#, fuzzy
+msgid "Invitation _message:"
+msgstr "輸入狀態訊息:"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:9
+#, fuzzy
+msgid "Invite"
+msgstr "邀請(_V)"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:11
+msgid "Move Tab _Left"
+msgstr "將分頁左移(_L)"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:12
+msgid "Move Tab _Right"
+msgstr "將分頁右移(_R)"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:13
+msgid "Select who would you like to invite:"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:14
+msgid "You have been invited to join a chat conference."
+msgstr "你已經被邀請參加聊天會議。"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:16
+msgid "_Add To Favorites"
+msgstr "加入喜好(_A)"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:17
+msgid "_Close"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:18
+msgid "_Conversation"
+msgstr "對話(_C)"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:19
+msgid "_Copy"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:20
+msgid "_Detach Tab"
+msgstr "脫離分頁(_D)"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:22
+msgid "_Next Tab"
+msgstr "下個分頁(_N)"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:23
+#, fuzzy
+msgid "_Paste"
+msgstr "日期"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:24
+msgid "_Previous Tab"
+msgstr "上個分頁(_P)"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:26
+msgid "_Show Contacts"
+msgstr "顯示好友名單(_S)"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:27
+msgid "_Tabs"
+msgstr "分頁(_T)"
+
+#: ../libempathy-gtk/gossip-chat-view.c:544
+msgid "_Copy Link Address"
+msgstr "複製鏈結地址(_C)"
+
+#: ../libempathy-gtk/gossip-chat-view.c:552
+msgid "_Open Link"
+msgstr "開啟連結(_O)"
+
+#: ../libempathy-gtk/gossip-chat-view.c:889
+msgid "%A %d %B %Y"
+msgstr "%Y-%m-%d (%A)"
+
+#: ../libempathy-gtk/gossip-chat-window.c:685
+#: ../libempathy-gtk/gossip-chat-window.c:715
+#, fuzzy
+msgid "New Message"
+msgid_plural "New Messages"
+msgstr[0] "新增訊息"
+msgstr[1] "新增訊息"
+
+#: ../libempathy-gtk/gossip-chat-window.c:691
+msgid "Chat Room"
+msgstr "聊天室"
+
+#: ../libempathy-gtk/gossip-chat-window.c:696
+#: ../libempathy-gtk/gossip-chat-window.c:719
+#, fuzzy, c-format
+msgid "Conversation"
+msgid_plural "Conversations (%d)"
+msgstr[0] "對話(_C)"
+msgstr[1] "對話(_C)"
+
+#: ../libempathy-gtk/gossip-chat-window.c:1295
+msgid "Typing a message."
+msgstr "正在鍵入訊息。"
+
+#: ../libempathy-gtk/gossip-contact-list.c:290
+#, fuzzy
+msgid "_Contact"
+msgstr "聯絡人"
+
+#: ../libempathy-gtk/gossip-contact-list.c:294
+#, fuzzy
+msgid "_Group"
+msgstr "群組"
+
+#: ../libempathy-gtk/gossip-contact-list.c:298
+#, fuzzy
+msgid "Chat with contact"
+msgstr "加入好友"
+
+#: ../libempathy-gtk/gossip-contact-list.c:302
+#, fuzzy
+msgid "Infor_mation"
+msgstr "聯絡人資訊(_M)"
+
+#: ../libempathy-gtk/gossip-contact-list.c:302
+#, fuzzy
+msgid "View contact information"
+msgstr "好友資訊"
+
+#: ../libempathy-gtk/gossip-contact-list.c:306
+#, fuzzy
+msgid "Re_name"
+msgstr "/更改群組名稱(_N)"
+
+#: ../libempathy-gtk/gossip-contact-list.c:306
+#, fuzzy
+msgid "Rename"
+msgstr "檔案名稱:"
+
+#: ../libempathy-gtk/gossip-contact-list.c:310
+#, fuzzy
+msgid "Edit the groups and name for this contact"
+msgstr "請輸入這個帳號的名稱"
+
+#: ../libempathy-gtk/gossip-contact-list.c:314
+#, fuzzy
+msgid "_Remove"
+msgstr "/移除好友(_R)"
+
+#: ../libempathy-gtk/gossip-contact-list.c:314
+#, fuzzy
+msgid "Remove contact"
+msgstr "/移除好友(_R)"
+
+#: ../libempathy-gtk/gossip-contact-list.c:318
+#, fuzzy
+msgid "_Invite to Chat Room"
+msgstr "/邀請至聊天室(_I)"
+
+#: ../libempathy-gtk/gossip-contact-list.c:318
+msgid "Invite to a currently open chat room"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-contact-list.c:322
+#, fuzzy
+msgid "_Send File..."
+msgstr "/傳送檔案(_S)..."
+
+#: ../libempathy-gtk/gossip-contact-list.c:322
+#, fuzzy
+msgid "Send a file"
+msgstr "選擇一個檔案"
+
+#: ../libempathy-gtk/gossip-contact-list.c:326
+#, fuzzy
+msgid "View previous conversations with this contact"
+msgstr "顯示前一次交談"
+
+#: ../libempathy-gtk/gossip-preferences.c:250
+msgid "Language"
+msgstr "語言"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:1
+msgid "<b>Appearance</b>"
+msgstr "<b>外觀</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:2
+msgid "<b>Audio</b>"
+msgstr "<b>音訊</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:3
+msgid "<b>Behaviour</b>"
+msgstr "<b>行為</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:4
+#, fuzzy
+msgid "<b>Contact List</b>"
+msgstr "<b>狀態</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:5
+msgid "<b>Languages</b>"
+msgstr "<b>語言</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:6
+#, fuzzy
+msgid "<b>Options</b>"
+msgstr "<b>連線</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:7
+msgid "<b>Visual</b>"
+msgstr "<b>視覺效果</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:8
+msgid ""
+"<small>The list of languages reflects only the languages for which you have "
+"a dictionary installed.</small>"
+msgstr "<small>這裏的語言清單只反映出你已經安裝字典的語言。</small>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:9
+msgid "Avatars are user chosen images shown in the contact list"
+msgstr "大頭貼是使用者選擇來提供聯絡人清單顯示用的"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:10
+msgid "Chat Th_eme:"
+msgstr "聊天佈景主題(_E):"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:11
+msgid "Display notifications when contacts come _online"
+msgstr "聯絡人上線時顯示通知(_O)"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:12
+msgid "Enable sounds when _away"
+msgstr "當「離開」時啟用音效(_A)"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:13
+msgid "Enable sounds when _busy"
+msgstr "當「忙碌」時啟用音效(_B)"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:14
+msgid "General"
+msgstr "一般"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:15
+msgid "Notifications"
+msgstr "通知"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:16
+msgid "Preferences"
+msgstr "偏好設定"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:17
+msgid "Show _avatars"
+msgstr "顯示大頭貼(_A)"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:18
+msgid "Show _smileys as images"
+msgstr "以圖像顯示表情符號(_S)"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:19
+#, fuzzy
+msgid "Show co_mpact contact list"
+msgstr "顯示好友名單(_S)"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:20
+msgid "Sort by _name"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:21
+msgid "Sort by s_tate"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:22
+msgid "Spell Checking"
+msgstr "拼字檢查"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:23
+msgid "Themes"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:24
+#, fuzzy
+msgid "_Enable spell checking"
+msgstr "啟用拼字檢查"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:25
+msgid "_Open new chats in separate windows"
+msgstr "在個別視窗開啟新的聊天(_O)"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:26
+msgid "_Play sound when messages arrive"
+msgstr "收到訊息時播放音效(_P)"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:27
+#, fuzzy
+msgid "_Use for chat rooms"
+msgstr "儲存此聊天室(_T)"
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:702
+msgid "Custom message..."
+msgstr "自訂訊息..."
+
+#. Clear list
+#: ../libempathy-gtk/gossip-presence-chooser.c:724
+msgid "Clear List..."
+msgstr "清除清單..."
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:803
+#, fuzzy
+msgid "Are you sure you want to clear the list?"
+msgstr "確定要清空這個清單?"
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:807
+msgid ""
+"This will remove any custom messages you have added to the list of preset "
+"status messages."
+msgstr "這樣會移除任何你曾加入到預先設定狀態訊息清單中的自訂訊息。"
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:812
+msgid "Clear List"
+msgstr "清除清單"
+
+#: ../libempathy-gtk/gossip-presence-chooser.glade.h:1
+msgid "Enter status message:"
+msgstr "輸入狀態訊息:"
+
+#: ../libempathy-gtk/gossip-presence-chooser.glade.h:2
+msgid "Status Message Presets"
+msgstr "狀態訊息預先設定"
+
+#: ../libempathy-gtk/gossip-presence-chooser.glade.h:3
+#, fuzzy
+msgid "_Add to status message list"
+msgstr "加入至狀態訊息清單"
+
+#: ../libempathy-gtk/gossip-private-chat.c:198
+#, c-format
+msgid "%s went offline"
+msgstr "%s 已離線"
+
+#: ../libempathy-gtk/gossip-private-chat.c:212
+#, c-format
+msgid "%s has come online"
+msgstr "%s 已經上線"
+
+#: ../libempathy-gtk/gossip-theme-manager.c:87
+msgid "Classic"
+msgstr "古典"
+
+#: ../libempathy-gtk/gossip-theme-manager.c:88
+#, fuzzy
+msgid "Simple"
+msgstr "範例"
+
+#: ../libempathy-gtk/gossip-theme-manager.c:89
+#, fuzzy
+msgid "Clean"
+msgstr "清除(_L)"
+
+#: ../libempathy-gtk/gossip-theme-manager.c:90
+msgid "Blue"
+msgstr "藍色"
+
+#: ../src/empathy-main.c:145
+msgid "Don't connect on startup"
+msgstr "啟動程式時不進行連線"
+
+#: ../src/empathy-main.c:155
+#, fuzzy
+msgid "- Empathy Instant Messenger"
+msgstr "- Gossip 即時通訊程式"
+
+#~ msgid "Gossip Instant Messenger"
+#~ msgstr "Gossip 即時通訊程式"
+
+#~ msgid "Normal"
+#~ msgstr "正常"
+
+#~ msgid "Joining"
+#~ msgstr "加入中"
+
+#~ msgid "Active"
+#~ msgstr "使用中"
+
+#~ msgid "Inactive"
+#~ msgstr "未使用"
+
+#~ msgid "Unknown"
+#~ msgstr "不明"
+
+#~ msgid "Error"
+#~ msgstr "錯誤"
+
+#, fuzzy
+#~ msgid "Participant"
+#~ msgid_plural "Participants"
+#~ msgstr[0] "加利西亞文"
+#~ msgstr[1] "加利西亞文"
+
+#, fuzzy
+#~ msgid "No role"
+#~ msgstr "正常"
+
+#, fuzzy
+#~ msgid "No affiliation"
+#~ msgstr "通知"
+
+#~ msgid "The nickname you have chosen is already in use."
+#~ msgstr "你所選的暱稱已經被使用了。"
+
+#~ msgid "The chat room you tried to join requires a password."
+#~ msgstr "你嘗試加入的聊天室需要密碼。"
+
+#~ msgid "The remote conference server did not respond in a sensible time."
+#~ msgstr "遠端會議伺服器沒有在時間內回應。"
+
+#~ msgid "The conference server you tried to join could not be found."
+#~ msgstr "找不到你嘗試加入的會議伺服器。"
+
+#~ msgid "An unknown error occurred, check your details are correct."
+#~ msgstr "發生了未知的錯誤,請檢查你的詳細資訊是否正確。"
+
+#, fuzzy
+#~ msgid "Joining the chatroom was canceled."
+#~ msgstr "加入該聊天室"
+
+#~ msgid "Unavailable"
+#~ msgstr "無法使用"
+
+#~ msgid "An unknown error occurred."
+#~ msgstr "發生不明的錯誤。"
+
+#~ msgid "Connection refused."
+#~ msgstr "連線被拒絕。"
+
+#~ msgid "Server address could not be resolved."
+#~ msgstr "無法解析伺服器位址。"
+
+#~ msgid "Connection timed out."
+#~ msgstr "連線已逾時。"
+
+#~ msgid "Authentication failed."
+#~ msgstr "驗證已失敗。"
+
+#~ msgid "The username you are trying already exists."
+#~ msgstr "你所輸入的使用者名稱已經被使用了。"
+
+#~ msgid "The username you are trying is not valid."
+#~ msgstr "你所輸入的使用者名稱是無效的。"
+
+#~ msgid "This feature is unavailable."
+#~ msgstr "這項功能無法使用。"
+
+#~ msgid "This feature is unauthorized."
+#~ msgstr "這項功能未獲授權。"
+
+#~ msgid "A specific protocol error occurred that was unexpected."
+#~ msgstr "指定的通訊協定發生未預期的錯誤。"
+
+#, fuzzy
+#~ msgid "new account"
+#~ msgstr "新增帳號"
+
+#~ msgid "Home"
+#~ msgstr "首頁"
+
+#~ msgid "Couldn't send message!"
+#~ msgstr "無法傳送訊息!"
+
+#~ msgid "Connection could not be opened"
+#~ msgstr "無法開啟連線"
+
+#, fuzzy
+#~ msgid "This service is unavailable or not found"
+#~ msgstr "這項功能無法使用。"
+
+#, fuzzy
+#~ msgid "Registration is required"
+#~ msgstr "註冊"
+
+#, fuzzy
+#~ msgid "There was an internal service error"
+#~ msgstr "內部的伺服器錯誤"
+
+#, fuzzy
+#~ msgid "This feature is not implemented"
+#~ msgstr "這項功能未獲授權。"
+
+#, fuzzy
+#~ msgid "The remote service timed out"
+#~ msgstr "遠端伺服器逾時"
+
+#~ msgid "Stop"
+#~ msgstr "停止"
+
+#~ msgid "Disconnect"
+#~ msgstr "中斷連線"
+
+#~ msgid "Connect"
+#~ msgstr "連線"
+
+#, fuzzy
+#~ msgid "Successfully registered your new account settings."
+#~ msgstr "成功註冊帳號"
+
+#, fuzzy
+#~ msgid "You should now be able to connect to your new account."
+#~ msgstr "你不能將 --no-connect 與 --account 一起使用"
+
+#, fuzzy
+#~ msgid "Failed to register your new account settings."
+#~ msgstr "註冊新帳號設定值不成功"
+
+#, fuzzy
+#~ msgid "Successfully changed your account password."
+#~ msgstr "輸入你的帳號密碼: "
+
+#, fuzzy
+#~ msgid "Failed to change your account password."
+#~ msgstr "輸入你的帳號密碼: "
+
+#, fuzzy
+#~ msgid ""
+#~ "Please enter a new password for this account:\n"
+#~ "%s"
+#~ msgstr ""
+#~ "請為新的群組命名:\n"
+#~ "%s"
+
+#~ msgid "No information is available for this contact."
+#~ msgstr "沒有這個好友的相關資訊。"
+
+#~ msgid "Information requested, please wait..."
+#~ msgstr "要求資訊,請稍候..."
+
+#~ msgid "I would like to add you to my contact list."
+#~ msgstr "我希望可以將你加入我的好友名單之內。"
+
+#~ msgid "To summarize:"
+#~ msgstr "要做總結:"
+
+#, fuzzy
+#~ msgid "%d new message"
+#~ msgid_plural "%d new messages"
+#~ msgstr[0] "新增訊息"
+#~ msgstr[1] "新增訊息"
+
+#, fuzzy
+#~ msgid "%d subscription request"
+#~ msgid_plural "%d subscription requests"
+#~ msgstr[0] "訂閱要求"
+#~ msgstr[1] "訂閱要求"
+
+#, fuzzy
+#~ msgid "%d file transfer request"
+#~ msgid_plural "%d file transfer requests"
+#~ msgstr[0] "檔案傳輸要求"
+#~ msgstr[1] "檔案傳輸要求"
+
+#, fuzzy
+#~ msgid "%d server message"
+#~ msgid_plural "%d server messages"
+#~ msgstr[0] "無法傳送訊息!"
+#~ msgstr[1] "無法傳送訊息!"
+
+#, fuzzy
+#~ msgid "%d error"
+#~ msgid_plural "%d errors"
+#~ msgstr[0] "錯誤"
+#~ msgstr[1] "錯誤"
+
+#~ msgid "If you quit, you will lose all unread information."
+#~ msgstr "如果離開,你將失去所有未閱讀的資訊。"
+
+#~ msgid "Edit Account _Details"
+#~ msgstr "編輯帳號詳細資訊(_D)"
+
+#~ msgid "Click to enlarge"
+#~ msgstr "按這裏放大"
+
+#~ msgid "Word"
+#~ msgstr "字"
+
+#~ msgid "New message from %s"
+#~ msgstr "收到來自 %s 的新訊息"
+
+#~ msgid "Your invitation has been declined"
+#~ msgstr "你的邀請被拒絕了"
+
+#~ msgid "Accept"
+#~ msgstr "接受"
+
+#~ msgid "Decline"
+#~ msgstr "拒絕"
+
+#, fuzzy
+#~ msgid "Name"
+#~ msgstr "名稱:"
+
+#, fuzzy
+#~ msgid "Room"
+#~ msgstr "聊天室(_R)"
+
+#~ msgid "Auto Connect"
+#~ msgstr "自動連線"
+
+#~ msgid "Information requested..."
+#~ msgstr "要求資訊..."
+
+#~ msgid "Do you want to remove this contact from your roster?"
+#~ msgstr "是否想從名單中移除這個好友?"
+
+#~ msgid ""
+#~ "Please enter a new name for the group:\n"
+#~ "%s"
+#~ msgstr ""
+#~ "請為新的群組命名:\n"
+#~ "%s"
+
+#~ msgid "Select"
+#~ msgstr "選擇"
+
+#~ msgid "Unsorted"
+#~ msgstr "未排序"
+
+#~ msgid "New file transfer request from %s"
+#~ msgstr "來自 %s 的檔案傳輸要求"
+
+#~ msgid "File transfer is not supported by both parties."
+#~ msgstr "雙方都不支援檔案傳輸。"
+
+#~ msgid "Your file transfer offer declined."
+#~ msgstr "你的檔案傳輸要求被拒絕了。"
+
+#~ msgid "The other user decided not to continue."
+#~ msgstr "另一個使用者決定不要繼續。"
+
+#~ msgid "Unknown error occurred during file transfer."
+#~ msgstr "在檔案傳輸過程中遇到未知的錯誤。"
+
+#~ msgid "%s would like to send you a file."
+#~ msgstr "%s 希望可以傳送給你一個檔案。"
+
+#~ msgid "Someone would like to send you a file."
+#~ msgstr "某人想要傳送給你一個檔案。"
+
+#~ msgid "Select a file"
+#~ msgstr "選擇一個檔案"
+
+#, fuzzy
+#~ msgid "Connecting..."
+#~ msgstr "正在連線"
+
+#, fuzzy
+#~ msgid "Retry connection"
+#~ msgstr "停止連線"
+
+#~ msgid "Invited %s to join this chat conference."
+#~ msgstr "邀請 %s 參加這個聊天會議。"
+
+#, fuzzy
+#~ msgid "%s has set the topic: %s"
+#~ msgstr "%s 已經設定該主題"
+
+#, fuzzy
+#~ msgid "Enter the new topic you want to set for this room:"
+#~ msgstr "你想使用甚麼稱呼來代表這個好友?"
+
+#, fuzzy
+#~ msgid "%s has joined the room"
+#~ msgstr "%s 已經設定該主題"
+
+#, fuzzy
+#~ msgid "%s has left the room"
+#~ msgstr "%s 已經設定該主題"
+
+#, fuzzy
+#~ msgid "Topic: %s"
+#~ msgstr "題目(_T):"
+
+#~ msgid "Account"
+#~ msgstr "帳號"
+
+#~ msgid "Conversation With"
+#~ msgstr "交談於"
+
+#~ msgid "Date"
+#~ msgstr "日期"
+
+#~ msgid "List the available accounts"
+#~ msgstr "列出可供使用的帳號"
+
+#~ msgid "Which account to connect to on startup"
+#~ msgstr "程式啟動時自動連接至哪個帳號"
+
+#~ msgid "ACCOUNT-NAME"
+#~ msgstr "帳號名稱"
+
+#~ msgid "You can not use --no-connect together with --account"
+#~ msgstr "你不能將 --no-connect 與 --account 一起使用"
+
+#~ msgid "No accounts available."
+#~ msgstr "沒有可用的帳號。"
+
+#~ msgid "Available accounts:"
+#~ msgstr "可使用的帳號:"
+
+#~ msgid "[default]"
+#~ msgstr "[預設]"
+
+#~ msgid "There is no account with the name '%s'."
+#~ msgstr "已經有名為“%s”的帳號存在。"
+
+#~ msgid "Join"
+#~ msgstr "加入"
+
+#, fuzzy
+#~ msgid "Create"
+#~ msgstr "日期"
+
+#~ msgid "Chat Rooms"
+#~ msgstr "聊天室"
+
+#, fuzzy
+#~ msgid "Browsing for conference rooms, please wait..."
+#~ msgstr "正嘗試加入聊天室,請稍等..."
+
+#~ msgid "Default"
+#~ msgstr "預設值"
+
+#~ msgid "Chat!"
+#~ msgstr "聊天!"
+
+#~ msgid "%s wants to be added to your contact list."
+#~ msgstr "%s 將會被加入至你的好友名單。"
+
+#~ msgid "Someone wants to be added to your contact list."
+#~ msgstr "有人希望能加入至你的好友名單。"
+
+#, fuzzy
+#~ msgid "Subscription request"
+#~ msgstr "訂閱要求"
+
+#~ msgid "Contact Information"
+#~ msgstr "聯絡人資訊"
+
+#~ msgid "Subject: %s"
+#~ msgstr "主旨:%s"
+
+#~ msgid "Suggestions for the word"
+#~ msgstr "對這個字的建議"
+
+#~ msgid "New subscription request from %s"
+#~ msgstr "來自 %s 的新訂閱要求"
+
+#~ msgid "Do you want to add this person to your contact list?"
+#~ msgstr "你是否想將這個人加入至你的好友名單?"
+
+#~ msgid "Do you want to add %s to your contact list?"
+#~ msgstr "你是否想將 %s 加入你的好友名單?"
+
+#~ msgid "Please enter your %s account password"
+#~ msgstr "請輸入 %s 的帳號密碼"
+
+#, fuzzy
+#~ msgid "Logging in to account '%s'"
+#~ msgstr "登入到:%s"
+
+#~ msgid "Remember Password?"
+#~ msgstr "是否記下密碼?"
+
+#~ msgid "Could not display the help contents."
+#~ msgstr "無法顯示說明內容。"
+
+#~ msgid "Select Your Avatar Image"
+#~ msgstr "選擇你的大頭貼圖像。"
+
+#~ msgid "No Image"
+#~ msgstr "沒有圖像"
+
+#~ msgid "The server does not seem to be responding."
+#~ msgstr "此伺服器似乎沒有回應。"
+
+#~ msgid "Try again later."
+#~ msgstr "請稍後再試。"
+
+#, fuzzy
+#~ msgid "Change"
+#~ msgstr "聊天"
+
+#~ msgid "Contact goes offline"
+#~ msgstr "好友已離線"
+
+#~ msgid "Contact goes online"
+#~ msgstr "好友已上線"
+
+#~ msgid "Contact ID:"
+#~ msgstr "聯絡人 ID:"
+
+#~ msgid "Do you want to accept this file?"
+#~ msgstr "你是否想接受這個檔案?"
+
+#~ msgid "File Transfer Request"
+#~ msgstr "檔案傳輸要求"
+
+#~ msgid "File name:"
+#~ msgstr "檔案名稱:"
+
+#~ msgid "File size:"
+#~ msgstr "檔案大小:"
+
+#~ msgid "Not supported yet"
+#~ msgstr "尚未支援"
+
+#~ msgid "This person wishes to send you this file:"
+#~ msgstr "這個人希望傳送給你這個檔案:"
+
+#~ msgid "Web site:"
+#~ msgstr "網站:"
+
+#~ msgid "_Accept"
+#~ msgstr "接受(_A)"
+
+#~ msgid "_Deny"
+#~ msgstr "拒絕(_D)"
+
+#, fuzzy
+#~ msgid "<b>Topic:</b>"
+#~ msgstr "<b>關於</b>"
+
+#~ msgid "Account:"
+#~ msgstr "帳號:"
+
+#, fuzzy
+#~ msgid "Browse:"
+#~ msgstr "法羅文"
+
+#, fuzzy
+#~ msgid "Edit Favorite Room"
+#~ msgstr "編輯聊天室"
+
+#~ msgid "Group Chat"
+#~ msgstr "群組聊天"
+
+#, fuzzy
+#~ msgid "Join New"
+#~ msgstr "加入新的(_N)..."
+
+#~ msgid "Join room on start_up"
+#~ msgstr "啟動時加入聊天室(_U)"
+
+#~ msgid "Join this chat room when Gossip starts and you are connected"
+#~ msgstr "當 Gossip 啟動並連上網絡時加入這個聊天室。"
+
+#, fuzzy
+#~ msgid "Manage Favorite Rooms"
+#~ msgstr "管理聊天室"
+
+#~ msgid "N_ame:"
+#~ msgstr "名稱(_A):"
+
+#~ msgid "S_erver:"
+#~ msgstr "伺服器(_E):"
+
+#~ msgid "_Nickname:"
+#~ msgstr "暱稱(_N):"
+
+#~ msgid "_Room:"
+#~ msgstr "聊天室(_R):"
+
+#~ msgid "-"
+#~ msgstr "-"
+
+#~ msgid "<b>About</b>"
+#~ msgstr "<b>關於</b>"
+
+#~ msgid "<b>Client Information</b>"
+#~ msgstr "<b>客戶端資訊</b>"
+
+#, fuzzy
+#~ msgid "<b>Groups</b>"
+#~ msgstr "<b>關於</b>"
+
+#, fuzzy
+#~ msgid "<b>Name</b>"
+#~ msgstr "<b>語言</b>"
+
+#~ msgid "<b>Personal Details</b>"
+#~ msgstr "<b>個人資訊</b>"
+
+#, fuzzy
+#~ msgid "<b>Subscription</b>"
+#~ msgstr "<b>連線</b>"
+
+#~ msgid "<span size=\"smaller\">Example: Mikael or user@server.org</span>"
+#~ msgstr "<span size=\"smaller\">範例:Mikael 或 user@jabber.org</span>"
+
+#, fuzzy
+#~ msgid "Accou_nt:"
+#~ msgstr "帳號:"
+
+#~ msgid "Add Contact"
+#~ msgstr "加入聯絡人"
+
+#, fuzzy
+#~ msgid "Alia_s:"
+#~ msgstr "別名:"
+
+#~ msgid "Avatar:"
+#~ msgstr "大頭貼:"
+
+#~ msgid "Ch_at"
+#~ msgstr "聊天(_A)"
+
+#~ msgid "Client:"
+#~ msgstr "客戶端:"
+
+#, fuzzy
+#~ msgid "Con_tact:"
+#~ msgstr "聯絡人"
+
+#~ msgid "Connect on S_tartup"
+#~ msgstr "啟動時連線(_T)"
+
+#~ msgid "Contacts"
+#~ msgstr "聯絡人"
+
+#~ msgid "Country:"
+#~ msgstr "國家:"
+
+#~ msgid "Decide _Later"
+#~ msgstr "稍後決定(_L)"
+
+#, fuzzy
+#~ msgid "Edit Contact"
+#~ msgstr "加入聯絡人"
+
+#~ msgid "Edit Groups"
+#~ msgstr "編輯群組"
+
+#~ msgid "Email:"
+#~ msgstr "電郵:"
+
+#~ msgid "ID:"
+#~ msgstr "ID:"
+
+#~ msgid ""
+#~ "If you chose to decide later you will be asked the next time you log on."
+#~ msgstr "如果你選擇稍後再決定,下次登入時將被再詢問一次。"
+
+#~ msgid "Name:"
+#~ msgstr "名稱:"
+
+#~ msgid "OS:"
+#~ msgstr "作業系統:"
+
+#~ msgid "Personal Details"
+#~ msgstr "個人詳細資料"
+
+#, fuzzy
+#~ msgid "R_egister"
+#~ msgstr "註冊(_G)..."
+
+#~ msgid "Search"
+#~ msgstr "搜尋"
+
+#~ msgid "Spell Checker"
+#~ msgstr "拼字檢查"
+
+#~ msgid "Subscription Request"
+#~ msgstr "訂閱要求"
+
+#~ msgid "Suggestions for the word:"
+#~ msgstr "對這個字的建議:"
+
+#~ msgid ""
+#~ "This acts as a filter to the contact list below. You can use segments of "
+#~ "contact's name or ID, for example, \"jabber.org\" will list everyone "
+#~ "using that server"
+#~ msgstr ""
+#~ "這會做為下面聯絡人清單的過濾器。你可以使用聯絡人的部分名稱或 ID,例如,"
+#~ "「jabber.org」會列出每個使用該伺服器的人"
+
+#~ msgid "This is the name that will be used on your roster for this contact"
+#~ msgstr "這是在你的好友名單上用來顯示此聯絡人的名稱"
+
+#~ msgid "This name will be used to identify you in chat windows"
+#~ msgstr "這個名稱會用在聊天視窗中辨識你的身分"
+
+#~ msgid ""
+#~ "This name will be used to identify you when new contacts lookup your "
+#~ "details"
+#~ msgstr "這個名稱用在有新的聯絡人查詢你的詳細資訊時可供辨識身分"
+
+#~ msgid "Use system pro_xy"
+#~ msgstr "使用系統的代理伺服器設定(_X)"
+
+#~ msgid "Version:"
+#~ msgstr "版本:"
+
+#~ msgid "View Previous Conversations"
+#~ msgstr "顯示前一次交談"
+
+#~ msgid "Which account do you want to use?"
+#~ msgstr "要使用甚麼帳號名稱?"
+
+#~ msgid "You are not subscribed to this contact."
+#~ msgstr "你沒有訂閱這個好友。"
+
+#~ msgid "_Connect"
+#~ msgstr "連線(_C)"
+
+#, fuzzy
+#~ msgid "_Description:"
+#~ msgstr "描述:"
+
+#~ msgid "_Disconnect"
+#~ msgstr "斷線(_D)"
+
+#, fuzzy
+#~ msgid "_Email:"
+#~ msgstr "電郵:"
+
+#, fuzzy
+#~ msgid ""
+#~ "_Enter the name or contact ID of the person you want to chat to below:"
+#~ msgstr "在下面輸入你想聊天的人名或聯絡人 ID:"
+
+#, fuzzy
+#~ msgid "_For:"
+#~ msgstr "連接埠(_P):"
+
+#, fuzzy
+#~ msgid "_Full Name:"
+#~ msgstr "名稱(_N):"
+
+#, fuzzy
+#~ msgid "_Group:"
+#~ msgstr "群組:"
+
+#, fuzzy
+#~ msgid "_Nick Name:"
+#~ msgstr "暱稱(_N):"
+
+#~ msgid "_Password:"
+#~ msgstr "密碼(_P):"
+
+#, fuzzy
+#~ msgid "_Quit Message:"
+#~ msgstr "新增訊息"
+
+#~ msgid "_Subscribe"
+#~ msgstr "訂閱(_S)"
+
+#, fuzzy
+#~ msgid "_Web site:"
+#~ msgstr "網站:"
+
+#, fuzzy
+#~ msgid "irc account settings"
+#~ msgstr "<b>帳號設定</b>"
+
+#, fuzzy
+#~ msgid "msn account settings"
+#~ msgstr "<b>帳號設定</b>"
+
+#~ msgid "Preset status messages"
+#~ msgstr "預設狀態訊息"
+
+#~ msgid "Preset status messages."
+#~ msgstr "預設狀態訊息"
+
+#~ msgid "Connecting"
+#~ msgstr "正在連線"
+
+#~ msgid "Perhaps you are trying to connect to the wrong port?"
+#~ msgstr "也許你嘗試連線到錯誤的連接埠?"
+
+#~ msgid "Perhaps the service is not currently running?"
+#~ msgstr "也許此伺服器並未執行這個服務?"
+
+#~ msgid "Check your connection details."
+#~ msgstr "請檢查你的連線詳細資訊。"
+
+#~ msgid "Perhaps the server is not running this service."
+#~ msgstr "也許此伺服器並未執行這個服務。"
+
+#~ msgid "Check your username and password are correct."
+#~ msgstr "請檢查你的使用者名稱與密碼是否正確。"
+
+#~ msgid "%s will be added to your contact list."
+#~ msgstr "%s 將會被加入至你的好友名單。"
+
+#~ msgid "%s ID of new contact:"
+#~ msgstr "新的好友的 %s ID:"
+
+#~ msgid "Example: %s"
+#~ msgstr "範例: %s"
+
+#, fuzzy
+#~ msgid "Show accounts and pending connections"
+#~ msgstr "按這裏顯示帳號及任何進行中的連線。"
+
+#~ msgid "You have no Instant Messaging accounts configured!"
+#~ msgstr "你尚未設定即時通訊帳號!"
+
+#~ msgid ""
+#~ "Next you will be presented with the Account Information dialog to set "
+#~ "your details up."
+#~ msgstr "接下來將會出現帳號資訊對話方塊以讓你設定詳細資訊。"
+
+#~ msgid ""
+#~ "Please enter your invitation message to:\n"
+#~ "%s"
+#~ msgstr ""
+#~ "請輸入你的邀請訊息給:\n"
+#~ "%s"
+
+#~ msgid "Favourite"
+#~ msgstr "喜好"
+
+#~ msgid "/Contact Infor_mation"
+#~ msgstr "/聯絡人資訊(_M)"
+
+#~ msgid "/Re_name Contact"
+#~ msgstr "/更改好友名稱(_N)"
+
+#~ msgid "/_Edit Groups"
+#~ msgstr "/編輯群組(_E)"
+
+#~ msgid "/_View Previous Conversations"
+#~ msgstr "/顯示前一次交談(_V)"
+
+#~ msgid ""
+#~ "Please enter a new nickname for the contact\n"
+#~ "%s"
+#~ msgstr ""
+#~ "請輸入以下好友的稱呼\n"
+#~ "%s"
+
+#~ msgid "Edit groups for %s"
+#~ msgstr "編輯 %s 的群組"
+
+#~ msgid "Conversation Log"
+#~ msgstr "對話紀錄"
+
+#~ msgid "Registering account"
+#~ msgstr "註冊帳號"
+
+#~ msgid "Example"
+#~ msgstr "範例"
+
+#~ msgid "Add to _favourites"
+#~ msgstr "加入喜好(_F)"
+
+#~ msgid ""
+#~ "Customize your own nickname, the server and chatroom which you wish to "
+#~ "join."
+#~ msgstr "自訂你的暱稱、伺服器名稱和要進入的聊天室名稱。"
+
+#~ msgid "Edit your chat room details:"
+#~ msgstr "編輯你的群組聊天室詳細資訊:"
+
+#~ msgid "Na_me:"
+#~ msgstr "名稱(_M):"
+
+#~ msgid "New Chat Room"
+#~ msgstr "新增聊天室"
+
+#~ msgid ""
+#~ "Pick a saved chat room from the presets available below and click Join to "
+#~ "start chatting."
+#~ msgstr "從下列可用的預先設定中挑選一個已儲存的聊天室,再按加入開始聊天。"
+
+#~ msgid " "
+#~ msgstr " "
+
+#~ msgid "<b>Information requested, please wait...</b>"
+#~ msgstr "<b>要求資訊,請稍候...</b>"
+
+#~ msgid "<span size=\"smaller\">Example:</span>"
+#~ msgstr "<span size=\"smaller\">範例:</span>"
+
+#~ msgid "Account Name"
+#~ msgstr "帳號名稱"
+
+#~ msgid "Connection Details"
+#~ msgstr "連線詳細資料"
+
+#~ msgid "Do you already have an account set up on a server?"
+#~ msgstr "你是不是已經有伺服器的帳號了?"
+
+#~ msgid "Enter the port used in the connection for this account"
+#~ msgstr "輸入這個帳號在此連線中所使用的連接埠"
+
+#~ msgid "Enter the server used in the connection for this account"
+#~ msgstr "輸入這個帳號在此連線中所使用的伺服器"
+
+#~ msgid "Enter the user's contact ID:"
+#~ msgstr "輸入該使用者的聯絡人 ID:"
+
+#~ msgid "Enter your real name here"
+#~ msgstr "在這裏輸入你的真實姓名"
+
+#~ msgid "Finished"
+#~ msgstr "完成設定"
+
+#~ msgid "For increased security, enable this option"
+#~ msgstr "為了增進安全性,請啟用這個選項"
+
+#~ msgid "Gossip"
+#~ msgstr "Gossip"
+
+#~ msgid ""
+#~ "Gossip is a modern client for the Jabber Instant Messaging system.\n"
+#~ "\n"
+#~ "This assistant will help you configure Gossip and connect you to your "
+#~ "favorite Jabber server.\n"
+#~ "\n"
+#~ "To get started, just click \"Forward\"."
+#~ msgstr ""
+#~ "Gossip 是一個嶄新的 Jabber 即時通訊客戶端程式。\n"
+#~ "\n"
+#~ "本精靈會協助你設定 Gossip,並連接至你想使用的 Jabber 伺服器。\n"
+#~ "\n"
+#~ "如果準備好,請按「下一頁」。"
+
+#~ msgid ""
+#~ "If you have another machine on your network which 'proxies' the "
+#~ "connection to the internet and you want to use it, enable this option"
+#~ msgstr ""
+#~ "如果在你的網絡中有其他電腦「代理」到網際網絡的連線而你想要使用它,請啟用這"
+#~ "個選項"
+
+#~ msgid ""
+#~ "If you need to set specific connection details, like a different server "
+#~ "or port, you can configure that here:"
+#~ msgstr ""
+#~ "如果需要設定特定的連線資訊,像是不同的伺服器或連接埠,可以在這裏設定:"
+
+#~ msgid ""
+#~ "In order to subscribe to presence notifications from the user, a request "
+#~ "will be sent. Until this request is approved, the user will always be "
+#~ "shown as \"Offline\" in your contact list."
+#~ msgstr ""
+#~ "為了訂閱使用者的上線通知,將送出要求。直到這個要求被同意之前,該使用者在你"
+#~ "的好友名單中將顯示為“離線”。"
+
+#~ msgid "In which group do you want to place this contact?"
+#~ msgstr "你想將這個好友加入哪個群組之內?"
+
+#~ msgid "Jabber ID:"
+#~ msgstr "Jabber ID:"
+
+#~ msgid ""
+#~ "Leave this blank if you don't want your password stored on a public "
+#~ "machine. If you decide to do this, you will be prompted each time you "
+#~ "connect for a password"
+#~ msgstr ""
+#~ "如果不希望你的密碼儲存在公用的電腦上,可以保持此欄空白。如果決定要這麼做,"
+#~ "每一次連線的時候都會向你提問密碼"
+
+#~ msgid "Nickname:"
+#~ msgstr "暱稱:"
+
+#~ msgid "Port:"
+#~ msgstr "埠號:"
+
+#~ msgid "Press Subscribe to request to receive their status"
+#~ msgstr "請訂閱以接收他們的狀態"
+
+#~ msgid "Registering Account"
+#~ msgstr "註冊帳號"
+
+#~ msgid "Resource:"
+#~ msgstr "資源:"
+
+#~ msgid "Sending request"
+#~ msgstr "正在傳送要求"
+
+#~ msgid "Server:"
+#~ msgstr "伺服器:"
+
+#~ msgid "Web Site:"
+#~ msgstr "網站:"
+
+#~ msgid "Welcome to Gossip"
+#~ msgstr "歡迎使用 Gossip"
+
+#~ msgid "What instant messaging system does the contact use?"
+#~ msgstr "該好友使用哪種即時通訊系統?"
+
+#~ msgid "What is your name?"
+#~ msgstr "怎樣稱呼你?"
+
+#~ msgid ""
+#~ "What name do you want to use to identify this account?\n"
+#~ "\n"
+#~ "This name could be something associated with the service provider, for "
+#~ "example, <b>Google</b>."
+#~ msgstr ""
+#~ "要使用何種名稱來識別這個帳號?\n"
+#~ "\n"
+#~ "這個名稱可以是跟其服務的提供者有關的事物,例如,<b>Google</b>。"
+
+#~ msgid "What password do you want to use?"
+#~ msgstr "要使用什麼密碼?"
+
+#~ msgid "What username do you use?"
+#~ msgstr "你使用甚麼名稱?"
+
+#~ msgid "What username do you want to use?"
+#~ msgstr "你想使用甚麼用戶名稱?"
+
+#~ msgid "Which account do you want to add this contact to?"
+#~ msgstr "你想將這個好友加入哪個帳號之內?"
+
+#~ msgid ""
+#~ "You can change your account settings later by selecting the Edit-"
+#~ ">Accounts menu item."
+#~ msgstr "稍後你可以在選單中選取「編輯→帳號」來更改帳號設定。"
+
+#~ msgid ""
+#~ "You need to set a name for the connection, for example, <b>Home</b> or "
+#~ "<b>Laptop</b>."
+#~ msgstr "你需要設定該連線的名稱,例如,<b>家裏</b> 或 <b>筆電</b>。"
+
+#~ msgid "Your Account"
+#~ msgstr "你的帳號"
+
+#~ msgid "Your Identity"
+#~ msgstr "你的身分"
+
+#~ msgid "Your new account has now been set up."
+#~ msgstr "現在已設定好你的新帳號。"
+
+#~ msgid "_Forget"
+#~ msgstr "忘記密碼(_F)"
+
+#~ msgid "_Group Chat"
+#~ msgstr "群組聊天(_G)"
+
+#~ msgid "_No"
+#~ msgstr "否(_N)"
+
+#~ msgid "_Search..."
+#~ msgstr "搜尋(_S)..."
+
+#~ msgid "_Yes"
+#~ msgstr "是(_Y)"
+
+#~ msgid "Respond"
+#~ msgstr "回應"
+
+#~ msgid "Dark"
+#~ msgstr "暗"
+
+#~ msgid "Contact Information for %s"
+#~ msgstr "有關 %s 的資訊"
+
+#, fuzzy
+#~ msgid "Chat Rooms..."
+#~ msgstr "聊天室:"
+
+#~ msgid "Be silent when away"
+#~ msgstr "「離開」時不發出音效"
+
+#~ msgid "Be silent when busy"
+#~ msgstr "「忙碌」時不發出音效"
+
+#~ msgid "Height of main window"
+#~ msgstr "主視窗高度"
+
+#~ msgid "The X position of the main window."
+#~ msgstr "啟動時主視窗的水平位置。"
+
+#~ msgid "The Y position of the main window."
+#~ msgstr "啟動時主視窗的垂直位置。"
+
+#~ msgid "The width of the main window."
+#~ msgstr "主視窗寬度"
+
+#~ msgid "Whether spell checking should be turned on."
+#~ msgstr "是否開啟拼字檢查。"
+
+#~ msgid "Width of the main window"
+#~ msgstr "主視窗寬度"
+
+#~ msgid "X position of main window"
+#~ msgstr "主視窗水平位置"
+
+#~ msgid "Y position of main window"
+#~ msgstr "主視窗垂直位置"
+
+#~ msgid "Gossip, Instant Messaging Client"
+#~ msgstr "Gossip 即時通訊軟體"
+
+#, fuzzy
+#~ msgid "Close this chat window"
+#~ msgstr "邀請至聊天室(_I)"
+
+#~ msgid "Requested Information"
+#~ msgstr "要求的資訊"
+
+#~ msgid "/_Invite to Chat Conference"
+#~ msgstr "/邀請至聊天會議(_I)"
+
+#, fuzzy
+#~ msgid "Send Message"
+#~ msgstr "新增訊息(_N)..."
+
+#, fuzzy
+#~ msgid "%s has gone offline"
+#~ msgstr "%s 已離線"
+
+#~ msgid "Available..."
+#~ msgstr "有空..."
+
+#~ msgid "Busy..."
+#~ msgstr "忙碌..."
+
+#~ msgid "Away..."
+#~ msgstr "離開..."
+
+#~ msgid "Contact _Information"
+#~ msgstr "連絡資訊(_I)"
+
+#~ msgid "<b>Sound</b>"
+#~ msgstr "<b>聲音</b>"
+
+#~ msgid "Check spelling while I _type"
+#~ msgstr "當我輸入時檢查拼字(_T)"
+
+#~ msgid "Gossip - Accounts"
+#~ msgstr "Gossip - 帳號"
+
+#, fuzzy
+#~ msgid "Join _Group Chat..."
+#~ msgstr "加入群組聊天(_J)..."
+
+#~ msgid "Por_t:"
+#~ msgstr "連接埠(_T):"
+
+#~ msgid "Requested information."
+#~ msgstr "要求的資訊。"
+
+#~ msgid "Requesting contact information, please wait..."
+#~ msgstr "正要求好友資訊,請稍候..."
+
+#~ msgid "Could not open connection"
+#~ msgstr "無法開啟連線"
+
+#~ msgid "Could not find the server you wanted to use"
+#~ msgstr "找不到您想要使用的伺服器"
+
+#~ msgid "Connection to the server failed."
+#~ msgstr "連線至伺服器時失敗。"
+
+#~ msgid "Authentication failed"
+#~ msgstr "驗證失敗"
+
+#~ msgid "Written by:"
+#~ msgstr "作者:"
+
+#~ msgid "Artwork by:"
+#~ msgstr "美工:"
+
+#~ msgid "Translated by:"
+#~ msgstr "翻譯:"
+
+#~ msgid "Account ID"
+#~ msgstr "帳號 ID"
+
+#~ msgid "Last Error"
+#~ msgstr "上次錯誤"
+
+#~ msgid "%sChat - %s"
+#~ msgstr "%s聊天 - %s"
+
+#~ msgid "/Show _Log"
+#~ msgstr "/顯示對話紀錄(_L)"
+
+#~ msgid "Afrikaans"
+#~ msgstr "南非荷蘭語"
+
+#~ msgid "Amharic"
+#~ msgstr "阿姆哈拉語"
+
+#~ msgid "Arabic"
+#~ msgstr "阿拉伯語"
+
+#~ msgid "Azerbaijani"
+#~ msgstr "亞塞拜然語"
+
+#~ msgid "Belarusian"
+#~ msgstr "白俄羅斯語"
+
+#~ msgid "Bulgarian"
+#~ msgstr "保加利亞語"
+
+#~ msgid "Bengali"
+#~ msgstr "孟加拉語"
+
+#~ msgid "Breton"
+#~ msgstr "不列塔尼語"
+
+#~ msgid "Bosnian"
+#~ msgstr "波士尼亞語"
+
+#~ msgid "Catalan"
+#~ msgstr "加泰隆語"
+
+#~ msgid "Czech"
+#~ msgstr "捷克語"
+
+#~ msgid "Welsh"
+#~ msgstr "威爾士語"
+
+#~ msgid "Danish"
+#~ msgstr "丹麥語"
+
+#~ msgid "German"
+#~ msgstr "德文"
+
+#~ msgid "German (Austria)"
+#~ msgstr "德文(奧地利)"
+
+#~ msgid "German (Germany)"
+#~ msgstr "德文(德意志)"
+
+#~ msgid "German (Swiss)"
+#~ msgstr "德文(瑞士)"
+
+#~ msgid "Greek"
+#~ msgstr "希臘語"
+
+#~ msgid "English"
+#~ msgstr "英文"
+
+#~ msgid "English (Canadian)"
+#~ msgstr "英文(加拿大)"
+
+#~ msgid "English (British)"
+#~ msgstr "英語(英式)"
+
+#~ msgid "English (American)"
+#~ msgstr "英語(美式)"
+
+#~ msgid "Esperanto"
+#~ msgstr "世界語"
+
+#~ msgid "Spanish"
+#~ msgstr "西班牙文"
+
+#~ msgid "Estonian"
+#~ msgstr "愛沙尼亞語"
+
+#~ msgid "Persian"
+#~ msgstr "波斯語"
+
+#~ msgid "Finnish"
+#~ msgstr "芬蘭語"
+
+#~ msgid "French"
+#~ msgstr "法文"
+
+#~ msgid "French (France)"
+#~ msgstr "法文(法蘭西)"
+
+#~ msgid "French (Swiss)"
+#~ msgstr "法文(瑞士)"
+
+#~ msgid "Irish Gaelic"
+#~ msgstr "愛爾蘭蓋爾文"
+
+#~ msgid "Scots Gaelic"
+#~ msgstr "蘇格蘭蓋爾文"
+
+#~ msgid "Gujarati"
+#~ msgstr "印度語"
+
+#~ msgid "Manx Gaelic"
+#~ msgstr "人島蓋爾文"
+
+#~ msgid "Hebrew"
+#~ msgstr "希伯來語"
+
+#~ msgid "Hindi"
+#~ msgstr "印度語(北印度)"
+
+#~ msgid "Croatian"
+#~ msgstr "克羅地亞語"
+
+#~ msgid "Hungarian"
+#~ msgstr "匈牙利語"
+
+#~ msgid "Indonesian"
+#~ msgstr "印尼語"
+
+#~ msgid "Icelandic"
+#~ msgstr "冰島語"
+
+#~ msgid "Italian"
+#~ msgstr "意大利文"
+
+#~ msgid "Japanese"
+#~ msgstr "日語"
+
+#~ msgid "Georgian"
+#~ msgstr "喬治亞語"
+
+#~ msgid "Kannada"
+#~ msgstr "坎納達語"
+
+#~ msgid "Korean"
+#~ msgstr "韓文"
+
+#~ msgid "Kurdish"
+#~ msgstr "庫德語"
+
+#~ msgid "Cornish"
+#~ msgstr "康沃爾語"
+
+#~ msgid "Limburgish"
+#~ msgstr "林堡語"
+
+#~ msgid "Lithuanian"
+#~ msgstr "立陶宛文"
+
+#~ msgid "Latvian"
+#~ msgstr "拉脫維亞語"
+
+#~ msgid "Maori"
+#~ msgstr "毛利語"
+
+#~ msgid "Macedonian"
+#~ msgstr "馬其頓語"
+
+#~ msgid "Malayalam"
+#~ msgstr "馬拉雅拉姆語"
+
+#~ msgid "Mongolian"
+#~ msgstr "蒙古語"
+
+#~ msgid "Marathi"
+#~ msgstr "馬拉塔語"
+
+#~ msgid "Malay"
+#~ msgstr "馬來語"
+
+#~ msgid "Norwegian (Bokmal)"
+#~ msgstr "挪威語(Bokmaal)"
+
+#~ msgid "Nepali"
+#~ msgstr "尼泊爾語"
+
+#~ msgid "Dutch"
+#~ msgstr "荷蘭語"
+
+#~ msgid "Norwegian"
+#~ msgstr "挪威語"
+
+#~ msgid "Norwegian (Nynorsk)"
+#~ msgstr "挪威語(Nynorsk)"
+
+#~ msgid "Norwegian (Nyorsk)"
+#~ msgstr "挪威語(Bokmaal)"
+
+#~ msgid "Oriya"
+#~ msgstr "奧里雅語"
+
+#~ msgid "Punjabi"
+#~ msgstr "旁加語"
+
+#~ msgid "Polish"
+#~ msgstr "波蘭語"
+
+#~ msgid "Portuguese"
+#~ msgstr "葡萄牙文"
+
+#~ msgid "Portuguese (Portugal)"
+#~ msgstr "葡萄牙文(葡萄牙)"
+
+#~ msgid "Portuguese (Brazil)"
+#~ msgstr "葡萄牙文(巴西)"
+
+#~ msgid "Romanian"
+#~ msgstr "羅馬尼亞語"
+
+#~ msgid "Russian"
+#~ msgstr "俄文"
+
+#~ msgid "Kinyarwanda"
+#~ msgstr "盧安達語"
+
+#~ msgid "Slovak"
+#~ msgstr "斯洛伐克語"
+
+#~ msgid "Slovenian"
+#~ msgstr "斯洛文尼亞語"
+
+#~ msgid "Albanian"
+#~ msgstr "阿爾巴尼亞語"
+
+#~ msgid "Serbian"
+#~ msgstr "塞爾維亞語"
+
+#~ msgid "Swedish"
+#~ msgstr "瑞典語"
+
+#~ msgid "Tamil"
+#~ msgstr "泰米爾語"
+
+#~ msgid "Telugu"
+#~ msgstr "泰盧固語"
+
+#~ msgid "Thai"
+#~ msgstr "泰文"
+
+#~ msgid "Turkmen"
+#~ msgstr "土庫曼語"
+
+#~ msgid "Turkish"
+#~ msgstr "土耳其語"
+
+#~ msgid "Ukrainian"
+#~ msgstr "烏克蘭語"
+
+#~ msgid "Vietnamese"
+#~ msgstr "越南文"
+
+#~ msgid "Wallon"
+#~ msgstr "瓦隆語"
+
+#~ msgid "Xhosa"
+#~ msgstr "科薩語"
+
+#~ msgid "Yiddish"
+#~ msgstr "意第緒語"
+
+#~ msgid "Chinese Simplified"
+#~ msgstr "簡體中文"
+
+#~ msgid "Chinese Traditional"
+#~ msgstr "繁體中文"
+
+#~ msgid "View Lo_g"
+#~ msgstr "觀看對話紀錄(_G)"
+
+#, fuzzy
+#~ msgid "Gossip - Chat Rooms"
+#~ msgstr "Gossip - 編輯聊天室"
+
+#~ msgid "Gossip - Group Chat"
+#~ msgstr "Gossip - 群組聊天"
+
+#, fuzzy
+#~ msgid "Gossip - New Chatroom"
+#~ msgstr "Gossip - 編輯聊天室"
+
+#~ msgid "Gossip - Add contact"
+#~ msgstr "Gossip - 加入好友"
+
+#~ msgid "Gossip - Contact Information"
+#~ msgstr "Gossip - 好友資訊"
+
+#~ msgid "Gossip - Edit Groups"
+#~ msgstr "Gossip - 編輯群組"
+
+#~ msgid "Gossip - New Account"
+#~ msgstr "Gossip - 新增帳號"
+
+#~ msgid "Gossip - New Message"
+#~ msgstr "Gossip - 新訊息"
+
+#~ msgid "Gossip - Personal Details"
+#~ msgstr "Gossip - 個人資訊"
+
+#~ msgid "Gossip - Preferences"
+#~ msgstr "Gossip - 偏好設定"
+
+#~ msgid "Gossip - Spell Checker"
+#~ msgstr "Gossip - 拼字檢查"
+
+#~ msgid "Gossip - Status Message"
+#~ msgstr "Gossip - 狀態訊息"
+
+#~ msgid "Waiting for server to respond, please wait..."
+#~ msgstr "等候伺服器的回應,請稍候..."
+
+#~ msgid "Connection could not be created"
+#~ msgstr "無法建立連線"
+
+#~ msgid "Redirect"
+#~ msgstr "重新導向"
+
+#~ msgid "Bad Request"
+#~ msgstr "錯誤的要求"
+
+#~ msgid "Not Authorized"
+#~ msgstr "未授權"
+
+#~ msgid "Payment Required"
+#~ msgstr "需付款"
+
+#~ msgid "Forbidden"
+#~ msgstr "被禁止"
+
+#~ msgid "Not Found"
+#~ msgstr "找不到"
+
+#~ msgid "Not Allowed"
+#~ msgstr "不允許"
+
+#~ msgid "Not Acceptable"
+#~ msgstr "不能接受"
+
+#~ msgid "Request Timeout"
+#~ msgstr "要求已逾時"
+
+#~ msgid "Conflict"
+#~ msgstr "衝突"
+
+#~ msgid "Not Implemented"
+#~ msgstr "未實作"
+
+#~ msgid "Remote Server Error"
+#~ msgstr "遠端伺服器錯誤"
+
+#~ msgid "Service Unavailable"
+#~ msgstr "服務無法使用"
+
+#~ msgid "Unknown error."
+#~ msgstr "不明的錯誤。"
+
+#~ msgid "Custom"
+#~ msgstr "自訂"
+
+#~ msgid "The chat room you are trying is not responding."
+#~ msgstr "您所嘗試的聊天室沒有回應。"
+
+#~ msgid "Check your details and try again."
+#~ msgstr "請檢查您的詳細資訊並再試一次。"
+
+#~ msgid "This is currently unsupported."
+#~ msgstr "此項目前不支援。"
+
+#~ msgid "Perhaps the conference server is busy, try again later."
+#~ msgstr "也許此會議伺服器正在忙碌,請稍後再試。"
+
+#~ msgid "Check the server host name is correct and is available."
+#~ msgstr "請檢查伺服器主機名稱是否正確可用。"
+
+#~ msgid "Gossip will now try to use your account:"
+#~ msgstr "Gossip 現在會嘗試使用這個帳號:"
+
+#~ msgid "Gossip will now try to register the account:"
+#~ msgstr "現在 Gossip 會嘗試註冊帳號:"
+
+#~ msgid "Cus_tomize"
+#~ msgstr "自訂(_T)"
+
+#~ msgid "Edit or Delete this favorite."
+#~ msgstr "編輯或刪除這個喜好。"
+
+#~ msgid "Gossip - Join Chat Room "
+#~ msgstr "Gossip - 加入聊天室"
+
+#~ msgid "Choose a Server"
+#~ msgstr "選取伺服器"
+
+#~ msgid "On what server do you have an account?"
+#~ msgstr "您在哪個伺服器有帳號?"
+
+#~ msgid "Configure Transports"
+#~ msgstr "設定轉送程式"
+
+#~ msgid "_Jabber ID of new contact:"
+#~ msgstr "新的好友的 _Jabber ID:"
+
+#~ msgid "Edit List..."
+#~ msgstr "編輯清單..."
+
+#~ msgid "Automatically Connect"
+#~ msgstr "自動連線"
+
+#~ msgid "Connect _Server:"
+#~ msgstr "連接伺服器(_S):"
+
+#~ msgid "Gossip - Account Information"
+#~ msgstr "Gossip - 帳號資訊"
+
+#~ msgid "_Jabber ID:"
+#~ msgstr "_Jabber ID:"
+
+#~ msgid "Gossip - Edit Favorite"
+#~ msgstr "Gossip - 編輯喜好"
+
+#~ msgid "Gossip - Edit Group Chat Favorites"
+#~ msgstr "Gossip - 編輯群組聊天喜好"
+
+#~ msgid " "
+#~ msgstr " "
+
+#~ msgid ""
+#~ "<b>Configuring your new service...</b>\n"
+#~ "This will take a few moments, please wait."
+#~ msgstr ""
+#~ "<b>正在設定您的新服務...</b>\n"
+#~ "這需要一點時間,請稍等。"
+
+#~ msgid "<b>Preferred Service</b>"
+#~ msgstr "<b>偏好的服務</b>"
+
+#~ msgid "<b>Recommended Services</b>"
+#~ msgstr "<b>建議的服務</b>"
+
+#~ msgid ""
+#~ "<b>Requested service requirements...</b>\n"
+#~ "This will take a few moments, please wait."
+#~ msgstr ""
+#~ "<b>正在尋找服務的要件...</b>\n"
+#~ "這需要一點時間,請稍等。"
+
+#~ msgid "Add Account"
+#~ msgstr "新增帳號"
+
+#~ msgid "Add Another Account"
+#~ msgstr "新增其他帳號"
+
+#~ msgid "Choose from list:"
+#~ msgstr "從名單中選取:"
+
+#~ msgid "Configure Transport"
+#~ msgstr "設定轉送程式"
+
+#~ msgid "Configuring Service"
+#~ msgstr "正在設定服務"
+
+#~ msgid "Gossip - Status Presets"
+#~ msgstr "Gossip - 狀態預先設定"
+
+#~ msgid "Gossip - Welcome"
+#~ msgstr "Gossip - 歡迎"
+
+#~ msgid "If you prefer, you can specify your own service:"
+#~ msgstr "如果您喜歡,可以指定您自己的服務:"
+
+#~ msgid "Jabber Account"
+#~ msgstr "Jabber 帳號"
+
+#~ msgid "Jabber.com"
+#~ msgstr "Jabber.com"
+
+#~ msgid "Jabber.org"
+#~ msgstr "Jabber.org"
+
+#~ msgid "Nick name:"
+#~ msgstr "暱稱:"
+
+#~ msgid "Please complete the details below to set up your account: "
+#~ msgstr "請在以下的欄位填上詳細的資料,以設定您的帳號: "
+
+#~ msgid "Populating services..."
+#~ msgstr "計算服務的使用率..."
+
+#~ msgid "Remove Account"
+#~ msgstr "移除帳號"
+
+#~ msgid "Service Details"
+#~ msgstr "服務詳細資料"
+
+#~ msgid "Service:"
+#~ msgstr "服務:"
+
+#~ msgid ""
+#~ "This wizard will allow you to configure your account settings for another "
+#~ "protocol. "
+#~ msgstr "這個精靈會讓您設定其他協定的帳號設定值。"
+
+#~ msgid "Transport Accounts"
+#~ msgstr "轉送程式帳號"
+
+#~ msgid "Use a different server"
+#~ msgstr "使用另一個伺服器"
+
+#~ msgid "Which protocol would you like to set up? "
+#~ msgstr "您想要設定哪個協定?"
+
+#~ msgid ""
+#~ "You can set the status presets which appear in the presence menu on the "
+#~ "main window here."
+#~ msgstr "您可以在此設定顯示在主視窗上線選單中的狀態預先設定。"
+
+#~ msgid "You currently have the following accounts set up:"
+#~ msgstr "您目前已設定下列帳號:"
+
+#~ msgid "_Account Information"
+#~ msgstr "帳號資訊(_A)"
diff --git a/gnome-2-22/po/zh_TW.po b/gnome-2-22/po/zh_TW.po
new file mode 100644
index 000000000..d69a174df
--- /dev/null
+++ b/gnome-2-22/po/zh_TW.po
@@ -0,0 +1,2561 @@
+# traditional Chinese translation of gossip.
+# Copyright (C) 2003, 2004 Free Software Foundation, Inc.
+# Abel Cheung <abel@oaka.org>, 2003, 2004.
+# Chao-Hsiung Liao <j_h_liau@yahoo.com.tw>, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gossip 0.13\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-05-15 23:46+0200\n"
+"PO-Revision-Date: 2006-07-05 07:38+0800\n"
+"Last-Translator: Chao-Hsiung Liao <j_h_liau@yahoo.com.tw>\n"
+"Language-Team: Chinese (traditional) <community@linuxhall.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../data/empathy.desktop.in.h:1
+#, fuzzy
+msgid "Empathy Instant Messenger"
+msgstr "即時通訊程式"
+
+#: ../data/empathy.desktop.in.h:2
+msgid "Instant Messenger"
+msgstr "即時通訊程式"
+
+#: ../data/empathy.schemas.in.h:1
+msgid "Always open a separate chat window for new chats."
+msgstr "永遠為新的聊天開啟個別的聊天視窗。"
+
+#: ../data/empathy.schemas.in.h:2
+msgid "Chat window theme"
+msgstr "聊天視窗佈景主題"
+
+#: ../data/empathy.schemas.in.h:3
+msgid ""
+"Comma separated list of spell checker languages to use (e.g. en, fr, nl)."
+msgstr "以逗號分隔的拼字檢查程式語言清單(例. en, fr, nl)。"
+
+#: ../data/empathy.schemas.in.h:4
+#, fuzzy
+msgid "Compact contact list"
+msgstr "顯示好友名單(_S)"
+
+#: ../data/empathy.schemas.in.h:5
+msgid "Contact list sort criterium"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:6
+msgid "Default directory to select an avatar image from"
+msgstr "預設用以選擇大頭貼影像的目錄"
+
+#: ../data/empathy.schemas.in.h:7
+msgid "Enable popup when contact is available"
+msgstr "當連絡人上線時使用彈出式選單"
+
+#: ../data/empathy.schemas.in.h:8
+msgid "Enable sound when away"
+msgstr "當「離開」時啟用音效"
+
+#: ../data/empathy.schemas.in.h:9
+msgid "Enable sound when busy"
+msgstr "當「忙碌」時啟用音效"
+
+#: ../data/empathy.schemas.in.h:10
+#, fuzzy
+msgid "Enable spell checker"
+msgstr "啟用拼字檢查"
+
+#: ../data/empathy.schemas.in.h:11
+msgid "Hide main window"
+msgstr "隱藏主視窗"
+
+#: ../data/empathy.schemas.in.h:12
+msgid "Hide the main window."
+msgstr "隱藏主視窗。"
+
+#: ../data/empathy.schemas.in.h:13
+msgid "Open new chats in separate windows"
+msgstr "在個別視窗中開啟新聊天"
+
+#: ../data/empathy.schemas.in.h:14
+msgid "Show avatars"
+msgstr "顯示大頭貼"
+
+#: ../data/empathy.schemas.in.h:15
+#, fuzzy
+msgid "Show hint about closing the main window"
+msgstr "主視窗高度"
+
+#: ../data/empathy.schemas.in.h:16
+msgid "Show offline contacts"
+msgstr "顯示已離線的好友"
+
+#: ../data/empathy.schemas.in.h:17
+msgid "Spell checking languages"
+msgstr "拼字檢查程式語言"
+
+#: ../data/empathy.schemas.in.h:18
+msgid "The last directory that an avatar image was chosen from."
+msgstr "用來選擇大頭貼影像的最後目錄。"
+
+#: ../data/empathy.schemas.in.h:19
+msgid "The theme that is used to display the conversation in chat windows."
+msgstr "這個佈景主題會用在聊天視窗中顯示交談。"
+
+#: ../data/empathy.schemas.in.h:20
+msgid "Use graphical smileys"
+msgstr "使用表情圖示"
+
+#: ../data/empathy.schemas.in.h:21
+msgid "Use notification sounds"
+msgstr "使用音效來通知收到訊息"
+
+#: ../data/empathy.schemas.in.h:22
+#, fuzzy
+msgid "Use theme for chat rooms"
+msgstr "加入該聊天室"
+
+#: ../data/empathy.schemas.in.h:23
+msgid ""
+"Whether or not to check words typed against the languages you want to check "
+"with."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:24
+msgid ""
+"Whether or not to convert smileys into graphical images in conversations."
+msgstr "在對話時,是否將代表表情圖示的字符轉換為真正的圖示。"
+
+#: ../data/empathy.schemas.in.h:25
+msgid "Whether or not to play a sound when messages arrive."
+msgstr "將收到訊息時,是否播放音效。"
+
+#: ../data/empathy.schemas.in.h:26
+msgid "Whether or not to play sounds when away."
+msgstr "當離開時是否播放音效。"
+
+#: ../data/empathy.schemas.in.h:27
+msgid "Whether or not to play sounds when busy."
+msgstr "當忙碌時是否播放音效。"
+
+#: ../data/empathy.schemas.in.h:28
+msgid "Whether or not to show a popup when a contact becomes available."
+msgstr "當連絡人上線時,是否顯示彈出式視窗。"
+
+#: ../data/empathy.schemas.in.h:29
+msgid ""
+"Whether or not to show avatars for contacts in the contact list and chat "
+"windows."
+msgstr "是否在連絡人清單與聊天視窗中顯示大頭貼。"
+
+#: ../data/empathy.schemas.in.h:30
+msgid "Whether or not to show contacts that are offline in the contact list."
+msgstr "是否顯示清單中離線的好友。"
+
+#: ../data/empathy.schemas.in.h:31
+msgid ""
+"Whether or not to show the message dialog about closing the main window with "
+"the 'x' button in the title bar."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:32
+#, fuzzy
+msgid "Whether to show the contact list in compact mode or not."
+msgstr "是否在連絡人清單與聊天視窗中顯示大頭貼。"
+
+#: ../data/empathy.schemas.in.h:33
+msgid "Whether to use the theme for chat rooms or not."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:34
+msgid ""
+"Which criterium to use when sorting the contact list. Default is to use sort "
+"by the contact's name with the value \"name\". A value of \"state\" will "
+"sort the contact list by state."
+msgstr ""
+
+#: ../libempathy/gossip-contact.c:654 ../libempathy/gossip-presence.c:184
+#: ../libempathy/gossip-presence.c:283
+msgid "Offline"
+msgstr "離線"
+
+#: ../libempathy/gossip-presence.c:274
+msgid "Available"
+msgstr "已連線"
+
+#: ../libempathy/gossip-presence.c:276
+msgid "Busy"
+msgstr "忙碌"
+
+#: ../libempathy/gossip-presence.c:279
+msgid "Away"
+msgstr "離開"
+
+#: ../libempathy-gtk/empathy-main-window.c:254
+#, fuzzy
+msgid "Show and edit accounts"
+msgstr "顯示好友名單(_S)"
+
+#: ../libempathy-gtk/empathy-main-window.c:456
+msgid "Group"
+msgstr "群組"
+
+#: ../libempathy-gtk/empathy-main-window.c:477
+#, fuzzy
+msgid "Contact"
+msgstr "連絡人"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:1
+#, fuzzy
+msgid "Contact List - Empathy"
+msgstr "隱藏好友名單(_H)"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:2
+#, fuzzy
+msgid "Context"
+msgstr "內容(_C)"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:3
+#, fuzzy
+msgid "Join _Favorites"
+msgstr "加入喜好(_F)"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:4
+#: ../libempathy-gtk/gossip-chat.glade.h:10
+msgid "Join _New..."
+msgstr "加入新的(_N)..."
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:5
+#, fuzzy
+msgid "Manage Favorites..."
+msgstr "加入喜好(_F)"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:6
+msgid "Show _Offline Contacts"
+msgstr "顯示已離線的好友(_O)"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:7
+#, fuzzy
+msgid "_About"
+msgstr "帳號(_A)"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:8
+msgid "_Accounts"
+msgstr "帳號(_A)"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:9
+#: ../libempathy-gtk/gossip-chat.glade.h:15
+msgid "_Add Contact..."
+msgstr "加入好友(_A)..."
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:10
+#: ../libempathy-gtk/gossip-contact-list.c:298
+msgid "_Chat"
+msgstr "聊天(_C)"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:11
+msgid "_Contents"
+msgstr "內容(_C)"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:12
+#: ../libempathy-gtk/gossip-chat.glade.h:21
+#: ../libempathy-gtk/gossip-contact-list.c:310
+#, fuzzy
+msgid "_Edit"
+msgstr "編輯"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:13
+msgid "_Help"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:14
+#: ../libempathy-gtk/empathy-status-icon.glade.h:2
+msgid "_New Message..."
+msgstr "新增訊息(_N)..."
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:15
+msgid "_Personal Information"
+msgstr "個人資訊(_P)"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:16
+msgid "_Preferences"
+msgstr "偏好設定(_P)"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:17
+#: ../libempathy-gtk/empathy-status-icon.glade.h:3
+msgid "_Quit"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:18
+#: ../libempathy-gtk/gossip-chat.glade.h:25
+msgid "_Room"
+msgstr "聊天室(_R)"
+
+#: ../libempathy-gtk/empathy-main-window.glade.h:19
+#: ../libempathy-gtk/gossip-chat.glade.h:28
+#: ../libempathy-gtk/gossip-contact-list.c:326
+msgid "_View Previous Conversations"
+msgstr "顯示前一次交談(_V)"
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:1
+msgid "Status"
+msgstr "狀態"
+
+#: ../libempathy-gtk/empathy-status-icon.glade.h:4
+msgid "_Show Contact List"
+msgstr "顯示好友名單(_S)"
+
+#: ../libempathy-gtk/gossip-about-dialog.c:63
+#, fuzzy
+msgid ""
+"Empathy is free software; you can redistribute it and/or modify it under the "
+"terms of the GNU General Public License as published by the Free Software "
+"Foundation; either version 2 of the License, or (at your option) any later "
+"version."
+msgstr ""
+"Gossip 是自由軟體;您可以遵照自由軟體基金會 (Free Software Foundation) 出版"
+"的 GNU 通用公共許可證條款 (GNU General Public License) 第二版來修改和重新發佈"
+"這一程式,或者自由選擇使用任何更新的版本。"
+
+#: ../libempathy-gtk/gossip-about-dialog.c:67
+#, fuzzy
+msgid ""
+"Empathy is distributed in the hope that it will be useful, but WITHOUT ANY "
+"WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS "
+"FOR A PARTICULAR PURPOSE. See the GNU General Public License for more "
+"details."
+msgstr ""
+"發佈 Gossip 的目的是希望它有用,但沒有任何擔保。甚至沒有適合特定目的而隱含的"
+"擔保。更詳細的情況請參閱 GNU 通用公共許可證。"
+
+#: ../libempathy-gtk/gossip-about-dialog.c:71
+#, fuzzy
+msgid ""
+"You should have received a copy of the GNU General Public License along with "
+"Empathy; if not, write to the Free Software Foundation, Inc., 51 Franklin "
+"Street, Fifth Floor, Boston, MA 02110-130159 USA"
+msgstr ""
+"您應該已經和 Gossip 一起收到一份 GNU 通用公共許可證的副本;如果還沒有,寫信"
+"給: Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA "
+"02111-1307 USA"
+
+#: ../libempathy-gtk/gossip-about-dialog.c:99
+msgid "An Instant Messaging client for GNOME"
+msgstr "GNOME 的即時通訊軟體"
+
+# Abel's note: The dialog is really not wide enough to show email with name.
+#
+#: ../libempathy-gtk/gossip-about-dialog.c:105
+msgid "translator-credits"
+msgstr ""
+"如對翻譯有任何意見,請送一封電子郵件給\n"
+"以下地址,GNOME 翻譯團隊會盡快回覆您:\n"
+"community@linuxhall.org\n"
+"\n"
+"Chao-Hsiung Liao <j_h_liau@yahoo.com.tw>, 2003, 05\n"
+"Craig Jeffares <cjeffares@novell.com>, 2004\n"
+"Joe Man <trmetal@yahoo.com.hk>, 2001"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:224
+#, fuzzy
+msgid "Disable"
+msgstr "已連線"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:227
+msgid "Enable"
+msgstr "啟用"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:261
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:3
+#, fuzzy
+msgid "<b>No Account Selected</b>"
+msgstr "<b>帳號設定</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:263
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to start configuring.\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want "
+"to configure in the list on the left."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:272
+#, fuzzy
+msgid "<b>No Accounts Configured</b>"
+msgstr "<b>帳號設定</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:274
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to start configuring."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:362
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:6
+msgid "Accounts"
+msgstr "帳號"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:857
+#, c-format
+msgid ""
+"You are about to remove your %s account!\n"
+"Are you sure you want to proceed?"
+msgstr ""
+"即將移除您的 %s 帳號!\n"
+"確定要繼續嗎?"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.c:863
+msgid ""
+"Any associated conversations and chat rooms will NOT be removed if you "
+"decide to proceed.\n"
+"\n"
+"Should you decide to add the account back at a later time, they will still "
+"be available."
+msgstr ""
+"如果您決定繼續,任何相關的交談及聊天室將 不會 被移除。\n"
+"\n"
+"若您稍後決定將該帳號加回來,它們仍然可以使用。"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:1
+msgid "<b>Account</b>"
+msgstr "<b>帳戶</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:2
+#, fuzzy
+msgid "<b>New Account</b>"
+msgstr "<b>帳戶</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:4
+#, fuzzy
+msgid "<b>Settings</b>"
+msgstr "<b>帳號設定</b>"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:5
+msgid "A unique name for this account to identify it personally to you."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:7
+#, fuzzy
+msgid "Cr_eate"
+msgstr "聊天!"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:8
+msgid "Imendio "
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:9
+msgid "Jabber"
+msgstr "Jabber"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:10
+msgid ""
+"To add a new account, you can click on the 'Add' button and a new entry will "
+"be created for you to started configuring.\n"
+"\n"
+"If you do not want to add an account, simply click on the account you want "
+"to configure in the list on the left."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:13
+msgid "_Name:"
+msgstr "名稱(_N):"
+
+#: ../libempathy-gtk/gossip-accounts-dialog.glade.h:14
+#, fuzzy
+msgid "_Type:"
+msgstr "題目(_T):"
+
+#: ../libempathy-gtk/gossip-account-widget-generic.c:144
+#: ../libempathy-gtk/gossip-account-widget-generic.c:186
+#, c-format
+msgid "%s:"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:1
+#, fuzzy
+msgid ""
+"<small><b><span foreground=\"#555\">Example: user@jabber.org</span></b></"
+"small>"
+msgstr "<span size=\"smaller\">範例:user@jabber.org</span>"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:2
+msgid "Forget password and clear the entry."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:3
+msgid "Login I_D:"
+msgstr "登入 I_D:"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:4
+msgid "Pass_word:"
+msgstr "密碼(_W):"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:5
+msgid "Reso_urce:"
+msgstr "資源(_U):"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:6
+#, fuzzy
+msgid "Use encryption (SS_L)"
+msgstr "將訊息加密(_SSL)"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:7
+msgid "_Port:"
+msgstr "連接埠(_P):"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:8
+msgid "_Server:"
+msgstr "伺服器(_S):"
+
+#: ../libempathy-gtk/gossip-account-widget-jabber.glade.h:9
+#, fuzzy
+msgid "jabber account settings"
+msgstr "<b>帳號設定</b>"
+
+#: ../libempathy-gtk/gossip-chat.c:314
+msgid "Disconnected"
+msgstr "已斷線"
+
+#: ../libempathy-gtk/gossip-chat.c:858
+msgid "Insert Smiley"
+msgstr "插入笑臉影像"
+
+#: ../libempathy-gtk/gossip-chat.c:906
+msgid "_Check Word Spelling..."
+msgstr "檢查拼字(_C)..."
+
+#: ../libempathy-gtk/gossip-chat.c:1244
+msgid "Connected"
+msgstr "已連線"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:1
+#, fuzzy
+msgid "C_lear"
+msgstr "清除(_L)"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:2
+msgid "Change _Topic..."
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:3
+msgid "Chat"
+msgstr "聊天"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:4
+msgid "Contact Infor_mation"
+msgstr "連絡人資訊(_M)"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:5
+#, fuzzy
+msgid "Cu_t"
+msgstr "聊天(_A)"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:6
+#, fuzzy
+msgid "In_vite..."
+msgstr "邀請(_V)"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:7
+msgid "Insert _Smiley"
+msgstr "插入笑臉影像(_S)"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:8
+#, fuzzy
+msgid "Invitation _message:"
+msgstr "輸入狀態訊息:"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:9
+#, fuzzy
+msgid "Invite"
+msgstr "邀請(_V)"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:11
+msgid "Move Tab _Left"
+msgstr "將分頁左移(_L)"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:12
+msgid "Move Tab _Right"
+msgstr "將分頁右移(_R)"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:13
+msgid "Select who would you like to invite:"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:14
+msgid "You have been invited to join a chat conference."
+msgstr "您已經被邀請參加聊天會議。"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:16
+msgid "_Add To Favorites"
+msgstr "加入喜好(_A)"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:17
+msgid "_Close"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:18
+msgid "_Conversation"
+msgstr "對話(_C)"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:19
+msgid "_Copy"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-chat.glade.h:20
+msgid "_Detach Tab"
+msgstr "脫離分頁(_D)"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:22
+msgid "_Next Tab"
+msgstr "下個分頁(_N)"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:23
+#, fuzzy
+msgid "_Paste"
+msgstr "日期"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:24
+msgid "_Previous Tab"
+msgstr "上個分頁(_P)"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:26
+msgid "_Show Contacts"
+msgstr "顯示好友名單(_S)"
+
+#: ../libempathy-gtk/gossip-chat.glade.h:27
+msgid "_Tabs"
+msgstr "分頁(_T)"
+
+#: ../libempathy-gtk/gossip-chat-view.c:544
+msgid "_Copy Link Address"
+msgstr "複製鏈結地址(_C)"
+
+#: ../libempathy-gtk/gossip-chat-view.c:552
+msgid "_Open Link"
+msgstr "開啟連結(_O)"
+
+#: ../libempathy-gtk/gossip-chat-view.c:889
+msgid "%A %d %B %Y"
+msgstr "%Y-%m-%d (%A)"
+
+#: ../libempathy-gtk/gossip-chat-window.c:685
+#: ../libempathy-gtk/gossip-chat-window.c:715
+#, fuzzy
+msgid "New Message"
+msgid_plural "New Messages"
+msgstr[0] "新增訊息"
+msgstr[1] "新增訊息"
+
+#: ../libempathy-gtk/gossip-chat-window.c:691
+msgid "Chat Room"
+msgstr "聊天室"
+
+#: ../libempathy-gtk/gossip-chat-window.c:696
+#: ../libempathy-gtk/gossip-chat-window.c:719
+#, fuzzy, c-format
+msgid "Conversation"
+msgid_plural "Conversations (%d)"
+msgstr[0] "對話(_C)"
+msgstr[1] "對話(_C)"
+
+#: ../libempathy-gtk/gossip-chat-window.c:1295
+msgid "Typing a message."
+msgstr "正在鍵入訊息。"
+
+#: ../libempathy-gtk/gossip-contact-list.c:290
+#, fuzzy
+msgid "_Contact"
+msgstr "連絡人"
+
+#: ../libempathy-gtk/gossip-contact-list.c:294
+#, fuzzy
+msgid "_Group"
+msgstr "群組"
+
+#: ../libempathy-gtk/gossip-contact-list.c:298
+#, fuzzy
+msgid "Chat with contact"
+msgstr "加入好友"
+
+#: ../libempathy-gtk/gossip-contact-list.c:302
+#, fuzzy
+msgid "Infor_mation"
+msgstr "連絡人資訊(_M)"
+
+#: ../libempathy-gtk/gossip-contact-list.c:302
+#, fuzzy
+msgid "View contact information"
+msgstr "好友資訊"
+
+#: ../libempathy-gtk/gossip-contact-list.c:306
+#, fuzzy
+msgid "Re_name"
+msgstr "/更改群組名稱(_N)"
+
+#: ../libempathy-gtk/gossip-contact-list.c:306
+#, fuzzy
+msgid "Rename"
+msgstr "檔案名稱:"
+
+#: ../libempathy-gtk/gossip-contact-list.c:310
+#, fuzzy
+msgid "Edit the groups and name for this contact"
+msgstr "請輸入這個帳號的名稱"
+
+#: ../libempathy-gtk/gossip-contact-list.c:314
+#, fuzzy
+msgid "_Remove"
+msgstr "/移除好友(_R)"
+
+#: ../libempathy-gtk/gossip-contact-list.c:314
+#, fuzzy
+msgid "Remove contact"
+msgstr "/移除好友(_R)"
+
+#: ../libempathy-gtk/gossip-contact-list.c:318
+#, fuzzy
+msgid "_Invite to Chat Room"
+msgstr "/邀請至聊天室(_I)"
+
+#: ../libempathy-gtk/gossip-contact-list.c:318
+msgid "Invite to a currently open chat room"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-contact-list.c:322
+#, fuzzy
+msgid "_Send File..."
+msgstr "/傳送檔案(_S)..."
+
+#: ../libempathy-gtk/gossip-contact-list.c:322
+#, fuzzy
+msgid "Send a file"
+msgstr "選擇一個檔案"
+
+#: ../libempathy-gtk/gossip-contact-list.c:326
+#, fuzzy
+msgid "View previous conversations with this contact"
+msgstr "顯示前一次交談"
+
+#: ../libempathy-gtk/gossip-preferences.c:250
+msgid "Language"
+msgstr "語言"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:1
+msgid "<b>Appearance</b>"
+msgstr "<b>外觀</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:2
+msgid "<b>Audio</b>"
+msgstr "<b>音訊</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:3
+msgid "<b>Behaviour</b>"
+msgstr "<b>行為</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:4
+#, fuzzy
+msgid "<b>Contact List</b>"
+msgstr "<b>狀態</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:5
+msgid "<b>Languages</b>"
+msgstr "<b>語言</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:6
+#, fuzzy
+msgid "<b>Options</b>"
+msgstr "<b>連線</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:7
+msgid "<b>Visual</b>"
+msgstr "<b>視覺效果</b>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:8
+msgid ""
+"<small>The list of languages reflects only the languages for which you have "
+"a dictionary installed.</small>"
+msgstr "<small>這裡的語言清單只反映出您已經安裝字典的語言。</small>"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:9
+msgid "Avatars are user chosen images shown in the contact list"
+msgstr "大頭貼是使用者選擇來提供連絡人清單顯示用的"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:10
+msgid "Chat Th_eme:"
+msgstr "聊天佈景主題(_E):"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:11
+msgid "Display notifications when contacts come _online"
+msgstr "連絡人上線時顯示通知(_O)"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:12
+msgid "Enable sounds when _away"
+msgstr "當「離開」時啟用音效(_A)"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:13
+msgid "Enable sounds when _busy"
+msgstr "當「忙碌」時啟用音效(_B)"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:14
+msgid "General"
+msgstr "一般"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:15
+msgid "Notifications"
+msgstr "通知"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:16
+msgid "Preferences"
+msgstr "偏好設定"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:17
+msgid "Show _avatars"
+msgstr "顯示大頭貼(_A)"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:18
+msgid "Show _smileys as images"
+msgstr "以影像顯示表情符號(_S)"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:19
+#, fuzzy
+msgid "Show co_mpact contact list"
+msgstr "顯示好友名單(_S)"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:20
+msgid "Sort by _name"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:21
+msgid "Sort by s_tate"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:22
+msgid "Spell Checking"
+msgstr "拼字檢查"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:23
+msgid "Themes"
+msgstr ""
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:24
+#, fuzzy
+msgid "_Enable spell checking"
+msgstr "啟用拼字檢查"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:25
+msgid "_Open new chats in separate windows"
+msgstr "在個別視窗開啟新的聊天(_O)"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:26
+msgid "_Play sound when messages arrive"
+msgstr "收到訊息時播放音效(_P)"
+
+#: ../libempathy-gtk/gossip-preferences.glade.h:27
+#, fuzzy
+msgid "_Use for chat rooms"
+msgstr "儲存此聊天室(_T)"
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:702
+msgid "Custom message..."
+msgstr "自訂訊息..."
+
+#. Clear list
+#: ../libempathy-gtk/gossip-presence-chooser.c:724
+msgid "Clear List..."
+msgstr "清除清單..."
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:803
+#, fuzzy
+msgid "Are you sure you want to clear the list?"
+msgstr "確定要清空這個清單?"
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:807
+msgid ""
+"This will remove any custom messages you have added to the list of preset "
+"status messages."
+msgstr "這樣會移除任何您曾加入到預先設定狀態訊息清單中的自訂訊息。"
+
+#: ../libempathy-gtk/gossip-presence-chooser.c:812
+msgid "Clear List"
+msgstr "清除清單"
+
+#: ../libempathy-gtk/gossip-presence-chooser.glade.h:1
+msgid "Enter status message:"
+msgstr "輸入狀態訊息:"
+
+#: ../libempathy-gtk/gossip-presence-chooser.glade.h:2
+msgid "Status Message Presets"
+msgstr "狀態訊息預先設定"
+
+#: ../libempathy-gtk/gossip-presence-chooser.glade.h:3
+#, fuzzy
+msgid "_Add to status message list"
+msgstr "加入至狀態訊息清單"
+
+#: ../libempathy-gtk/gossip-private-chat.c:198
+#, c-format
+msgid "%s went offline"
+msgstr "%s 已離線"
+
+#: ../libempathy-gtk/gossip-private-chat.c:212
+#, c-format
+msgid "%s has come online"
+msgstr "%s 已經上線"
+
+#: ../libempathy-gtk/gossip-theme-manager.c:87
+msgid "Classic"
+msgstr "古典"
+
+#: ../libempathy-gtk/gossip-theme-manager.c:88
+#, fuzzy
+msgid "Simple"
+msgstr "範例"
+
+#: ../libempathy-gtk/gossip-theme-manager.c:89
+#, fuzzy
+msgid "Clean"
+msgstr "清除(_L)"
+
+#: ../libempathy-gtk/gossip-theme-manager.c:90
+msgid "Blue"
+msgstr "藍色"
+
+#: ../src/empathy-main.c:145
+msgid "Don't connect on startup"
+msgstr "啟動程式時不進行連線"
+
+#: ../src/empathy-main.c:155
+#, fuzzy
+msgid "- Empathy Instant Messenger"
+msgstr "- Gossip 即時通訊程式"
+
+#~ msgid "Gossip Instant Messenger"
+#~ msgstr "Gossip 即時通訊程式"
+
+#~ msgid "Normal"
+#~ msgstr "正常"
+
+#~ msgid "Joining"
+#~ msgstr "加入中"
+
+#~ msgid "Active"
+#~ msgstr "使用中"
+
+#~ msgid "Inactive"
+#~ msgstr "未使用"
+
+#~ msgid "Unknown"
+#~ msgstr "不明"
+
+#~ msgid "Error"
+#~ msgstr "錯誤"
+
+#, fuzzy
+#~ msgid "Participant"
+#~ msgid_plural "Participants"
+#~ msgstr[0] "加利西亞文"
+#~ msgstr[1] "加利西亞文"
+
+#, fuzzy
+#~ msgid "No role"
+#~ msgstr "正常"
+
+#, fuzzy
+#~ msgid "No affiliation"
+#~ msgstr "通知"
+
+#~ msgid "The nickname you have chosen is already in use."
+#~ msgstr "您所選的暱稱已經被使用了。"
+
+#~ msgid "The chat room you tried to join requires a password."
+#~ msgstr "您嘗試加入的聊天室需要密碼。"
+
+#~ msgid "The remote conference server did not respond in a sensible time."
+#~ msgstr "遠端會議伺服器沒有在時間內回應。"
+
+#~ msgid "The conference server you tried to join could not be found."
+#~ msgstr "找不到您嘗試加入的會議伺服器。"
+
+#~ msgid "An unknown error occurred, check your details are correct."
+#~ msgstr "發生了未知的錯誤,請檢查您的詳細資訊是否正確。"
+
+#, fuzzy
+#~ msgid "Joining the chatroom was canceled."
+#~ msgstr "加入該聊天室"
+
+#~ msgid "Unavailable"
+#~ msgstr "無法使用"
+
+#~ msgid "An unknown error occurred."
+#~ msgstr "發生不明的錯誤。"
+
+#~ msgid "Connection refused."
+#~ msgstr "連線被拒絕。"
+
+#~ msgid "Server address could not be resolved."
+#~ msgstr "無法解析伺服器位址。"
+
+#~ msgid "Connection timed out."
+#~ msgstr "連線已逾時。"
+
+#~ msgid "Authentication failed."
+#~ msgstr "驗證已失敗。"
+
+#~ msgid "The username you are trying already exists."
+#~ msgstr "您所輸入的使用者名稱已經被使用了。"
+
+#~ msgid "The username you are trying is not valid."
+#~ msgstr "您所輸入的使用者名稱是無效的。"
+
+#~ msgid "This feature is unavailable."
+#~ msgstr "這項功能無法使用。"
+
+#~ msgid "This feature is unauthorized."
+#~ msgstr "這項功能未獲授權。"
+
+#~ msgid "A specific protocol error occurred that was unexpected."
+#~ msgstr "指定的通訊協定發生未預期的錯誤。"
+
+#, fuzzy
+#~ msgid "new account"
+#~ msgstr "新增帳號"
+
+#~ msgid "Home"
+#~ msgstr "首頁"
+
+#~ msgid "Couldn't send message!"
+#~ msgstr "無法傳送訊息!"
+
+#~ msgid "Connection could not be opened"
+#~ msgstr "無法開啟連線"
+
+#, fuzzy
+#~ msgid "This service is unavailable or not found"
+#~ msgstr "這項功能無法使用。"
+
+#, fuzzy
+#~ msgid "Registration is required"
+#~ msgstr "註冊"
+
+#, fuzzy
+#~ msgid "There was an internal service error"
+#~ msgstr "內部的伺服器錯誤"
+
+#, fuzzy
+#~ msgid "This feature is not implemented"
+#~ msgstr "這項功能未獲授權。"
+
+#, fuzzy
+#~ msgid "The remote service timed out"
+#~ msgstr "遠端伺服器逾時"
+
+#~ msgid "Stop"
+#~ msgstr "停止"
+
+#~ msgid "Disconnect"
+#~ msgstr "中斷連線"
+
+#~ msgid "Connect"
+#~ msgstr "連線"
+
+#, fuzzy
+#~ msgid "Successfully registered your new account settings."
+#~ msgstr "成功註冊帳號"
+
+#, fuzzy
+#~ msgid "You should now be able to connect to your new account."
+#~ msgstr "您不能將 --no-connect 與 --account 一起使用"
+
+#, fuzzy
+#~ msgid "Failed to register your new account settings."
+#~ msgstr "註冊新帳號設定值不成功"
+
+#, fuzzy
+#~ msgid "Successfully changed your account password."
+#~ msgstr "輸入您的帳號密碼: "
+
+#, fuzzy
+#~ msgid "Failed to change your account password."
+#~ msgstr "輸入您的帳號密碼: "
+
+#, fuzzy
+#~ msgid ""
+#~ "Please enter a new password for this account:\n"
+#~ "%s"
+#~ msgstr ""
+#~ "請為新的群組命名:\n"
+#~ "%s"
+
+#~ msgid "No information is available for this contact."
+#~ msgstr "沒有這個好友的相關資訊。"
+
+#~ msgid "Information requested, please wait..."
+#~ msgstr "要求資訊,請稍候..."
+
+#~ msgid "I would like to add you to my contact list."
+#~ msgstr "我希望可以將您加入我的好友名單之內。"
+
+#~ msgid "To summarize:"
+#~ msgstr "要做總結:"
+
+#, fuzzy
+#~ msgid "%d new message"
+#~ msgid_plural "%d new messages"
+#~ msgstr[0] "新增訊息"
+#~ msgstr[1] "新增訊息"
+
+#, fuzzy
+#~ msgid "%d subscription request"
+#~ msgid_plural "%d subscription requests"
+#~ msgstr[0] "訂閱要求"
+#~ msgstr[1] "訂閱要求"
+
+#, fuzzy
+#~ msgid "%d file transfer request"
+#~ msgid_plural "%d file transfer requests"
+#~ msgstr[0] "檔案傳輸要求"
+#~ msgstr[1] "檔案傳輸要求"
+
+#, fuzzy
+#~ msgid "%d server message"
+#~ msgid_plural "%d server messages"
+#~ msgstr[0] "無法傳送訊息!"
+#~ msgstr[1] "無法傳送訊息!"
+
+#, fuzzy
+#~ msgid "%d error"
+#~ msgid_plural "%d errors"
+#~ msgstr[0] "錯誤"
+#~ msgstr[1] "錯誤"
+
+#~ msgid "If you quit, you will lose all unread information."
+#~ msgstr "如果離開,您將失去所有未閱讀的資訊。"
+
+#~ msgid "Edit Account _Details"
+#~ msgstr "編輯帳號詳細資訊(_D)"
+
+#~ msgid "Click to enlarge"
+#~ msgstr "按這裡放大"
+
+#~ msgid "Word"
+#~ msgstr "字"
+
+#~ msgid "New message from %s"
+#~ msgstr "收到來自 %s 的新訊息"
+
+#~ msgid "Your invitation has been declined"
+#~ msgstr "您的邀請被拒絕了"
+
+#~ msgid "Accept"
+#~ msgstr "接受"
+
+#~ msgid "Decline"
+#~ msgstr "拒絕"
+
+#, fuzzy
+#~ msgid "Name"
+#~ msgstr "名稱:"
+
+#, fuzzy
+#~ msgid "Room"
+#~ msgstr "聊天室(_R)"
+
+#~ msgid "Auto Connect"
+#~ msgstr "自動連線"
+
+#~ msgid "Information requested..."
+#~ msgstr "要求資訊..."
+
+#~ msgid "Do you want to remove this contact from your roster?"
+#~ msgstr "是否想從名單中移除這個好友?"
+
+#~ msgid ""
+#~ "Please enter a new name for the group:\n"
+#~ "%s"
+#~ msgstr ""
+#~ "請為新的群組命名:\n"
+#~ "%s"
+
+#~ msgid "Select"
+#~ msgstr "選擇"
+
+#~ msgid "Unsorted"
+#~ msgstr "未排序"
+
+#~ msgid "New file transfer request from %s"
+#~ msgstr "來自 %s 的檔案傳輸要求"
+
+#~ msgid "File transfer is not supported by both parties."
+#~ msgstr "雙方都不支援檔案傳輸。"
+
+#~ msgid "Your file transfer offer declined."
+#~ msgstr "您的檔案傳輸要求被拒絕了。"
+
+#~ msgid "The other user decided not to continue."
+#~ msgstr "另一個使用者決定不要繼續。"
+
+#~ msgid "Unknown error occurred during file transfer."
+#~ msgstr "在檔案傳輸過程中遇到未知的錯誤。"
+
+#~ msgid "%s would like to send you a file."
+#~ msgstr "%s 希望可以傳送給您一個檔案。"
+
+#~ msgid "Someone would like to send you a file."
+#~ msgstr "某人想要傳送給您一個檔案。"
+
+#~ msgid "Select a file"
+#~ msgstr "選擇一個檔案"
+
+#, fuzzy
+#~ msgid "Connecting..."
+#~ msgstr "正在連線"
+
+#, fuzzy
+#~ msgid "Retry connection"
+#~ msgstr "停止連線"
+
+#~ msgid "Invited %s to join this chat conference."
+#~ msgstr "邀請 %s 參加這個聊天會議。"
+
+#, fuzzy
+#~ msgid "%s has set the topic: %s"
+#~ msgstr "%s 已經設定該主題"
+
+#, fuzzy
+#~ msgid "Enter the new topic you want to set for this room:"
+#~ msgstr "您想使用甚麼稱呼來代表這個好友?"
+
+#, fuzzy
+#~ msgid "%s has joined the room"
+#~ msgstr "%s 已經設定該主題"
+
+#, fuzzy
+#~ msgid "%s has left the room"
+#~ msgstr "%s 已經設定該主題"
+
+#, fuzzy
+#~ msgid "Topic: %s"
+#~ msgstr "題目(_T):"
+
+#~ msgid "Account"
+#~ msgstr "帳號"
+
+#~ msgid "Conversation With"
+#~ msgstr "交談於"
+
+#~ msgid "Date"
+#~ msgstr "日期"
+
+#~ msgid "List the available accounts"
+#~ msgstr "列出可供使用的帳號"
+
+#~ msgid "Which account to connect to on startup"
+#~ msgstr "程式啟動時自動連接至哪個帳號"
+
+#~ msgid "ACCOUNT-NAME"
+#~ msgstr "帳號名稱"
+
+#~ msgid "You can not use --no-connect together with --account"
+#~ msgstr "您不能將 --no-connect 與 --account 一起使用"
+
+#~ msgid "No accounts available."
+#~ msgstr "沒有可用的帳號。"
+
+#~ msgid "Available accounts:"
+#~ msgstr "可使用的帳號:"
+
+#~ msgid "[default]"
+#~ msgstr "[預設]"
+
+#~ msgid "There is no account with the name '%s'."
+#~ msgstr "已經有名為“%s”的帳號存在。"
+
+#~ msgid "Join"
+#~ msgstr "加入"
+
+#, fuzzy
+#~ msgid "Create"
+#~ msgstr "日期"
+
+#~ msgid "Chat Rooms"
+#~ msgstr "聊天室"
+
+#, fuzzy
+#~ msgid "Browsing for conference rooms, please wait..."
+#~ msgstr "正嘗試加入聊天室,請稍等..."
+
+#~ msgid "Default"
+#~ msgstr "預設值"
+
+#~ msgid "Chat!"
+#~ msgstr "聊天!"
+
+#~ msgid "%s wants to be added to your contact list."
+#~ msgstr "%s 將會被加入至您的好友名單。"
+
+#~ msgid "Someone wants to be added to your contact list."
+#~ msgstr "有人希望能加入至您的好友名單。"
+
+#, fuzzy
+#~ msgid "Subscription request"
+#~ msgstr "訂閱要求"
+
+#~ msgid "Contact Information"
+#~ msgstr "連絡人資訊"
+
+#~ msgid "Subject: %s"
+#~ msgstr "主旨:%s"
+
+#~ msgid "Suggestions for the word"
+#~ msgstr "對這個字的建議"
+
+#~ msgid "New subscription request from %s"
+#~ msgstr "來自 %s 的新訂閱要求"
+
+#~ msgid "Do you want to add this person to your contact list?"
+#~ msgstr "您是否想將這個人加入至您的好友名單?"
+
+#~ msgid "Do you want to add %s to your contact list?"
+#~ msgstr "您是否想將 %s 加入您的好友名單?"
+
+#~ msgid "Please enter your %s account password"
+#~ msgstr "請輸入 %s 的帳號密碼"
+
+#, fuzzy
+#~ msgid "Logging in to account '%s'"
+#~ msgstr "登入到:%s"
+
+#~ msgid "Remember Password?"
+#~ msgstr "是否記下密碼?"
+
+#~ msgid "Could not display the help contents."
+#~ msgstr "無法顯示說明內容。"
+
+#~ msgid "Select Your Avatar Image"
+#~ msgstr "選擇您的大頭貼影像。"
+
+#~ msgid "No Image"
+#~ msgstr "沒有影像"
+
+#~ msgid "The server does not seem to be responding."
+#~ msgstr "此伺服器似乎沒有回應。"
+
+#~ msgid "Try again later."
+#~ msgstr "請稍後再試。"
+
+#, fuzzy
+#~ msgid "Change"
+#~ msgstr "聊天"
+
+#~ msgid "Contact goes offline"
+#~ msgstr "好友已離線"
+
+#~ msgid "Contact goes online"
+#~ msgstr "好友已上線"
+
+#~ msgid "Contact ID:"
+#~ msgstr "連絡人 ID:"
+
+#~ msgid "Do you want to accept this file?"
+#~ msgstr "您是否想接受這個檔案?"
+
+#~ msgid "File Transfer Request"
+#~ msgstr "檔案傳輸要求"
+
+#~ msgid "File name:"
+#~ msgstr "檔案名稱:"
+
+#~ msgid "File size:"
+#~ msgstr "檔案大小:"
+
+#~ msgid "Not supported yet"
+#~ msgstr "尚未支援"
+
+#~ msgid "This person wishes to send you this file:"
+#~ msgstr "這個人希望傳送給您這個檔案:"
+
+#~ msgid "Web site:"
+#~ msgstr "網站:"
+
+#~ msgid "_Accept"
+#~ msgstr "接受(_A)"
+
+#~ msgid "_Deny"
+#~ msgstr "拒絕(_D)"
+
+#, fuzzy
+#~ msgid "<b>Topic:</b>"
+#~ msgstr "<b>關於</b>"
+
+#~ msgid "Account:"
+#~ msgstr "帳號:"
+
+#, fuzzy
+#~ msgid "Browse:"
+#~ msgstr "法羅文"
+
+#, fuzzy
+#~ msgid "Edit Favorite Room"
+#~ msgstr "編輯聊天室"
+
+#~ msgid "Group Chat"
+#~ msgstr "群組聊天"
+
+#, fuzzy
+#~ msgid "Join New"
+#~ msgstr "加入新的(_N)..."
+
+#~ msgid "Join room on start_up"
+#~ msgstr "啟動時加入聊天室(_U)"
+
+#~ msgid "Join this chat room when Gossip starts and you are connected"
+#~ msgstr "當 Gossip 啟動並連上網路時加入這個聊天室。"
+
+#, fuzzy
+#~ msgid "Manage Favorite Rooms"
+#~ msgstr "管理聊天室"
+
+#~ msgid "N_ame:"
+#~ msgstr "名稱(_A):"
+
+#~ msgid "S_erver:"
+#~ msgstr "伺服器(_E):"
+
+#~ msgid "_Nickname:"
+#~ msgstr "暱稱(_N):"
+
+#~ msgid "_Room:"
+#~ msgstr "聊天室(_R):"
+
+#~ msgid "-"
+#~ msgstr "-"
+
+#~ msgid "<b>About</b>"
+#~ msgstr "<b>關於</b>"
+
+#~ msgid "<b>Client Information</b>"
+#~ msgstr "<b>客戶端資訊</b>"
+
+#, fuzzy
+#~ msgid "<b>Groups</b>"
+#~ msgstr "<b>關於</b>"
+
+#, fuzzy
+#~ msgid "<b>Name</b>"
+#~ msgstr "<b>語言</b>"
+
+#~ msgid "<b>Personal Details</b>"
+#~ msgstr "<b>個人資訊</b>"
+
+#, fuzzy
+#~ msgid "<b>Subscription</b>"
+#~ msgstr "<b>連線</b>"
+
+#~ msgid "<span size=\"smaller\">Example: Mikael or user@server.org</span>"
+#~ msgstr "<span size=\"smaller\">範例:Mikael 或 user@jabber.org</span>"
+
+#, fuzzy
+#~ msgid "Accou_nt:"
+#~ msgstr "帳號:"
+
+#~ msgid "Add Contact"
+#~ msgstr "加入聯絡人"
+
+#, fuzzy
+#~ msgid "Alia_s:"
+#~ msgstr "別名:"
+
+#~ msgid "Avatar:"
+#~ msgstr "大頭貼:"
+
+#~ msgid "Ch_at"
+#~ msgstr "聊天(_A)"
+
+#~ msgid "Client:"
+#~ msgstr "客戶端:"
+
+#, fuzzy
+#~ msgid "Con_tact:"
+#~ msgstr "連絡人"
+
+#~ msgid "Connect on S_tartup"
+#~ msgstr "啟動時連線(_T)"
+
+#~ msgid "Contacts"
+#~ msgstr "連絡人"
+
+#~ msgid "Country:"
+#~ msgstr "國家:"
+
+#~ msgid "Decide _Later"
+#~ msgstr "稍後決定(_L)"
+
+#, fuzzy
+#~ msgid "Edit Contact"
+#~ msgstr "加入聯絡人"
+
+#~ msgid "Edit Groups"
+#~ msgstr "編輯群組"
+
+#~ msgid "Email:"
+#~ msgstr "電郵:"
+
+#~ msgid "ID:"
+#~ msgstr "ID:"
+
+#~ msgid ""
+#~ "If you chose to decide later you will be asked the next time you log on."
+#~ msgstr "如果您選擇稍後再決定,下次登入時將被再詢問一次。"
+
+#~ msgid "Name:"
+#~ msgstr "名稱:"
+
+#~ msgid "OS:"
+#~ msgstr "作業系統:"
+
+#~ msgid "Personal Details"
+#~ msgstr "個人詳細資料"
+
+#, fuzzy
+#~ msgid "R_egister"
+#~ msgstr "註冊(_G)..."
+
+#~ msgid "Search"
+#~ msgstr "搜尋"
+
+#~ msgid "Spell Checker"
+#~ msgstr "拼字檢查"
+
+#~ msgid "Subscription Request"
+#~ msgstr "訂閱要求"
+
+#~ msgid "Suggestions for the word:"
+#~ msgstr "對這個字的建議:"
+
+#~ msgid ""
+#~ "This acts as a filter to the contact list below. You can use segments of "
+#~ "contact's name or ID, for example, \"jabber.org\" will list everyone "
+#~ "using that server"
+#~ msgstr ""
+#~ "這會做為下面連絡人清單的過濾器。您可以使用連絡人的部分名稱或 ID,例如,"
+#~ "「jabber.org」會列出每個使用該伺服器的人"
+
+#~ msgid "This is the name that will be used on your roster for this contact"
+#~ msgstr "這是在您的好友名單上用來顯示此連絡人的名稱"
+
+#~ msgid "This name will be used to identify you in chat windows"
+#~ msgstr "這個名稱會用在聊天視窗中辨識您的身分"
+
+#~ msgid ""
+#~ "This name will be used to identify you when new contacts lookup your "
+#~ "details"
+#~ msgstr "這個名稱用在有新的連絡人查詢您的詳細資訊時可供辨識身分"
+
+#~ msgid "Use system pro_xy"
+#~ msgstr "使用系統的代理伺服器設定(_X)"
+
+#~ msgid "Version:"
+#~ msgstr "版本:"
+
+#~ msgid "View Previous Conversations"
+#~ msgstr "顯示前一次交談"
+
+#~ msgid "Which account do you want to use?"
+#~ msgstr "要使用甚麼帳號名稱?"
+
+#~ msgid "You are not subscribed to this contact."
+#~ msgstr "您沒有訂閱這個好友。"
+
+#~ msgid "_Connect"
+#~ msgstr "連線(_C)"
+
+#, fuzzy
+#~ msgid "_Description:"
+#~ msgstr "描述:"
+
+#~ msgid "_Disconnect"
+#~ msgstr "斷線(_D)"
+
+#, fuzzy
+#~ msgid "_Email:"
+#~ msgstr "電郵:"
+
+#, fuzzy
+#~ msgid ""
+#~ "_Enter the name or contact ID of the person you want to chat to below:"
+#~ msgstr "在下面輸入您想聊天的人名或連絡人 ID:"
+
+#, fuzzy
+#~ msgid "_For:"
+#~ msgstr "連接埠(_P):"
+
+#, fuzzy
+#~ msgid "_Full Name:"
+#~ msgstr "名稱(_N):"
+
+#, fuzzy
+#~ msgid "_Group:"
+#~ msgstr "群組:"
+
+#, fuzzy
+#~ msgid "_Nick Name:"
+#~ msgstr "暱稱(_N):"
+
+#~ msgid "_Password:"
+#~ msgstr "密碼(_P):"
+
+#, fuzzy
+#~ msgid "_Quit Message:"
+#~ msgstr "新增訊息"
+
+#~ msgid "_Subscribe"
+#~ msgstr "訂閱(_S)"
+
+#, fuzzy
+#~ msgid "_Web site:"
+#~ msgstr "網站:"
+
+#, fuzzy
+#~ msgid "irc account settings"
+#~ msgstr "<b>帳號設定</b>"
+
+#, fuzzy
+#~ msgid "msn account settings"
+#~ msgstr "<b>帳號設定</b>"
+
+#~ msgid "Preset status messages"
+#~ msgstr "預設狀態訊息"
+
+#~ msgid "Preset status messages."
+#~ msgstr "預設狀態訊息"
+
+#~ msgid "Connecting"
+#~ msgstr "正在連線"
+
+#~ msgid "Perhaps you are trying to connect to the wrong port?"
+#~ msgstr "也許您嘗試連線到錯誤的連接埠?"
+
+#~ msgid "Perhaps the service is not currently running?"
+#~ msgstr "也許此伺服器並未執行這個服務?"
+
+#~ msgid "Check your connection details."
+#~ msgstr "請檢查您的連線詳細資訊。"
+
+#~ msgid "Perhaps the server is not running this service."
+#~ msgstr "也許此伺服器並未執行這個服務。"
+
+#~ msgid "Check your username and password are correct."
+#~ msgstr "請檢查您的使用者名稱與密碼是否正確。"
+
+#~ msgid "%s will be added to your contact list."
+#~ msgstr "%s 將會被加入至您的好友名單。"
+
+#~ msgid "%s ID of new contact:"
+#~ msgstr "新的好友的 %s ID:"
+
+#~ msgid "Example: %s"
+#~ msgstr "範例: %s"
+
+#, fuzzy
+#~ msgid "Show accounts and pending connections"
+#~ msgstr "按這裡顯示帳號及任何進行中的連線。"
+
+#~ msgid "You have no Instant Messaging accounts configured!"
+#~ msgstr "您尚未設定即時通訊帳號!"
+
+#~ msgid ""
+#~ "Next you will be presented with the Account Information dialog to set "
+#~ "your details up."
+#~ msgstr "接下來將會出現帳號資訊對話方塊以讓您設定詳細資訊。"
+
+#~ msgid ""
+#~ "Please enter your invitation message to:\n"
+#~ "%s"
+#~ msgstr ""
+#~ "請輸入您的邀請訊息給:\n"
+#~ "%s"
+
+#~ msgid "Favourite"
+#~ msgstr "喜好"
+
+#~ msgid "/Contact Infor_mation"
+#~ msgstr "/連絡人資訊(_M)"
+
+#~ msgid "/Re_name Contact"
+#~ msgstr "/更改好友名稱(_N)"
+
+#~ msgid "/_Edit Groups"
+#~ msgstr "/編輯群組(_E)"
+
+#~ msgid "/_View Previous Conversations"
+#~ msgstr "/顯示前一次交談(_V)"
+
+#~ msgid ""
+#~ "Please enter a new nickname for the contact\n"
+#~ "%s"
+#~ msgstr ""
+#~ "請輸入以下好友的稱呼\n"
+#~ "%s"
+
+#~ msgid "Edit groups for %s"
+#~ msgstr "編輯 %s 的群組"
+
+#~ msgid "Conversation Log"
+#~ msgstr "對話紀錄"
+
+#~ msgid "Registering account"
+#~ msgstr "註冊帳號"
+
+#~ msgid "Example"
+#~ msgstr "範例"
+
+#~ msgid "Add to _favourites"
+#~ msgstr "加入喜好(_F)"
+
+#~ msgid ""
+#~ "Customize your own nickname, the server and chatroom which you wish to "
+#~ "join."
+#~ msgstr "自訂您的暱稱、伺服器名稱和要進入的聊天室名稱。"
+
+#~ msgid "Edit your chat room details:"
+#~ msgstr "編輯您的群組聊天室詳細資訊:"
+
+#~ msgid "Na_me:"
+#~ msgstr "名稱(_M):"
+
+#~ msgid "New Chat Room"
+#~ msgstr "新增聊天室"
+
+#~ msgid ""
+#~ "Pick a saved chat room from the presets available below and click Join to "
+#~ "start chatting."
+#~ msgstr "從下列可用的預先設定中挑選一個已儲存的聊天室,再按加入開始聊天。"
+
+#~ msgid " "
+#~ msgstr " "
+
+#~ msgid "<b>Information requested, please wait...</b>"
+#~ msgstr "<b>要求資訊,請稍候...</b>"
+
+#~ msgid "<span size=\"smaller\">Example:</span>"
+#~ msgstr "<span size=\"smaller\">範例:</span>"
+
+#~ msgid "Account Name"
+#~ msgstr "帳號名稱"
+
+#~ msgid "Connection Details"
+#~ msgstr "連線詳細資料"
+
+#~ msgid "Do you already have an account set up on a server?"
+#~ msgstr "您是不是已經有伺服器的帳號了?"
+
+#~ msgid "Enter the port used in the connection for this account"
+#~ msgstr "輸入這個帳號在此連線中所使用的連接埠"
+
+#~ msgid "Enter the server used in the connection for this account"
+#~ msgstr "輸入這個帳號在此連線中所使用的伺服器"
+
+#~ msgid "Enter the user's contact ID:"
+#~ msgstr "輸入該使用者的連絡人 ID:"
+
+#~ msgid "Enter your real name here"
+#~ msgstr "在這裡輸入您的真實姓名"
+
+#~ msgid "Finished"
+#~ msgstr "完成設定"
+
+#~ msgid "For increased security, enable this option"
+#~ msgstr "為了增進安全性,請啟用這個選項"
+
+#~ msgid "Gossip"
+#~ msgstr "Gossip"
+
+#~ msgid ""
+#~ "Gossip is a modern client for the Jabber Instant Messaging system.\n"
+#~ "\n"
+#~ "This assistant will help you configure Gossip and connect you to your "
+#~ "favorite Jabber server.\n"
+#~ "\n"
+#~ "To get started, just click \"Forward\"."
+#~ msgstr ""
+#~ "Gossip 是一個嶄新的 Jabber 即時通訊客戶端程式。\n"
+#~ "\n"
+#~ "本精靈會協助您設定 Gossip,並連接至您想使用的 Jabber 伺服器。\n"
+#~ "\n"
+#~ "如果準備好,請按「下一頁」。"
+
+#~ msgid ""
+#~ "If you have another machine on your network which 'proxies' the "
+#~ "connection to the internet and you want to use it, enable this option"
+#~ msgstr ""
+#~ "如果在您的網路中有其他電腦「代理」到網際網絡的連線而您想要使用它,請啟用這"
+#~ "個選項"
+
+#~ msgid ""
+#~ "If you need to set specific connection details, like a different server "
+#~ "or port, you can configure that here:"
+#~ msgstr ""
+#~ "如果需要設定特定的連線資訊,像是不同的伺服器或連接埠,可以在這裡設定:"
+
+#~ msgid ""
+#~ "In order to subscribe to presence notifications from the user, a request "
+#~ "will be sent. Until this request is approved, the user will always be "
+#~ "shown as \"Offline\" in your contact list."
+#~ msgstr ""
+#~ "為了訂閱使用者的上線通知,將送出要求。直到這個要求被同意之前,該使用者在您"
+#~ "的好友名單中將顯示為“離線”。"
+
+#~ msgid "In which group do you want to place this contact?"
+#~ msgstr "您想將這個好友加入哪個群組之內?"
+
+#~ msgid "Jabber ID:"
+#~ msgstr "Jabber ID:"
+
+#~ msgid ""
+#~ "Leave this blank if you don't want your password stored on a public "
+#~ "machine. If you decide to do this, you will be prompted each time you "
+#~ "connect for a password"
+#~ msgstr ""
+#~ "如果不希望您的密碼儲存在公用的電腦上,可以保持此欄空白。如果決定要這麼做,"
+#~ "每一次連線的時候都會向您提問密碼"
+
+#~ msgid "Nickname:"
+#~ msgstr "暱稱:"
+
+#~ msgid "Port:"
+#~ msgstr "埠號:"
+
+#~ msgid "Press Subscribe to request to receive their status"
+#~ msgstr "請訂閱以接收他們的狀態"
+
+#~ msgid "Registering Account"
+#~ msgstr "註冊帳號"
+
+#~ msgid "Resource:"
+#~ msgstr "資源:"
+
+#~ msgid "Sending request"
+#~ msgstr "正在傳送要求"
+
+#~ msgid "Server:"
+#~ msgstr "伺服器:"
+
+#~ msgid "Web Site:"
+#~ msgstr "網站:"
+
+#~ msgid "Welcome to Gossip"
+#~ msgstr "歡迎使用 Gossip"
+
+#~ msgid "What instant messaging system does the contact use?"
+#~ msgstr "該好友使用哪種即時通訊系統?"
+
+#~ msgid "What is your name?"
+#~ msgstr "怎樣稱呼您?"
+
+#~ msgid ""
+#~ "What name do you want to use to identify this account?\n"
+#~ "\n"
+#~ "This name could be something associated with the service provider, for "
+#~ "example, <b>Google</b>."
+#~ msgstr ""
+#~ "要使用何種名稱來識別這個帳號?\n"
+#~ "\n"
+#~ "這個名稱可以是跟其服務的提供者有關的事物,例如,<b>Google</b>。"
+
+#~ msgid "What password do you want to use?"
+#~ msgstr "要使用什麼密碼?"
+
+#~ msgid "What username do you use?"
+#~ msgstr "您使用甚麼名稱?"
+
+#~ msgid "What username do you want to use?"
+#~ msgstr "您想使用甚麼用戶名稱?"
+
+#~ msgid "Which account do you want to add this contact to?"
+#~ msgstr "您想將這個好友加入哪個帳號之內?"
+
+#~ msgid ""
+#~ "You can change your account settings later by selecting the Edit-"
+#~ ">Accounts menu item."
+#~ msgstr "稍後您可以在選單中選取「編輯→帳號」來更改帳號設定。"
+
+#~ msgid ""
+#~ "You need to set a name for the connection, for example, <b>Home</b> or "
+#~ "<b>Laptop</b>."
+#~ msgstr "您需要設定該連線的名稱,例如,<b>家裡</b> 或 <b>筆電</b>。"
+
+#~ msgid "Your Account"
+#~ msgstr "您的帳號"
+
+#~ msgid "Your Identity"
+#~ msgstr "您的身分"
+
+#~ msgid "Your new account has now been set up."
+#~ msgstr "現在已設定好您的新帳號。"
+
+#~ msgid "_Forget"
+#~ msgstr "忘記密碼(_F)"
+
+#~ msgid "_Group Chat"
+#~ msgstr "群組聊天(_G)"
+
+#~ msgid "_No"
+#~ msgstr "否(_N)"
+
+#~ msgid "_Search..."
+#~ msgstr "搜尋(_S)..."
+
+#~ msgid "_Yes"
+#~ msgstr "是(_Y)"
+
+#~ msgid "Respond"
+#~ msgstr "回應"
+
+#~ msgid "Dark"
+#~ msgstr "暗"
+
+#~ msgid "Contact Information for %s"
+#~ msgstr "有關 %s 的資訊"
+
+#, fuzzy
+#~ msgid "Chat Rooms..."
+#~ msgstr "聊天室:"
+
+#~ msgid "Be silent when away"
+#~ msgstr "「離開」時不發出音效"
+
+#~ msgid "Be silent when busy"
+#~ msgstr "「忙碌」時不發出音效"
+
+#~ msgid "Height of main window"
+#~ msgstr "主視窗高度"
+
+#~ msgid "The X position of the main window."
+#~ msgstr "啟動時主視窗的水平位置。"
+
+#~ msgid "The Y position of the main window."
+#~ msgstr "啟動時主視窗的垂直位置。"
+
+#~ msgid "The width of the main window."
+#~ msgstr "主視窗寬度"
+
+#~ msgid "Whether spell checking should be turned on."
+#~ msgstr "是否開啟拼字檢查。"
+
+#~ msgid "Width of the main window"
+#~ msgstr "主視窗寬度"
+
+#~ msgid "X position of main window"
+#~ msgstr "主視窗水平位置"
+
+#~ msgid "Y position of main window"
+#~ msgstr "主視窗垂直位置"
+
+#~ msgid "Gossip, Instant Messaging Client"
+#~ msgstr "Gossip 即時通訊軟體"
+
+#, fuzzy
+#~ msgid "Close this chat window"
+#~ msgstr "邀請至聊天室(_I)"
+
+#~ msgid "Requested Information"
+#~ msgstr "要求的資訊"
+
+#~ msgid "/_Invite to Chat Conference"
+#~ msgstr "/邀請至聊天會議(_I)"
+
+#, fuzzy
+#~ msgid "Send Message"
+#~ msgstr "新增訊息(_N)..."
+
+#, fuzzy
+#~ msgid "%s has gone offline"
+#~ msgstr "%s 已離線"
+
+#~ msgid "Available..."
+#~ msgstr "有空..."
+
+#~ msgid "Busy..."
+#~ msgstr "忙碌..."
+
+#~ msgid "Away..."
+#~ msgstr "離開..."
+
+#~ msgid "Contact _Information"
+#~ msgstr "連絡資訊(_I)"
+
+#~ msgid "<b>Sound</b>"
+#~ msgstr "<b>聲音</b>"
+
+#~ msgid "Check spelling while I _type"
+#~ msgstr "當我輸入時檢查拼字(_T)"
+
+#~ msgid "Gossip - Accounts"
+#~ msgstr "Gossip - 帳號"
+
+#, fuzzy
+#~ msgid "Join _Group Chat..."
+#~ msgstr "加入群組聊天(_J)..."
+
+#~ msgid "Por_t:"
+#~ msgstr "連接埠(_T):"
+
+#~ msgid "Requested information."
+#~ msgstr "要求的資訊。"
+
+#~ msgid "Requesting contact information, please wait..."
+#~ msgstr "正要求好友資訊,請稍候..."
+
+#~ msgid "Could not open connection"
+#~ msgstr "無法開啟連線"
+
+#~ msgid "Could not find the server you wanted to use"
+#~ msgstr "找不到您想要使用的伺服器"
+
+#~ msgid "Connection to the server failed."
+#~ msgstr "連線至伺服器時失敗。"
+
+#~ msgid "Authentication failed"
+#~ msgstr "驗證失敗"
+
+#~ msgid "Written by:"
+#~ msgstr "作者:"
+
+#~ msgid "Artwork by:"
+#~ msgstr "美工:"
+
+#~ msgid "Translated by:"
+#~ msgstr "翻譯:"
+
+#~ msgid "Account ID"
+#~ msgstr "帳號 ID"
+
+#~ msgid "Last Error"
+#~ msgstr "上次錯誤"
+
+#~ msgid "%sChat - %s"
+#~ msgstr "%s聊天 - %s"
+
+#~ msgid "/Show _Log"
+#~ msgstr "/顯示對話紀錄(_L)"
+
+#~ msgid "Afrikaans"
+#~ msgstr "南非荷蘭語"
+
+#~ msgid "Amharic"
+#~ msgstr "阿姆哈拉語"
+
+#~ msgid "Arabic"
+#~ msgstr "阿拉伯語"
+
+#~ msgid "Azerbaijani"
+#~ msgstr "亞塞拜然語"
+
+#~ msgid "Belarusian"
+#~ msgstr "白俄羅斯語"
+
+#~ msgid "Bulgarian"
+#~ msgstr "保加利亞語"
+
+#~ msgid "Bengali"
+#~ msgstr "孟加拉語"
+
+#~ msgid "Breton"
+#~ msgstr "不列塔尼語"
+
+#~ msgid "Bosnian"
+#~ msgstr "波士尼亞語"
+
+#~ msgid "Catalan"
+#~ msgstr "加泰隆語"
+
+#~ msgid "Czech"
+#~ msgstr "捷克語"
+
+#~ msgid "Welsh"
+#~ msgstr "威爾士語"
+
+#~ msgid "Danish"
+#~ msgstr "丹麥語"
+
+#~ msgid "German"
+#~ msgstr "德文"
+
+#~ msgid "German (Austria)"
+#~ msgstr "德文(奧地利)"
+
+#~ msgid "German (Germany)"
+#~ msgstr "德文(德意志)"
+
+#~ msgid "German (Swiss)"
+#~ msgstr "德文(瑞士)"
+
+#~ msgid "Greek"
+#~ msgstr "希臘語"
+
+#~ msgid "English"
+#~ msgstr "英文"
+
+#~ msgid "English (Canadian)"
+#~ msgstr "英文(加拿大)"
+
+#~ msgid "English (British)"
+#~ msgstr "英語(英式)"
+
+#~ msgid "English (American)"
+#~ msgstr "英語(美式)"
+
+#~ msgid "Esperanto"
+#~ msgstr "世界語"
+
+#~ msgid "Spanish"
+#~ msgstr "西班牙文"
+
+#~ msgid "Estonian"
+#~ msgstr "愛沙尼亞語"
+
+#~ msgid "Persian"
+#~ msgstr "波斯語"
+
+#~ msgid "Finnish"
+#~ msgstr "芬蘭語"
+
+#~ msgid "French"
+#~ msgstr "法文"
+
+#~ msgid "French (France)"
+#~ msgstr "法文(法蘭西)"
+
+#~ msgid "French (Swiss)"
+#~ msgstr "法文(瑞士)"
+
+#~ msgid "Irish Gaelic"
+#~ msgstr "愛爾蘭蓋爾文"
+
+#~ msgid "Scots Gaelic"
+#~ msgstr "蘇格蘭蓋爾文"
+
+#~ msgid "Gujarati"
+#~ msgstr "印度語"
+
+#~ msgid "Manx Gaelic"
+#~ msgstr "人島蓋爾文"
+
+#~ msgid "Hebrew"
+#~ msgstr "希伯來語"
+
+#~ msgid "Hindi"
+#~ msgstr "印度語(北印度)"
+
+#~ msgid "Croatian"
+#~ msgstr "克羅地亞語"
+
+#~ msgid "Hungarian"
+#~ msgstr "匈牙利語"
+
+#~ msgid "Indonesian"
+#~ msgstr "印尼語"
+
+#~ msgid "Icelandic"
+#~ msgstr "冰島語"
+
+#~ msgid "Italian"
+#~ msgstr "意大利文"
+
+#~ msgid "Japanese"
+#~ msgstr "日語"
+
+#~ msgid "Georgian"
+#~ msgstr "喬治亞語"
+
+#~ msgid "Kannada"
+#~ msgstr "坎納達語"
+
+#~ msgid "Korean"
+#~ msgstr "韓文"
+
+#~ msgid "Kurdish"
+#~ msgstr "庫德語"
+
+#~ msgid "Cornish"
+#~ msgstr "康沃爾語"
+
+#~ msgid "Limburgish"
+#~ msgstr "林堡語"
+
+#~ msgid "Lithuanian"
+#~ msgstr "立陶宛文"
+
+#~ msgid "Latvian"
+#~ msgstr "拉脫維亞語"
+
+#~ msgid "Maori"
+#~ msgstr "毛利語"
+
+#~ msgid "Macedonian"
+#~ msgstr "馬其頓語"
+
+#~ msgid "Malayalam"
+#~ msgstr "馬拉雅拉姆語"
+
+#~ msgid "Mongolian"
+#~ msgstr "蒙古語"
+
+#~ msgid "Marathi"
+#~ msgstr "馬拉塔語"
+
+#~ msgid "Malay"
+#~ msgstr "馬來語"
+
+#~ msgid "Norwegian (Bokmal)"
+#~ msgstr "挪威語(Bokmaal)"
+
+#~ msgid "Nepali"
+#~ msgstr "尼泊爾語"
+
+#~ msgid "Dutch"
+#~ msgstr "荷蘭語"
+
+#~ msgid "Norwegian"
+#~ msgstr "挪威語"
+
+#~ msgid "Norwegian (Nynorsk)"
+#~ msgstr "挪威語(Nynorsk)"
+
+#~ msgid "Norwegian (Nyorsk)"
+#~ msgstr "挪威語(Bokmaal)"
+
+#~ msgid "Oriya"
+#~ msgstr "奧里雅語"
+
+#~ msgid "Punjabi"
+#~ msgstr "旁加語"
+
+#~ msgid "Polish"
+#~ msgstr "波蘭語"
+
+#~ msgid "Portuguese"
+#~ msgstr "葡萄牙文"
+
+#~ msgid "Portuguese (Portugal)"
+#~ msgstr "葡萄牙文(葡萄牙)"
+
+#~ msgid "Portuguese (Brazil)"
+#~ msgstr "葡萄牙文(巴西)"
+
+#~ msgid "Romanian"
+#~ msgstr "羅馬尼亞語"
+
+#~ msgid "Russian"
+#~ msgstr "俄文"
+
+#~ msgid "Kinyarwanda"
+#~ msgstr "盧安達語"
+
+#~ msgid "Slovak"
+#~ msgstr "斯洛伐克語"
+
+#~ msgid "Slovenian"
+#~ msgstr "斯洛文尼亞語"
+
+#~ msgid "Albanian"
+#~ msgstr "阿爾巴尼亞語"
+
+#~ msgid "Serbian"
+#~ msgstr "塞爾維亞語"
+
+#~ msgid "Swedish"
+#~ msgstr "瑞典語"
+
+#~ msgid "Tamil"
+#~ msgstr "泰米爾語"
+
+#~ msgid "Telugu"
+#~ msgstr "泰盧固語"
+
+#~ msgid "Thai"
+#~ msgstr "泰文"
+
+#~ msgid "Turkmen"
+#~ msgstr "土庫曼語"
+
+#~ msgid "Turkish"
+#~ msgstr "土耳其語"
+
+#~ msgid "Ukrainian"
+#~ msgstr "烏克蘭語"
+
+#~ msgid "Vietnamese"
+#~ msgstr "越南文"
+
+#~ msgid "Wallon"
+#~ msgstr "瓦隆語"
+
+#~ msgid "Xhosa"
+#~ msgstr "科薩語"
+
+#~ msgid "Yiddish"
+#~ msgstr "意第緒語"
+
+#~ msgid "Chinese Simplified"
+#~ msgstr "簡體中文"
+
+#~ msgid "Chinese Traditional"
+#~ msgstr "繁體中文"
+
+#~ msgid "View Lo_g"
+#~ msgstr "觀看對話紀錄(_G)"
+
+#, fuzzy
+#~ msgid "Gossip - Chat Rooms"
+#~ msgstr "Gossip - 編輯聊天室"
+
+#~ msgid "Gossip - Group Chat"
+#~ msgstr "Gossip - 群組聊天"
+
+#, fuzzy
+#~ msgid "Gossip - New Chatroom"
+#~ msgstr "Gossip - 編輯聊天室"
+
+#~ msgid "Gossip - Add contact"
+#~ msgstr "Gossip - 加入好友"
+
+#~ msgid "Gossip - Contact Information"
+#~ msgstr "Gossip - 好友資訊"
+
+#~ msgid "Gossip - Edit Groups"
+#~ msgstr "Gossip - 編輯群組"
+
+#~ msgid "Gossip - New Account"
+#~ msgstr "Gossip - 新增帳號"
+
+#~ msgid "Gossip - New Message"
+#~ msgstr "Gossip - 新訊息"
+
+#~ msgid "Gossip - Personal Details"
+#~ msgstr "Gossip - 個人資訊"
+
+#~ msgid "Gossip - Preferences"
+#~ msgstr "Gossip - 偏好設定"
+
+#~ msgid "Gossip - Spell Checker"
+#~ msgstr "Gossip - 拼字檢查"
+
+#~ msgid "Gossip - Status Message"
+#~ msgstr "Gossip - 狀態訊息"
+
+#~ msgid "Waiting for server to respond, please wait..."
+#~ msgstr "等候伺服器的回應,請稍候..."
+
+#~ msgid "Connection could not be created"
+#~ msgstr "無法建立連線"
+
+#~ msgid "Redirect"
+#~ msgstr "重新導向"
+
+#~ msgid "Bad Request"
+#~ msgstr "錯誤的要求"
+
+#~ msgid "Not Authorized"
+#~ msgstr "未授權"
+
+#~ msgid "Payment Required"
+#~ msgstr "需付款"
+
+#~ msgid "Forbidden"
+#~ msgstr "被禁止"
+
+#~ msgid "Not Found"
+#~ msgstr "找不到"
+
+#~ msgid "Not Allowed"
+#~ msgstr "不允許"
+
+#~ msgid "Not Acceptable"
+#~ msgstr "不能接受"
+
+#~ msgid "Request Timeout"
+#~ msgstr "要求已逾時"
+
+#~ msgid "Conflict"
+#~ msgstr "衝突"
+
+#~ msgid "Not Implemented"
+#~ msgstr "未實作"
+
+#~ msgid "Remote Server Error"
+#~ msgstr "遠端伺服器錯誤"
+
+#~ msgid "Service Unavailable"
+#~ msgstr "服務無法使用"
+
+#~ msgid "Unknown error."
+#~ msgstr "不明的錯誤。"
+
+#~ msgid "Custom"
+#~ msgstr "自訂"
+
+#~ msgid "The chat room you are trying is not responding."
+#~ msgstr "您所嘗試的聊天室沒有回應。"
+
+#~ msgid "Check your details and try again."
+#~ msgstr "請檢查您的詳細資訊並再試一次。"
+
+#~ msgid "This is currently unsupported."
+#~ msgstr "此項目前不支援。"
+
+#~ msgid "Perhaps the conference server is busy, try again later."
+#~ msgstr "也許此會議伺服器正在忙碌,請稍後再試。"
+
+#~ msgid "Check the server host name is correct and is available."
+#~ msgstr "請檢查伺服器主機名稱是否正確可用。"
+
+#~ msgid "Gossip will now try to use your account:"
+#~ msgstr "Gossip 現在會嘗試使用這個帳號:"
+
+#~ msgid "Gossip will now try to register the account:"
+#~ msgstr "現在 Gossip 會嘗試註冊帳號:"
+
+#~ msgid "Cus_tomize"
+#~ msgstr "自訂(_T)"
+
+#~ msgid "Edit or Delete this favorite."
+#~ msgstr "編輯或刪除這個喜好。"
+
+#~ msgid "Gossip - Join Chat Room "
+#~ msgstr "Gossip - 加入聊天室"
+
+#~ msgid "Choose a Server"
+#~ msgstr "選取伺服器"
+
+#~ msgid "On what server do you have an account?"
+#~ msgstr "您在哪個伺服器有帳號?"
+
+#~ msgid "Configure Transports"
+#~ msgstr "設定轉送程式"
+
+#~ msgid "_Jabber ID of new contact:"
+#~ msgstr "新的好友的 _Jabber ID:"
+
+#~ msgid "Edit List..."
+#~ msgstr "編輯清單..."
+
+#~ msgid "Automatically Connect"
+#~ msgstr "自動連線"
+
+#~ msgid "Connect _Server:"
+#~ msgstr "連接伺服器(_S):"
+
+#~ msgid "Gossip - Account Information"
+#~ msgstr "Gossip - 帳號資訊"
+
+#~ msgid "_Jabber ID:"
+#~ msgstr "_Jabber ID:"
+
+#~ msgid "Gossip - Edit Favorite"
+#~ msgstr "Gossip - 編輯喜好"
+
+#~ msgid "Gossip - Edit Group Chat Favorites"
+#~ msgstr "Gossip - 編輯群組聊天喜好"
+
+#~ msgid " "
+#~ msgstr " "
+
+#~ msgid ""
+#~ "<b>Configuring your new service...</b>\n"
+#~ "This will take a few moments, please wait."
+#~ msgstr ""
+#~ "<b>正在設定您的新服務...</b>\n"
+#~ "這需要一點時間,請稍等。"
+
+#~ msgid "<b>Preferred Service</b>"
+#~ msgstr "<b>偏好的服務</b>"
+
+#~ msgid "<b>Recommended Services</b>"
+#~ msgstr "<b>建議的服務</b>"
+
+#~ msgid ""
+#~ "<b>Requested service requirements...</b>\n"
+#~ "This will take a few moments, please wait."
+#~ msgstr ""
+#~ "<b>正在尋找服務的要件...</b>\n"
+#~ "這需要一點時間,請稍等。"
+
+#~ msgid "Add Account"
+#~ msgstr "新增帳號"
+
+#~ msgid "Add Another Account"
+#~ msgstr "新增其他帳號"
+
+#~ msgid "Choose from list:"
+#~ msgstr "從名單中選取:"
+
+#~ msgid "Configure Transport"
+#~ msgstr "設定轉送程式"
+
+#~ msgid "Configuring Service"
+#~ msgstr "正在設定服務"
+
+#~ msgid "Gossip - Status Presets"
+#~ msgstr "Gossip - 狀態預先設定"
+
+#~ msgid "Gossip - Welcome"
+#~ msgstr "Gossip - 歡迎"
+
+#~ msgid "If you prefer, you can specify your own service:"
+#~ msgstr "如果您喜歡,可以指定您自己的服務:"
+
+#~ msgid "Jabber Account"
+#~ msgstr "Jabber 帳號"
+
+#~ msgid "Jabber.com"
+#~ msgstr "Jabber.com"
+
+#~ msgid "Jabber.org"
+#~ msgstr "Jabber.org"
+
+#~ msgid "Nick name:"
+#~ msgstr "暱稱:"
+
+#~ msgid "Please complete the details below to set up your account: "
+#~ msgstr "請在以下的欄位填上詳細的資料,以設定您的帳號: "
+
+#~ msgid "Populating services..."
+#~ msgstr "計算服務的使用率..."
+
+#~ msgid "Remove Account"
+#~ msgstr "移除帳號"
+
+#~ msgid "Service Details"
+#~ msgstr "服務詳細資料"
+
+#~ msgid "Service:"
+#~ msgstr "服務:"
+
+#~ msgid ""
+#~ "This wizard will allow you to configure your account settings for another "
+#~ "protocol. "
+#~ msgstr "這個精靈會讓您設定其他協定的帳號設定值。"
+
+#~ msgid "Transport Accounts"
+#~ msgstr "轉送程式帳號"
+
+#~ msgid "Use a different server"
+#~ msgstr "使用另一個伺服器"
+
+#~ msgid "Which protocol would you like to set up? "
+#~ msgstr "您想要設定哪個協定?"
+
+#~ msgid ""
+#~ "You can set the status presets which appear in the presence menu on the "
+#~ "main window here."
+#~ msgstr "您可以在此設定顯示在主視窗上線選單中的狀態預先設定。"
+
+#~ msgid "You currently have the following accounts set up:"
+#~ msgstr "您目前已設定下列帳號:"
+
+#~ msgid "_Account Information"
+#~ msgstr "帳號資訊(_A)"
diff --git a/gnome-2-22/python/.gitignore b/gnome-2-22/python/.gitignore
new file mode 100644
index 000000000..19cea19bb
--- /dev/null
+++ b/gnome-2-22/python/.gitignore
@@ -0,0 +1,2 @@
+pyempathy.c
+pyempathygtk.c
diff --git a/gnome-2-22/python/Makefile.am b/gnome-2-22/python/Makefile.am
new file mode 100644
index 000000000..5050f1b86
--- /dev/null
+++ b/gnome-2-22/python/Makefile.am
@@ -0,0 +1,2 @@
+SUBDIRS = pyempathy pyempathygtk
+
diff --git a/gnome-2-22/python/README b/gnome-2-22/python/README
new file mode 100644
index 000000000..9cae95c1f
--- /dev/null
+++ b/gnome-2-22/python/README
@@ -0,0 +1,11 @@
+To update python binding:
+1)
+ $ make distclean
+ $ python /usr/share/pygtk/2.0/codegen/h2def.py libempathy/*.h > python/pyempathy/pyempathy.defs
+ $ python /usr/share/pygtk/2.0/codegen/h2def.py libempathy-gtk/*.h > python/pyempathygtk/pyempathygtk.defs
+
+2)
+Apply pyempathy.patch and pyempathygtk.patch
+
+3)
+Manually update headers in pyempathy.override and pyempathygtk.override.
diff --git a/gnome-2-22/python/pyempathy.patch b/gnome-2-22/python/pyempathy.patch
new file mode 100644
index 000000000..497ec4fe7
--- /dev/null
+++ b/gnome-2-22/python/pyempathy.patch
@@ -0,0 +1,35 @@
+--- pyempathy.defs 2008-01-24 16:03:39.000000000 +0100
++++ pyempathy/pyempathy.defs 2008-01-24 16:04:34.000000000 +0100
+@@ -35,7 +35,7 @@
+ (gtype-id "EMPATHY_TYPE_CONTACT_FACTORY")
+ )
+
+-(define-object ContactList
++(define-interface ContactList
+ (in-module "Empathy")
+ (c-name "EmpathyContactList")
+ (gtype-id "EMPATHY_TYPE_CONTACT_LIST")
+@@ -44,6 +44,7 @@
+ (define-object ContactManager
+ (in-module "Empathy")
+ (parent "GObject")
++ (implements "EmpathyContactList")
+ (c-name "EmpathyContactManager")
+ (gtype-id "EMPATHY_TYPE_CONTACT_MANAGER")
+ )
+@@ -93,6 +94,7 @@
+ (define-object TpChatroom
+ (in-module "Empathy")
+ (parent "EmpathyTpChat")
++ (implements "EmpathyContactList")
+ (c-name "EmpathyTpChatroom")
+ (gtype-id "EMPATHY_TYPE_TP_CHATROOM")
+ )
+@@ -107,6 +109,7 @@
+ (define-object TpContactList
+ (in-module "Empathy")
+ (parent "GObject")
++ (implements "EmpathyContactList")
+ (c-name "EmpathyTpContactList")
+ (gtype-id "EMPATHY_TYPE_TP_CONTACT_LIST")
+ )
diff --git a/gnome-2-22/python/pyempathy/Makefile.am b/gnome-2-22/python/pyempathy/Makefile.am
new file mode 100644
index 000000000..c11eedbc3
--- /dev/null
+++ b/gnome-2-22/python/pyempathy/Makefile.am
@@ -0,0 +1,43 @@
+PYDEFS=`pkg-config --variable=defsdir pygtk-2.0`
+
+AM_CPPFLAGS = \
+ -I. \
+ -I$(top_srcdir)/libempathy \
+ -I$(top_srcdir) \
+ -DDATADIR=\""$(datadir)"\" \
+ $(PYTHON_BINDING_CFLAGS) \
+ `python-config --cflags` \
+ $(WARN_CFLAGS)
+
+BUILT_SOURCES = \
+ pyempathy.c
+
+pyempathydir = $(pyexecdir)
+pyempathy_LTLIBRARIES = empathy.la
+
+empathy_la_SOURCES = \
+ pyempathymodule.c \
+ pyempathy.c
+
+empathy_la_LIBADD = \
+ $(PYTHON_BINDING_LIBS) \
+ $(top_builddir)/libempathy/libempathy.la
+
+empathy_la_LDFLAGS = \
+ `python-config --libs` \
+ -module -avoid-version
+
+pyempathy.c: pyempathy.override pyempathy.defs
+ pygtk-codegen-2.0 \
+ --prefix empathy \
+ --register $(PYDEFS)/gdk-types.defs \
+ --register $(PYDEFS)/gtk-types.defs \
+ --override pyempathy.override \
+ pyempathy.defs > $@
+
+EXTRA_DIST = \
+ pyempathy.override \
+ pyempathy.defs
+
+CLEANFILES = $(BUILT_SOURCES)
+
diff --git a/gnome-2-22/python/pyempathy/pyempathy.defs b/gnome-2-22/python/pyempathy/pyempathy.defs
new file mode 100644
index 000000000..f9559611d
--- /dev/null
+++ b/gnome-2-22/python/pyempathy/pyempathy.defs
@@ -0,0 +1,2138 @@
+;; -*- scheme -*-
+; object definitions ...
+(define-object Chandler
+ (in-module "Empathy")
+ (parent "GObject")
+ (c-name "EmpathyChandler")
+ (gtype-id "EMPATHY_TYPE_CHANDLER")
+)
+
+(define-object Chatroom
+ (in-module "Empathy")
+ (parent "GObject")
+ (c-name "EmpathyChatroom")
+ (gtype-id "EMPATHY_TYPE_CHATROOM")
+)
+
+(define-object ChatroomManager
+ (in-module "Empathy")
+ (parent "GObject")
+ (c-name "EmpathyChatroomManager")
+ (gtype-id "EMPATHY_TYPE_CHATROOM_MANAGER")
+)
+
+(define-object Contact
+ (in-module "Empathy")
+ (parent "GObject")
+ (c-name "EmpathyContact")
+ (gtype-id "EMPATHY_TYPE_CONTACT")
+)
+
+(define-object ContactFactory
+ (in-module "Empathy")
+ (parent "GObject")
+ (c-name "EmpathyContactFactory")
+ (gtype-id "EMPATHY_TYPE_CONTACT_FACTORY")
+)
+
+(define-interface ContactList
+ (in-module "Empathy")
+ (c-name "EmpathyContactList")
+ (gtype-id "EMPATHY_TYPE_CONTACT_LIST")
+)
+
+(define-object ContactManager
+ (in-module "Empathy")
+ (parent "GObject")
+ (implements "EmpathyContactList")
+ (c-name "EmpathyContactManager")
+ (gtype-id "EMPATHY_TYPE_CONTACT_MANAGER")
+)
+
+(define-object Filter
+ (in-module "Empathy")
+ (parent "GObject")
+ (c-name "EmpathyFilter")
+ (gtype-id "EMPATHY_TYPE_FILTER")
+)
+
+(define-object Idle
+ (in-module "Empathy")
+ (parent "GObject")
+ (c-name "EmpathyIdle")
+ (gtype-id "EMPATHY_TYPE_IDLE")
+)
+
+(define-object IrcNetwork
+ (in-module "Empathy")
+ (parent "GObject")
+ (c-name "EmpathyIrcNetwork")
+ (gtype-id "EMPATHY_TYPE_IRC_NETWORK")
+)
+
+(define-object IrcNetworkManager
+ (in-module "Empathy")
+ (parent "GObject")
+ (c-name "EmpathyIrcNetworkManager")
+ (gtype-id "EMPATHY_TYPE_IRC_NETWORK_MANAGER")
+)
+
+(define-object IrcServer
+ (in-module "Empathy")
+ (parent "GObject")
+ (c-name "EmpathyIrcServer")
+ (gtype-id "EMPATHY_TYPE_IRC_SERVER")
+)
+
+(define-object LogManager
+ (in-module "Empathy")
+ (parent "GObject")
+ (c-name "EmpathyLogManager")
+ (gtype-id "EMPATHY_TYPE_LOG_MANAGER")
+)
+
+(define-object Message
+ (in-module "Empathy")
+ (parent "GObject")
+ (c-name "EmpathyMessage")
+ (gtype-id "EMPATHY_TYPE_MESSAGE")
+)
+
+(define-object TpCall
+ (in-module "Empathy")
+ (parent "GObject")
+ (c-name "EmpathyTpCall")
+ (gtype-id "EMPATHY_TYPE_TP_CALL")
+)
+
+(define-object TpChat
+ (in-module "Empathy")
+ (parent "GObject")
+ (c-name "EmpathyTpChat")
+ (gtype-id "EMPATHY_TYPE_TP_CHAT")
+)
+
+(define-object TpChatroom
+ (in-module "Empathy")
+ (parent "EmpathyTpChat")
+ (implements "EmpathyContactList")
+ (c-name "EmpathyTpChatroom")
+ (gtype-id "EMPATHY_TYPE_TP_CHATROOM")
+)
+
+(define-object TpContactFactory
+ (in-module "Empathy")
+ (parent "GObject")
+ (c-name "EmpathyTpContactFactory")
+ (gtype-id "EMPATHY_TYPE_TP_CONTACT_FACTORY")
+)
+
+(define-object TpContactList
+ (in-module "Empathy")
+ (parent "GObject")
+ (implements "EmpathyContactList")
+ (c-name "EmpathyTpContactList")
+ (gtype-id "EMPATHY_TYPE_TP_CONTACT_LIST")
+)
+
+(define-object TpGroup
+ (in-module "Empathy")
+ (parent "GObject")
+ (c-name "EmpathyTpGroup")
+ (gtype-id "EMPATHY_TYPE_TP_GROUP")
+)
+
+(define-object TpRoomlist
+ (in-module "Empathy")
+ (parent "GObject")
+ (c-name "EmpathyTpRoomlist")
+ (gtype-id "EMPATHY_TYPE_TP_ROOMLIST")
+)
+
+;; Enumerations and flags ...
+
+(define-flags Capabilities
+ (in-module "Empathy")
+ (c-name "EmpathyCapabilities")
+ (gtype-id "EMPATHY_TYPE_CAPABILITIES")
+ (values
+ '("none" "EMPATHY_CAPABILITIES_NONE")
+ '("audio" "EMPATHY_CAPABILITIES_AUDIO")
+ '("video" "EMPATHY_CAPABILITIES_VIDEO")
+ '("unknown" "EMPATHY_CAPABILITIES_UNKNOWN")
+ )
+)
+
+(define-enum MessageType
+ (in-module "Empathy")
+ (c-name "EmpathyMessageType")
+ (gtype-id "EMPATHY_TYPE_MESSAGE_TYPE")
+ (values
+ '("normal" "EMPATHY_MESSAGE_TYPE_NORMAL")
+ '("action" "EMPATHY_MESSAGE_TYPE_ACTION")
+ '("notice" "EMPATHY_MESSAGE_TYPE_NOTICE")
+ '("auto-reply" "EMPATHY_MESSAGE_TYPE_AUTO_REPLY")
+ '("last" "EMPATHY_MESSAGE_TYPE_LAST")
+ )
+)
+
+(define-enum TpCallStatus
+ (in-module "Empathy")
+ (c-name "EmpathyTpCallStatus")
+ (gtype-id "EMPATHY_TYPE_TP_CALL_STATUS")
+ (values
+ '("readying" "EMPATHY_TP_CALL_STATUS_READYING")
+ '("pending" "EMPATHY_TP_CALL_STATUS_PENDING")
+ '("accepted" "EMPATHY_TP_CALL_STATUS_ACCEPTED")
+ '("closed" "EMPATHY_TP_CALL_STATUS_CLOSED")
+ )
+)
+
+(define-enum RegExType
+ (in-module "Empathy")
+ (c-name "EmpathyRegExType")
+ (gtype-id "EMPATHY_TYPE_REG_EX_TYPE")
+ (values
+ '("as-is" "EMPATHY_REGEX_AS_IS")
+ '("browser" "EMPATHY_REGEX_BROWSER")
+ '("email" "EMPATHY_REGEX_EMAIL")
+ '("other" "EMPATHY_REGEX_OTHER")
+ '("all" "EMPATHY_REGEX_ALL")
+ )
+)
+
+
+;; From empathy-avatar.h
+
+(define-function empathy_avatar_get_type
+ (c-name "empathy_avatar_get_type")
+ (return-type "GType")
+)
+
+(define-function empathy_avatar_new
+ (c-name "empathy_avatar_new")
+ (is-constructor-of "EmpathyAvatar")
+ (return-type "EmpathyAvatar*")
+ (parameters
+ '("const-guchar*" "avatar")
+ '("const-gsize" "len")
+ '("const-gchar*" "format")
+ '("const-gchar*" "token")
+ )
+)
+
+(define-function empathy_avatar_new_from_cache
+ (c-name "empathy_avatar_new_from_cache")
+ (return-type "EmpathyAvatar*")
+ (parameters
+ '("const-gchar*" "token")
+ )
+)
+
+(define-method ref
+ (of-object "EmpathyAvatar")
+ (c-name "empathy_avatar_ref")
+ (return-type "EmpathyAvatar*")
+)
+
+(define-method unref
+ (of-object "EmpathyAvatar")
+ (c-name "empathy_avatar_unref")
+ (return-type "none")
+)
+
+
+
+;; From empathy-chandler.h
+
+(define-function empathy_chandler_get_type
+ (c-name "empathy_chandler_get_type")
+ (return-type "GType")
+)
+
+(define-function empathy_chandler_new
+ (c-name "empathy_chandler_new")
+ (is-constructor-of "EmpathyChandler")
+ (return-type "EmpathyChandler*")
+ (parameters
+ '("const-gchar*" "bus_name")
+ '("const-gchar*" "object_path")
+ )
+)
+
+
+
+;; From empathy-chatroom.h
+
+(define-function empathy_chatroom_get_type
+ (c-name "empathy_chatroom_get_type")
+ (return-type "GType")
+)
+
+(define-function empathy_chatroom_new
+ (c-name "empathy_chatroom_new")
+ (is-constructor-of "EmpathyChatroom")
+ (return-type "EmpathyChatroom*")
+ (parameters
+ '("McAccount*" "account")
+ '("const-gchar*" "room")
+ )
+)
+
+(define-function empathy_chatroom_new_full
+ (c-name "empathy_chatroom_new_full")
+ (return-type "EmpathyChatroom*")
+ (parameters
+ '("McAccount*" "account")
+ '("const-gchar*" "room")
+ '("const-gchar*" "name")
+ '("gboolean" "auto_connect")
+ )
+)
+
+(define-method get_account
+ (of-object "EmpathyChatroom")
+ (c-name "empathy_chatroom_get_account")
+ (return-type "McAccount*")
+)
+
+(define-method set_account
+ (of-object "EmpathyChatroom")
+ (c-name "empathy_chatroom_set_account")
+ (return-type "none")
+ (parameters
+ '("McAccount*" "account")
+ )
+)
+
+(define-method get_room
+ (of-object "EmpathyChatroom")
+ (c-name "empathy_chatroom_get_room")
+ (return-type "const-gchar*")
+)
+
+(define-method set_room
+ (of-object "EmpathyChatroom")
+ (c-name "empathy_chatroom_set_room")
+ (return-type "none")
+ (parameters
+ '("const-gchar*" "room")
+ )
+)
+
+(define-method get_name
+ (of-object "EmpathyChatroom")
+ (c-name "empathy_chatroom_get_name")
+ (return-type "const-gchar*")
+)
+
+(define-method set_name
+ (of-object "EmpathyChatroom")
+ (c-name "empathy_chatroom_set_name")
+ (return-type "none")
+ (parameters
+ '("const-gchar*" "name")
+ )
+)
+
+(define-method get_auto_connect
+ (of-object "EmpathyChatroom")
+ (c-name "empathy_chatroom_get_auto_connect")
+ (return-type "gboolean")
+)
+
+(define-method set_auto_connect
+ (of-object "EmpathyChatroom")
+ (c-name "empathy_chatroom_set_auto_connect")
+ (return-type "none")
+ (parameters
+ '("gboolean" "auto_connect")
+ )
+)
+
+(define-function empathy_chatroom_equal
+ (c-name "empathy_chatroom_equal")
+ (return-type "gboolean")
+ (parameters
+ '("gconstpointer" "v1")
+ '("gconstpointer" "v2")
+ )
+)
+
+
+
+;; From empathy-chatroom-manager.h
+
+(define-function empathy_chatroom_manager_get_type
+ (c-name "empathy_chatroom_manager_get_type")
+ (return-type "GType")
+)
+
+(define-function empathy_chatroom_manager_new
+ (c-name "empathy_chatroom_manager_new")
+ (is-constructor-of "EmpathyChatroomManager")
+ (return-type "EmpathyChatroomManager*")
+)
+
+(define-method add
+ (of-object "EmpathyChatroomManager")
+ (c-name "empathy_chatroom_manager_add")
+ (return-type "gboolean")
+ (parameters
+ '("EmpathyChatroom*" "chatroom")
+ )
+)
+
+(define-method remove
+ (of-object "EmpathyChatroomManager")
+ (c-name "empathy_chatroom_manager_remove")
+ (return-type "none")
+ (parameters
+ '("EmpathyChatroom*" "chatroom")
+ )
+)
+
+(define-method find
+ (of-object "EmpathyChatroomManager")
+ (c-name "empathy_chatroom_manager_find")
+ (return-type "EmpathyChatroom*")
+ (parameters
+ '("McAccount*" "account")
+ '("const-gchar*" "room")
+ )
+)
+
+(define-method get_chatrooms
+ (of-object "EmpathyChatroomManager")
+ (c-name "empathy_chatroom_manager_get_chatrooms")
+ (return-type "GList*")
+ (parameters
+ '("McAccount*" "account")
+ )
+)
+
+(define-method get_count
+ (of-object "EmpathyChatroomManager")
+ (c-name "empathy_chatroom_manager_get_count")
+ (return-type "guint")
+ (parameters
+ '("McAccount*" "account")
+ )
+)
+
+(define-method store
+ (of-object "EmpathyChatroomManager")
+ (c-name "empathy_chatroom_manager_store")
+ (return-type "none")
+)
+
+
+
+;; From empathy-contact-factory.h
+
+(define-function empathy_contact_factory_get_type
+ (c-name "empathy_contact_factory_get_type")
+ (return-type "GType")
+)
+
+(define-function empathy_contact_factory_new
+ (c-name "empathy_contact_factory_new")
+ (is-constructor-of "EmpathyContactFactory")
+ (return-type "EmpathyContactFactory*")
+)
+
+(define-method get_user
+ (of-object "EmpathyContactFactory")
+ (c-name "empathy_contact_factory_get_user")
+ (return-type "EmpathyContact*")
+ (parameters
+ '("McAccount*" "account")
+ )
+)
+
+(define-method get_from_id
+ (of-object "EmpathyContactFactory")
+ (c-name "empathy_contact_factory_get_from_id")
+ (return-type "EmpathyContact*")
+ (parameters
+ '("McAccount*" "account")
+ '("const-gchar*" "id")
+ )
+)
+
+(define-method get_from_handle
+ (of-object "EmpathyContactFactory")
+ (c-name "empathy_contact_factory_get_from_handle")
+ (return-type "EmpathyContact*")
+ (parameters
+ '("McAccount*" "account")
+ '("guint" "handle")
+ )
+)
+
+(define-method get_from_handles
+ (of-object "EmpathyContactFactory")
+ (c-name "empathy_contact_factory_get_from_handles")
+ (return-type "GList*")
+ (parameters
+ '("McAccount*" "account")
+ '("GArray*" "handles")
+ )
+)
+
+(define-method set_alias
+ (of-object "EmpathyContactFactory")
+ (c-name "empathy_contact_factory_set_alias")
+ (return-type "none")
+ (parameters
+ '("EmpathyContact*" "contact")
+ '("const-gchar*" "alias")
+ )
+)
+
+(define-method set_avatar
+ (of-object "EmpathyContactFactory")
+ (c-name "empathy_contact_factory_set_avatar")
+ (return-type "none")
+ (parameters
+ '("McAccount*" "account")
+ '("const-gchar*" "data")
+ '("gsize" "size")
+ '("const-gchar*" "mime_type")
+ )
+)
+
+
+
+;; From empathy-contact-groups.h
+
+(define-function empathy_contact_groups_get_all
+ (c-name "empathy_contact_groups_get_all")
+ (return-type "none")
+)
+
+(define-function empathy_contact_group_get_expanded
+ (c-name "empathy_contact_group_get_expanded")
+ (return-type "gboolean")
+ (parameters
+ '("const-gchar*" "group")
+ )
+)
+
+(define-function empathy_contact_group_set_expanded
+ (c-name "empathy_contact_group_set_expanded")
+ (return-type "none")
+ (parameters
+ '("const-gchar*" "group")
+ '("gboolean" "expanded")
+ )
+)
+
+
+
+;; From empathy-contact.h
+
+(define-function empathy_contact_get_type
+ (c-name "empathy_contact_get_type")
+ (return-type "GType")
+)
+
+(define-function empathy_contact_new
+ (c-name "empathy_contact_new")
+ (is-constructor-of "EmpathyContact")
+ (return-type "EmpathyContact*")
+ (parameters
+ '("McAccount*" "account")
+ )
+)
+
+(define-function empathy_contact_new_full
+ (c-name "empathy_contact_new_full")
+ (return-type "EmpathyContact*")
+ (parameters
+ '("McAccount*" "account")
+ '("const-gchar*" "id")
+ '("const-gchar*" "name")
+ )
+)
+
+(define-method get_id
+ (of-object "EmpathyContact")
+ (c-name "empathy_contact_get_id")
+ (return-type "const-gchar*")
+)
+
+(define-method set_id
+ (of-object "EmpathyContact")
+ (c-name "empathy_contact_set_id")
+ (return-type "none")
+ (parameters
+ '("const-gchar*" "id")
+ )
+)
+
+(define-method get_name
+ (of-object "EmpathyContact")
+ (c-name "empathy_contact_get_name")
+ (return-type "const-gchar*")
+)
+
+(define-method set_name
+ (of-object "EmpathyContact")
+ (c-name "empathy_contact_set_name")
+ (return-type "none")
+ (parameters
+ '("const-gchar*" "name")
+ )
+)
+
+(define-method get_avatar
+ (of-object "EmpathyContact")
+ (c-name "empathy_contact_get_avatar")
+ (return-type "EmpathyAvatar*")
+)
+
+(define-method set_avatar
+ (of-object "EmpathyContact")
+ (c-name "empathy_contact_set_avatar")
+ (return-type "none")
+ (parameters
+ '("EmpathyAvatar*" "avatar")
+ )
+)
+
+(define-method get_account
+ (of-object "EmpathyContact")
+ (c-name "empathy_contact_get_account")
+ (return-type "McAccount*")
+)
+
+(define-method set_account
+ (of-object "EmpathyContact")
+ (c-name "empathy_contact_set_account")
+ (return-type "none")
+ (parameters
+ '("McAccount*" "account")
+ )
+)
+
+(define-method get_presence
+ (of-object "EmpathyContact")
+ (c-name "empathy_contact_get_presence")
+ (return-type "McPresence")
+)
+
+(define-method set_presence
+ (of-object "EmpathyContact")
+ (c-name "empathy_contact_set_presence")
+ (return-type "none")
+ (parameters
+ '("McPresence" "presence")
+ )
+)
+
+(define-method get_presence_message
+ (of-object "EmpathyContact")
+ (c-name "empathy_contact_get_presence_message")
+ (return-type "const-gchar*")
+)
+
+(define-method set_presence_message
+ (of-object "EmpathyContact")
+ (c-name "empathy_contact_set_presence_message")
+ (return-type "none")
+ (parameters
+ '("const-gchar*" "message")
+ )
+)
+
+(define-method get_handle
+ (of-object "EmpathyContact")
+ (c-name "empathy_contact_get_handle")
+ (return-type "guint")
+)
+
+(define-method set_handle
+ (of-object "EmpathyContact")
+ (c-name "empathy_contact_set_handle")
+ (return-type "none")
+ (parameters
+ '("guint" "handle")
+ )
+)
+
+(define-method get_capabilities
+ (of-object "EmpathyContact")
+ (c-name "empathy_contact_get_capabilities")
+ (return-type "EmpathyCapabilities")
+)
+
+(define-method set_capabilities
+ (of-object "EmpathyContact")
+ (c-name "empathy_contact_set_capabilities")
+ (return-type "none")
+ (parameters
+ '("EmpathyCapabilities" "capabilities")
+ )
+)
+
+(define-method is_user
+ (of-object "EmpathyContact")
+ (c-name "empathy_contact_is_user")
+ (return-type "gboolean")
+)
+
+(define-method set_is_user
+ (of-object "EmpathyContact")
+ (c-name "empathy_contact_set_is_user")
+ (return-type "none")
+ (parameters
+ '("gboolean" "is_user")
+ )
+)
+
+(define-method is_online
+ (of-object "EmpathyContact")
+ (c-name "empathy_contact_is_online")
+ (return-type "gboolean")
+)
+
+(define-method get_status
+ (of-object "EmpathyContact")
+ (c-name "empathy_contact_get_status")
+ (return-type "const-gchar*")
+)
+
+(define-method can_voip
+ (of-object "EmpathyContact")
+ (c-name "empathy_contact_can_voip")
+ (return-type "gboolean")
+)
+
+(define-function empathy_contact_equal
+ (c-name "empathy_contact_equal")
+ (return-type "gboolean")
+ (parameters
+ '("gconstpointer" "v1")
+ '("gconstpointer" "v2")
+ )
+)
+
+(define-function empathy_contact_hash
+ (c-name "empathy_contact_hash")
+ (return-type "guint")
+ (parameters
+ '("gconstpointer" "key")
+ )
+)
+
+
+
+;; From empathy-contact-list.h
+
+(define-function empathy_contact_list_get_type
+ (c-name "empathy_contact_list_get_type")
+ (return-type "GType")
+)
+
+(define-method add
+ (of-object "EmpathyContactList")
+ (c-name "empathy_contact_list_add")
+ (return-type "none")
+ (parameters
+ '("EmpathyContact*" "contact")
+ '("const-gchar*" "message")
+ )
+)
+
+(define-method remove
+ (of-object "EmpathyContactList")
+ (c-name "empathy_contact_list_remove")
+ (return-type "none")
+ (parameters
+ '("EmpathyContact*" "contact")
+ '("const-gchar*" "message")
+ )
+)
+
+(define-method get_members
+ (of-object "EmpathyContactList")
+ (c-name "empathy_contact_list_get_members")
+ (return-type "GList*")
+)
+
+(define-method get_pendings
+ (of-object "EmpathyContactList")
+ (c-name "empathy_contact_list_get_pendings")
+ (return-type "GList*")
+)
+
+(define-method get_all_groups
+ (of-object "EmpathyContactList")
+ (c-name "empathy_contact_list_get_all_groups")
+ (return-type "GList*")
+)
+
+(define-method get_groups
+ (of-object "EmpathyContactList")
+ (c-name "empathy_contact_list_get_groups")
+ (return-type "GList*")
+ (parameters
+ '("EmpathyContact*" "contact")
+ )
+)
+
+(define-method add_to_group
+ (of-object "EmpathyContactList")
+ (c-name "empathy_contact_list_add_to_group")
+ (return-type "none")
+ (parameters
+ '("EmpathyContact*" "contact")
+ '("const-gchar*" "group")
+ )
+)
+
+(define-method remove_from_group
+ (of-object "EmpathyContactList")
+ (c-name "empathy_contact_list_remove_from_group")
+ (return-type "none")
+ (parameters
+ '("EmpathyContact*" "contact")
+ '("const-gchar*" "group")
+ )
+)
+
+(define-method rename_group
+ (of-object "EmpathyContactList")
+ (c-name "empathy_contact_list_rename_group")
+ (return-type "none")
+ (parameters
+ '("const-gchar*" "old_group")
+ '("const-gchar*" "new_group")
+ )
+)
+
+(define-method remove_group
+ (of-object "EmpathyContactList")
+ (c-name "empathy_contact_list_remove_group")
+ (return-type "none")
+ (parameters
+ '("const-gchar*" "group")
+ )
+)
+
+
+
+;; From empathy-contact-manager.h
+
+(define-function empathy_contact_manager_get_type
+ (c-name "empathy_contact_manager_get_type")
+ (return-type "GType")
+)
+
+(define-function empathy_contact_manager_new
+ (c-name "empathy_contact_manager_new")
+ (is-constructor-of "EmpathyContactManager")
+ (return-type "EmpathyContactManager*")
+)
+
+(define-method get_list
+ (of-object "EmpathyContactManager")
+ (c-name "empathy_contact_manager_get_list")
+ (return-type "EmpathyTpContactList*")
+ (parameters
+ '("McAccount*" "account")
+ )
+)
+
+
+
+;; From empathy-debug.h
+
+(define-function empathy_debug_impl
+ (c-name "empathy_debug_impl")
+ (return-type "none")
+ (parameters
+ '("const-gchar*" "domain")
+ '("const-gchar*" "msg")
+ )
+ (varargs #t)
+)
+
+(define-function empathy_debug_set_log_file_from_env
+ (c-name "empathy_debug_set_log_file_from_env")
+ (return-type "none")
+)
+
+
+
+;; From empathy-filter.h
+
+(define-function empathy_filter_get_type
+ (c-name "empathy_filter_get_type")
+ (return-type "GType")
+)
+
+(define-function empathy_filter_new
+ (c-name "empathy_filter_new")
+ (is-constructor-of "EmpathyFilter")
+ (return-type "EmpathyFilter*")
+ (parameters
+ '("const-gchar*" "bus_name")
+ '("const-gchar*" "object_path")
+ '("const-gchar*" "channel_type")
+ '("guint" "priority")
+ '("guint" "flags")
+ )
+)
+
+(define-method process
+ (of-object "EmpathyFilter")
+ (c-name "empathy_filter_process")
+ (return-type "none")
+ (parameters
+ '("TpChan*" "tp_chan")
+ '("gboolean" "process")
+ )
+)
+
+
+
+;; From empathy-idle.h
+
+(define-function empathy_idle_get_type
+ (c-name "empathy_idle_get_type")
+ (return-type "GType")
+)
+
+(define-function empathy_idle_new
+ (c-name "empathy_idle_new")
+ (is-constructor-of "EmpathyIdle")
+ (return-type "EmpathyIdle*")
+)
+
+(define-method get_state
+ (of-object "EmpathyIdle")
+ (c-name "empathy_idle_get_state")
+ (return-type "McPresence")
+)
+
+(define-method set_state
+ (of-object "EmpathyIdle")
+ (c-name "empathy_idle_set_state")
+ (return-type "none")
+ (parameters
+ '("McPresence" "state")
+ )
+)
+
+(define-method get_status
+ (of-object "EmpathyIdle")
+ (c-name "empathy_idle_get_status")
+ (return-type "const-gchar*")
+)
+
+(define-method set_status
+ (of-object "EmpathyIdle")
+ (c-name "empathy_idle_set_status")
+ (return-type "none")
+ (parameters
+ '("const-gchar*" "status")
+ )
+)
+
+(define-method get_flash_state
+ (of-object "EmpathyIdle")
+ (c-name "empathy_idle_get_flash_state")
+ (return-type "McPresence")
+)
+
+(define-method set_flash_state
+ (of-object "EmpathyIdle")
+ (c-name "empathy_idle_set_flash_state")
+ (return-type "none")
+ (parameters
+ '("McPresence" "state")
+ )
+)
+
+(define-method set_presence
+ (of-object "EmpathyIdle")
+ (c-name "empathy_idle_set_presence")
+ (return-type "none")
+ (parameters
+ '("McPresence" "state")
+ '("const-gchar*" "status")
+ )
+)
+
+(define-method get_auto_away
+ (of-object "EmpathyIdle")
+ (c-name "empathy_idle_get_auto_away")
+ (return-type "gboolean")
+)
+
+(define-method set_auto_away
+ (of-object "EmpathyIdle")
+ (c-name "empathy_idle_set_auto_away")
+ (return-type "none")
+ (parameters
+ '("gboolean" "auto_away")
+ )
+)
+
+(define-method get_use_nm
+ (of-object "EmpathyIdle")
+ (c-name "empathy_idle_get_use_nm")
+ (return-type "gboolean")
+)
+
+(define-method set_use_nm
+ (of-object "EmpathyIdle")
+ (c-name "empathy_idle_set_use_nm")
+ (return-type "none")
+ (parameters
+ '("gboolean" "use_nm")
+ )
+)
+
+
+
+;; From empathy-irc-network.h
+
+(define-function empathy_irc_network_get_type
+ (c-name "empathy_irc_network_get_type")
+ (return-type "GType")
+)
+
+(define-function empathy_irc_network_new
+ (c-name "empathy_irc_network_new")
+ (is-constructor-of "EmpathyIrcNetwork")
+ (return-type "EmpathyIrcNetwork*")
+ (parameters
+ '("const-gchar*" "name")
+ )
+)
+
+(define-method get_servers
+ (of-object "EmpathyIrcNetwork")
+ (c-name "empathy_irc_network_get_servers")
+ (return-type "GSList*")
+)
+
+(define-method append_server
+ (of-object "EmpathyIrcNetwork")
+ (c-name "empathy_irc_network_append_server")
+ (return-type "none")
+ (parameters
+ '("EmpathyIrcServer*" "server")
+ )
+)
+
+(define-method remove_server
+ (of-object "EmpathyIrcNetwork")
+ (c-name "empathy_irc_network_remove_server")
+ (return-type "none")
+ (parameters
+ '("EmpathyIrcServer*" "server")
+ )
+)
+
+(define-method set_server_position
+ (of-object "EmpathyIrcNetwork")
+ (c-name "empathy_irc_network_set_server_position")
+ (return-type "none")
+ (parameters
+ '("EmpathyIrcServer*" "server")
+ '("gint" "pos")
+ )
+)
+
+
+
+;; From empathy-irc-network-manager.h
+
+(define-function empathy_irc_network_manager_get_type
+ (c-name "empathy_irc_network_manager_get_type")
+ (return-type "GType")
+)
+
+(define-function empathy_irc_network_manager_new
+ (c-name "empathy_irc_network_manager_new")
+ (is-constructor-of "EmpathyIrcNetworkManager")
+ (return-type "EmpathyIrcNetworkManager*")
+ (parameters
+ '("const-gchar*" "global_file")
+ '("const-gchar*" "user_file")
+ )
+)
+
+(define-method add
+ (of-object "EmpathyIrcNetworkManager")
+ (c-name "empathy_irc_network_manager_add")
+ (return-type "none")
+ (parameters
+ '("EmpathyIrcNetwork*" "network")
+ )
+)
+
+(define-method remove
+ (of-object "EmpathyIrcNetworkManager")
+ (c-name "empathy_irc_network_manager_remove")
+ (return-type "none")
+ (parameters
+ '("EmpathyIrcNetwork*" "network")
+ )
+)
+
+(define-method get_networks
+ (of-object "EmpathyIrcNetworkManager")
+ (c-name "empathy_irc_network_manager_get_networks")
+ (return-type "GSList*")
+)
+
+(define-method find_network_by_address
+ (of-object "EmpathyIrcNetworkManager")
+ (c-name "empathy_irc_network_manager_find_network_by_address")
+ (return-type "EmpathyIrcNetwork*")
+ (parameters
+ '("const-gchar*" "address")
+ )
+)
+
+
+
+;; From empathy-irc-server.h
+
+(define-function empathy_irc_server_get_type
+ (c-name "empathy_irc_server_get_type")
+ (return-type "GType")
+)
+
+(define-function empathy_irc_server_new
+ (c-name "empathy_irc_server_new")
+ (is-constructor-of "EmpathyIrcServer")
+ (return-type "EmpathyIrcServer*")
+ (parameters
+ '("const-gchar*" "address")
+ '("guint" "port")
+ '("gboolean" "ssl")
+ )
+)
+
+
+
+;; From empathy-log-manager.h
+
+(define-function empathy_log_manager_get_type
+ (c-name "empathy_log_manager_get_type")
+ (return-type "GType")
+)
+
+(define-function empathy_log_manager_new
+ (c-name "empathy_log_manager_new")
+ (is-constructor-of "EmpathyLogManager")
+ (return-type "EmpathyLogManager*")
+)
+
+(define-method add_message
+ (of-object "EmpathyLogManager")
+ (c-name "empathy_log_manager_add_message")
+ (return-type "none")
+ (parameters
+ '("const-gchar*" "chat_id")
+ '("gboolean" "chatroom")
+ '("EmpathyMessage*" "message")
+ )
+)
+
+(define-method exists
+ (of-object "EmpathyLogManager")
+ (c-name "empathy_log_manager_exists")
+ (return-type "gboolean")
+ (parameters
+ '("McAccount*" "account")
+ '("const-gchar*" "chat_id")
+ '("gboolean" "chatroom")
+ )
+)
+
+(define-method get_dates
+ (of-object "EmpathyLogManager")
+ (c-name "empathy_log_manager_get_dates")
+ (return-type "GList*")
+ (parameters
+ '("McAccount*" "account")
+ '("const-gchar*" "chat_id")
+ '("gboolean" "chatroom")
+ )
+)
+
+(define-method get_messages_for_file
+ (of-object "EmpathyLogManager")
+ (c-name "empathy_log_manager_get_messages_for_file")
+ (return-type "GList*")
+ (parameters
+ '("const-gchar*" "filename")
+ )
+)
+
+(define-method get_messages_for_date
+ (of-object "EmpathyLogManager")
+ (c-name "empathy_log_manager_get_messages_for_date")
+ (return-type "GList*")
+ (parameters
+ '("McAccount*" "account")
+ '("const-gchar*" "chat_id")
+ '("gboolean" "chatroom")
+ '("const-gchar*" "date")
+ )
+)
+
+(define-method get_last_messages
+ (of-object "EmpathyLogManager")
+ (c-name "empathy_log_manager_get_last_messages")
+ (return-type "GList*")
+ (parameters
+ '("McAccount*" "account")
+ '("const-gchar*" "chat_id")
+ '("gboolean" "chatroom")
+ )
+)
+
+(define-method get_messages_for_file
+ (of-object "EmpathyLogManager")
+ (c-name "empathy_log_manager_get_messages_for_file")
+ (return-type "GList*")
+ (parameters
+ '("const-gchar*" "filename")
+ )
+)
+
+(define-method get_chats
+ (of-object "EmpathyLogManager")
+ (c-name "empathy_log_manager_get_chats")
+ (return-type "GList*")
+ (parameters
+ '("McAccount*" "account")
+ )
+)
+
+(define-method search_new
+ (of-object "EmpathyLogManager")
+ (c-name "empathy_log_manager_search_new")
+ (return-type "GList*")
+ (parameters
+ '("const-gchar*" "text")
+ )
+)
+
+(define-function empathy_log_manager_search_free
+ (c-name "empathy_log_manager_search_free")
+ (return-type "none")
+ (parameters
+ '("GList*" "hits")
+ )
+)
+
+(define-function empathy_log_manager_get_date_readable
+ (c-name "empathy_log_manager_get_date_readable")
+ (return-type "gchar*")
+ (parameters
+ '("const-gchar*" "date")
+ )
+)
+
+
+
+;; From empathy-message.h
+
+(define-function empathy_message_get_gtype
+ (c-name "empathy_message_get_gtype")
+ (return-type "GType")
+)
+
+(define-function empathy_message_new
+ (c-name "empathy_message_new")
+ (is-constructor-of "EmpathyMessage")
+ (return-type "EmpathyMessage*")
+ (parameters
+ '("const-gchar*" "body")
+ )
+)
+
+(define-method get_type
+ (of-object "EmpathyMessage")
+ (c-name "empathy_message_get_type")
+ (return-type "EmpathyMessageType")
+)
+
+(define-method set_type
+ (of-object "EmpathyMessage")
+ (c-name "empathy_message_set_type")
+ (return-type "none")
+ (parameters
+ '("EmpathyMessageType" "type")
+ )
+)
+
+(define-method get_sender
+ (of-object "EmpathyMessage")
+ (c-name "empathy_message_get_sender")
+ (return-type "EmpathyContact*")
+)
+
+(define-method set_sender
+ (of-object "EmpathyMessage")
+ (c-name "empathy_message_set_sender")
+ (return-type "none")
+ (parameters
+ '("EmpathyContact*" "contact")
+ )
+)
+
+(define-method get_receiver
+ (of-object "EmpathyMessage")
+ (c-name "empathy_message_get_receiver")
+ (return-type "EmpathyContact*")
+)
+
+(define-method set_receiver
+ (of-object "EmpathyMessage")
+ (c-name "empathy_message_set_receiver")
+ (return-type "none")
+ (parameters
+ '("EmpathyContact*" "contact")
+ )
+)
+
+(define-method get_body
+ (of-object "EmpathyMessage")
+ (c-name "empathy_message_get_body")
+ (return-type "const-gchar*")
+)
+
+(define-method set_body
+ (of-object "EmpathyMessage")
+ (c-name "empathy_message_set_body")
+ (return-type "none")
+ (parameters
+ '("const-gchar*" "body")
+ )
+)
+
+(define-method get_timestamp
+ (of-object "EmpathyMessage")
+ (c-name "empathy_message_get_timestamp")
+ (return-type "time_t")
+)
+
+(define-method set_timestamp
+ (of-object "EmpathyMessage")
+ (c-name "empathy_message_set_timestamp")
+ (return-type "none")
+ (parameters
+ '("time_t" "timestamp")
+ )
+)
+
+(define-method get_date_and_time
+ (of-object "EmpathyMessage")
+ (c-name "empathy_message_get_date_and_time")
+ (return-type "GDate*")
+ (parameters
+ '("time_t*" "timestamp")
+ )
+)
+
+(define-function empathy_message_type_from_str
+ (c-name "empathy_message_type_from_str")
+ (return-type "EmpathyMessageType")
+ (parameters
+ '("const-gchar*" "type_str")
+ )
+)
+
+(define-method to_str
+ (of-object "EmpathyMessageType")
+ (c-name "empathy_message_type_to_str")
+ (return-type "const-gchar*")
+)
+
+
+
+;; From empathy-status-presets.h
+
+(define-function empathy_status_presets_get_all
+ (c-name "empathy_status_presets_get_all")
+ (return-type "none")
+)
+
+(define-function empathy_status_presets_get
+ (c-name "empathy_status_presets_get")
+ (return-type "GList*")
+ (parameters
+ '("McPresence" "state")
+ '("gint" "max_number")
+ )
+)
+
+(define-function empathy_status_presets_set_last
+ (c-name "empathy_status_presets_set_last")
+ (return-type "none")
+ (parameters
+ '("McPresence" "state")
+ '("const-gchar*" "status")
+ )
+)
+
+(define-function empathy_status_presets_remove
+ (c-name "empathy_status_presets_remove")
+ (return-type "none")
+ (parameters
+ '("McPresence" "state")
+ '("const-gchar*" "status")
+ )
+)
+
+(define-function empathy_status_presets_reset
+ (c-name "empathy_status_presets_reset")
+ (return-type "none")
+)
+
+(define-function empathy_status_presets_get_default_state
+ (c-name "empathy_status_presets_get_default_state")
+ (return-type "McPresence")
+)
+
+(define-function empathy_status_presets_get_default_status
+ (c-name "empathy_status_presets_get_default_status")
+ (return-type "const-gchar*")
+)
+
+(define-function empathy_status_presets_set_default
+ (c-name "empathy_status_presets_set_default")
+ (return-type "none")
+ (parameters
+ '("McPresence" "state")
+ '("const-gchar*" "status")
+ )
+)
+
+(define-function empathy_status_presets_clear_default
+ (c-name "empathy_status_presets_clear_default")
+ (return-type "none")
+)
+
+
+
+;; From empathy-time.h
+
+(define-function empathy_time_get_current
+ (c-name "empathy_time_get_current")
+ (return-type "time_t")
+)
+
+(define-function empathy_time_get_local_time
+ (c-name "empathy_time_get_local_time")
+ (return-type "time_t")
+ (parameters
+ '("struct-tm*" "tm")
+ )
+)
+
+(define-function empathy_time_parse
+ (c-name "empathy_time_parse")
+ (return-type "time_t")
+ (parameters
+ '("const-gchar*" "str")
+ )
+)
+
+(define-function empathy_time_to_string_utc
+ (c-name "empathy_time_to_string_utc")
+ (return-type "gchar*")
+ (parameters
+ '("time_t" "t")
+ '("const-gchar*" "format")
+ )
+)
+
+(define-function empathy_time_to_string_local
+ (c-name "empathy_time_to_string_local")
+ (return-type "gchar*")
+ (parameters
+ '("time_t" "t")
+ '("const-gchar*" "format")
+ )
+)
+
+
+
+;; From empathy-tp-call.h
+
+(define-function empathy_tp_call_get_type
+ (c-name "empathy_tp_call_get_type")
+ (return-type "GType")
+)
+
+(define-function empathy_tp_call_new
+ (c-name "empathy_tp_call_new")
+ (is-constructor-of "EmpathyTpCall")
+ (return-type "EmpathyTpCall*")
+ (parameters
+ '("TpConn*" "connection")
+ '("TpChan*" "channel")
+ )
+)
+
+(define-method accept_incoming_call
+ (of-object "EmpathyTpCall")
+ (c-name "empathy_tp_call_accept_incoming_call")
+ (return-type "none")
+)
+
+(define-method close_channel
+ (of-object "EmpathyTpCall")
+ (c-name "empathy_tp_call_close_channel")
+ (return-type "none")
+)
+
+(define-method request_video_stream_direction
+ (of-object "EmpathyTpCall")
+ (c-name "empathy_tp_call_request_video_stream_direction")
+ (return-type "none")
+ (parameters
+ '("gboolean" "is_sending")
+ )
+)
+
+(define-method add_preview_video
+ (of-object "EmpathyTpCall")
+ (c-name "empathy_tp_call_add_preview_video")
+ (return-type "none")
+ (parameters
+ '("guint" "preview_video_socket_id")
+ )
+)
+
+(define-method remove_preview_video
+ (of-object "EmpathyTpCall")
+ (c-name "empathy_tp_call_remove_preview_video")
+ (return-type "none")
+ (parameters
+ '("guint" "preview_video_socket_id")
+ )
+)
+
+(define-method add_output_video
+ (of-object "EmpathyTpCall")
+ (c-name "empathy_tp_call_add_output_video")
+ (return-type "none")
+ (parameters
+ '("guint" "output_video_socket_id")
+ )
+)
+
+(define-method set_output_volume
+ (of-object "EmpathyTpCall")
+ (c-name "empathy_tp_call_set_output_volume")
+ (return-type "none")
+ (parameters
+ '("guint" "volume")
+ )
+)
+
+(define-method mute_output
+ (of-object "EmpathyTpCall")
+ (c-name "empathy_tp_call_mute_output")
+ (return-type "none")
+ (parameters
+ '("gboolean" "is_muted")
+ )
+)
+
+(define-method mute_input
+ (of-object "EmpathyTpCall")
+ (c-name "empathy_tp_call_mute_input")
+ (return-type "none")
+ (parameters
+ '("gboolean" "is_muted")
+ )
+)
+
+
+
+;; From empathy-tp-chat.h
+
+(define-function empathy_tp_chat_get_type
+ (c-name "empathy_tp_chat_get_type")
+ (return-type "GType")
+)
+
+(define-function empathy_tp_chat_new
+ (c-name "empathy_tp_chat_new")
+ (is-constructor-of "EmpathyTpChat")
+ (return-type "EmpathyTpChat*")
+ (parameters
+ '("McAccount*" "account")
+ '("TpChan*" "tp_chan")
+ )
+)
+
+(define-function empathy_tp_chat_new_with_contact
+ (c-name "empathy_tp_chat_new_with_contact")
+ (return-type "EmpathyTpChat*")
+ (parameters
+ '("EmpathyContact*" "contact")
+ )
+)
+
+(define-method get_acknowledge
+ (of-object "EmpathyTpChat")
+ (c-name "empathy_tp_chat_get_acknowledge")
+ (return-type "gboolean")
+)
+
+(define-method set_acknowledge
+ (of-object "EmpathyTpChat")
+ (c-name "empathy_tp_chat_set_acknowledge")
+ (return-type "none")
+ (parameters
+ '("gboolean" "acknowledge")
+ )
+)
+
+(define-method get_account
+ (of-object "EmpathyTpChat")
+ (c-name "empathy_tp_chat_get_account")
+ (return-type "McAccount*")
+)
+
+(define-method get_channel
+ (of-object "EmpathyTpChat")
+ (c-name "empathy_tp_chat_get_channel")
+ (return-type "TpChan*")
+)
+
+(define-method get_pendings
+ (of-object "EmpathyTpChat")
+ (c-name "empathy_tp_chat_get_pendings")
+ (return-type "GList*")
+)
+
+(define-method send
+ (of-object "EmpathyTpChat")
+ (c-name "empathy_tp_chat_send")
+ (return-type "none")
+ (parameters
+ '("EmpathyMessage*" "message")
+ )
+)
+
+(define-method set_state
+ (of-object "EmpathyTpChat")
+ (c-name "empathy_tp_chat_set_state")
+ (return-type "none")
+ (parameters
+ '("TpChannelChatState" "state")
+ )
+)
+
+(define-method get_id
+ (of-object "EmpathyTpChat")
+ (c-name "empathy_tp_chat_get_id")
+ (return-type "const-gchar*")
+)
+
+
+
+;; From empathy-tp-chatroom.h
+
+(define-function empathy_tp_chatroom_get_type
+ (c-name "empathy_tp_chatroom_get_type")
+ (return-type "GType")
+)
+
+(define-function empathy_tp_chatroom_new
+ (c-name "empathy_tp_chatroom_new")
+ (is-constructor-of "EmpathyTpChatroom")
+ (return-type "EmpathyTpChatroom*")
+ (parameters
+ '("McAccount*" "account")
+ '("TpChan*" "tp_chan")
+ )
+)
+
+(define-method get_invitation
+ (of-object "EmpathyTpChatroom")
+ (c-name "empathy_tp_chatroom_get_invitation")
+ (return-type "gboolean")
+ (parameters
+ '("EmpathyContact**" "contact")
+ '("const-gchar**" "message")
+ )
+)
+
+(define-method accept_invitation
+ (of-object "EmpathyTpChatroom")
+ (c-name "empathy_tp_chatroom_accept_invitation")
+ (return-type "none")
+)
+
+(define-method set_topic
+ (of-object "EmpathyTpChatroom")
+ (c-name "empathy_tp_chatroom_set_topic")
+ (return-type "none")
+ (parameters
+ '("const-gchar*" "topic")
+ )
+)
+
+
+
+;; From empathy-tp-contact-factory.h
+
+(define-function empathy_tp_contact_factory_get_type
+ (c-name "empathy_tp_contact_factory_get_type")
+ (return-type "GType")
+)
+
+(define-function empathy_tp_contact_factory_new
+ (c-name "empathy_tp_contact_factory_new")
+ (is-constructor-of "EmpathyTpContactFactory")
+ (return-type "EmpathyTpContactFactory*")
+ (parameters
+ '("McAccount*" "account")
+ )
+)
+
+(define-method get_user
+ (of-object "EmpathyTpContactFactory")
+ (c-name "empathy_tp_contact_factory_get_user")
+ (return-type "EmpathyContact*")
+)
+
+(define-method get_from_id
+ (of-object "EmpathyTpContactFactory")
+ (c-name "empathy_tp_contact_factory_get_from_id")
+ (return-type "EmpathyContact*")
+ (parameters
+ '("const-gchar*" "id")
+ )
+)
+
+(define-method get_from_handle
+ (of-object "EmpathyTpContactFactory")
+ (c-name "empathy_tp_contact_factory_get_from_handle")
+ (return-type "EmpathyContact*")
+ (parameters
+ '("guint" "handle")
+ )
+)
+
+(define-method get_from_handles
+ (of-object "EmpathyTpContactFactory")
+ (c-name "empathy_tp_contact_factory_get_from_handles")
+ (return-type "GList*")
+ (parameters
+ '("GArray*" "handles")
+ )
+)
+
+(define-method set_alias
+ (of-object "EmpathyTpContactFactory")
+ (c-name "empathy_tp_contact_factory_set_alias")
+ (return-type "none")
+ (parameters
+ '("EmpathyContact*" "contact")
+ '("const-gchar*" "alias")
+ )
+)
+
+(define-method set_avatar
+ (of-object "EmpathyTpContactFactory")
+ (c-name "empathy_tp_contact_factory_set_avatar")
+ (return-type "none")
+ (parameters
+ '("const-gchar*" "data")
+ '("gsize" "size")
+ '("const-gchar*" "mime_type")
+ )
+)
+
+
+
+;; From empathy-tp-contact-list.h
+
+(define-function empathy_tp_contact_list_get_type
+ (c-name "empathy_tp_contact_list_get_type")
+ (return-type "GType")
+)
+
+(define-function empathy_tp_contact_list_new
+ (c-name "empathy_tp_contact_list_new")
+ (is-constructor-of "EmpathyTpContactList")
+ (return-type "EmpathyTpContactList*")
+ (parameters
+ '("McAccount*" "account")
+ )
+)
+
+(define-method get_account
+ (of-object "EmpathyTpContactList")
+ (c-name "empathy_tp_contact_list_get_account")
+ (return-type "McAccount*")
+)
+
+
+
+;; From empathy-tp-group.h
+
+(define-function empathy_tp_group_get_type
+ (c-name "empathy_tp_group_get_type")
+ (return-type "GType")
+)
+
+(define-function empathy_tp_group_new
+ (c-name "empathy_tp_group_new")
+ (is-constructor-of "EmpathyTpGroup")
+ (return-type "EmpathyTpGroup*")
+ (parameters
+ '("McAccount*" "account")
+ '("TpChan*" "tp_chan")
+ )
+)
+
+(define-method close
+ (of-object "EmpathyTpGroup")
+ (c-name "empathy_tp_group_close")
+ (return-type "none")
+)
+
+(define-method add_members
+ (of-object "EmpathyTpGroup")
+ (c-name "empathy_tp_group_add_members")
+ (return-type "none")
+ (parameters
+ '("GList*" "contacts")
+ '("const-gchar*" "message")
+ )
+)
+
+(define-method add_member
+ (of-object "EmpathyTpGroup")
+ (c-name "empathy_tp_group_add_member")
+ (return-type "none")
+ (parameters
+ '("EmpathyContact*" "contact")
+ '("const-gchar*" "message")
+ )
+)
+
+(define-method remove_members
+ (of-object "EmpathyTpGroup")
+ (c-name "empathy_tp_group_remove_members")
+ (return-type "none")
+ (parameters
+ '("GList*" "contacts")
+ '("const-gchar*" "message")
+ )
+)
+
+(define-method remove_member
+ (of-object "EmpathyTpGroup")
+ (c-name "empathy_tp_group_remove_member")
+ (return-type "none")
+ (parameters
+ '("EmpathyContact*" "contact")
+ '("const-gchar*" "message")
+ )
+)
+
+(define-method get_members
+ (of-object "EmpathyTpGroup")
+ (c-name "empathy_tp_group_get_members")
+ (return-type "GList*")
+)
+
+(define-method get_local_pendings
+ (of-object "EmpathyTpGroup")
+ (c-name "empathy_tp_group_get_local_pendings")
+ (return-type "GList*")
+)
+
+(define-method get_remote_pendings
+ (of-object "EmpathyTpGroup")
+ (c-name "empathy_tp_group_get_remote_pendings")
+ (return-type "GList*")
+)
+
+(define-method get_name
+ (of-object "EmpathyTpGroup")
+ (c-name "empathy_tp_group_get_name")
+ (return-type "const-gchar*")
+)
+
+(define-method get_self_contact
+ (of-object "EmpathyTpGroup")
+ (c-name "empathy_tp_group_get_self_contact")
+ (return-type "EmpathyContact*")
+)
+
+(define-method get_object_path
+ (of-object "EmpathyTpGroup")
+ (c-name "empathy_tp_group_get_object_path")
+ (return-type "const-gchar*")
+)
+
+(define-method get_channel
+ (of-object "EmpathyTpGroup")
+ (c-name "empathy_tp_group_get_channel")
+ (return-type "TpChan*")
+)
+
+(define-method is_member
+ (of-object "EmpathyTpGroup")
+ (c-name "empathy_tp_group_is_member")
+ (return-type "gboolean")
+ (parameters
+ '("EmpathyContact*" "contact")
+ )
+)
+
+(define-function empathy_pending_info_new
+ (c-name "empathy_pending_info_new")
+ (is-constructor-of "EmpathyPendingInfo")
+ (return-type "EmpathyPendingInfo*")
+ (parameters
+ '("EmpathyContact*" "member")
+ '("EmpathyContact*" "actor")
+ '("const-gchar*" "message")
+ )
+)
+
+(define-method free
+ (of-object "EmpathyPendingInfo")
+ (c-name "empathy_pending_info_free")
+ (return-type "none")
+)
+
+
+
+;; From empathy-tp-roomlist.h
+
+(define-function empathy_tp_roomlist_get_type
+ (c-name "empathy_tp_roomlist_get_type")
+ (return-type "GType")
+)
+
+(define-function empathy_tp_roomlist_new
+ (c-name "empathy_tp_roomlist_new")
+ (is-constructor-of "EmpathyTpRoomlist")
+ (return-type "EmpathyTpRoomlist*")
+ (parameters
+ '("McAccount*" "account")
+ )
+)
+
+(define-method is_listing
+ (of-object "EmpathyTpRoomlist")
+ (c-name "empathy_tp_roomlist_is_listing")
+ (return-type "gboolean")
+)
+
+(define-method start
+ (of-object "EmpathyTpRoomlist")
+ (c-name "empathy_tp_roomlist_start")
+ (return-type "none")
+)
+
+(define-method stop
+ (of-object "EmpathyTpRoomlist")
+ (c-name "empathy_tp_roomlist_stop")
+ (return-type "none")
+)
+
+
+
+;; From empathy-utils.h
+
+(define-function empathy_substring
+ (c-name "empathy_substring")
+ (return-type "gchar*")
+ (parameters
+ '("const-gchar*" "str")
+ '("gint" "start")
+ '("gint" "end")
+ )
+)
+
+(define-function empathy_regex_match
+ (c-name "empathy_regex_match")
+ (return-type "gint")
+ (parameters
+ '("EmpathyRegExType" "type")
+ '("const-gchar*" "msg")
+ '("GArray*" "start")
+ '("GArray*" "end")
+ )
+)
+
+(define-function empathy_strcasecmp
+ (c-name "empathy_strcasecmp")
+ (return-type "gint")
+ (parameters
+ '("const-gchar*" "s1")
+ '("const-gchar*" "s2")
+ )
+)
+
+(define-function empathy_strncasecmp
+ (c-name "empathy_strncasecmp")
+ (return-type "gint")
+ (parameters
+ '("const-gchar*" "s1")
+ '("const-gchar*" "s2")
+ '("gsize" "n")
+ )
+)
+
+(define-function empathy_xml_validate
+ (c-name "empathy_xml_validate")
+ (return-type "gboolean")
+ (parameters
+ '("xmlDoc*" "doc")
+ '("const-gchar*" "dtd_filename")
+ )
+)
+
+(define-function empathy_xml_node_get_child
+ (c-name "empathy_xml_node_get_child")
+ (return-type "xmlNodePtr")
+ (parameters
+ '("xmlNodePtr" "node")
+ '("const-gchar*" "child_name")
+ )
+)
+
+(define-function empathy_xml_node_get_child_content
+ (c-name "empathy_xml_node_get_child_content")
+ (return-type "xmlChar*")
+ (parameters
+ '("xmlNodePtr" "node")
+ '("const-gchar*" "child_name")
+ )
+)
+
+(define-function empathy_xml_node_find_child_prop_value
+ (c-name "empathy_xml_node_find_child_prop_value")
+ (return-type "xmlNodePtr")
+ (parameters
+ '("xmlNodePtr" "node")
+ '("const-gchar*" "prop_name")
+ '("const-gchar*" "prop_value")
+ )
+)
+
+(define-function empathy_account_hash
+ (c-name "empathy_account_hash")
+ (return-type "guint")
+ (parameters
+ '("gconstpointer" "key")
+ )
+)
+
+(define-function empathy_account_equal
+ (c-name "empathy_account_equal")
+ (return-type "gboolean")
+ (parameters
+ '("gconstpointer" "a")
+ '("gconstpointer" "b")
+ )
+)
+
+(define-function empathy_mission_control_new
+ (c-name "empathy_mission_control_new")
+ (is-constructor-of "EmpathyMissionControl")
+ (return-type "MissionControl*")
+)
+
+(define-function empathy_inspect_handle
+ (c-name "empathy_inspect_handle")
+ (return-type "gchar*")
+ (parameters
+ '("McAccount*" "account")
+ '("guint" "handle")
+ '("guint" "handle_type")
+ )
+)
+
+(define-function empathy_inspect_channel
+ (c-name "empathy_inspect_channel")
+ (return-type "gchar*")
+ (parameters
+ '("McAccount*" "account")
+ '("TpChan*" "tp_chan")
+ )
+)
+
+(define-function empathy_call_with_contact
+ (c-name "empathy_call_with_contact")
+ (return-type "none")
+ (parameters
+ '("EmpathyContact*" "contact")
+ )
+)
+
+(define-function empathy_call_with_contact_id
+ (c-name "empathy_call_with_contact_id")
+ (return-type "none")
+ (parameters
+ '("McAccount*" "account")
+ '("const-gchar*" "contact_id")
+ )
+)
+
+(define-function empathy_chat_with_contact
+ (c-name "empathy_chat_with_contact")
+ (return-type "none")
+ (parameters
+ '("EmpathyContact*" "contact")
+ )
+)
+
+(define-function empathy_chat_with_contact_id
+ (c-name "empathy_chat_with_contact_id")
+ (return-type "none")
+ (parameters
+ '("McAccount*" "account")
+ '("const-gchar*" "contact_id")
+ )
+)
+
+(define-function empathy_presence_get_default_message
+ (c-name "empathy_presence_get_default_message")
+ (return-type "const-gchar*")
+ (parameters
+ '("McPresence" "presence")
+ )
+)
+
+(define-function empathy_presence_to_str
+ (c-name "empathy_presence_to_str")
+ (return-type "const-gchar*")
+ (parameters
+ '("McPresence" "presence")
+ )
+)
+
+(define-function empathy_presence_from_str
+ (c-name "empathy_presence_from_str")
+ (return-type "McPresence")
+ (parameters
+ '("const-gchar*" "str")
+ )
+)
+
+
diff --git a/gnome-2-22/python/pyempathy/pyempathy.override b/gnome-2-22/python/pyempathy/pyempathy.override
new file mode 100644
index 000000000..64b65e920
--- /dev/null
+++ b/gnome-2-22/python/pyempathy/pyempathy.override
@@ -0,0 +1,64 @@
+%%
+headers
+#include <Python.h>
+#include <pygobject.h>
+#include "empathy-avatar.h"
+#include "empathy-chandler.h"
+#include "empathy-chatroom.h"
+#include "empathy-chatroom-manager.h"
+#include "empathy-contact.h"
+#include "empathy-contact-factory.h"
+#include "empathy-contact-groups.h"
+#include "empathy-contact-list.h"
+#include "empathy-contact-manager.h"
+#include "empathy-debug.h"
+#include "empathy-enum-types.h"
+#include "empathy-filter.h"
+#include "empathy-idle.h"
+#include "empathy-irc-network.h"
+#include "empathy-irc-network-manager.h"
+#include "empathy-irc-server.h"
+#include "empathy-log-manager.h"
+#include "empathy-message.h"
+#include "empathy-status-presets.h"
+#include "empathy-time.h"
+#include "empathy-tp-call.h"
+#include "empathy-tp-chat.h"
+#include "empathy-tp-chatroom.h"
+#include "empathy-tp-contact-factory.h"
+#include "empathy-tp-contact-list.h"
+#include "empathy-tp-group.h"
+#include "empathy-tp-roomlist.h"
+#include "empathy-utils.h"
+
+void empathy_add_constants(PyObject *module, const gchar *strip_prefix);
+void empathy_register_classes(PyObject *d);
+
+%%
+modulename empathy
+%%
+ignore-glob
+ *_get_type
+%%
+import gobject.GObject as PyGObject_Type
+%%
+override empathy_contact_list_get_members kwargs
+static PyObject *
+_wrap_empathy_contact_list_get_members(PyGObject *self, PyObject *args, PyObject *kwargs)
+{
+
+ PyObject *py_contacts = PyList_New(0);
+ GList *l, *contacts;
+
+ contacts = empathy_contact_list_get_members(EMPATHY_CONTACT_LIST(self->obj));
+
+ for (l = contacts; l; l = l->next) {
+ EmpathyContact *contact;
+ contact = l->data;
+ PyList_Append(py_contacts, pygobject_new((GObject *) contact));
+ }
+
+ return py_contacts;
+
+}
+%%
diff --git a/gnome-2-22/python/pyempathy/pyempathymodule.c b/gnome-2-22/python/pyempathy/pyempathymodule.c
new file mode 100644
index 000000000..118031366
--- /dev/null
+++ b/gnome-2-22/python/pyempathy/pyempathymodule.c
@@ -0,0 +1,24 @@
+#include <pygobject.h>
+
+void empathy_register_classes (PyObject *d);
+DL_EXPORT(void) initempathy(void);
+extern PyMethodDef empathy_functions[];
+
+DL_EXPORT(void)
+initempathy(void)
+{
+ PyObject *m, *d;
+
+ init_pygobject ();
+
+ m = Py_InitModule ("empathy", empathy_functions);
+ d = PyModule_GetDict (m);
+
+ empathy_register_classes (d);
+
+ if (PyErr_Occurred ()) {
+ PyErr_Print();
+ Py_FatalError ("can't initialise module empathy");
+ }
+}
+
diff --git a/gnome-2-22/python/pyempathygtk.patch b/gnome-2-22/python/pyempathygtk.patch
new file mode 100644
index 000000000..754735e81
--- /dev/null
+++ b/gnome-2-22/python/pyempathygtk.patch
@@ -0,0 +1,57 @@
+--- pyempathygtk.defs 2008-02-10 17:56:26.000000000 +0100
++++ pyempathygtk/pyempathygtk.defs 2008-02-10 17:57:11.000000000 +0100
+@@ -147,13 +147,6 @@
+ (gtype-id "EMPATHY_TYPE_THEME_MANAGER")
+ )
+
+-(define-object Spinner
+- (in-module "Ephy")
+- (parent "GtkWidget")
+- (c-name "EphySpinner")
+- (gtype-id "EPHY_TYPE_SPINNER")
+-)
+-
+ ;; Enumerations and flags ...
+
+ (define-enum ChatViewBlock
+@@ -2112,40 +2105,3 @@
+ (varargs #t)
+ )
+
+-
+-
+-;; From ephy-spinner.h
+-
+-(define-function ephy_spinner_get_type
+- (c-name "ephy_spinner_get_type")
+- (return-type "GType")
+-)
+-
+-(define-function ephy_spinner_new
+- (c-name "ephy_spinner_new")
+- (is-constructor-of "EphySpinner")
+- (return-type "GtkWidget*")
+-)
+-
+-(define-method start
+- (of-object "EphySpinner")
+- (c-name "ephy_spinner_start")
+- (return-type "none")
+-)
+-
+-(define-method stop
+- (of-object "EphySpinner")
+- (c-name "ephy_spinner_stop")
+- (return-type "none")
+-)
+-
+-(define-method set_size
+- (of-object "EphySpinner")
+- (c-name "ephy_spinner_set_size")
+- (return-type "none")
+- (parameters
+- '("GtkIconSize" "size")
+- )
+-)
+-
+-
diff --git a/gnome-2-22/python/pyempathygtk/Makefile.am b/gnome-2-22/python/pyempathygtk/Makefile.am
new file mode 100644
index 000000000..04aa5762f
--- /dev/null
+++ b/gnome-2-22/python/pyempathygtk/Makefile.am
@@ -0,0 +1,44 @@
+PYDEFS=`pkg-config --variable=defsdir pygtk-2.0`
+
+AM_CPPFLAGS = \
+ -I. \
+ -I$(top_srcdir)/libempathy-gtk \
+ -I$(top_srcdir) \
+ -DDATADIR=\""$(datadir)"\" \
+ $(PYTHON_BINDING_CFLAGS) \
+ `python-config --cflags`
+
+BUILT_SOURCES = \
+ pyempathygtk.c
+
+pyempathygtkdir = $(pyexecdir)
+pyempathygtk_LTLIBRARIES = empathygtk.la
+
+empathygtk_la_SOURCES = \
+ pyempathygtkmodule.c \
+ pyempathygtk.c
+
+empathygtk_la_LIBADD = \
+ $(PYTHON_BINDING_LIBS) \
+ $(top_builddir)/libempathy/libempathy.la \
+ $(top_builddir)/libempathy-gtk/libempathy-gtk.la
+
+empathygtk_la_LDFLAGS = \
+ `python-config --libs` \
+ -module -avoid-version
+
+pyempathygtk.c: pyempathygtk.override pyempathygtk.defs
+ pygtk-codegen-2.0 \
+ --prefix empathy \
+ --register $(PYDEFS)/gdk-types.defs \
+ --register $(PYDEFS)/gtk-types.defs \
+ --register ../pyempathy/pyempathy.defs \
+ --override pyempathygtk.override \
+ pyempathygtk.defs > $@
+
+EXTRA_DIST = \
+ pyempathygtk.override \
+ pyempathygtk.defs
+
+CLEANFILES = $(BUILT_SOURCES)
+
diff --git a/gnome-2-22/python/pyempathygtk/pyempathygtk.defs b/gnome-2-22/python/pyempathygtk/pyempathygtk.defs
new file mode 100644
index 000000000..0ba5ecbc1
--- /dev/null
+++ b/gnome-2-22/python/pyempathygtk/pyempathygtk.defs
@@ -0,0 +1,2141 @@
+;; -*- scheme -*-
+; object definitions ...
+(define-object AccountChooser
+ (in-module "Empathy")
+ (parent "GtkComboBox")
+ (c-name "EmpathyAccountChooser")
+ (gtype-id "EMPATHY_TYPE_ACCOUNT_CHOOSER")
+)
+
+(define-object AvatarChooser
+ (in-module "Empathy")
+ (parent "GtkButton")
+ (c-name "EmpathyAvatarChooser")
+ (gtype-id "EMPATHY_TYPE_AVATAR_CHOOSER")
+)
+
+(define-object AvatarImage
+ (in-module "Empathy")
+ (parent "GtkEventBox")
+ (c-name "EmpathyAvatarImage")
+ (gtype-id "EMPATHY_TYPE_AVATAR_IMAGE")
+)
+
+(define-object CellRendererActivatable
+ (in-module "Empathy")
+ (parent "GtkCellRendererPixbuf")
+ (c-name "EmpathyCellRendererActivatable")
+ (gtype-id "EMPATHY_TYPE_CELL_RENDERER_ACTIVATABLE")
+)
+
+(define-object CellRendererExpander
+ (in-module "Empathy")
+ (parent "GtkCellRenderer")
+ (c-name "EmpathyCellRendererExpander")
+ (gtype-id "EMPATHY_TYPE_CELL_RENDERER_EXPANDER")
+)
+
+(define-object CellRendererText
+ (in-module "Empathy")
+ (parent "GtkCellRendererText")
+ (c-name "EmpathyCellRendererText")
+ (gtype-id "EMPATHY_TYPE_CELL_RENDERER_TEXT")
+)
+
+(define-object Chat
+ (in-module "Empathy")
+ (parent "GObject")
+ (c-name "EmpathyChat")
+ (gtype-id "EMPATHY_TYPE_CHAT")
+)
+
+(define-object ChatView
+ (in-module "Empathy")
+ (parent "GtkTextView")
+ (c-name "EmpathyChatView")
+ (gtype-id "EMPATHY_TYPE_CHAT_VIEW")
+)
+
+(define-object ChatWindow
+ (in-module "Empathy")
+ (parent "GObject")
+ (c-name "EmpathyChatWindow")
+ (gtype-id "EMPATHY_TYPE_CHAT_WINDOW")
+)
+
+(define-object Conf
+ (in-module "Empathy")
+ (parent "GObject")
+ (c-name "EmpathyConf")
+ (gtype-id "EMPATHY_TYPE_CONF")
+)
+
+(define-object ContactListStore
+ (in-module "Empathy")
+ (parent "GtkTreeStore")
+ (c-name "EmpathyContactListStore")
+ (gtype-id "EMPATHY_TYPE_CONTACT_LIST_STORE")
+)
+
+(define-object ContactListView
+ (in-module "Empathy")
+ (parent "GtkTreeView")
+ (c-name "EmpathyContactListView")
+ (gtype-id "EMPATHY_TYPE_CONTACT_LIST_VIEW")
+)
+
+(define-object GroupChat
+ (in-module "Empathy")
+ (parent "EmpathyChat")
+ (c-name "EmpathyGroupChat")
+ (gtype-id "EMPATHY_TYPE_GROUP_CHAT")
+)
+
+(define-object PresenceChooser
+ (in-module "Empathy")
+ (parent "GtkToggleButton")
+ (c-name "EmpathyPresenceChooser")
+ (gtype-id "EMPATHY_TYPE_PRESENCE_CHOOSER")
+)
+
+(define-object PrivateChat
+ (in-module "Empathy")
+ (parent "EmpathyChat")
+ (c-name "EmpathyPrivateChat")
+ (gtype-id "EMPATHY_TYPE_PRIVATE_CHAT")
+)
+
+(define-object SmileyManager
+ (in-module "Empathy")
+ (parent "GObject")
+ (c-name "EmpathySmileyManager")
+ (gtype-id "EMPATHY_TYPE_SMILEY_MANAGER")
+)
+
+(define-object StatusIcon
+ (in-module "Empathy")
+ (parent "GObject")
+ (c-name "EmpathyStatusIcon")
+ (gtype-id "EMPATHY_TYPE_STATUS_ICON")
+)
+
+(define-object Theme
+ (in-module "Empathy")
+ (parent "GObject")
+ (c-name "EmpathyTheme")
+ (gtype-id "EMPATHY_TYPE_THEME")
+)
+
+(define-object ThemeBoxes
+ (in-module "Empathy")
+ (parent "EmpathyTheme")
+ (c-name "EmpathyThemeBoxes")
+ (gtype-id "EMPATHY_TYPE_THEME_BOXES")
+)
+
+(define-object ThemeIrc
+ (in-module "Empathy")
+ (parent "EmpathyTheme")
+ (c-name "EmpathyThemeIrc")
+ (gtype-id "EMPATHY_TYPE_THEME_IRC")
+)
+
+(define-object ThemeManager
+ (in-module "Empathy")
+ (parent "GObject")
+ (c-name "EmpathyThemeManager")
+ (gtype-id "EMPATHY_TYPE_THEME_MANAGER")
+)
+
+;; Enumerations and flags ...
+
+(define-enum ChatViewBlock
+ (in-module "Empathy")
+ (c-name "EmpathyChatViewBlock")
+ (gtype-id "EMPATHY_TYPE_CHAT_VIEW_BLOCK")
+ (values
+ '("none" "EMPATHY_CHAT_VIEW_BLOCK_NONE")
+ '("self" "EMPATHY_CHAT_VIEW_BLOCK_SELF")
+ '("other" "EMPATHY_CHAT_VIEW_BLOCK_OTHER")
+ '("event" "EMPATHY_CHAT_VIEW_BLOCK_EVENT")
+ '("time" "EMPATHY_CHAT_VIEW_BLOCK_TIME")
+ '("invite" "EMPATHY_CHAT_VIEW_BLOCK_INVITE")
+ )
+)
+
+(define-enum ContactListStoreSort
+ (in-module "Empathy")
+ (c-name "EmpathyContactListStoreSort")
+ (gtype-id "EMPATHY_TYPE_CONTACT_LIST_STORE_SORT")
+ (values
+ '("state" "EMPATHY_CONTACT_LIST_STORE_SORT_STATE")
+ '("name" "EMPATHY_CONTACT_LIST_STORE_SORT_NAME")
+ )
+)
+
+(define-enum ContactListStoreCol
+ (in-module "Empathy")
+ (c-name "EmpathyContactListStoreCol")
+ (gtype-id "EMPATHY_TYPE_CONTACT_LIST_STORE_COL")
+ (values
+ '("icon-status" "EMPATHY_CONTACT_LIST_STORE_COL_ICON_STATUS")
+ '("pixbuf-avatar" "EMPATHY_CONTACT_LIST_STORE_COL_PIXBUF_AVATAR")
+ '("pixbuf-avatar-visible" "EMPATHY_CONTACT_LIST_STORE_COL_PIXBUF_AVATAR_VISIBLE")
+ '("name" "EMPATHY_CONTACT_LIST_STORE_COL_NAME")
+ '("status" "EMPATHY_CONTACT_LIST_STORE_COL_STATUS")
+ '("status-visible" "EMPATHY_CONTACT_LIST_STORE_COL_STATUS_VISIBLE")
+ '("contact" "EMPATHY_CONTACT_LIST_STORE_COL_CONTACT")
+ '("is-group" "EMPATHY_CONTACT_LIST_STORE_COL_IS_GROUP")
+ '("is-active" "EMPATHY_CONTACT_LIST_STORE_COL_IS_ACTIVE")
+ '("is-online" "EMPATHY_CONTACT_LIST_STORE_COL_IS_ONLINE")
+ '("is-separator" "EMPATHY_CONTACT_LIST_STORE_COL_IS_SEPARATOR")
+ '("can-voip" "EMPATHY_CONTACT_LIST_STORE_COL_CAN_VOIP")
+ '("count" "EMPATHY_CONTACT_LIST_STORE_COL_COUNT")
+ )
+)
+
+(define-flags ContactListFeatures
+ (in-module "Empathy")
+ (c-name "EmpathyContactListFeatures")
+ (gtype-id "EMPATHY_TYPE_CONTACT_LIST_FEATURES")
+ (values
+ '("none" "EMPATHY_CONTACT_LIST_FEATURE_NONE")
+ '("groups-save" "EMPATHY_CONTACT_LIST_FEATURE_GROUPS_SAVE")
+ '("groups-rename" "EMPATHY_CONTACT_LIST_FEATURE_GROUPS_RENAME")
+ '("groups-remove" "EMPATHY_CONTACT_LIST_FEATURE_GROUPS_REMOVE")
+ '("contact-chat" "EMPATHY_CONTACT_LIST_FEATURE_CONTACT_CHAT")
+ '("contact-call" "EMPATHY_CONTACT_LIST_FEATURE_CONTACT_CALL")
+ '("contact-log" "EMPATHY_CONTACT_LIST_FEATURE_CONTACT_LOG")
+ '("contact-ft" "EMPATHY_CONTACT_LIST_FEATURE_CONTACT_FT")
+ '("contact-invite" "EMPATHY_CONTACT_LIST_FEATURE_CONTACT_INVITE")
+ '("contact-edit" "EMPATHY_CONTACT_LIST_FEATURE_CONTACT_EDIT")
+ '("contact-info" "EMPATHY_CONTACT_LIST_FEATURE_CONTACT_INFO")
+ '("contact-remove" "EMPATHY_CONTACT_LIST_FEATURE_CONTACT_REMOVE")
+ '("contact-drop" "EMPATHY_CONTACT_LIST_FEATURE_CONTACT_DROP")
+ '("contact-drag" "EMPATHY_CONTACT_LIST_FEATURE_CONTACT_DRAG")
+ '("all" "EMPATHY_CONTACT_LIST_FEATURE_ALL")
+ )
+)
+
+(define-flags ContactWidgetFlags
+ (in-module "Empathy")
+ (c-name "EmpathyContactWidgetFlags")
+ (gtype-id "EMPATHY_TYPE_CONTACT_WIDGET_FLAGS")
+ (values
+ '("none" "EMPATHY_CONTACT_WIDGET_EDIT_NONE")
+ '("alias" "EMPATHY_CONTACT_WIDGET_EDIT_ALIAS")
+ '("avatar" "EMPATHY_CONTACT_WIDGET_EDIT_AVATAR")
+ '("account" "EMPATHY_CONTACT_WIDGET_EDIT_ACCOUNT")
+ '("id" "EMPATHY_CONTACT_WIDGET_EDIT_ID")
+ '("groups" "EMPATHY_CONTACT_WIDGET_EDIT_GROUPS")
+ )
+)
+
+
+;; From empathy-about-dialog.h
+
+(define-function empathy_about_dialog_new
+ (c-name "empathy_about_dialog_new")
+ (return-type "none")
+ (parameters
+ '("GtkWindow*" "parent")
+ )
+)
+
+
+
+;; From empathy-account-chooser.h
+
+(define-function empathy_account_chooser_get_type
+ (c-name "empathy_account_chooser_get_type")
+ (return-type "GType")
+)
+
+(define-function empathy_account_chooser_new
+ (c-name "empathy_account_chooser_new")
+ (is-constructor-of "EmpathyAccountChooser")
+ (return-type "GtkWidget*")
+)
+
+(define-method get_account
+ (of-object "EmpathyAccountChooser")
+ (c-name "empathy_account_chooser_get_account")
+ (return-type "McAccount*")
+)
+
+(define-method set_account
+ (of-object "EmpathyAccountChooser")
+ (c-name "empathy_account_chooser_set_account")
+ (return-type "gboolean")
+ (parameters
+ '("McAccount*" "account")
+ )
+)
+
+(define-method get_has_all_option
+ (of-object "EmpathyAccountChooser")
+ (c-name "empathy_account_chooser_get_has_all_option")
+ (return-type "gboolean")
+)
+
+(define-method set_has_all_option
+ (of-object "EmpathyAccountChooser")
+ (c-name "empathy_account_chooser_set_has_all_option")
+ (return-type "none")
+ (parameters
+ '("gboolean" "has_all_option")
+ )
+)
+
+(define-method set_filter
+ (of-object "EmpathyAccountChooser")
+ (c-name "empathy_account_chooser_set_filter")
+ (return-type "none")
+ (parameters
+ '("EmpathyAccountChooserFilterFunc" "filter")
+ '("gpointer" "user_data")
+ )
+)
+
+(define-function empathy_account_chooser_filter_is_connected
+ (c-name "empathy_account_chooser_filter_is_connected")
+ (return-type "gboolean")
+ (parameters
+ '("McAccount*" "account")
+ '("gpointer" "user_data")
+ )
+)
+
+
+
+;; From empathy-accounts-dialog.h
+
+(define-function empathy_accounts_dialog_show
+ (c-name "empathy_accounts_dialog_show")
+ (return-type "GtkWidget*")
+ (parameters
+ '("GtkWindow*" "parent")
+ )
+)
+
+
+
+;; From empathy-account-widget.h
+
+(define-function empathy_account_widget_handle_params
+ (c-name "empathy_account_widget_handle_params")
+ (return-type "none")
+ (parameters
+ '("McAccount*" "account")
+ '("GladeXML*" "glade")
+ '("const-gchar*" "first_widget_name")
+ )
+ (varargs #t)
+)
+
+(define-function empathy_account_widget_add_forget_button
+ (c-name "empathy_account_widget_add_forget_button")
+ (return-type "none")
+ (parameters
+ '("McAccount*" "account")
+ '("GladeXML*" "glade")
+ '("const-gchar*" "button")
+ '("const-gchar*" "entry")
+ )
+)
+
+(define-function empathy_account_widget_generic_new
+ (c-name "empathy_account_widget_generic_new")
+ (is-constructor-of "EmpathyAccountWidgetGeneric")
+ (return-type "GtkWidget*")
+ (parameters
+ '("McAccount*" "account")
+ )
+)
+
+(define-function empathy_account_widget_salut_new
+ (c-name "empathy_account_widget_salut_new")
+ (is-constructor-of "EmpathyAccountWidgetSalut")
+ (return-type "GtkWidget*")
+ (parameters
+ '("McAccount*" "account")
+ )
+)
+
+(define-function empathy_account_widget_msn_new
+ (c-name "empathy_account_widget_msn_new")
+ (is-constructor-of "EmpathyAccountWidgetMsn")
+ (return-type "GtkWidget*")
+ (parameters
+ '("McAccount*" "account")
+ )
+)
+
+(define-function empathy_account_widget_jabber_new
+ (c-name "empathy_account_widget_jabber_new")
+ (is-constructor-of "EmpathyAccountWidgetJabber")
+ (return-type "GtkWidget*")
+ (parameters
+ '("McAccount*" "account")
+ )
+)
+
+(define-function empathy_account_widget_icq_new
+ (c-name "empathy_account_widget_icq_new")
+ (is-constructor-of "EmpathyAccountWidgetIcq")
+ (return-type "GtkWidget*")
+ (parameters
+ '("McAccount*" "account")
+ )
+)
+
+(define-function empathy_account_widget_yahoo_new
+ (c-name "empathy_account_widget_yahoo_new")
+ (is-constructor-of "EmpathyAccountWidgetYahoo")
+ (return-type "GtkWidget*")
+ (parameters
+ '("McAccount*" "account")
+ )
+)
+
+
+
+;; From empathy-account-widget-irc.h
+
+(define-function empathy_account_widget_irc_new
+ (c-name "empathy_account_widget_irc_new")
+ (is-constructor-of "EmpathyAccountWidgetIrc")
+ (return-type "GtkWidget*")
+ (parameters
+ '("McAccount*" "account")
+ )
+)
+
+
+
+;; From empathy-avatar-chooser.h
+
+(define-function empathy_avatar_chooser_get_type
+ (c-name "empathy_avatar_chooser_get_type")
+ (return-type "GType")
+)
+
+(define-function empathy_avatar_chooser_new
+ (c-name "empathy_avatar_chooser_new")
+ (is-constructor-of "EmpathyAvatarChooser")
+ (return-type "GtkWidget*")
+)
+
+(define-method set
+ (of-object "EmpathyAvatarChooser")
+ (c-name "empathy_avatar_chooser_set")
+ (return-type "none")
+ (parameters
+ '("EmpathyAvatar*" "avatar")
+ )
+)
+
+(define-method get_image_data
+ (of-object "EmpathyAvatarChooser")
+ (c-name "empathy_avatar_chooser_get_image_data")
+ (return-type "none")
+ (parameters
+ '("const-gchar**" "data")
+ '("gsize*" "data_size")
+ '("const-gchar**" "mime_type")
+ )
+)
+
+
+
+;; From empathy-avatar-image.h
+
+(define-function empathy_avatar_image_get_type
+ (c-name "empathy_avatar_image_get_type")
+ (return-type "GType")
+)
+
+(define-function empathy_avatar_image_new
+ (c-name "empathy_avatar_image_new")
+ (is-constructor-of "EmpathyAvatarImage")
+ (return-type "GtkWidget*")
+)
+
+(define-method set
+ (of-object "EmpathyAvatarImage")
+ (c-name "empathy_avatar_image_set")
+ (return-type "none")
+ (parameters
+ '("EmpathyAvatar*" "avatar")
+ )
+)
+
+
+
+;; From empathy-call-window.h
+
+(define-function empathy_call_window_new
+ (c-name "empathy_call_window_new")
+ (is-constructor-of "EmpathyCallWindow")
+ (return-type "GtkWidget*")
+ (parameters
+ '("EmpathyTpCall*" "call")
+ )
+)
+
+
+
+;; From empathy-cell-renderer-activatable.h
+
+(define-function empathy_cell_renderer_activatable_get_type
+ (c-name "empathy_cell_renderer_activatable_get_type")
+ (return-type "GType")
+)
+
+(define-function empathy_cell_renderer_activatable_new
+ (c-name "empathy_cell_renderer_activatable_new")
+ (is-constructor-of "EmpathyCellRendererActivatable")
+ (return-type "GtkCellRenderer*")
+)
+
+
+
+;; From empathy-cell-renderer-expander.h
+
+(define-function empathy_cell_renderer_expander_get_type
+ (c-name "empathy_cell_renderer_expander_get_type")
+ (return-type "GType")
+)
+
+(define-function empathy_cell_renderer_expander_new
+ (c-name "empathy_cell_renderer_expander_new")
+ (is-constructor-of "EmpathyCellRendererExpander")
+ (return-type "GtkCellRenderer*")
+)
+
+
+
+;; From empathy-cell-renderer-text.h
+
+(define-function empathy_cell_renderer_text_get_type
+ (c-name "empathy_cell_renderer_text_get_type")
+ (return-type "GType")
+)
+
+(define-function empathy_cell_renderer_text_new
+ (c-name "empathy_cell_renderer_text_new")
+ (is-constructor-of "EmpathyCellRendererText")
+ (return-type "GtkCellRenderer*")
+)
+
+
+
+;; From empathy-chat.h
+
+(define-function empathy_chat_get_type
+ (c-name "empathy_chat_get_type")
+ (return-type "GType")
+)
+
+(define-method get_view
+ (of-object "EmpathyChat")
+ (c-name "empathy_chat_get_view")
+ (return-type "EmpathyChatView*")
+)
+
+(define-method get_window
+ (of-object "EmpathyChat")
+ (c-name "empathy_chat_get_window")
+ (return-type "EmpathyChatWindow*")
+)
+
+(define-method set_window
+ (of-object "EmpathyChat")
+ (c-name "empathy_chat_set_window")
+ (return-type "none")
+ (parameters
+ '("EmpathyChatWindow*" "window")
+ )
+)
+
+(define-method present
+ (of-object "EmpathyChat")
+ (c-name "empathy_chat_present")
+ (return-type "none")
+)
+
+(define-method clear
+ (of-object "EmpathyChat")
+ (c-name "empathy_chat_clear")
+ (return-type "none")
+)
+
+(define-method scroll_down
+ (of-object "EmpathyChat")
+ (c-name "empathy_chat_scroll_down")
+ (return-type "none")
+)
+
+(define-method cut
+ (of-object "EmpathyChat")
+ (c-name "empathy_chat_cut")
+ (return-type "none")
+)
+
+(define-method copy
+ (of-object "EmpathyChat")
+ (c-name "empathy_chat_copy")
+ (return-type "none")
+)
+
+(define-method paste
+ (of-object "EmpathyChat")
+ (c-name "empathy_chat_paste")
+ (return-type "none")
+)
+
+(define-method get_name
+ (of-object "EmpathyChat")
+ (c-name "empathy_chat_get_name")
+ (return-type "const-gchar*")
+)
+
+(define-method get_tooltip
+ (of-object "EmpathyChat")
+ (c-name "empathy_chat_get_tooltip")
+ (return-type "gchar*")
+)
+
+(define-method get_status_icon_name
+ (of-object "EmpathyChat")
+ (c-name "empathy_chat_get_status_icon_name")
+ (return-type "const-gchar*")
+)
+
+(define-method get_widget
+ (of-object "EmpathyChat")
+ (c-name "empathy_chat_get_widget")
+ (return-type "GtkWidget*")
+)
+
+(define-method is_group_chat
+ (of-object "EmpathyChat")
+ (c-name "empathy_chat_is_group_chat")
+ (return-type "gboolean")
+)
+
+(define-method is_connected
+ (of-object "EmpathyChat")
+ (c-name "empathy_chat_is_connected")
+ (return-type "gboolean")
+)
+
+(define-method save_geometry
+ (of-object "EmpathyChat")
+ (c-name "empathy_chat_save_geometry")
+ (return-type "none")
+ (parameters
+ '("gint" "x")
+ '("gint" "y")
+ '("gint" "w")
+ '("gint" "h")
+ )
+)
+
+(define-method load_geometry
+ (of-object "EmpathyChat")
+ (c-name "empathy_chat_load_geometry")
+ (return-type "none")
+ (parameters
+ '("gint*" "x")
+ '("gint*" "y")
+ '("gint*" "w")
+ '("gint*" "h")
+ )
+)
+
+(define-method set_tp_chat
+ (of-object "EmpathyChat")
+ (c-name "empathy_chat_set_tp_chat")
+ (return-type "none")
+ (parameters
+ '("EmpathyTpChat*" "tp_chat")
+ )
+)
+
+(define-method get_id
+ (of-object "EmpathyChat")
+ (c-name "empathy_chat_get_id")
+ (return-type "const-gchar*")
+)
+
+(define-method get_account
+ (of-object "EmpathyChat")
+ (c-name "empathy_chat_get_account")
+ (return-type "McAccount*")
+)
+
+(define-function empathy_chat_get_is_command
+ (c-name "empathy_chat_get_is_command")
+ (return-type "gboolean")
+ (parameters
+ '("const-gchar*" "str")
+ )
+)
+
+(define-method correct_word
+ (of-object "EmpathyChat")
+ (c-name "empathy_chat_correct_word")
+ (return-type "none")
+ (parameters
+ '("GtkTextIter" "start")
+ '("GtkTextIter" "end")
+ '("const-gchar*" "new_word")
+ )
+)
+
+(define-method should_play_sound
+ (of-object "EmpathyChat")
+ (c-name "empathy_chat_should_play_sound")
+ (return-type "gboolean")
+)
+
+(define-function empathy_chat_should_highlight_nick
+ (c-name "empathy_chat_should_highlight_nick")
+ (return-type "gboolean")
+ (parameters
+ '("EmpathyMessage*" "message")
+ )
+)
+
+
+
+;; From empathy-chatrooms-window.h
+
+(define-function empathy_chatrooms_window_show
+ (c-name "empathy_chatrooms_window_show")
+ (return-type "none")
+ (parameters
+ '("GtkWindow*" "parent")
+ )
+)
+
+
+
+;; From empathy-chat-view.h
+
+(define-function empathy_chat_view_get_type
+ (c-name "empathy_chat_view_get_type")
+ (return-type "GType")
+)
+
+(define-function empathy_chat_view_new
+ (c-name "empathy_chat_view_new")
+ (is-constructor-of "EmpathyChatView")
+ (return-type "EmpathyChatView*")
+)
+
+(define-method append_message
+ (of-object "EmpathyChatView")
+ (c-name "empathy_chat_view_append_message")
+ (return-type "none")
+ (parameters
+ '("EmpathyMessage*" "msg")
+ )
+)
+
+(define-method append_event
+ (of-object "EmpathyChatView")
+ (c-name "empathy_chat_view_append_event")
+ (return-type "none")
+ (parameters
+ '("const-gchar*" "str")
+ )
+)
+
+(define-method append_button
+ (of-object "EmpathyChatView")
+ (c-name "empathy_chat_view_append_button")
+ (return-type "none")
+ (parameters
+ '("const-gchar*" "message")
+ '("GtkWidget*" "button1")
+ '("GtkWidget*" "button2")
+ )
+)
+
+(define-method set_margin
+ (of-object "EmpathyChatView")
+ (c-name "empathy_chat_view_set_margin")
+ (return-type "none")
+ (parameters
+ '("gint" "margin")
+ )
+)
+
+(define-method scroll
+ (of-object "EmpathyChatView")
+ (c-name "empathy_chat_view_scroll")
+ (return-type "none")
+ (parameters
+ '("gboolean" "allow_scrolling")
+ )
+)
+
+(define-method scroll_down
+ (of-object "EmpathyChatView")
+ (c-name "empathy_chat_view_scroll_down")
+ (return-type "none")
+)
+
+(define-method get_selection_bounds
+ (of-object "EmpathyChatView")
+ (c-name "empathy_chat_view_get_selection_bounds")
+ (return-type "gboolean")
+ (parameters
+ '("GtkTextIter*" "start")
+ '("GtkTextIter*" "end")
+ )
+)
+
+(define-method clear
+ (of-object "EmpathyChatView")
+ (c-name "empathy_chat_view_clear")
+ (return-type "none")
+)
+
+(define-method find_previous
+ (of-object "EmpathyChatView")
+ (c-name "empathy_chat_view_find_previous")
+ (return-type "gboolean")
+ (parameters
+ '("const-gchar*" "search_criteria")
+ '("gboolean" "new_search")
+ )
+)
+
+(define-method find_next
+ (of-object "EmpathyChatView")
+ (c-name "empathy_chat_view_find_next")
+ (return-type "gboolean")
+ (parameters
+ '("const-gchar*" "search_criteria")
+ '("gboolean" "new_search")
+ )
+)
+
+(define-method find_abilities
+ (of-object "EmpathyChatView")
+ (c-name "empathy_chat_view_find_abilities")
+ (return-type "none")
+ (parameters
+ '("const-gchar*" "search_criteria")
+ '("gboolean*" "can_do_previous")
+ '("gboolean*" "can_do_next")
+ )
+)
+
+(define-method highlight
+ (of-object "EmpathyChatView")
+ (c-name "empathy_chat_view_highlight")
+ (return-type "none")
+ (parameters
+ '("const-gchar*" "text")
+ )
+)
+
+(define-method copy_clipboard
+ (of-object "EmpathyChatView")
+ (c-name "empathy_chat_view_copy_clipboard")
+ (return-type "none")
+)
+
+(define-method get_theme
+ (of-object "EmpathyChatView")
+ (c-name "empathy_chat_view_get_theme")
+ (return-type "EmpathyTheme*")
+)
+
+(define-method set_theme
+ (of-object "EmpathyChatView")
+ (c-name "empathy_chat_view_set_theme")
+ (return-type "none")
+ (parameters
+ '("EmpathyTheme*" "theme")
+ )
+)
+
+(define-method set_margin
+ (of-object "EmpathyChatView")
+ (c-name "empathy_chat_view_set_margin")
+ (return-type "none")
+ (parameters
+ '("gint" "margin")
+ )
+)
+
+(define-function empathy_chat_view_get_smiley_menu
+ (c-name "empathy_chat_view_get_smiley_menu")
+ (return-type "GtkWidget*")
+ (parameters
+ '("GCallback" "callback")
+ '("gpointer" "user_data")
+ )
+)
+
+(define-method set_is_group_chat
+ (of-object "EmpathyChatView")
+ (c-name "empathy_chat_view_set_is_group_chat")
+ (return-type "none")
+ (parameters
+ '("gboolean" "is_group_chat")
+ )
+)
+
+(define-method get_last_timestamp
+ (of-object "EmpathyChatView")
+ (c-name "empathy_chat_view_get_last_timestamp")
+ (return-type "time_t")
+)
+
+(define-method set_last_timestamp
+ (of-object "EmpathyChatView")
+ (c-name "empathy_chat_view_set_last_timestamp")
+ (return-type "none")
+ (parameters
+ '("time_t" "timestamp")
+ )
+)
+
+(define-method get_last_block_type
+ (of-object "EmpathyChatView")
+ (c-name "empathy_chat_view_get_last_block_type")
+ (return-type "EmpathyChatViewBlock")
+)
+
+(define-method set_last_block_type
+ (of-object "EmpathyChatView")
+ (c-name "empathy_chat_view_set_last_block_type")
+ (return-type "none")
+ (parameters
+ '("EmpathyChatViewBlock" "block_type")
+ )
+)
+
+(define-method get_last_contact
+ (of-object "EmpathyChatView")
+ (c-name "empathy_chat_view_get_last_contact")
+ (return-type "EmpathyContact*")
+)
+
+(define-method set_last_contact
+ (of-object "EmpathyChatView")
+ (c-name "empathy_chat_view_set_last_contact")
+ (return-type "none")
+ (parameters
+ '("EmpathyContact*" "contact")
+ )
+)
+
+(define-function empathy_chat_view_get_avatar_pixbuf_with_cache
+ (c-name "empathy_chat_view_get_avatar_pixbuf_with_cache")
+ (return-type "GdkPixbuf*")
+ (parameters
+ '("EmpathyContact*" "contact")
+ )
+)
+
+
+
+;; From empathy-chat-window.h
+
+(define-function empathy_chat_window_get_type
+ (c-name "empathy_chat_window_get_type")
+ (return-type "GType")
+)
+
+(define-function empathy_chat_window_get_default
+ (c-name "empathy_chat_window_get_default")
+ (return-type "EmpathyChatWindow*")
+)
+
+(define-function empathy_chat_window_new
+ (c-name "empathy_chat_window_new")
+ (is-constructor-of "EmpathyChatWindow")
+ (return-type "EmpathyChatWindow*")
+)
+
+(define-method get_dialog
+ (of-object "EmpathyChatWindow")
+ (c-name "empathy_chat_window_get_dialog")
+ (return-type "GtkWidget*")
+)
+
+(define-method add_chat
+ (of-object "EmpathyChatWindow")
+ (c-name "empathy_chat_window_add_chat")
+ (return-type "none")
+ (parameters
+ '("EmpathyChat*" "chat")
+ )
+)
+
+(define-method remove_chat
+ (of-object "EmpathyChatWindow")
+ (c-name "empathy_chat_window_remove_chat")
+ (return-type "none")
+ (parameters
+ '("EmpathyChat*" "chat")
+ )
+)
+
+(define-method move_chat
+ (of-object "EmpathyChatWindow")
+ (c-name "empathy_chat_window_move_chat")
+ (return-type "none")
+ (parameters
+ '("EmpathyChatWindow*" "new_window")
+ '("EmpathyChat*" "chat")
+ )
+)
+
+(define-method switch_to_chat
+ (of-object "EmpathyChatWindow")
+ (c-name "empathy_chat_window_switch_to_chat")
+ (return-type "none")
+ (parameters
+ '("EmpathyChat*" "chat")
+ )
+)
+
+(define-method has_focus
+ (of-object "EmpathyChatWindow")
+ (c-name "empathy_chat_window_has_focus")
+ (return-type "gboolean")
+)
+
+(define-function empathy_chat_window_find_chat
+ (c-name "empathy_chat_window_find_chat")
+ (return-type "EmpathyChat*")
+ (parameters
+ '("McAccount*" "account")
+ '("const-gchar*" "id")
+ )
+)
+
+
+
+;; From empathy-conf.h
+
+(define-function empathy_conf_get_type
+ (c-name "empathy_conf_get_type")
+ (return-type "GType")
+)
+
+(define-function empathy_conf_get
+ (c-name "empathy_conf_get")
+ (return-type "EmpathyConf*")
+)
+
+(define-function empathy_conf_shutdown
+ (c-name "empathy_conf_shutdown")
+ (return-type "none")
+)
+
+(define-method notify_add
+ (of-object "EmpathyConf")
+ (c-name "empathy_conf_notify_add")
+ (return-type "guint")
+ (parameters
+ '("const-gchar*" "key")
+ '("EmpathyConfNotifyFunc" "func")
+ '("gpointer" "data")
+ )
+)
+
+(define-method notify_remove
+ (of-object "EmpathyConf")
+ (c-name "empathy_conf_notify_remove")
+ (return-type "gboolean")
+ (parameters
+ '("guint" "id")
+ )
+)
+
+(define-method set_int
+ (of-object "EmpathyConf")
+ (c-name "empathy_conf_set_int")
+ (return-type "gboolean")
+ (parameters
+ '("const-gchar*" "key")
+ '("gint" "value")
+ )
+)
+
+(define-method get_int
+ (of-object "EmpathyConf")
+ (c-name "empathy_conf_get_int")
+ (return-type "gboolean")
+ (parameters
+ '("const-gchar*" "key")
+ '("gint*" "value")
+ )
+)
+
+(define-method set_bool
+ (of-object "EmpathyConf")
+ (c-name "empathy_conf_set_bool")
+ (return-type "gboolean")
+ (parameters
+ '("const-gchar*" "key")
+ '("gboolean" "value")
+ )
+)
+
+(define-method get_bool
+ (of-object "EmpathyConf")
+ (c-name "empathy_conf_get_bool")
+ (return-type "gboolean")
+ (parameters
+ '("const-gchar*" "key")
+ '("gboolean*" "value")
+ )
+)
+
+(define-method set_string
+ (of-object "EmpathyConf")
+ (c-name "empathy_conf_set_string")
+ (return-type "gboolean")
+ (parameters
+ '("const-gchar*" "key")
+ '("const-gchar*" "value")
+ )
+)
+
+(define-method get_string
+ (of-object "EmpathyConf")
+ (c-name "empathy_conf_get_string")
+ (return-type "gboolean")
+ (parameters
+ '("const-gchar*" "key")
+ '("gchar**" "value")
+ )
+)
+
+(define-method set_string_list
+ (of-object "EmpathyConf")
+ (c-name "empathy_conf_set_string_list")
+ (return-type "gboolean")
+ (parameters
+ '("const-gchar*" "key")
+ '("GSList*" "value")
+ )
+)
+
+(define-method get_string_list
+ (of-object "EmpathyConf")
+ (c-name "empathy_conf_get_string_list")
+ (return-type "gboolean")
+ (parameters
+ '("const-gchar*" "key")
+ '("GSList**" "value")
+ )
+)
+
+
+
+;; From empathy-contact-dialogs.h
+
+(define-function empathy_subscription_dialog_show
+ (c-name "empathy_subscription_dialog_show")
+ (return-type "none")
+ (parameters
+ '("EmpathyContact*" "contact")
+ '("GtkWindow*" "parent")
+ )
+)
+
+(define-method information_dialog_show
+ (of-object "EmpathyContact")
+ (c-name "empathy_contact_information_dialog_show")
+ (return-type "none")
+ (parameters
+ '("GtkWindow*" "parent")
+ '("gboolean" "edit")
+ '("gboolean" "is_user")
+ )
+)
+
+(define-function empathy_new_contact_dialog_show
+ (c-name "empathy_new_contact_dialog_show")
+ (return-type "none")
+ (parameters
+ '("GtkWindow*" "parent")
+ )
+)
+
+
+
+;; From empathy-contact-list-store.h
+
+(define-function empathy_contact_list_store_get_type
+ (c-name "empathy_contact_list_store_get_type")
+ (return-type "GType")
+)
+
+(define-method store_new
+ (of-object "EmpathyContactList")
+ (c-name "empathy_contact_list_store_new")
+ (return-type "EmpathyContactListStore*")
+)
+
+(define-method get_list_iface
+ (of-object "EmpathyContactListStore")
+ (c-name "empathy_contact_list_store_get_list_iface")
+ (return-type "EmpathyContactList*")
+)
+
+(define-method get_show_offline
+ (of-object "EmpathyContactListStore")
+ (c-name "empathy_contact_list_store_get_show_offline")
+ (return-type "gboolean")
+)
+
+(define-method set_show_offline
+ (of-object "EmpathyContactListStore")
+ (c-name "empathy_contact_list_store_set_show_offline")
+ (return-type "none")
+ (parameters
+ '("gboolean" "show_offline")
+ )
+)
+
+(define-method get_show_avatars
+ (of-object "EmpathyContactListStore")
+ (c-name "empathy_contact_list_store_get_show_avatars")
+ (return-type "gboolean")
+)
+
+(define-method set_show_avatars
+ (of-object "EmpathyContactListStore")
+ (c-name "empathy_contact_list_store_set_show_avatars")
+ (return-type "none")
+ (parameters
+ '("gboolean" "show_avatars")
+ )
+)
+
+(define-method get_show_groups
+ (of-object "EmpathyContactListStore")
+ (c-name "empathy_contact_list_store_get_show_groups")
+ (return-type "gboolean")
+)
+
+(define-method set_show_groups
+ (of-object "EmpathyContactListStore")
+ (c-name "empathy_contact_list_store_set_show_groups")
+ (return-type "none")
+ (parameters
+ '("gboolean" "show_groups")
+ )
+)
+
+(define-method get_is_compact
+ (of-object "EmpathyContactListStore")
+ (c-name "empathy_contact_list_store_get_is_compact")
+ (return-type "gboolean")
+)
+
+(define-method set_is_compact
+ (of-object "EmpathyContactListStore")
+ (c-name "empathy_contact_list_store_set_is_compact")
+ (return-type "none")
+ (parameters
+ '("gboolean" "is_compact")
+ )
+)
+
+(define-method get_sort_criterium
+ (of-object "EmpathyContactListStore")
+ (c-name "empathy_contact_list_store_get_sort_criterium")
+ (return-type "EmpathyContactListStoreSort")
+)
+
+(define-method set_sort_criterium
+ (of-object "EmpathyContactListStore")
+ (c-name "empathy_contact_list_store_set_sort_criterium")
+ (return-type "none")
+ (parameters
+ '("EmpathyContactListStoreSort" "sort_criterium")
+ )
+)
+
+(define-function empathy_contact_list_store_row_separator_func
+ (c-name "empathy_contact_list_store_row_separator_func")
+ (return-type "gboolean")
+ (parameters
+ '("GtkTreeModel*" "model")
+ '("GtkTreeIter*" "iter")
+ '("gpointer" "data")
+ )
+)
+
+(define-function empathy_contact_list_store_get_parent_group
+ (c-name "empathy_contact_list_store_get_parent_group")
+ (return-type "gchar*")
+ (parameters
+ '("GtkTreeModel*" "model")
+ '("GtkTreePath*" "path")
+ '("gboolean*" "path_is_group")
+ )
+)
+
+(define-function empathy_contact_list_store_search_equal_func
+ (c-name "empathy_contact_list_store_search_equal_func")
+ (return-type "gboolean")
+ (parameters
+ '("GtkTreeModel*" "model")
+ '("gint" "column")
+ '("const-gchar*" "key")
+ '("GtkTreeIter*" "iter")
+ '("gpointer" "search_data")
+ )
+)
+
+
+
+;; From empathy-contact-list-view.h
+
+(define-function empathy_contact_list_view_get_type
+ (c-name "empathy_contact_list_view_get_type")
+ (return-type "GType")
+)
+
+(define-function empathy_contact_list_view_new
+ (c-name "empathy_contact_list_view_new")
+ (is-constructor-of "EmpathyContactListView")
+ (return-type "EmpathyContactListView*")
+ (parameters
+ '("EmpathyContactListStore*" "store")
+ '("EmpathyContactListFeatures" "features")
+ )
+)
+
+(define-method set_features
+ (of-object "EmpathyContactListView")
+ (c-name "empathy_contact_list_view_set_features")
+ (return-type "none")
+ (parameters
+ '("EmpathyContactListFeatures" "features")
+ )
+)
+
+(define-method get_features
+ (of-object "EmpathyContactListView")
+ (c-name "empathy_contact_list_view_get_features")
+ (return-type "EmpathyContactListFeatures")
+)
+
+(define-method get_selected
+ (of-object "EmpathyContactListView")
+ (c-name "empathy_contact_list_view_get_selected")
+ (return-type "EmpathyContact*")
+)
+
+(define-method get_selected_group
+ (of-object "EmpathyContactListView")
+ (c-name "empathy_contact_list_view_get_selected_group")
+ (return-type "gchar*")
+)
+
+(define-method get_contact_menu
+ (of-object "EmpathyContactListView")
+ (c-name "empathy_contact_list_view_get_contact_menu")
+ (return-type "GtkWidget*")
+ (parameters
+ '("EmpathyContact*" "contact")
+ )
+)
+
+(define-method get_group_menu
+ (of-object "EmpathyContactListView")
+ (c-name "empathy_contact_list_view_get_group_menu")
+ (return-type "GtkWidget*")
+)
+
+
+
+;; From empathy-contact-widget.h
+
+(define-method widget_new
+ (of-object "EmpathyContact")
+ (c-name "empathy_contact_widget_new")
+ (return-type "GtkWidget*")
+ (parameters
+ '("EmpathyContactWidgetFlags" "flags")
+ )
+)
+
+(define-function empathy_contact_widget_get_contact
+ (c-name "empathy_contact_widget_get_contact")
+ (return-type "EmpathyContact*")
+ (parameters
+ '("GtkWidget*" "widget")
+ )
+)
+
+(define-function empathy_contact_widget_set_contact
+ (c-name "empathy_contact_widget_set_contact")
+ (return-type "none")
+ (parameters
+ '("GtkWidget*" "widget")
+ '("EmpathyContact*" "contact")
+ )
+)
+
+(define-function empathy_contact_widget_set_account_filter
+ (c-name "empathy_contact_widget_set_account_filter")
+ (return-type "none")
+ (parameters
+ '("GtkWidget*" "widget")
+ '("EmpathyAccountChooserFilterFunc" "filter")
+ '("gpointer" "user_data")
+ )
+)
+
+
+
+;; From empathy-geometry.h
+
+(define-function empathy_geometry_save
+ (c-name "empathy_geometry_save")
+ (return-type "none")
+ (parameters
+ '("const-gchar*" "name")
+ '("gint" "x")
+ '("gint" "y")
+ '("gint" "w")
+ '("gint" "h")
+ )
+)
+
+(define-function empathy_geometry_load
+ (c-name "empathy_geometry_load")
+ (return-type "none")
+ (parameters
+ '("const-gchar*" "name")
+ '("gint*" "x")
+ '("gint*" "y")
+ '("gint*" "w")
+ '("gint*" "h")
+ )
+)
+
+
+
+;; From empathy-group-chat.h
+
+(define-function empathy_group_chat_get_type
+ (c-name "empathy_group_chat_get_type")
+ (return-type "GType")
+)
+
+(define-function empathy_group_chat_new
+ (c-name "empathy_group_chat_new")
+ (is-constructor-of "EmpathyGroupChat")
+ (return-type "EmpathyGroupChat*")
+ (parameters
+ '("EmpathyTpChatroom*" "tp_chat")
+ )
+)
+
+(define-method get_show_contacts
+ (of-object "EmpathyGroupChat")
+ (c-name "empathy_group_chat_get_show_contacts")
+ (return-type "gboolean")
+)
+
+(define-method set_show_contacts
+ (of-object "EmpathyGroupChat")
+ (c-name "empathy_group_chat_set_show_contacts")
+ (return-type "none")
+ (parameters
+ '("gboolean" "show")
+ )
+)
+
+(define-method set_topic
+ (of-object "EmpathyGroupChat")
+ (c-name "empathy_group_chat_set_topic")
+ (return-type "none")
+)
+
+
+
+;; From empathy-images.h
+
+
+
+;; From empathy-irc-network-dialog.h
+
+(define-method dialog_show
+ (of-object "EmpathyIrcNetwork")
+ (c-name "empathy_irc_network_dialog_show")
+ (return-type "GtkWidget*")
+ (parameters
+ '("GtkWidget*" "parent")
+ )
+)
+
+
+
+;; From empathy-log-window.h
+
+(define-function empathy_log_window_show
+ (c-name "empathy_log_window_show")
+ (return-type "GtkWidget*")
+ (parameters
+ '("McAccount*" "account")
+ '("const-gchar*" "chat_id")
+ '("gboolean" "chatroom")
+ '("GtkWindow*" "parent")
+ )
+)
+
+
+
+;; From empathy-main-window.h
+
+(define-function empathy_main_window_show
+ (c-name "empathy_main_window_show")
+ (return-type "GtkWidget*")
+)
+
+
+
+;; From empathy-new-chatroom-dialog.h
+
+(define-function empathy_new_chatroom_dialog_show
+ (c-name "empathy_new_chatroom_dialog_show")
+ (return-type "none")
+ (parameters
+ '("GtkWindow*" "parent")
+ )
+)
+
+
+
+;; From empathy-new-message-dialog.h
+
+(define-function empathy_new_message_dialog_show
+ (c-name "empathy_new_message_dialog_show")
+ (return-type "GtkWidget*")
+ (parameters
+ '("GtkWindow*" "parent")
+ )
+)
+
+
+
+;; From empathy-preferences.h
+
+(define-function empathy_preferences_show
+ (c-name "empathy_preferences_show")
+ (return-type "GtkWidget*")
+ (parameters
+ '("GtkWindow*" "parent")
+ )
+)
+
+
+
+;; From empathy-presence-chooser.h
+
+(define-function empathy_presence_chooser_get_type
+ (c-name "empathy_presence_chooser_get_type")
+ (return-type "GType")
+)
+
+(define-function empathy_presence_chooser_new
+ (c-name "empathy_presence_chooser_new")
+ (is-constructor-of "EmpathyPresenceChooser")
+ (return-type "GtkWidget*")
+)
+
+(define-function empathy_presence_chooser_create_menu
+ (c-name "empathy_presence_chooser_create_menu")
+ (return-type "GtkWidget*")
+)
+
+
+
+;; From empathy-private-chat.h
+
+(define-function empathy_private_chat_get_type
+ (c-name "empathy_private_chat_get_type")
+ (return-type "GType")
+)
+
+(define-function empathy_private_chat_new
+ (c-name "empathy_private_chat_new")
+ (is-constructor-of "EmpathyPrivateChat")
+ (return-type "EmpathyPrivateChat*")
+ (parameters
+ '("EmpathyTpChat*" "tp_chat")
+ )
+)
+
+(define-method get_contact
+ (of-object "EmpathyPrivateChat")
+ (c-name "empathy_private_chat_get_contact")
+ (return-type "EmpathyContact*")
+)
+
+
+
+;; From empathy-profile-chooser.h
+
+(define-function empathy_profile_chooser_new
+ (c-name "empathy_profile_chooser_new")
+ (is-constructor-of "EmpathyProfileChooser")
+ (return-type "GtkWidget*")
+)
+
+(define-function empathy_profile_chooser_get_selected
+ (c-name "empathy_profile_chooser_get_selected")
+ (return-type "McProfile*")
+ (parameters
+ '("GtkWidget*" "widget")
+ )
+)
+
+(define-function empathy_profile_chooser_n_profiles
+ (c-name "empathy_profile_chooser_n_profiles")
+ (return-type "gint")
+ (parameters
+ '("GtkWidget*" "widget")
+ )
+)
+
+
+
+;; From empathy-smiley-manager.h
+
+(define-function empathy_smiley_manager_get_type
+ (c-name "empathy_smiley_manager_get_type")
+ (return-type "GType")
+)
+
+(define-function empathy_smiley_manager_new
+ (c-name "empathy_smiley_manager_new")
+ (is-constructor-of "EmpathySmileyManager")
+ (return-type "EmpathySmileyManager*")
+)
+
+(define-method load
+ (of-object "EmpathySmileyManager")
+ (c-name "empathy_smiley_manager_load")
+ (return-type "none")
+)
+
+(define-method add
+ (of-object "EmpathySmileyManager")
+ (c-name "empathy_smiley_manager_add")
+ (return-type "none")
+ (parameters
+ '("const-gchar*" "icon_name")
+ '("const-gchar*" "first_str")
+ )
+ (varargs #t)
+)
+
+(define-method add_from_pixbuf
+ (of-object "EmpathySmileyManager")
+ (c-name "empathy_smiley_manager_add_from_pixbuf")
+ (return-type "none")
+ (parameters
+ '("GdkPixbuf*" "smiley")
+ '("const-gchar*" "first_str")
+ )
+ (varargs #t)
+)
+
+(define-method get_all
+ (of-object "EmpathySmileyManager")
+ (c-name "empathy_smiley_manager_get_all")
+ (return-type "GSList*")
+)
+
+(define-method parse
+ (of-object "EmpathySmileyManager")
+ (c-name "empathy_smiley_manager_parse")
+ (return-type "GSList*")
+ (parameters
+ '("const-gchar*" "text")
+ )
+)
+
+(define-method free
+ (of-object "EmpathySmiley")
+ (c-name "empathy_smiley_free")
+ (return-type "none")
+)
+
+
+
+;; From empathy-spell-dialog.h
+
+(define-function empathy_spell_dialog_show
+ (c-name "empathy_spell_dialog_show")
+ (return-type "none")
+ (parameters
+ '("EmpathyChat*" "chat")
+ '("GtkTextIter" "start")
+ '("GtkTextIter" "end")
+ '("const-gchar*" "word")
+ )
+)
+
+
+
+;; From empathy-spell.h
+
+(define-function empathy_spell_supported
+ (c-name "empathy_spell_supported")
+ (return-type "gboolean")
+)
+
+(define-function empathy_spell_get_language_name
+ (c-name "empathy_spell_get_language_name")
+ (return-type "const-gchar*")
+ (parameters
+ '("const-gchar*" "code")
+ )
+)
+
+(define-function empathy_spell_get_language_codes
+ (c-name "empathy_spell_get_language_codes")
+ (return-type "GList*")
+)
+
+(define-function empathy_spell_free_language_codes
+ (c-name "empathy_spell_free_language_codes")
+ (return-type "none")
+ (parameters
+ '("GList*" "codes")
+ )
+)
+
+(define-function empathy_spell_check
+ (c-name "empathy_spell_check")
+ (return-type "gboolean")
+ (parameters
+ '("const-gchar*" "word")
+ )
+)
+
+(define-function empathy_spell_get_suggestions
+ (c-name "empathy_spell_get_suggestions")
+ (return-type "GList*")
+ (parameters
+ '("const-gchar*" "word")
+ )
+)
+
+(define-function empathy_spell_free_suggestions
+ (c-name "empathy_spell_free_suggestions")
+ (return-type "none")
+ (parameters
+ '("GList*" "suggestions")
+ )
+)
+
+
+
+;; From empathy-status-icon.h
+
+(define-function empathy_status_icon_get_type
+ (c-name "empathy_status_icon_get_type")
+ (return-type "GType")
+)
+
+(define-function empathy_status_icon_new
+ (c-name "empathy_status_icon_new")
+ (is-constructor-of "EmpathyStatusIcon")
+ (return-type "EmpathyStatusIcon*")
+ (parameters
+ '("GtkWindow*" "window")
+ )
+)
+
+
+
+;; From empathy-theme-boxes.h
+
+(define-function empathy_theme_boxes_get_type
+ (c-name "empathy_theme_boxes_get_type")
+ (return-type "GType")
+)
+
+
+
+;; From empathy-theme.h
+
+(define-function empathy_theme_get_type
+ (c-name "empathy_theme_get_type")
+ (return-type "GType")
+)
+
+(define-method update_view
+ (of-object "EmpathyTheme")
+ (c-name "empathy_theme_update_view")
+ (return-type "none")
+ (parameters
+ '("EmpathyChatView*" "view")
+ )
+)
+
+(define-method append_message
+ (of-object "EmpathyTheme")
+ (c-name "empathy_theme_append_message")
+ (return-type "none")
+ (parameters
+ '("EmpathyChatView*" "view")
+ '("EmpathyMessage*" "msg")
+ )
+)
+
+(define-method append_text
+ (of-object "EmpathyTheme")
+ (c-name "empathy_theme_append_text")
+ (return-type "none")
+ (parameters
+ '("EmpathyChatView*" "view")
+ '("const-gchar*" "body")
+ '("const-gchar*" "tag")
+ '("const-gchar*" "link_tag")
+ )
+)
+
+(define-method append_spacing
+ (of-object "EmpathyTheme")
+ (c-name "empathy_theme_append_spacing")
+ (return-type "none")
+ (parameters
+ '("EmpathyChatView*" "view")
+ )
+)
+
+(define-method append_event
+ (of-object "EmpathyTheme")
+ (c-name "empathy_theme_append_event")
+ (return-type "none")
+ (parameters
+ '("EmpathyChatView*" "view")
+ '("const-gchar*" "str")
+ )
+)
+
+(define-method append_timestamp
+ (of-object "EmpathyTheme")
+ (c-name "empathy_theme_append_timestamp")
+ (return-type "none")
+ (parameters
+ '("EmpathyChatView*" "view")
+ '("EmpathyMessage*" "message")
+ '("gboolean" "show_date")
+ '("gboolean" "show_time")
+ )
+)
+
+(define-method maybe_append_date_and_time
+ (of-object "EmpathyTheme")
+ (c-name "empathy_theme_maybe_append_date_and_time")
+ (return-type "none")
+ (parameters
+ '("EmpathyChatView*" "view")
+ '("EmpathyMessage*" "message")
+ )
+)
+
+(define-method get_show_avatars
+ (of-object "EmpathyTheme")
+ (c-name "empathy_theme_get_show_avatars")
+ (return-type "gboolean")
+)
+
+(define-method set_show_avatars
+ (of-object "EmpathyTheme")
+ (c-name "empathy_theme_set_show_avatars")
+ (return-type "none")
+ (parameters
+ '("gboolean" "show")
+ )
+)
+
+
+
+;; From empathy-theme-irc.h
+
+(define-function empathy_theme_irc_get_type
+ (c-name "empathy_theme_irc_get_type")
+ (return-type "GType")
+)
+
+
+
+;; From empathy-theme-manager.h
+
+(define-function empathy_theme_manager_get_type
+ (c-name "empathy_theme_manager_get_type")
+ (return-type "GType")
+)
+
+(define-function empathy_theme_manager_get
+ (c-name "empathy_theme_manager_get")
+ (return-type "EmpathyThemeManager*")
+)
+
+(define-function empathy_theme_manager_get_themes
+ (c-name "empathy_theme_manager_get_themes")
+ (return-type "const-gchar**")
+)
+
+(define-method apply
+ (of-object "EmpathyThemeManager")
+ (c-name "empathy_theme_manager_apply")
+ (return-type "none")
+ (parameters
+ '("EmpathyChatView*" "view")
+ '("const-gchar*" "theme")
+ )
+)
+
+(define-method apply_saved
+ (of-object "EmpathyThemeManager")
+ (c-name "empathy_theme_manager_apply_saved")
+ (return-type "none")
+ (parameters
+ '("EmpathyChatView*" "view")
+ )
+)
+
+
+
+;; From empathy-ui-utils.h
+
+(define-function empathy_glade_get_file_simple
+ (c-name "empathy_glade_get_file_simple")
+ (return-type "none")
+ (parameters
+ '("const-gchar*" "filename")
+ '("const-gchar*" "root")
+ '("const-gchar*" "domain")
+ '("const-gchar*" "first_required_widget")
+ )
+ (varargs #t)
+)
+
+(define-function empathy_glade_get_file
+ (c-name "empathy_glade_get_file")
+ (return-type "GladeXML*")
+ (parameters
+ '("const-gchar*" "filename")
+ '("const-gchar*" "root")
+ '("const-gchar*" "domain")
+ '("const-gchar*" "first_required_widget")
+ )
+ (varargs #t)
+)
+
+(define-function empathy_glade_connect
+ (c-name "empathy_glade_connect")
+ (return-type "none")
+ (parameters
+ '("GladeXML*" "gui")
+ '("gpointer" "user_data")
+ '("gchar*" "first_widget")
+ )
+ (varargs #t)
+)
+
+(define-function empathy_glade_setup_size_group
+ (c-name "empathy_glade_setup_size_group")
+ (return-type "none")
+ (parameters
+ '("GladeXML*" "gui")
+ '("GtkSizeGroupMode" "mode")
+ '("gchar*" "first_widget")
+ )
+ (varargs #t)
+)
+
+(define-function empathy_icon_name_from_account
+ (c-name "empathy_icon_name_from_account")
+ (return-type "const-gchar*")
+ (parameters
+ '("McAccount*" "account")
+ )
+)
+
+(define-function empathy_icon_name_for_presence
+ (c-name "empathy_icon_name_for_presence")
+ (return-type "const-gchar*")
+ (parameters
+ '("McPresence" "presence")
+ )
+)
+
+(define-function empathy_icon_name_for_contact
+ (c-name "empathy_icon_name_for_contact")
+ (return-type "const-gchar*")
+ (parameters
+ '("EmpathyContact*" "contact")
+ )
+)
+
+(define-function empathy_pixbuf_from_data
+ (c-name "empathy_pixbuf_from_data")
+ (return-type "GdkPixbuf*")
+ (parameters
+ '("gchar*" "data")
+ '("gsize" "data_size")
+ )
+)
+
+(define-function empathy_pixbuf_from_avatar_scaled
+ (c-name "empathy_pixbuf_from_avatar_scaled")
+ (return-type "GdkPixbuf*")
+ (parameters
+ '("EmpathyAvatar*" "avatar")
+ '("gint" "width")
+ '("gint" "height")
+ )
+)
+
+(define-function empathy_pixbuf_avatar_from_contact_scaled
+ (c-name "empathy_pixbuf_avatar_from_contact_scaled")
+ (return-type "GdkPixbuf*")
+ (parameters
+ '("EmpathyContact*" "contact")
+ '("gint" "width")
+ '("gint" "height")
+ )
+)
+
+(define-function empathy_pixbuf_scale_down_if_necessary
+ (c-name "empathy_pixbuf_scale_down_if_necessary")
+ (return-type "GdkPixbuf*")
+ (parameters
+ '("GdkPixbuf*" "pixbuf")
+ '("gint" "max_size")
+ )
+)
+
+(define-function empathy_pixbuf_from_icon_name
+ (c-name "empathy_pixbuf_from_icon_name")
+ (return-type "GdkPixbuf*")
+ (parameters
+ '("const-gchar*" "icon_name")
+ '("GtkIconSize" "icon_size")
+ )
+)
+
+(define-function empathy_text_iter_forward_search
+ (c-name "empathy_text_iter_forward_search")
+ (return-type "gboolean")
+ (parameters
+ '("const-GtkTextIter*" "iter")
+ '("const-gchar*" "str")
+ '("GtkTextIter*" "match_start")
+ '("GtkTextIter*" "match_end")
+ '("const-GtkTextIter*" "limit")
+ )
+)
+
+(define-function empathy_text_iter_backward_search
+ (c-name "empathy_text_iter_backward_search")
+ (return-type "gboolean")
+ (parameters
+ '("const-GtkTextIter*" "iter")
+ '("const-gchar*" "str")
+ '("GtkTextIter*" "match_start")
+ '("GtkTextIter*" "match_end")
+ '("const-GtkTextIter*" "limit")
+ )
+)
+
+(define-function empathy_window_get_is_visible
+ (c-name "empathy_window_get_is_visible")
+ (return-type "gboolean")
+ (parameters
+ '("GtkWindow*" "window")
+ )
+)
+
+(define-function empathy_window_present
+ (c-name "empathy_window_present")
+ (return-type "none")
+ (parameters
+ '("GtkWindow*" "window")
+ '("gboolean" "steal_focus")
+ )
+)
+
+(define-function empathy_window_iconify
+ (c-name "empathy_window_iconify")
+ (return-type "none")
+ (parameters
+ '("GtkWindow*" "window")
+ '("GtkStatusIcon*" "status_icon")
+ )
+)
+
+(define-function empathy_get_toplevel_window
+ (c-name "empathy_get_toplevel_window")
+ (return-type "GtkWindow*")
+ (parameters
+ '("GtkWidget*" "widget")
+ )
+)
+
+(define-function empathy_url_show
+ (c-name "empathy_url_show")
+ (return-type "none")
+ (parameters
+ '("const-char*" "url")
+ )
+)
+
+(define-function empathy_toggle_button_set_state_quietly
+ (c-name "empathy_toggle_button_set_state_quietly")
+ (return-type "none")
+ (parameters
+ '("GtkWidget*" "widget")
+ '("GCallback" "callback")
+ '("gpointer" "user_data")
+ '("gboolean" "active")
+ )
+)
+
+(define-function empathy_link_button_new
+ (c-name "empathy_link_button_new")
+ (is-constructor-of "EmpathyLinkButton")
+ (return-type "GtkWidget*")
+ (parameters
+ '("const-gchar*" "url")
+ '("const-gchar*" "title")
+ )
+)
+
+(define-function empathy_text_buffer_tag_set
+ (c-name "empathy_text_buffer_tag_set")
+ (return-type "GtkTextTag*")
+ (parameters
+ '("GtkTextBuffer*" "buffer")
+ '("const-gchar*" "tag_name")
+ '("const-gchar*" "first_property_name")
+ )
+ (varargs #t)
+)
+
diff --git a/gnome-2-22/python/pyempathygtk/pyempathygtk.override b/gnome-2-22/python/pyempathygtk/pyempathygtk.override
new file mode 100644
index 000000000..fda978849
--- /dev/null
+++ b/gnome-2-22/python/pyempathygtk/pyempathygtk.override
@@ -0,0 +1,85 @@
+%%
+headers
+#include <Python.h>
+#include <pygobject.h>
+#include "empathy-about-dialog.h"
+#include "empathy-account-chooser.h"
+#include "empathy-accounts-dialog.h"
+#include "empathy-account-widget.h"
+#include "empathy-account-widget-irc.h"
+#include "empathy-avatar-chooser.h"
+#include "empathy-avatar-image.h"
+#include "empathy-call-window.h"
+#include "empathy-cell-renderer-activatable.h"
+#include "empathy-cell-renderer-expander.h"
+#include "empathy-cell-renderer-text.h"
+#include "empathy-chat.h"
+#include "empathy-chatrooms-window.h"
+#include "empathy-chat-view.h"
+#include "empathy-chat-window.h"
+#include "empathy-conf.h"
+#include "empathy-contact-dialogs.h"
+#include "empathy-contact-list-store.h"
+#include "empathy-contact-list-view.h"
+#include "empathy-contact-widget.h"
+#include "empathy-geometry.h"
+#include "empathy-group-chat.h"
+#include "empathy-gtk-enum-types.h"
+#include "empathy-images.h"
+#include "empathy-irc-network-dialog.h"
+#include "empathy-log-window.h"
+#include "empathy-main-window.h"
+#include "empathy-new-chatroom-dialog.h"
+#include "empathy-new-message-dialog.h"
+#include "empathy-preferences.h"
+#include "empathy-presence-chooser.h"
+#include "empathy-private-chat.h"
+#include "empathy-profile-chooser.h"
+#include "empathy-smiley-manager.h"
+#include "empathy-spell-dialog.h"
+#include "empathy-spell.h"
+#include "empathy-status-icon.h"
+#include "empathy-theme-boxes.h"
+#include "empathy-theme.h"
+#include "empathy-theme-irc.h"
+#include "empathy-theme-manager.h"
+#include "empathy-ui-utils.h"
+
+void empathy_add_constants(PyObject *module, const gchar *strip_prefix);
+void empathy_register_classes(PyObject *d);
+%%
+modulename empathygtk
+%%
+import gobject.GObject as PyGObject_Type
+import gtk.Widget as PyGtkWidget_Type
+import gtk.Window as PyGtkWindow_Type
+import gtk.CellRenderer as PyGtkCellRenderer_Type
+import gtk.CellRendererText as PyGtkCellRendererText_Type
+import gtk.TextView as PyGtkTextView_Type
+import gtk.TreeView as PyGtkTreeView_Type
+import gtk.TreeStore as PyGtkTreeStore_Type
+import gtk.ToggleButton as PyGtkToggleButton_Type
+import gtk.ComboBox as PyGtkComboBox_Type
+import gtk.StatusIcon as PyGtkStatusIcon_Type
+import gtk.Button as PyGtkButton_Type
+import gtk.EventBox as PyGtkEventBox_Type
+import gtk.CellRendererPixbuf as PyGtkCellRendererPixbuf_Type
+import gtk.gdk.Pixbuf as PyGdkPixbuf_Type
+import empathy.Contact as PyEmpathyContact_Type
+import empathy.ContactList as PyEmpathyContactList_Type
+import empathy.TpChat as PyEmpathyTpChat_Type
+import empathy.Presence as PyEmpathyPresence_Type
+import empathy.Message as PyEmpathyMessage_Type
+import empathy.TpChatroom as PyEmpathyTpChatroom_Type
+import empathy.TpCall as PyEmpathyTpCall_Type
+%%
+ignore-glob
+ *_get_type
+%%
+ignore
+ empathy_chat_correct_word
+ empathy_chat_view_set_margin
+ empathy_chat_get_view
+ empathy_spell_dialog_show
+ empathy_window_iconify
+%%
diff --git a/gnome-2-22/python/pyempathygtk/pyempathygtkmodule.c b/gnome-2-22/python/pyempathygtk/pyempathygtkmodule.c
new file mode 100644
index 000000000..4f751f08d
--- /dev/null
+++ b/gnome-2-22/python/pyempathygtk/pyempathygtkmodule.c
@@ -0,0 +1,23 @@
+#include <pygobject.h>
+
+void empathy_register_classes (PyObject *d);
+DL_EXPORT(void) initempathygtk(void);
+extern PyMethodDef empathy_functions[];
+
+DL_EXPORT(void) initempathygtk(void)
+{
+ PyObject *m, *d;
+
+ init_pygobject ();
+
+ m = Py_InitModule ("empathygtk", empathy_functions);
+ d = PyModule_GetDict (m);
+
+ empathy_register_classes (d);
+
+ if (PyErr_Occurred ()) {
+ PyErr_Print();
+ Py_FatalError ("can't initialise module empathygtk");
+ }
+}
+
diff --git a/gnome-2-22/release.py b/gnome-2-22/release.py
new file mode 100755
index 000000000..3f85ceb48
--- /dev/null
+++ b/gnome-2-22/release.py
@@ -0,0 +1,281 @@
+#!/usr/bin/env python
+
+import os
+import re
+import urllib
+import csv
+import datetime
+from string import Template
+
+username = 'xclaesse'
+upload_server = 'master.gnome.org'
+template = '''\
+$name $version is now available for download from:
+$download
+
+$md5sums
+
+What is it?
+===========
+$about
+
+You can visit the project web site:
+$website
+
+What's New?
+===========
+$news
+
+$footer'''
+
+class Bug:
+ number = ''
+ author = ''
+
+class Project:
+ def __init__(self):
+ f = open('config.h', 'r')
+ s = f.read()
+ f.close()
+
+ key = {}
+ key['package'] = '#define PACKAGE_NAME "'
+ key['version'] = '#define PACKAGE_VERSION "'
+ key['bugreport'] = '#define PACKAGE_BUGREPORT "'
+
+ for line in s.splitlines(1):
+ if line.startswith(key['package']):
+ p1 = len(key['package'])
+ p2 = line.rfind('"')
+ self.package_name = line[p1:p2]
+ elif line.startswith(key['version']):
+ p1 = len(key['version'])
+ p2 = line.rfind('"')
+ self.package_version = line[p1:p2]
+ elif line.startswith(key['bugreport']):
+ p2 = line.rfind('"')
+ p1 = line.rfind('=') + 1
+ self.package_module = line[p1:p2]
+
+ first = self.package_version.find('.')
+ second = self.package_version.find('.', first + 1)
+ if first == -1 or second == -1 or first == second:
+ version_dir = self.package_version
+ else:
+ version_dir = self.package_version[:second]
+ self.package_dl_url = 'http://download.gnome.org/sources/%s/%s/' % (self.package_name.lower(),
+ version_dir)
+ def exec_cmd(self,cmd):
+ return os.popen(cmd).read()
+
+ def get_news(self):
+ f = open ('NEWS', 'r')
+ s = f.read()
+ f.close()
+ start = s.find ('NEW in '+ self.package_version)
+ if start != -1:
+ start = s.find ('\n', start) + 1
+ start = s.find ('\n', start) + 1
+ end = s.find ('NEW in', start) - 1
+ return s[start:end].strip()
+
+ def get_md5sums(self):
+ md5sums = ''
+
+ cmd = 'md5sum %s-%s.tar.gz' % (self.package_name.lower(), self.package_version)
+ md5sums += self.exec_cmd(cmd)
+
+ cmd = 'md5sum %s-%s.tar.bz2' % (self.package_name.lower(), self.package_version)
+ md5sums += self.exec_cmd(cmd).strip()
+
+ return md5sums
+
+ def get_bugzilla_info(self):
+ query = 'http://bugzilla.gnome.org/browse.cgi?product=%s' % (self.package_module)
+ f = urllib.urlopen(query)
+ s = f.read()
+ f.close()
+
+ s1 = '<p><i>'
+ i = s.find(s1)
+ start = i + len(s1)
+ s2 = '</i></p>'
+ end = s.find(s2, i + 1)
+ description = s[start:end]
+
+ s1 = "GNOME SVN"
+ i = s.find(s1)
+ s1 = "href"
+ i = s.find(s1, i)
+ start = i + 6
+ s2 = '">'
+ end = s.find(s2, start)
+ project_url = s[start:end]
+
+ return (description, project_url)
+
+ def get_release_notes(self):
+ name = self.package_name
+ version = self.package_version
+ download = self.package_dl_url
+ md5sums = self.get_md5sums()
+ (about, website) = self.get_bugzilla_info()
+ news = self.get_news()
+ footer = '%s\n%s team' % (datetime.date.today().strftime('%d %B %Y'),\
+ self.package_name)
+
+ t = Template(template)
+ return t.substitute(locals())
+
+ def get_last_tag(self):
+ tags_str = self.exec_cmd('git-tag')
+ tags = tags_str.splitlines()
+
+ return tags[len(tags)-1]
+
+ def parse_commit(self, ref, author, date, message):
+ p1 = message.rfind('(')
+ p2 = message.rfind (')')
+ if len(message) - p2 <= 2:
+ author = message[p1+1:p2]
+ message = message[:p1]
+
+ msg = message.lower()
+ if msg.find('translation') != -1 and\
+ msg.find('updated') != -1:
+ self.translations += ' - ' + message + ' (' + author + ').\n'
+ elif message.find('#') != -1:
+ p1 = message.find('#')
+ while p1 != -1:
+ bug = Bug()
+ p2 = message.find(' ', p1)
+ bug.number = message[p1+1:p2]
+ bug.author = author
+ self.bug_commits.append(bug)
+ p1 = message.find('#', p2)
+ else:
+ self.commits += ' - ' + message + ' (' + author + ').\n'
+
+ def query_bug_commits(self):
+ bugs = ''
+ for bug in self.bug_commits:
+ bugs += bug.number + ','
+
+ # Bugzilla query to use
+ query = 'http://bugzilla.gnome.org/buglist.cgi?ctype=csv' \
+ '&bug_status=RESOLVED,CLOSED,VERIFIED' \
+ '&resolution=FIXED' \
+ '&bug_id=' + bugs.replace(',', '%2c')
+
+ f = urllib.urlopen(query)
+ s = f.read()
+ f.close()
+
+ col_bug_id = -1
+ col_description = -1
+
+ reader = csv.reader(s.splitlines(1))
+ header = reader.next()
+ i = 0
+
+ for col in header:
+ if col == 'bug_id':
+ col_bug_id = i
+ if col == 'short_short_desc':
+ col_description = i
+ i = i + 1
+
+ for row in reader:
+ bug_number = row[col_bug_id]
+ description = row[col_description]
+
+ for bug in self.bug_commits:
+ if bug.number == bug_number:
+ self.bugs += ' - Fixed #%s, %s (%s)\n' % (bug.number, description, bug.author)
+ break
+
+ def get_commits(self):
+ self.commits = ''
+ self.translations = ''
+ self.bugs = ''
+ self.bug_commits = []
+ last_tag = self.get_last_tag()
+ ref = None
+
+ changes = self.exec_cmd ("git-log " + last_tag + "..")
+ for line in changes.splitlines(1):
+ if line.startswith('commit'):
+ if ref != None:
+ self.parse_commit (ref, author, date, message)
+ p1 = line.find(' ')
+ ref = line[p1:].strip()
+ author = ''
+ date = ''
+ message = ''
+ elif line.startswith('Author:'):
+ p1 = line.find(' ')
+ p2 = line.find('<')
+ author = line[p1:p2].strip()
+ elif line.startswith('Date:'):
+ p1 = line.find(' ')
+ date = line[p1:].strip()
+ elif line.startswith(' git-svn-id:'):
+ continue
+ elif line.startswith('Merge:'):
+ continue
+ else:
+ msg = line.strip()
+ if msg == '':
+ continue
+ if message != '':
+ message += '\n'
+ message += msg
+
+ self.query_bug_commits ()
+
+ def make_tag(self):
+ new_tag = self.package_name.upper() + '_' +\
+ self.package_version.replace('.', '_')
+
+ url1 = self.exec_cmd('git-config svn-remote.svn.url').strip()
+ url2 = url1[:url1.rfind('/')] + '/tags/' + new_tag
+ self.exec_cmd('svn copy %s %s -m "Tagged for release %s."' % (url1, url2, self.package_version))
+
+ self.exec_cmd('git-tag -m "Tagged for release %s." %s' % ( self.package_version, new_tag))
+
+ def generate_news(self):
+ self.get_commits()
+ news = 'NEW in '+ self.package_version + '\n==============\n'
+ news += self.commits + '\nBugs fixed:\n' + self.bugs + '\nTranslations:\n' + self.translations + '\n'
+
+ return news
+
+ def write_news(self):
+ news = self.generate_news()
+
+ f = open ('/tmp/NEWS', 'w')
+ s = f.write(news)
+ f.close()
+
+ self.exec_cmd('cat NEWS >> /tmp/NEWS')
+ self.exec_cmd('mv /tmp/NEWS .')
+
+ def upload_tarball(self):
+ tarball = '%s-%s.tar.gz' % (self.package_name.lower(), self.package_version)
+
+ cmd = 'scp %s %s@%s:' % (tarball, username, upload_server)
+ self.exec_cmd(cmd)
+
+ cmd = 'ssh %s@%s install-module -u %s' % (username, upload_server, tarball)
+ self.exec_cmd(cmd)
+
+ def release(self):
+ self.make_tag()
+ self.upload_tarball()
+ print self.get_release_notes()
+
+p = Project()
+#print p.generate_news()
+#p.write_news()
+#p.release()
+#print p.get_release_notes()
diff --git a/gnome-2-22/rules/check.mak b/gnome-2-22/rules/check.mak
new file mode 100644
index 000000000..bbb9819f2
--- /dev/null
+++ b/gnome-2-22/rules/check.mak
@@ -0,0 +1,120 @@
+LOOPS = 10
+CLEANFILES += valgrind.*.log
+
+# run any given test by running make test.check
+# if the test fails, run it again at at least debug level 2
+%.check: %
+ @$(TESTS_ENVIRONMENT) \
+ $* || \
+ $(TESTS_ENVIRONMENT) \
+ $*
+
+# run any given test in a loop
+%.torture: %
+ @for i in `seq 1 $(LOOPS)`; do \
+ $(TESTS_ENVIRONMENT) \
+ $*; done
+
+# run any given test in an infinite loop
+%.forever: %
+ @while true; do \
+ $(TESTS_ENVIRONMENT) \
+ $* || break; done
+
+# valgrind any given test by running make test.valgrind
+%.valgrind: %
+ $(TESTS_ENVIRONMENT) \
+ CK_DEFAULT_TIMEOUT=360 \
+ G_SLICE=always-malloc \
+ G_DEBUG=gc-friendly \
+ libtool --mode=execute \
+ $(VALGRIND_PATH) -q \
+ $(foreach s,$(SUPPRESSIONS),--suppressions=$(s)) \
+ --tool=memcheck --leak-check=full --trace-children=yes \
+ --leak-resolution=high --num-callers=20 \
+ ./$* 2>&1 | tee "valgrind.$*.log"
+ @if grep "==" "valgrind.$*.log" > /dev/null 2>&1; then \
+ exit 1; \
+ fi
+
+# valgrind any given test and generate suppressions for it
+%.valgrind.gen-suppressions: %
+ $(TESTS_ENVIRONMENT) \
+ CK_DEFAULT_TIMEOUT=360 \
+ G_SLICE=always-malloc \
+ G_DEBUG=gc-friendly \
+ libtool --mode=execute \
+ $(VALGRIND_PATH) -q \
+ $(foreach s,$(SUPPRESSIONS),--suppressions=$(s)) \
+ --tool=memcheck --leak-check=full --trace-children=yes \
+ --leak-resolution=high --num-callers=20 \
+ --gen-suppressions=all \
+ ./$* 2>&1 | tee suppressions.log
+
+# valgrind any given test until failure by running make test.valgrind-forever
+%.valgrind-forever: %
+ @while $(MAKE) $*.valgrind; do \
+ true; done
+
+# gdb any given test by running make test.gdb
+%.gdb: %
+ $(TESTS_ENVIRONMENT) \
+ CK_FORK=no \
+ libtool --mode=execute \
+ gdb $*
+
+# torture tests
+torture: $(TESTS)
+ @echo "Torturing tests ..."
+ for i in `seq 1 $(LOOPS)`; do \
+ $(MAKE) check || \
+ (echo "Failure after $$i runs"; exit 1) || \
+ exit 1; \
+ done
+ @banner="All $(LOOPS) loops passed"; \
+ dashes=`echo "$$banner" | sed s/./=/g`; \
+ echo $$dashes; echo $$banner; echo $$dashes
+
+# forever tests
+forever: $(TESTS)
+ @echo "Forever tests ..."
+ while true; do \
+ $(MAKE) check || \
+ (echo "Failure"; exit 1) || \
+ exit 1; \
+ done
+
+# valgrind all tests
+valgrind: $(TESTS)
+ @echo "Valgrinding tests ..."
+ @failed=0; \
+ for t in $(filter-out $(VALGRIND_TESTS_DISABLE),$(TESTS)); do \
+ $(MAKE) $$t.valgrind; \
+ if test "$$?" -ne 0; then \
+ echo "Valgrind error for test $$t"; \
+ failed=`expr $$failed + 1`; \
+ whicht="$$whicht $$t"; \
+ fi; \
+ done; \
+ if test "$$failed" -ne 0; then \
+ echo "$$failed tests had leaks or errors under valgrind:"; \
+ echo "$$whicht"; \
+ false; \
+ fi
+
+help:
+ @echo "make check -- run all checks"
+ @echo "make torture -- run all checks $(LOOPS) times"
+ @echo "make (dir)/(test).check -- run the given check once"
+ @echo "make (dir)/(test).forever -- run the given check forever"
+ @echo "make (dir)/(test).torture -- run the given check $(LOOPS) times"
+ @echo
+ @echo "make (dir)/(test).gdb -- start up gdb for the given test"
+ @echo
+ @echo "make valgrind -- valgrind all tests"
+ @echo "make (dir)/(test).valgrind -- valgrind the given test"
+ @echo "make (dir)/(test).valgrind-forever -- valgrind the given test forever"
+ @echo "make (dir)/(test).valgrind.gen-suppressions -- generate suppressions"
+ @echo " and save to suppressions.log"
+ @echo "make inspect -- inspect all plugin features"
+
diff --git a/gnome-2-22/src/.gitignore b/gnome-2-22/src/.gitignore
new file mode 100644
index 000000000..78d6c8df4
--- /dev/null
+++ b/gnome-2-22/src/.gitignore
@@ -0,0 +1,7 @@
+empathy
+empathy-accounts
+empathy-logs
+empathy-chat-chandler
+org.gnome.Empathy.Chat.service
+empathy-call-chandler
+org.gnome.Empathy.Call.service
diff --git a/gnome-2-22/src/Makefile.am b/gnome-2-22/src/Makefile.am
new file mode 100644
index 000000000..e064945e8
--- /dev/null
+++ b/gnome-2-22/src/Makefile.am
@@ -0,0 +1,60 @@
+AM_CPPFLAGS = \
+ -I$(top_srcdir) \
+ -DPREFIX="\"$(prefix)"\" \
+ -DSYSCONFDIR=\""$(sysconfdir)"\" \
+ -DDATADIR=\""$(datadir)"\" \
+ -DPKGDATADIR=\""$(pkgdatadir)"\" \
+ -DLIBDIR=\""$(libdir)"\" \
+ -DLOCALEDIR=\""$(datadir)/locale"\" \
+ $(EMPATHY_CFLAGS) \
+ $(WARN_CFLAGS)
+
+LDADD = \
+ $(top_builddir)/libempathy-gtk/libempathy-gtk.la \
+ $(top_builddir)/libempathy/libempathy.la \
+ $(EMPATHY_LIBS)
+
+bin_PROGRAMS = \
+ empathy \
+ empathy-accounts \
+ empathy-logs
+
+empathy_SOURCES = \
+ empathy.c \
+ bacon-message-connection.c \
+ bacon-message-connection.h
+empathy_accounts_SOURCES = empathy-accounts.c
+empathy_logs_SOURCES = empathy-logs.c
+
+# Dbus service files
+servicedir = $(datadir)/dbus-1/services
+service_DATA = \
+ org.gnome.Empathy.Chat.service
+
+%.service: %.service.in Makefile
+ @sed -e "s|\@libexecdir\@|$(libexecdir)|" $< | sed -e "s|\@bindir\@|$(bindir)|" > $@
+
+chandlerdir = $(datadir)/telepathy/managers
+chandler_DATA = \
+ empathy-chat.chandler
+
+BUILT_SOURCES = \
+ $(service_DATA)
+
+EXTRA_DIST = \
+ org.gnome.Empathy.Chat.service.in \
+ org.gnome.Empathy.Call.service.in \
+ $(autostart_DATA) \
+ $(chandler_DATA)
+
+CLEANFILES = $(BUILT_SOURCES)
+
+if HAVE_VOIP
+libexec_PROGRAMS = empathy-call-chandler
+empathy_call_chandler_SOURCES = empathy-call-chandler.c
+service_DATA += org.gnome.Empathy.Call.service
+chandler_DATA += empathy-call.chandler
+else
+EXTRA_DIST += empathy-call.chandler
+endif
+
diff --git a/gnome-2-22/src/bacon-message-connection.c b/gnome-2-22/src/bacon-message-connection.c
new file mode 100644
index 000000000..c8000de24
--- /dev/null
+++ b/gnome-2-22/src/bacon-message-connection.c
@@ -0,0 +1,396 @@
+/*
+ * Copyright (C) 2003 Bastien Nocera <hadess@hadess.net>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public 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/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <sys/un.h>
+#include <errno.h>
+
+#include "bacon-message-connection.h"
+
+#ifndef UNIX_PATH_MAX
+#define UNIX_PATH_MAX 108
+#endif
+
+struct BaconMessageConnection {
+ /* A server accepts connections */
+ gboolean is_server;
+
+ /* The socket path itself */
+ char *path;
+
+ /* File descriptor of the socket */
+ int fd;
+ /* Channel to watch */
+ GIOChannel *chan;
+ /* Event id returned by g_io_add_watch() */
+ int conn_id;
+
+ /* Connections accepted by this connection */
+ GSList *accepted_connections;
+
+ /* callback */
+ void (*func) (const char *message, gpointer user_data);
+ gpointer data;
+};
+
+static gboolean
+test_is_socket (const char *path)
+{
+ struct stat s;
+
+ if (stat (path, &s) == -1)
+ return FALSE;
+
+ if (S_ISSOCK (s.st_mode))
+ return TRUE;
+
+ return FALSE;
+}
+
+static gboolean
+is_owned_by_user_and_socket (const char *path)
+{
+ struct stat s;
+
+ if (stat (path, &s) == -1)
+ return FALSE;
+
+ if (s.st_uid != geteuid ())
+ return FALSE;
+
+ if ((s.st_mode & S_IFSOCK) != S_IFSOCK)
+ return FALSE;
+
+ return TRUE;
+}
+
+static gboolean server_cb (GIOChannel *source,
+ GIOCondition condition, gpointer data);
+
+static gboolean
+setup_connection (BaconMessageConnection *conn)
+{
+ g_return_val_if_fail (conn->chan == NULL, FALSE);
+
+ conn->chan = g_io_channel_unix_new (conn->fd);
+ if (!conn->chan) {
+ return FALSE;
+ }
+ g_io_channel_set_line_term (conn->chan, "\n", 1);
+ conn->conn_id = g_io_add_watch (conn->chan, G_IO_IN, server_cb, conn);
+
+ return TRUE;
+}
+
+static void
+accept_new_connection (BaconMessageConnection *server_conn)
+{
+ BaconMessageConnection *conn;
+ int alen;
+
+ g_return_if_fail (server_conn->is_server);
+
+ conn = g_new0 (BaconMessageConnection, 1);
+ conn->is_server = FALSE;
+ conn->func = server_conn->func;
+ conn->data = server_conn->data;
+
+ conn->fd = accept (server_conn->fd, NULL, (guint *)&alen);
+
+ server_conn->accepted_connections =
+ g_slist_prepend (server_conn->accepted_connections, conn);
+
+ setup_connection (conn);
+}
+
+static gboolean
+server_cb (GIOChannel *source, GIOCondition condition, gpointer data)
+{
+ BaconMessageConnection *conn = (BaconMessageConnection *)data;
+ char *message, *subs, buf;
+ int cd, rc, offset;
+ gboolean finished;
+
+ offset = 0;
+ if (conn->is_server && conn->fd == g_io_channel_unix_get_fd (source)) {
+ accept_new_connection (conn);
+ return TRUE;
+ }
+ message = g_malloc (1);
+ cd = conn->fd;
+ rc = read (cd, &buf, 1);
+ while (rc > 0 && buf != '\n')
+ {
+ message = g_realloc (message, rc + offset + 1);
+ message[offset] = buf;
+ offset = offset + rc;
+ rc = read (cd, &buf, 1);
+ }
+ if (rc <= 0) {
+ g_io_channel_shutdown (conn->chan, FALSE, NULL);
+ g_io_channel_unref (conn->chan);
+ conn->chan = NULL;
+ close (conn->fd);
+ conn->fd = -1;
+ g_free (message);
+ conn->conn_id = 0;
+
+ return FALSE;
+ }
+ message[offset] = '\0';
+
+ subs = message;
+ finished = FALSE;
+
+ while (finished == FALSE && *subs != '\0')
+ {
+ if (conn->func != NULL)
+ (*conn->func) (subs, conn->data);
+
+ subs += strlen (subs) + 1;
+ if (subs - message >= offset)
+ finished = TRUE;
+ }
+
+ g_free (message);
+
+ return TRUE;
+}
+
+static char *
+find_file_with_pattern (const char *dir, const char *pattern)
+{
+ GDir *filedir;
+ char *found_filename;
+ const char *filename;
+ GPatternSpec *pat;
+
+ filedir = g_dir_open (dir, 0, NULL);
+ if (filedir == NULL)
+ return NULL;
+
+ pat = g_pattern_spec_new (pattern);
+ if (pat == NULL)
+ {
+ g_dir_close (filedir);
+ return NULL;
+ }
+
+ found_filename = NULL;
+
+ while ((filename = g_dir_read_name (filedir)))
+ {
+ if (g_pattern_match_string (pat, filename))
+ {
+ char *tmp = g_build_filename (dir, filename, NULL);
+ if (is_owned_by_user_and_socket (tmp))
+ found_filename = g_strdup (filename);
+ g_free (tmp);
+ }
+
+ if (found_filename != NULL)
+ break;
+ }
+
+ g_pattern_spec_free (pat);
+ g_dir_close (filedir);
+
+ return found_filename;
+}
+
+static char *
+socket_filename (const char *prefix)
+{
+ char *pattern, *newfile, *path, *filename;
+ const char *tmpdir;
+
+ pattern = g_strdup_printf ("%s.%s.*", prefix, g_get_user_name ());
+ tmpdir = g_get_tmp_dir ();
+ filename = find_file_with_pattern (tmpdir, pattern);
+ if (filename == NULL)
+ {
+ newfile = g_strdup_printf ("%s.%s.%u", prefix,
+ g_get_user_name (), g_random_int ());
+ path = g_build_filename (tmpdir, newfile, NULL);
+ g_free (newfile);
+ } else {
+ path = g_build_filename (tmpdir, filename, NULL);
+ g_free (filename);
+ }
+
+ g_free (pattern);
+ return path;
+}
+
+static gboolean
+try_server (BaconMessageConnection *conn)
+{
+ struct sockaddr_un uaddr;
+
+ uaddr.sun_family = AF_UNIX;
+ strncpy (uaddr.sun_path, conn->path,
+ MIN (strlen(conn->path)+1, UNIX_PATH_MAX));
+ conn->fd = socket (PF_UNIX, SOCK_STREAM, 0);
+ if (bind (conn->fd, (struct sockaddr *) &uaddr, sizeof (uaddr)) == -1)
+ {
+ conn->fd = -1;
+ return FALSE;
+ }
+ listen (conn->fd, 5);
+
+ if (!setup_connection (conn))
+ return FALSE;
+ return TRUE;
+}
+
+static gboolean
+try_client (BaconMessageConnection *conn)
+{
+ struct sockaddr_un uaddr;
+
+ uaddr.sun_family = AF_UNIX;
+ strncpy (uaddr.sun_path, conn->path,
+ MIN(strlen(conn->path)+1, UNIX_PATH_MAX));
+ conn->fd = socket (PF_UNIX, SOCK_STREAM, 0);
+ if (connect (conn->fd, (struct sockaddr *) &uaddr,
+ sizeof (uaddr)) == -1)
+ {
+ conn->fd = -1;
+ return FALSE;
+ }
+
+ return setup_connection (conn);
+}
+
+BaconMessageConnection *
+bacon_message_connection_new (const char *prefix)
+{
+ BaconMessageConnection *conn;
+
+ g_return_val_if_fail (prefix != NULL, NULL);
+
+ conn = g_new0 (BaconMessageConnection, 1);
+ conn->path = socket_filename (prefix);
+
+ if (test_is_socket (conn->path) == FALSE)
+ {
+ if (!try_server (conn))
+ {
+ bacon_message_connection_free (conn);
+ return NULL;
+ }
+
+ conn->is_server = TRUE;
+ return conn;
+ }
+
+ if (try_client (conn) == FALSE)
+ {
+ unlink (conn->path);
+ try_server (conn);
+ if (conn->fd == -1)
+ {
+ bacon_message_connection_free (conn);
+ return NULL;
+ }
+
+ conn->is_server = TRUE;
+ return conn;
+ }
+
+ conn->is_server = FALSE;
+ return conn;
+}
+
+void
+bacon_message_connection_free (BaconMessageConnection *conn)
+{
+ GSList *child_conn;
+
+ g_return_if_fail (conn != NULL);
+ /* Only servers can accept other connections */
+ g_return_if_fail (conn->is_server != FALSE ||
+ conn->accepted_connections == NULL);
+
+ child_conn = conn->accepted_connections;
+ while (child_conn != NULL) {
+ bacon_message_connection_free (child_conn->data);
+ child_conn = g_slist_next (child_conn);
+ }
+ g_slist_free (conn->accepted_connections);
+
+ if (conn->conn_id) {
+ g_source_remove (conn->conn_id);
+ conn->conn_id = 0;
+ }
+ if (conn->chan) {
+ g_io_channel_shutdown (conn->chan, FALSE, NULL);
+ g_io_channel_unref (conn->chan);
+ }
+
+ if (conn->is_server != FALSE) {
+ unlink (conn->path);
+ }
+ if (conn->fd != -1) {
+ close (conn->fd);
+ }
+
+ g_free (conn->path);
+ g_free (conn);
+}
+
+void
+bacon_message_connection_set_callback (BaconMessageConnection *conn,
+ BaconMessageReceivedFunc func,
+ gpointer user_data)
+{
+ g_return_if_fail (conn != NULL);
+
+ conn->func = func;
+ conn->data = user_data;
+}
+
+void
+bacon_message_connection_send (BaconMessageConnection *conn,
+ const char *message)
+{
+ g_return_if_fail (conn != NULL);
+ g_return_if_fail (message != NULL);
+
+ g_io_channel_write_chars (conn->chan, message, strlen (message),
+ NULL, NULL);
+ g_io_channel_write_chars (conn->chan, "\n", 1, NULL, NULL);
+ g_io_channel_flush (conn->chan, NULL);
+}
+
+gboolean
+bacon_message_connection_get_is_server (BaconMessageConnection *conn)
+{
+ g_return_val_if_fail (conn != NULL, FALSE);
+
+ return conn->is_server;
+}
+
diff --git a/gnome-2-22/src/bacon-message-connection.h b/gnome-2-22/src/bacon-message-connection.h
new file mode 100644
index 000000000..aac7a2d11
--- /dev/null
+++ b/gnome-2-22/src/bacon-message-connection.h
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2003 Bastien Nocera <hadess@hadess.net>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public 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 BACON_MESSAGE_CONNECTION_H
+#define BACON_MESSAGE_CONNECTION_H
+
+#include <glib.h>
+
+G_BEGIN_DECLS
+
+typedef void (*BaconMessageReceivedFunc) (const char *message,
+ gpointer user_data);
+
+typedef struct BaconMessageConnection BaconMessageConnection;
+
+BaconMessageConnection *bacon_message_connection_new (const char *prefix);
+void bacon_message_connection_free (BaconMessageConnection *conn);
+void bacon_message_connection_set_callback (BaconMessageConnection *conn,
+ BaconMessageReceivedFunc func,
+ gpointer user_data);
+void bacon_message_connection_send (BaconMessageConnection *conn,
+ const char *message);
+gboolean bacon_message_connection_get_is_server (BaconMessageConnection *conn);
+
+G_END_DECLS
+
+#endif /* BACON_MESSAGE_CONNECTION_H */
diff --git a/gnome-2-22/src/empathy-accounts.c b/gnome-2-22/src/empathy-accounts.c
new file mode 100644
index 000000000..38b31fd58
--- /dev/null
+++ b/gnome-2-22/src/empathy-accounts.c
@@ -0,0 +1,59 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2007-2008 Collabora Ltd.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * 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: Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#include <config.h>
+
+#include <string.h>
+#include <stdlib.h>
+
+#include <glib.h>
+#include <gtk/gtk.h>
+
+#include <libempathy-gtk/empathy-accounts-dialog.h>
+
+static void
+destroy_cb (GtkWidget *dialog,
+ gpointer user_data)
+{
+ gtk_main_quit ();
+}
+
+int
+main (int argc, char *argv[])
+{
+ GtkWidget *dialog;
+
+ gtk_init (&argc, &argv);
+
+ gtk_icon_theme_append_search_path (gtk_icon_theme_get_default (),
+ PKGDATADIR G_DIR_SEPARATOR_S "icons");
+ dialog = empathy_accounts_dialog_show (NULL);
+
+ g_signal_connect (dialog, "destroy",
+ G_CALLBACK (destroy_cb),
+ NULL);
+
+ gtk_main ();
+
+ return EXIT_SUCCESS;
+}
+
diff --git a/gnome-2-22/src/empathy-call-chandler.c b/gnome-2-22/src/empathy-call-chandler.c
new file mode 100644
index 000000000..e1568c18c
--- /dev/null
+++ b/gnome-2-22/src/empathy-call-chandler.c
@@ -0,0 +1,87 @@
+/*
+ * Copyright (C) 2007 Elliot Fairweather
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Authors: Elliot Fairweather <elliot.fairweather@collabora.co.uk>
+ */
+
+#include <gtk/gtk.h>
+
+#include <libmissioncontrol/mission-control.h>
+
+#include <libempathy/empathy-tp-call.h>
+#include <libempathy/empathy-chandler.h>
+#include <libempathy/empathy-debug.h>
+#include <libempathy/empathy-utils.h>
+
+#include <libempathy-gtk/empathy-call-window.h>
+
+#define DEBUG_DOMAIN "CallChandler"
+
+static guint nb_calls = 0;
+
+static void
+weak_notify (gpointer data,
+ GObject *where_the_object_was)
+{
+ nb_calls--;
+ if (nb_calls == 0)
+ {
+ empathy_debug (DEBUG_DOMAIN, "No more calls, leaving...");
+ gtk_main_quit ();
+ }
+}
+
+static void
+new_channel_cb (EmpathyChandler *chandler,
+ TpConn *connection,
+ TpChan *channel,
+ MissionControl *mc)
+{
+ EmpathyTpCall *call;
+
+ call = empathy_tp_call_new (connection, channel);
+ empathy_call_window_new (call);
+ g_object_unref (call);
+
+ nb_calls++;
+ g_object_weak_ref (G_OBJECT (call), weak_notify, NULL);
+}
+
+int
+main (int argc, char *argv[])
+{
+ MissionControl *mc;
+ EmpathyChandler *chandler;
+
+ gtk_init (&argc, &argv);
+
+ mc = empathy_mission_control_new ();
+
+ chandler = empathy_chandler_new ("org.gnome.Empathy.CallChandler",
+ "/org/gnome/Empathy/CallChandler");
+ g_signal_connect (chandler, "new-channel",
+ G_CALLBACK (new_channel_cb), mc);
+
+ empathy_debug (DEBUG_DOMAIN, "Ready to handle new streamed media channels");
+
+ gtk_main ();
+
+ g_object_unref (chandler);
+ g_object_unref (mc);
+
+ return EXIT_SUCCESS;
+}
diff --git a/gnome-2-22/src/empathy-call.chandler b/gnome-2-22/src/empathy-call.chandler
new file mode 100644
index 000000000..88ad9e747
--- /dev/null
+++ b/gnome-2-22/src/empathy-call.chandler
@@ -0,0 +1,5 @@
+[ChannelHandler]
+BusName = org.gnome.Empathy.CallChandler
+ObjectPath = /org/gnome/Empathy/CallChandler
+ChannelType = org.freedesktop.Telepathy.Channel.Type.StreamedMedia
+TypeSpecificCapabilities = 15
diff --git a/gnome-2-22/src/empathy-chat-chandler.c b/gnome-2-22/src/empathy-chat-chandler.c
new file mode 100644
index 000000000..ab6720912
--- /dev/null
+++ b/gnome-2-22/src/empathy-chat-chandler.c
@@ -0,0 +1,158 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2007-2008 Collabora Ltd.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * 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: Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#include <config.h>
+
+#include <stdlib.h>
+
+#include <glib.h>
+#include <glib/gi18n.h>
+#include <gtk/gtk.h>
+
+#include <libgnomevfs/gnome-vfs.h>
+
+#include <libmissioncontrol/mission-control.h>
+
+#include <libempathy/empathy-chandler.h>
+#include <libempathy/empathy-utils.h>
+#include <libempathy/empathy-tp-chat.h>
+#include <libempathy/empathy-tp-chatroom.h>
+#include <libempathy/empathy-debug.h>
+
+#include <libempathy-gtk/empathy-chat.h>
+#include <libempathy-gtk/empathy-private-chat.h>
+#include <libempathy-gtk/empathy-group-chat.h>
+#include <libempathy-gtk/empathy-chat-window.h>
+
+#define DEBUG_DOMAIN "EmpathyChat"
+
+#define BUS_NAME "org.gnome.Empathy.ChatChandler"
+#define OBJECT_PATH "/org/gnome/Empathy/ChatChandler"
+
+static guint nb_chats = 0;
+
+static void
+chat_chandler_weak_notify (gpointer data,
+ GObject *where_the_object_was)
+{
+ nb_chats--;
+ if (nb_chats == 0) {
+ empathy_debug (DEBUG_DOMAIN, "No more chats, leaving...");
+ gtk_main_quit ();
+ }
+}
+
+static void
+chat_chandler_new_channel_cb (EmpathyChandler *chandler,
+ TpConn *tp_conn,
+ TpChan *tp_chan,
+ MissionControl *mc)
+{
+ EmpathyTpChat *tp_chat;
+ McAccount *account;
+ EmpathyChat *chat;
+ gchar *id;
+
+ account = mission_control_get_account_for_connection (mc, tp_conn, NULL);
+ id = empathy_inspect_channel (account, tp_chan);
+ chat = empathy_chat_window_find_chat (account, id);
+ g_free (id);
+
+ if (chat) {
+ /* The chat already exists */
+ if (!empathy_chat_is_connected (chat)) {
+ /* The chat died, give him the new text channel */
+ if (empathy_chat_is_group_chat (chat)) {
+ tp_chat = EMPATHY_TP_CHAT (empathy_tp_chatroom_new (account, tp_chan));
+ } else {
+ tp_chat = empathy_tp_chat_new (account, tp_chan);
+ }
+ empathy_chat_set_tp_chat (chat, tp_chat);
+ g_object_unref (tp_chat);
+ }
+ empathy_chat_present (chat);
+
+ g_object_unref (account);
+ return;
+ }
+
+ if (tp_chan->handle_type == TP_HANDLE_TYPE_CONTACT) {
+ /* We have a new private chat channel */
+ tp_chat = empathy_tp_chat_new (account, tp_chan);
+ chat = EMPATHY_CHAT (empathy_private_chat_new (tp_chat));
+ }
+ else if (tp_chan->handle_type == TP_HANDLE_TYPE_ROOM) {
+ /* We have a new group chat channel */
+ tp_chat = EMPATHY_TP_CHAT (empathy_tp_chatroom_new (account, tp_chan));
+ chat = EMPATHY_CHAT (empathy_group_chat_new (EMPATHY_TP_CHATROOM (tp_chat)));
+ } else {
+ empathy_debug (DEBUG_DOMAIN,
+ "Unknown handle type (%d) for Text channel",
+ tp_chan->handle_type);
+ g_object_unref (account);
+ return;
+ }
+
+ nb_chats++;
+ g_object_weak_ref (G_OBJECT (chat), chat_chandler_weak_notify, NULL);
+ empathy_chat_present (chat);
+
+ g_object_unref (chat);
+ g_object_unref (account);
+ g_object_unref (tp_chat);
+}
+
+int
+main (int argc, char *argv[])
+{
+ EmpathyChandler *chandler;
+ MissionControl *mc;
+
+ empathy_debug_set_log_file_from_env ();
+
+ bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);
+ bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
+ textdomain (GETTEXT_PACKAGE);
+
+ gtk_init (&argc, &argv);
+
+ gtk_window_set_default_icon_name ("empathy");
+ gtk_icon_theme_append_search_path (gtk_icon_theme_get_default (),
+ PKGDATADIR G_DIR_SEPARATOR_S "icons");
+ gnome_vfs_init ();
+
+ mc = empathy_mission_control_new ();
+ chandler = empathy_chandler_new (BUS_NAME, OBJECT_PATH);
+ g_signal_connect (chandler, "new-channel",
+ G_CALLBACK (chat_chandler_new_channel_cb),
+ mc);
+
+ empathy_debug (DEBUG_DOMAIN, "Ready to handle new text channels");
+
+ gtk_main ();
+
+ g_object_unref (chandler);
+ g_object_unref (mc);
+
+ return EXIT_SUCCESS;
+}
+
diff --git a/gnome-2-22/src/empathy-chat.chandler b/gnome-2-22/src/empathy-chat.chandler
new file mode 100644
index 000000000..7de2f28d6
--- /dev/null
+++ b/gnome-2-22/src/empathy-chat.chandler
@@ -0,0 +1,5 @@
+[ChannelHandler]
+BusName = org.gnome.Empathy.ChatChandler
+ObjectPath = /org/gnome/Empathy/ChatChandler
+ChannelType = org.freedesktop.Telepathy.Channel.Type.Text
+
diff --git a/gnome-2-22/src/empathy-logs.c b/gnome-2-22/src/empathy-logs.c
new file mode 100644
index 000000000..3763ab279
--- /dev/null
+++ b/gnome-2-22/src/empathy-logs.c
@@ -0,0 +1,59 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2008 Collabora Ltd.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * 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: Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#include <config.h>
+
+#include <string.h>
+#include <stdlib.h>
+
+#include <glib.h>
+#include <gtk/gtk.h>
+
+#include <libempathy-gtk/empathy-log-window.h>
+
+static void
+destroy_cb (GtkWidget *dialog,
+ gpointer user_data)
+{
+ gtk_main_quit ();
+}
+
+int
+main (int argc, char *argv[])
+{
+ GtkWidget *window;
+
+ gtk_init (&argc, &argv);
+
+ gtk_icon_theme_append_search_path (gtk_icon_theme_get_default (),
+ PKGDATADIR G_DIR_SEPARATOR_S "icons");
+ window = empathy_log_window_show (NULL, NULL, FALSE, NULL);
+
+ g_signal_connect (window, "destroy",
+ G_CALLBACK (destroy_cb),
+ NULL);
+
+ gtk_main ();
+
+ return EXIT_SUCCESS;
+}
+
diff --git a/gnome-2-22/src/empathy.c b/gnome-2-22/src/empathy.c
new file mode 100644
index 000000000..cc8d1a5d4
--- /dev/null
+++ b/gnome-2-22/src/empathy.c
@@ -0,0 +1,451 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2007-2008 Collabora Ltd.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * 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: Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#include <config.h>
+
+#include <stdlib.h>
+#include <errno.h>
+
+#include <glib.h>
+#include <glib/gi18n.h>
+#include <gtk/gtk.h>
+#include <gdk/gdkx.h>
+
+#include <libebook/e-book.h>
+#include <libgnomevfs/gnome-vfs.h>
+
+#include <telepathy-glib/util.h>
+#include <libmissioncontrol/mc-account.h>
+#include <libmissioncontrol/mc-account-monitor.h>
+#include <libmissioncontrol/mission-control.h>
+
+#include <libempathy/empathy-idle.h>
+#include <libempathy/empathy-tp-chat.h>
+#include <libempathy/empathy-tp-chatroom.h>
+#include <libempathy/empathy-chandler.h>
+#include <libempathy/empathy-utils.h>
+#include <libempathy/empathy-debug.h>
+
+#include <libempathy-gtk/empathy-conf.h>
+#include <libempathy-gtk/empathy-preferences.h>
+#include <libempathy-gtk/empathy-main-window.h>
+#include <libempathy-gtk/empathy-status-icon.h>
+#include <libempathy-gtk/empathy-chat.h>
+#include <libempathy-gtk/empathy-private-chat.h>
+#include <libempathy-gtk/empathy-group-chat.h>
+#include <libempathy-gtk/empathy-chat-window.h>
+
+#include "bacon-message-connection.h"
+
+#define DEBUG_DOMAIN "EmpathyMain"
+#define BUS_NAME "org.gnome.Empathy.ChatChandler"
+#define OBJECT_PATH "/org/gnome/Empathy/ChatChandler"
+
+static BaconMessageConnection *connection = NULL;
+
+static void
+new_text_channel_cb (EmpathyChandler *chandler,
+ TpConn *tp_conn,
+ TpChan *tp_chan,
+ MissionControl *mc)
+{
+ EmpathyTpChat *tp_chat;
+ McAccount *account;
+ EmpathyChat *chat;
+ gchar *id;
+
+ account = mission_control_get_account_for_connection (mc, tp_conn, NULL);
+ id = empathy_inspect_channel (account, tp_chan);
+ chat = empathy_chat_window_find_chat (account, id);
+ g_free (id);
+
+ if (chat) {
+ /* The chat already exists */
+ if (!empathy_chat_is_connected (chat)) {
+ /* The chat died, give him the new text channel */
+ if (empathy_chat_is_group_chat (chat)) {
+ tp_chat = EMPATHY_TP_CHAT (empathy_tp_chatroom_new (account, tp_chan));
+ } else {
+ tp_chat = empathy_tp_chat_new (account, tp_chan);
+ }
+ empathy_chat_set_tp_chat (chat, tp_chat);
+ g_object_unref (tp_chat);
+ }
+ empathy_chat_present (chat);
+
+ g_object_unref (account);
+ return;
+ }
+
+ if (tp_chan->handle_type == TP_HANDLE_TYPE_CONTACT) {
+ /* We have a new private chat channel */
+ tp_chat = empathy_tp_chat_new (account, tp_chan);
+ chat = EMPATHY_CHAT (empathy_private_chat_new (tp_chat));
+ }
+ else if (tp_chan->handle_type == TP_HANDLE_TYPE_ROOM) {
+ /* We have a new group chat channel */
+ tp_chat = EMPATHY_TP_CHAT (empathy_tp_chatroom_new (account, tp_chan));
+ chat = EMPATHY_CHAT (empathy_group_chat_new (EMPATHY_TP_CHATROOM (tp_chat)));
+ } else {
+ empathy_debug (DEBUG_DOMAIN,
+ "Unknown handle type (%d) for Text channel",
+ tp_chan->handle_type);
+ g_object_unref (account);
+ return;
+ }
+
+ empathy_chat_present (chat);
+
+ g_object_unref (chat);
+ g_object_unref (account);
+ g_object_unref (tp_chat);
+}
+
+static void
+service_ended_cb (MissionControl *mc,
+ gpointer user_data)
+{
+ empathy_debug (DEBUG_DOMAIN, "Mission Control stopped");
+}
+
+static void
+operation_error_cb (MissionControl *mc,
+ guint operation_id,
+ guint error_code,
+ gpointer user_data)
+{
+ empathy_debug (DEBUG_DOMAIN, "Error code %d during operation %d",
+ error_code,
+ operation_id);
+}
+
+static void
+start_mission_control (EmpathyIdle *idle)
+{
+ McPresence presence;
+
+ presence = empathy_idle_get_state (idle);
+
+ if (presence > MC_PRESENCE_OFFLINE) {
+ /* MC is already running and online, nothing to do */
+ return;
+ }
+
+ empathy_idle_set_state (idle, MC_PRESENCE_AVAILABLE);
+}
+
+static void
+account_enabled_cb (McAccountMonitor *monitor,
+ gchar *unique_name,
+ EmpathyIdle *idle)
+{
+ empathy_debug (DEBUG_DOMAIN, "Account enabled: %s", unique_name);
+ start_mission_control (idle);
+}
+
+static void
+create_salut_account (void)
+{
+ McProfile *profile;
+ McProtocol *protocol;
+ gboolean salut_created = FALSE;
+ McAccount *account;
+ GList *accounts;
+ EBook *book;
+ EContact *contact;
+ gchar *nickname = NULL;
+ gchar *first_name = NULL;
+ gchar *last_name = NULL;
+ gchar *email = NULL;
+ gchar *jid = NULL;
+
+ /* Check if we already created a salut account */
+ empathy_conf_get_bool (empathy_conf_get(),
+ EMPATHY_PREFS_SALUT_ACCOUNT_CREATED,
+ &salut_created);
+ if (salut_created) {
+ return;
+ }
+
+ empathy_debug (DEBUG_DOMAIN, "Try to add a salut account...");
+
+ /* Check if the salut CM is installed */
+ profile = mc_profile_lookup ("salut");
+ protocol = mc_profile_get_protocol (profile);
+ if (!protocol) {
+ empathy_debug (DEBUG_DOMAIN, "Salut not installed");
+ g_object_unref (profile);
+ return;
+ }
+ g_object_unref (protocol);
+
+ /* Get self EContact from EDS */
+ if (!e_book_get_self (&contact, &book, NULL)) {
+ empathy_debug (DEBUG_DOMAIN, "Failed to get self econtact");
+ g_object_unref (profile);
+ return;
+ }
+
+ empathy_conf_set_bool (empathy_conf_get (),
+ EMPATHY_PREFS_SALUT_ACCOUNT_CREATED,
+ TRUE);
+
+ /* Check if there is already a salut account */
+ accounts = mc_accounts_list_by_profile (profile);
+ if (accounts) {
+ empathy_debug (DEBUG_DOMAIN, "There is already a salut account");
+ mc_accounts_list_free (accounts);
+ g_object_unref (profile);
+ return;
+ }
+
+ account = mc_account_create (profile);
+ mc_account_set_display_name (account, _("People nearby"));
+
+ nickname = e_contact_get (contact, E_CONTACT_NICKNAME);
+ first_name = e_contact_get (contact, E_CONTACT_GIVEN_NAME);
+ last_name = e_contact_get (contact, E_CONTACT_FAMILY_NAME);
+ email = e_contact_get (contact, E_CONTACT_EMAIL_1);
+ jid = e_contact_get (contact, E_CONTACT_IM_JABBER_HOME_1);
+
+ if (!tp_strdiff (nickname, "nickname")) {
+ g_free (nickname);
+ nickname = NULL;
+ }
+
+ empathy_debug (DEBUG_DOMAIN, "Salut account created:\n"
+ " nickname=%s\n"
+ " first-name=%s\n"
+ " last-name=%s\n"
+ " email=%s\n"
+ " jid=%s\n",
+ nickname, first_name, last_name, email, jid);
+
+ mc_account_set_param_string (account, "nickname", nickname ? nickname : "");
+ mc_account_set_param_string (account, "first-name", first_name ? first_name : "");
+ mc_account_set_param_string (account, "last-name", last_name ? last_name : "");
+ mc_account_set_param_string (account, "email", email ? email : "");
+ mc_account_set_param_string (account, "jid", jid ? jid : "");
+
+ g_free (nickname);
+ g_free (first_name);
+ g_free (last_name);
+ g_free (email);
+ g_free (jid);
+ g_object_unref (account);
+ g_object_unref (profile);
+ g_object_unref (contact);
+ g_object_unref (book);
+}
+
+/* The code that handles single-instance and startup notification is
+ * copied from gedit.
+ *
+ * Copyright (C) 2005 - Paolo Maggi
+ */
+static void
+on_bacon_message_received (const char *message,
+ gpointer data)
+{
+ GtkWidget *window = data;
+ guint32 startup_timestamp;
+
+ g_return_if_fail (message != NULL);
+
+ empathy_debug (DEBUG_DOMAIN,
+ "Other instance launched, presenting the main window "
+ "(message is '%s')", message);
+
+ startup_timestamp = atoi (message);
+
+ /* Set the proper interaction time on the window.
+ * Fall back to roundtripping to the X server when we
+ * don't have the timestamp, e.g. when launched from
+ * terminal. We also need to make sure that the window
+ * has been realized otherwise it will not work. lame. */
+ if (startup_timestamp == 0) {
+ /* Work if launched from the terminal */
+ empathy_debug (DEBUG_DOMAIN, "Using X server timestamp as a fallback");
+
+ if (!GTK_WIDGET_REALIZED (window)) {
+ gtk_widget_realize (GTK_WIDGET (window));
+ }
+
+ startup_timestamp = gdk_x11_get_server_time (window->window);
+ }
+
+ gtk_window_present_with_time (GTK_WINDOW (window), startup_timestamp);
+}
+
+static guint32
+get_startup_timestamp ()
+{
+ const gchar *startup_id_env;
+ gchar *startup_id = NULL;
+ gchar *time_str;
+ gchar *end;
+ gulong retval = 0;
+
+ /* we don't unset the env, since startup-notification
+ * may still need it */
+ startup_id_env = g_getenv ("DESKTOP_STARTUP_ID");
+ if (startup_id_env == NULL) {
+ goto out;
+ }
+
+ startup_id = g_strdup (startup_id_env);
+
+ time_str = g_strrstr (startup_id, "_TIME");
+ if (time_str == NULL) {
+ goto out;
+ }
+
+ errno = 0;
+
+ /* Skip past the "_TIME" part */
+ time_str += 5;
+
+ retval = strtoul (time_str, &end, 0);
+ if (end == time_str || errno != 0)
+ retval = 0;
+
+ out:
+ g_free (startup_id);
+
+ return (retval > 0) ? retval : 0;
+}
+
+int
+main (int argc, char *argv[])
+{
+ guint32 startup_timestamp;
+ EmpathyStatusIcon *icon;
+ GtkWidget *window;
+ MissionControl *mc;
+ McAccountMonitor *monitor;
+ EmpathyIdle *idle;
+ EmpathyChandler *chandler;
+ gboolean autoconnect = TRUE;
+ GError *error = NULL;
+
+ empathy_debug_set_log_file_from_env ();
+
+ bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);
+ bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
+ textdomain (GETTEXT_PACKAGE);
+
+ startup_timestamp = get_startup_timestamp ();
+
+ if (!gtk_init_with_args (&argc, &argv,
+ _("- Empathy Instant Messenger"),
+ NULL, GETTEXT_PACKAGE, &error)) {
+ empathy_debug (DEBUG_DOMAIN, error->message);
+ return EXIT_FAILURE;
+ }
+
+ g_set_application_name (PACKAGE_NAME);
+
+ gtk_window_set_default_icon_name ("empathy");
+ gtk_icon_theme_append_search_path (gtk_icon_theme_get_default (),
+ PKGDATADIR G_DIR_SEPARATOR_S "icons");
+ gnome_vfs_init ();
+
+ /* Setting up the bacon connection */
+ connection = bacon_message_connection_new ("empathy");
+ if (connection != NULL) {
+ if (!bacon_message_connection_get_is_server (connection)) {
+ gchar *message;
+
+ empathy_debug (DEBUG_DOMAIN, "Activating existing instance");
+
+ message = g_strdup_printf ("%" G_GUINT32_FORMAT,
+ startup_timestamp);
+ bacon_message_connection_send (connection, message);
+
+ /* We never popup a window, so tell startup-notification
+ * that we are done. */
+ gdk_notify_startup_complete ();
+
+ g_free (message);
+ bacon_message_connection_free (connection);
+
+ return EXIT_SUCCESS;
+ }
+ } else {
+ g_warning ("Cannot create the 'empathy' bacon connection.");
+ }
+
+ /* Setting up MC */
+ monitor = mc_account_monitor_new ();
+ mc = empathy_mission_control_new ();
+ idle = empathy_idle_new ();
+ g_signal_connect (monitor, "account-enabled",
+ G_CALLBACK (account_enabled_cb),
+ idle);
+ g_signal_connect (mc, "ServiceEnded",
+ G_CALLBACK (service_ended_cb),
+ NULL);
+ g_signal_connect (mc, "Error",
+ G_CALLBACK (operation_error_cb),
+ NULL);
+
+ empathy_conf_get_bool (empathy_conf_get(),
+ EMPATHY_PREFS_AUTOCONNECT,
+ &autoconnect);
+
+ if (autoconnect) {
+ start_mission_control (idle);
+ }
+
+ create_salut_account ();
+
+ /* Setting up UI */
+ window = empathy_main_window_show ();
+ icon = empathy_status_icon_new (GTK_WINDOW (window));
+
+ if (connection) {
+ /* We se the callback here because we need window */
+ bacon_message_connection_set_callback (connection,
+ on_bacon_message_received,
+ window);
+ }
+
+ /* Handle text channels */
+ chandler = empathy_chandler_new (BUS_NAME, OBJECT_PATH);
+ g_signal_connect (chandler, "new-channel",
+ G_CALLBACK (new_text_channel_cb),
+ mc);
+ empathy_debug (DEBUG_DOMAIN, "Ready to handle new text channels");
+
+ gtk_main ();
+
+ empathy_idle_set_state (idle, MC_PRESENCE_OFFLINE);
+
+ g_object_unref (chandler);
+ g_object_unref (monitor);
+ g_object_unref (mc);
+ g_object_unref (idle);
+ g_object_unref (icon);
+
+ return EXIT_SUCCESS;
+}
+
diff --git a/gnome-2-22/src/org.gnome.Empathy.Call.service.in b/gnome-2-22/src/org.gnome.Empathy.Call.service.in
new file mode 100644
index 000000000..1c4b95fb4
--- /dev/null
+++ b/gnome-2-22/src/org.gnome.Empathy.Call.service.in
@@ -0,0 +1,3 @@
+[D-BUS Service]
+Name=org.gnome.Empathy.CallChandler
+Exec=@libexecdir@/empathy-call-chandler
diff --git a/gnome-2-22/src/org.gnome.Empathy.Chat.service.in b/gnome-2-22/src/org.gnome.Empathy.Chat.service.in
new file mode 100644
index 000000000..2e614d9a2
--- /dev/null
+++ b/gnome-2-22/src/org.gnome.Empathy.Chat.service.in
@@ -0,0 +1,3 @@
+[D-BUS Service]
+Name=org.gnome.Empathy.ChatChandler
+Exec=@bindir@/empathy
diff --git a/gnome-2-22/tests/.gitignore b/gnome-2-22/tests/.gitignore
new file mode 100644
index 000000000..edf303249
--- /dev/null
+++ b/gnome-2-22/tests/.gitignore
@@ -0,0 +1,3 @@
+check-main
+contact-manager
+*.log
diff --git a/gnome-2-22/tests/Makefile.am b/gnome-2-22/tests/Makefile.am
new file mode 100644
index 000000000..e7b162797
--- /dev/null
+++ b/gnome-2-22/tests/Makefile.am
@@ -0,0 +1,48 @@
+SUBDIRS = xml
+
+CLEANFILES=
+
+include $(top_srcdir)/rules/check.mak
+
+SUPPRESSIONS=valgrind.supp dlopen.supp
+
+AM_CPPFLAGS = \
+ -I$(top_srcdir) \
+ $(EMPATHY_CFLAGS) \
+ $(WARN_CFLAGS)
+
+LDADD = \
+ $(top_builddir)/libempathy-gtk/libempathy-gtk.la \
+ $(top_builddir)/libempathy/libempathy.la \
+ $(EMPATHY_LIBS)
+
+noinst_PROGRAMS = \
+ contact-manager
+
+contact_manager_SOURCES = contact-manager.c
+
+check_PROGRAMS = check-main
+TESTS = check-main
+check_main_SOURCES = \
+ check-main.c \
+ check-helpers.c \
+ check-helpers.h \
+ check-libempathy.h \
+ check-empathy-utils.c \
+ check-irc-helper.h \
+ check-irc-helper.c \
+ check-empathy-irc-server.c \
+ check-empathy-irc-network.c \
+ check-empathy-irc-network-manager.c
+
+check_main_LDADD = \
+ @CHECK_LIBS@ \
+ $(top_builddir)/libempathy-gtk/libempathy-gtk.la \
+ $(top_builddir)/libempathy/libempathy.la \
+ $(AM_LDFLAGS)
+
+check_main_CFLAGS = \
+ @CHECK_CFLAGS@ \
+ $(AM_CFLAGS)
+
+TESTS_ENVIRONMENT = EMPATHY_SRCDIR=@abs_top_srcdir@
diff --git a/gnome-2-22/tests/check-empathy-irc-network-manager.c b/gnome-2-22/tests/check-empathy-irc-network-manager.c
new file mode 100644
index 000000000..3244a8e2f
--- /dev/null
+++ b/gnome-2-22/tests/check-empathy-irc-network-manager.c
@@ -0,0 +1,877 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <glib/gstdio.h>
+
+#include <check.h>
+#include "check-helpers.h"
+#include "check-libempathy.h"
+#include "check-irc-helper.h"
+
+#include <libempathy/empathy-irc-network-manager.h>
+
+#define GLOBAL_SAMPLE "default-irc-networks-sample.xml"
+#define USER_SAMPLE "user-irc-networks-sample.xml"
+#define USER_FILE "user-irc-networks.xml"
+
+static gchar *
+get_xml_file (const gchar *filename)
+{
+ return g_build_filename (g_getenv ("EMPATHY_SRCDIR"), "tests", "xml", filename, NULL);
+}
+
+static gchar *
+get_user_xml_file (const gchar *filename)
+{
+ return g_build_filename (g_get_tmp_dir (), filename, NULL);
+}
+
+START_TEST (test_empathy_irc_network_manager_add)
+{
+ EmpathyIrcNetworkManager *mgr;
+ EmpathyIrcNetwork *network;
+ GSList *networks;
+ gchar *name;
+
+ mgr = empathy_irc_network_manager_new (NULL, NULL);
+ fail_if (mgr == NULL);
+
+ networks = empathy_irc_network_manager_get_networks (mgr);
+ fail_if (networks != NULL);
+
+ /* add a network */
+ network = empathy_irc_network_new ("My Network");
+ fail_if (network == NULL);
+ empathy_irc_network_manager_add (mgr, network);
+ g_object_unref (network);
+
+ networks = empathy_irc_network_manager_get_networks (mgr);
+ fail_if (g_slist_length (networks) != 1);
+ g_object_get (networks->data, "name", &name, NULL);
+ fail_if (name == NULL || strcmp (name, "My Network") != 0);
+ g_free (name);
+ g_slist_foreach (networks, (GFunc) g_object_unref, NULL);
+ g_slist_free (networks);
+
+ /* add another network having the same name */
+ network = empathy_irc_network_new ("My Network");
+ fail_if (network == NULL);
+ empathy_irc_network_manager_add (mgr, network);
+ g_object_unref (network);
+
+ networks = empathy_irc_network_manager_get_networks (mgr);
+ fail_if (g_slist_length (networks) != 2);
+ g_object_get (networks->data, "name", &name, NULL);
+ fail_if (name == NULL || strcmp (name, "My Network") != 0);
+ g_free (name);
+ g_object_get (g_slist_next(networks)->data, "name", &name, NULL);
+ fail_if (name == NULL || strcmp (name, "My Network") != 0);
+ g_free (name);
+ g_slist_foreach (networks, (GFunc) g_object_unref, NULL);
+ g_slist_free (networks);
+
+ g_object_unref (mgr);
+}
+END_TEST
+
+START_TEST (test_load_global_file)
+{
+ EmpathyIrcNetworkManager *mgr;
+ gchar *global_file, *user_file;
+ GSList *networks, *l;
+ struct server_t freenode_servers[] = {
+ { "irc.freenode.net", 6667, FALSE },
+ { "irc.eu.freenode.net", 6667, FALSE }};
+ struct server_t gimpnet_servers[] = {
+ { "irc.gimp.org", 6667, FALSE },
+ { "irc.us.gimp.org", 6667, FALSE }};
+ struct server_t test_servers[] = {
+ { "irc.test.org", 6669, TRUE }};
+ struct server_t undernet_servers[] = {
+ { "eu.undernet.org", 6667, FALSE }};
+ gboolean network_checked[4];
+ gchar *global_file_orig;
+
+ global_file_orig = get_xml_file (GLOBAL_SAMPLE);
+ mgr = empathy_irc_network_manager_new (global_file_orig, NULL);
+
+ g_object_get (mgr,
+ "global-file", &global_file,
+ "user-file", &user_file,
+ NULL);
+ fail_if (global_file == NULL || strcmp (global_file, global_file_orig) != 0);
+ fail_if (user_file != NULL);
+ g_free (global_file);
+ g_free (global_file_orig);
+ g_free (user_file);
+
+ networks = empathy_irc_network_manager_get_networks (mgr);
+ fail_if (g_slist_length (networks) != 4);
+
+ network_checked[0] = network_checked[1] = network_checked[2] =
+ network_checked[3] = FALSE;
+ /* check networks and servers */
+ for (l = networks; l != NULL; l = g_slist_next (l))
+ {
+ gchar *name;
+
+ g_object_get (l->data, "name", &name, NULL);
+ fail_if (name == NULL);
+
+ if (strcmp (name, "Freenode") == 0)
+ {
+ check_network (l->data, "Freenode", "UTF-8", freenode_servers, 2);
+ network_checked[0] = TRUE;
+ }
+ else if (strcmp (name, "GIMPNet") == 0)
+ {
+ check_network (l->data, "GIMPNet", "UTF-8", gimpnet_servers, 2);
+ network_checked[1] = TRUE;
+ }
+ else if (strcmp (name, "Test Server") == 0)
+ {
+ check_network (l->data, "Test Server", "ISO-8859-1", test_servers, 1);
+ network_checked[2] = TRUE;
+ }
+ else if (strcmp (name, "Undernet") == 0)
+ {
+ check_network (l->data, "Undernet", "UTF-8", undernet_servers, 1);
+ network_checked[3] = TRUE;
+ }
+ else
+ {
+ fail_if (TRUE);
+ }
+
+ g_free (name);
+ }
+ fail_if (!network_checked[0] || !network_checked[1] || !network_checked[2] ||
+ !network_checked[3]);
+
+ g_slist_foreach (networks, (GFunc) g_object_unref, NULL);
+ g_slist_free (networks);
+ g_object_unref (mgr);
+}
+END_TEST
+
+static gboolean
+remove_network_named (EmpathyIrcNetworkManager *mgr,
+ const gchar *network_name)
+{
+ GSList *networks, *l;
+ gboolean removed = FALSE;
+
+ networks = empathy_irc_network_manager_get_networks (mgr);
+
+ /* check networks and servers */
+ for (l = networks; l != NULL && !removed; l = g_slist_next (l))
+ {
+ EmpathyIrcNetwork *network = l->data;
+ gchar *name;
+
+ g_object_get (network, "name", &name, NULL);
+ fail_if (name == NULL);
+
+ if (strcmp (name, network_name) == 0)
+ {
+ empathy_irc_network_manager_remove (mgr, network);
+ removed = TRUE;
+ }
+
+ g_free (name);
+ }
+
+ g_slist_foreach (networks, (GFunc) g_object_unref, NULL);
+ g_slist_free (networks);
+
+ return removed;
+}
+
+START_TEST (test_empathy_irc_network_manager_remove)
+{
+ EmpathyIrcNetworkManager *mgr;
+ GSList *networks, *l;
+ struct server_t freenode_servers[] = {
+ { "irc.freenode.net", 6667, FALSE },
+ { "irc.eu.freenode.net", 6667, FALSE }};
+ struct server_t test_servers[] = {
+ { "irc.test.org", 6669, TRUE }};
+ struct server_t undernet_servers[] = {
+ { "eu.undernet.org", 6667, FALSE }};
+ gboolean network_checked[3];
+ gboolean result;
+ gchar *global_file_orig;
+
+ global_file_orig = get_xml_file (GLOBAL_SAMPLE);
+ mgr = empathy_irc_network_manager_new (global_file_orig, NULL);
+ g_free (global_file_orig);
+
+ result = remove_network_named (mgr, "GIMPNet");
+ fail_if (!result);
+
+ networks = empathy_irc_network_manager_get_networks (mgr);
+ fail_if (g_slist_length (networks) != 3);
+
+ network_checked[0] = network_checked[1] = network_checked[2] = FALSE;
+ /* check networks and servers */
+ for (l = networks; l != NULL; l = g_slist_next (l))
+ {
+ gchar *name;
+
+ g_object_get (l->data, "name", &name, NULL);
+ fail_if (name == NULL);
+
+ if (strcmp (name, "Freenode") == 0)
+ {
+ check_network (l->data, "Freenode", "UTF-8", freenode_servers, 2);
+ network_checked[0] = TRUE;
+ }
+ else if (strcmp (name, "Test Server") == 0)
+ {
+ check_network (l->data, "Test Server", "ISO-8859-1", test_servers, 1);
+ network_checked[1] = TRUE;
+ }
+ else if (strcmp (name, "Undernet") == 0)
+ {
+ check_network (l->data, "Undernet", "UTF-8", undernet_servers, 1);
+ network_checked[2] = TRUE;
+ }
+ else
+ {
+ fail_if (TRUE);
+ }
+
+ g_free (name);
+ }
+ fail_if (!network_checked[0] || !network_checked[1] || !network_checked[2]);
+
+ g_slist_foreach (networks, (GFunc) g_object_unref, NULL);
+ g_slist_free (networks);
+ g_object_unref (mgr);
+}
+END_TEST
+
+static void
+copy_user_file (void)
+{
+ gboolean result;
+ gchar *buffer;
+ gsize length;
+ gchar *user_sample;
+ gchar *user_file;
+
+ user_sample = get_xml_file (USER_SAMPLE);
+ result = g_file_get_contents (user_sample, &buffer, &length, NULL);
+ fail_if (!result);
+
+ user_file = get_user_xml_file (USER_FILE);
+ result = g_file_set_contents (user_file, buffer, length, NULL);
+ fail_if (!result);
+
+ g_free (user_sample);
+ g_free (user_file);
+ g_free (buffer);
+}
+
+START_TEST (test_load_user_file)
+{
+ EmpathyIrcNetworkManager *mgr;
+ gchar *global_file, *user_file;
+ GSList *networks, *l;
+ struct server_t gimpnet_servers[] = {
+ { "irc.gimp.org", 6667, FALSE },
+ { "irc.us.gimp.org", 6667, FALSE },
+ { "irc.au.gimp.org", 6667, FALSE }};
+ struct server_t my_server[] = {
+ { "irc.mysrv.net", 7495, TRUE }};
+ struct server_t another_server[] = {
+ { "irc.anothersrv.be", 6660, FALSE }};
+ gboolean network_checked[3];
+ gchar *user_file_orig;
+
+ copy_user_file ();
+ user_file_orig = get_user_xml_file (USER_FILE);
+ mgr = empathy_irc_network_manager_new (NULL, user_file_orig);
+
+ g_object_get (mgr,
+ "global-file", &global_file,
+ "user-file", &user_file,
+ NULL);
+ fail_if (global_file != NULL);
+ fail_if (user_file == NULL || strcmp (user_file, user_file_orig) != 0);
+ g_free (global_file);
+ g_free (user_file);
+ g_free (user_file_orig);
+
+ networks = empathy_irc_network_manager_get_networks (mgr);
+ fail_if (g_slist_length (networks) != 3);
+
+ network_checked[0] = network_checked[1] = network_checked[2] = FALSE;
+ /* check networks and servers */
+ for (l = networks; l != NULL; l = g_slist_next (l))
+ {
+ gchar *name;
+
+ g_object_get (l->data, "name", &name, NULL);
+ fail_if (name == NULL);
+
+ if (strcmp (name, "GIMPNet") == 0)
+ {
+ check_network (l->data, "GIMPNet", "UTF-8", gimpnet_servers, 3);
+ network_checked[0] = TRUE;
+ }
+ else if (strcmp (name, "My Server") == 0)
+ {
+ check_network (l->data, "My Server", "UTF-8", my_server, 1);
+ network_checked[1] = TRUE;
+ }
+ else if (strcmp (name, "Another Server") == 0)
+ {
+ check_network (l->data, "Another Server", "UTF-8", another_server, 1);
+ network_checked[2] = TRUE;
+ }
+ else
+ {
+ fail_if (TRUE);
+ }
+
+ g_free (name);
+ }
+ fail_if (!network_checked[0] || !network_checked[1] || !network_checked[2]);
+
+ g_slist_foreach (networks, (GFunc) g_object_unref, NULL);
+ g_slist_free (networks);
+ g_object_unref (mgr);
+}
+END_TEST
+
+START_TEST (test_load_both_files)
+{
+ EmpathyIrcNetworkManager *mgr;
+ gchar *global_file, *user_file;
+ GSList *networks, *l;
+ struct server_t freenode_servers[] = {
+ { "irc.freenode.net", 6667, FALSE },
+ { "irc.eu.freenode.net", 6667, FALSE }};
+ struct server_t gimpnet_servers[] = {
+ { "irc.gimp.org", 6667, FALSE },
+ { "irc.us.gimp.org", 6667, FALSE },
+ { "irc.au.gimp.org", 6667, FALSE }};
+ struct server_t my_server[] = {
+ { "irc.mysrv.net", 7495, TRUE }};
+ struct server_t another_server[] = {
+ { "irc.anothersrv.be", 6660, FALSE }};
+ struct server_t undernet_servers[] = {
+ { "eu.undernet.org", 6667, FALSE }};
+ gboolean network_checked[5];
+ gchar *global_file_orig, *user_file_orig;
+
+ global_file_orig = get_xml_file (GLOBAL_SAMPLE);
+ user_file_orig = get_user_xml_file (USER_FILE);
+ mgr = empathy_irc_network_manager_new (global_file_orig, user_file_orig);
+
+ g_object_get (mgr,
+ "global-file", &global_file,
+ "user-file", &user_file,
+ NULL);
+ fail_if (global_file == NULL || strcmp (global_file, global_file_orig) != 0);
+ fail_if (user_file == NULL || strcmp (user_file, user_file_orig) != 0);
+ g_free (global_file);
+ g_free (global_file_orig);
+ g_free (user_file);
+ g_free (user_file_orig);
+
+ networks = empathy_irc_network_manager_get_networks (mgr);
+ fail_if (g_slist_length (networks) != 5);
+
+ network_checked[0] = network_checked[1] = network_checked[2] =
+ network_checked[3] = network_checked[4] = FALSE;
+ /* check networks and servers */
+ for (l = networks; l != NULL; l = g_slist_next (l))
+ {
+ gchar *name;
+
+ g_object_get (l->data, "name", &name, NULL);
+ fail_if (name == NULL);
+
+ if (strcmp (name, "Freenode") == 0)
+ {
+ check_network (l->data, "Freenode", "UTF-8", freenode_servers, 2);
+ network_checked[0] = TRUE;
+ }
+ else if (strcmp (name, "GIMPNet") == 0)
+ {
+ check_network (l->data, "GIMPNet", "UTF-8", gimpnet_servers, 3);
+ network_checked[1] = TRUE;
+ }
+ else if (strcmp (name, "My Server") == 0)
+ {
+ check_network (l->data, "My Server", "UTF-8", my_server, 1);
+ network_checked[2] = TRUE;
+ }
+ else if (strcmp (name, "Another Server") == 0)
+ {
+ check_network (l->data, "Another Server", "UTF-8", another_server, 1);
+ network_checked[3] = TRUE;
+ }
+ else if (strcmp (name, "Undernet") == 0)
+ {
+ check_network (l->data, "Undernet", "UTF-8", undernet_servers, 1);
+ network_checked[4] = TRUE;
+ }
+ else
+ {
+ fail_if (TRUE);
+ }
+
+ g_free (name);
+ }
+ fail_if (!network_checked[0] || !network_checked[1] || !network_checked[2] ||
+ !network_checked[3] || !network_checked[4]);
+
+ g_slist_foreach (networks, (GFunc) g_object_unref, NULL);
+ g_slist_free (networks);
+ g_object_unref (mgr);
+}
+END_TEST
+
+START_TEST (test_modify_user_file)
+{
+ EmpathyIrcNetworkManager *mgr;
+ EmpathyIrcNetwork *network;
+ EmpathyIrcServer *server;
+ gchar *global_file, *user_file;
+ GSList *networks, *l;
+ struct server_t gimpnet_servers[] = {
+ { "irc.gimp.org", 6667, TRUE },
+ { "irc.us.gimp.org", 6668, FALSE }};
+ struct server_t great_server[] = {
+ { "irc.greatserver.com", 7873, TRUE }};
+ struct server_t another_server[] = {
+ { "irc.anothersrv.be", 6660, FALSE }};
+ gboolean network_modified[2];
+ gboolean network_checked[3];
+ gchar *user_file_orig;
+
+ copy_user_file ();
+ user_file_orig = get_user_xml_file (USER_FILE);
+ mgr = empathy_irc_network_manager_new (NULL, user_file_orig);
+
+ g_object_get (mgr,
+ "global-file", &global_file,
+ "user-file", &user_file,
+ NULL);
+ fail_if (global_file != NULL);
+ fail_if (user_file == NULL || strcmp (user_file, user_file_orig) != 0);
+ g_free (global_file);
+ g_free (user_file);
+
+ networks = empathy_irc_network_manager_get_networks (mgr);
+ fail_if (g_slist_length (networks) != 3);
+
+ network_modified[0] = network_modified[1] = FALSE;
+ /* check networks and servers */
+ for (l = networks; l != NULL; l = g_slist_next (l))
+ {
+ EmpathyIrcNetwork *network;
+ gchar *name;
+
+ network = l->data;
+ g_object_get (network, "name", &name, NULL);
+ fail_if (name == NULL);
+
+ if (strcmp (name, "GIMPNet") == 0)
+ {
+ GSList *servers, *ll;
+
+ /* change charset */
+ g_object_set (network, "charset", "ISO-8859-1", NULL);
+
+ servers = empathy_irc_network_get_servers (network);
+ for (ll = servers; ll != NULL; ll = g_slist_next (ll))
+ {
+ EmpathyIrcServer *server;
+ gchar *address;
+
+ server = ll->data;
+ g_object_get (server, "address", &address, NULL);
+ if (strcmp (address, "irc.gimp.org") == 0)
+ {
+ /* change SSL */
+ g_object_set (server, "ssl", TRUE, NULL);
+ }
+ else if (strcmp (address, "irc.us.gimp.org") == 0)
+ {
+ /* change port */
+ g_object_set (server, "port", 6668, NULL);
+ }
+ else if (strcmp (address, "irc.au.gimp.org") == 0)
+ {
+ /* remove this server */
+ empathy_irc_network_remove_server (network, server);
+ }
+ else
+ {
+ fail_if (TRUE);
+ }
+
+ g_free (address);
+ }
+
+ network_modified[0] = TRUE;
+
+ g_slist_foreach (servers, (GFunc) g_object_unref, NULL);
+ g_slist_free (servers);
+ }
+ else if (strcmp (name, "My Server") == 0)
+ {
+ /* remove this network */
+ empathy_irc_network_manager_remove (mgr, network);
+ network_modified[1] = TRUE;
+ }
+ else if (strcmp (name, "Another Server") == 0)
+ {
+ /* Don't change this one */
+ }
+ else
+ {
+ fail_if (TRUE);
+ }
+
+ g_free (name);
+ }
+ fail_if (!network_modified[0] || !network_modified[1]);
+
+ /* Add a new network */
+ network = empathy_irc_network_new ("Great Server");
+ server = empathy_irc_server_new ("irc.greatserver.com", 7873, TRUE);
+ empathy_irc_network_append_server (network, server);
+ empathy_irc_network_manager_add (mgr, network);
+ g_object_unref (server);
+ g_object_unref (network);
+
+ g_slist_foreach (networks, (GFunc) g_object_unref, NULL);
+ g_slist_free (networks);
+ g_object_unref (mgr);
+
+
+ /* Now let's reload the file and check its contain */
+ mgr = empathy_irc_network_manager_new (NULL, user_file_orig);
+ g_free (user_file_orig);
+
+ networks = empathy_irc_network_manager_get_networks (mgr);
+ fail_if (g_slist_length (networks) != 3);
+
+ network_checked[0] = network_checked[1] = network_checked[2] = FALSE;
+ /* check networks and servers */
+ for (l = networks; l != NULL; l = g_slist_next (l))
+ {
+ gchar *name;
+
+ g_object_get (l->data, "name", &name, NULL);
+ fail_if (name == NULL);
+
+ if (strcmp (name, "GIMPNet") == 0)
+ {
+ check_network (l->data, "GIMPNet", "ISO-8859-1", gimpnet_servers, 2);
+ network_checked[0] = TRUE;
+ }
+ else if (strcmp (name, "Great Server") == 0)
+ {
+ check_network (l->data, "Great Server", "UTF-8", great_server, 1);
+ network_checked[1] = TRUE;
+ }
+ else if (strcmp (name, "Another Server") == 0)
+ {
+ check_network (l->data, "Another Server", "UTF-8", another_server, 1);
+ network_checked[2] = TRUE;
+ }
+ else
+ {
+ fail_if (TRUE);
+ }
+
+ g_free (name);
+ }
+ fail_if (!network_checked[0] || !network_checked[1] || !network_checked[2]);
+
+ g_slist_foreach (networks, (GFunc) g_object_unref, NULL);
+ g_slist_free (networks);
+ g_object_unref (mgr);
+}
+END_TEST
+
+START_TEST (test_modify_both_files)
+{
+ EmpathyIrcNetworkManager *mgr;
+ EmpathyIrcNetwork *network;
+ EmpathyIrcServer *server;
+ gchar *global_file, *user_file;
+ GSList *networks, *l;
+ struct server_t gimpnet_servers[] = {
+ { "irc.gimp.org", 6667, TRUE },
+ { "irc.us.gimp.org", 6668, FALSE }};
+ struct server_t great_server[] = {
+ { "irc.greatserver.com", 7873, TRUE }};
+ struct server_t another_server[] = {
+ { "irc.anothersrv.be", 6660, FALSE }};
+ struct server_t undernet_servers[] = {
+ { "eu.undernet.org", 6667, FALSE },
+ { "us.undernet.org", 6667, FALSE }};
+ gboolean network_modified[4];
+ gboolean network_checked[4];
+ gchar *global_file_orig, *user_file_orig;
+
+ copy_user_file ();
+ global_file_orig = get_xml_file (GLOBAL_SAMPLE);
+ user_file_orig = get_user_xml_file (USER_FILE);
+ mgr = empathy_irc_network_manager_new (global_file_orig, user_file_orig);
+
+ g_object_get (mgr,
+ "global-file", &global_file,
+ "user-file", &user_file,
+ NULL);
+ fail_if (global_file == NULL || strcmp (global_file, global_file_orig) != 0);
+ fail_if (user_file == NULL || strcmp (user_file, user_file_orig) != 0);
+ g_free (global_file);
+ g_free (global_file_orig);
+ g_free (user_file);
+ g_free (user_file_orig);
+
+ networks = empathy_irc_network_manager_get_networks (mgr);
+ fail_if (g_slist_length (networks) != 5);
+
+ network_modified[0] = network_modified[1] = network_modified[2] =
+ network_modified[3] = FALSE;
+ /* check networks and servers */
+ for (l = networks; l != NULL; l = g_slist_next (l))
+ {
+ EmpathyIrcNetwork *network;
+ gchar *name;
+
+ network = l->data;
+ g_object_get (network, "name", &name, NULL);
+ fail_if (name == NULL);
+
+ if (strcmp (name, "GIMPNet") == 0)
+ {
+ /* Modify user network */
+ GSList *servers, *ll;
+
+ servers = empathy_irc_network_get_servers (network);
+ for (ll = servers; ll != NULL; ll = g_slist_next (ll))
+ {
+ EmpathyIrcServer *server;
+ gchar *address;
+
+ server = ll->data;
+ g_object_get (server, "address", &address, NULL);
+ if (strcmp (address, "irc.gimp.org") == 0)
+ {
+ /* change SSL */
+ g_object_set (server, "ssl", TRUE, NULL);
+ }
+ else if (strcmp (address, "irc.us.gimp.org") == 0)
+ {
+ /* change port */
+ g_object_set (server, "port", 6668, NULL);
+ }
+ else if (strcmp (address, "irc.au.gimp.org") == 0)
+ {
+ /* remove this server */
+ empathy_irc_network_remove_server (network, server);
+ }
+ else
+ {
+ fail_if (TRUE);
+ }
+
+ g_free (address);
+ }
+
+ network_modified[0] = TRUE;
+
+ g_slist_foreach (servers, (GFunc) g_object_unref, NULL);
+ g_slist_free (servers);
+ }
+ else if (strcmp (name, "My Server") == 0)
+ {
+ /* remove user network */
+ empathy_irc_network_manager_remove (mgr, network);
+ network_modified[1] = TRUE;
+ }
+ else if (strcmp (name, "Freenode") == 0)
+ {
+ /* remove global network */
+ empathy_irc_network_manager_remove (mgr, network);
+ network_modified[2] = TRUE;
+ }
+ else if (strcmp (name, "Undernet") == 0)
+ {
+ /* modify global network */
+ EmpathyIrcServer *server;
+
+ server = empathy_irc_server_new ("us.undernet.org", 6667, FALSE);
+ empathy_irc_network_append_server (network, server);
+ g_object_unref (server);
+
+ network_modified[3] = TRUE;
+ }
+ else if (strcmp (name, "Another Server") == 0)
+ {
+ /* Don't change this one */
+ }
+ else
+ {
+ fail_if (TRUE);
+ }
+
+ g_free (name);
+ }
+ fail_if (!network_modified[0] || !network_modified[1] || !network_modified[2]
+ || !network_modified[3]);
+
+ /* Add a new network */
+ network = empathy_irc_network_new ("Great Server");
+ server = empathy_irc_server_new ("irc.greatserver.com", 7873, TRUE);
+ empathy_irc_network_append_server (network, server);
+ empathy_irc_network_manager_add (mgr, network);
+ g_object_unref (server);
+ g_object_unref (network);
+
+ g_slist_foreach (networks, (GFunc) g_object_unref, NULL);
+ g_slist_free (networks);
+ g_object_unref (mgr);
+
+
+ /* Now let's reload the file and check its contain */
+ global_file_orig = get_xml_file (GLOBAL_SAMPLE);
+ user_file_orig = get_user_xml_file (USER_FILE);
+ mgr = empathy_irc_network_manager_new (global_file_orig, user_file_orig);
+ g_free (global_file_orig);
+ g_free (user_file_orig);
+
+ networks = empathy_irc_network_manager_get_networks (mgr);
+ fail_if (g_slist_length (networks) != 4);
+
+ network_checked[0] = network_checked[1] = network_checked[2] =
+ network_checked[3] = FALSE;
+ /* check networks and servers */
+ for (l = networks; l != NULL; l = g_slist_next (l))
+ {
+ gchar *name;
+
+ g_object_get (l->data, "name", &name, NULL);
+ fail_if (name == NULL);
+
+ if (strcmp (name, "GIMPNet") == 0)
+ {
+ check_network (l->data, "GIMPNet", "UTF-8", gimpnet_servers, 2);
+ network_checked[0] = TRUE;
+ }
+ else if (strcmp (name, "Great Server") == 0)
+ {
+ check_network (l->data, "Great Server", "UTF-8", great_server, 1);
+ network_checked[1] = TRUE;
+ }
+ else if (strcmp (name, "Another Server") == 0)
+ {
+ check_network (l->data, "Another Server", "UTF-8", another_server, 1);
+ network_checked[2] = TRUE;
+ }
+ else if (strcmp (name, "Undernet") == 0)
+ {
+ check_network (l->data, "Undernet", "UTF-8", undernet_servers, 2);
+ network_checked[3] = TRUE;
+ }
+ else
+ {
+ fail_if (TRUE);
+ }
+
+ g_free (name);
+ }
+ fail_if (!network_checked[0] || !network_checked[1] || !network_checked[2] ||
+ !network_checked[3]);
+
+ g_slist_foreach (networks, (GFunc) g_object_unref, NULL);
+ g_slist_free (networks);
+ g_object_unref (mgr);
+}
+END_TEST
+
+START_TEST (test_empathy_irc_network_manager_find_network_by_address)
+{
+ EmpathyIrcNetworkManager *mgr;
+ EmpathyIrcNetwork *network;
+ struct server_t freenode_servers[] = {
+ { "irc.freenode.net", 6667, FALSE },
+ { "irc.eu.freenode.net", 6667, FALSE }};
+ gchar *global_file_orig;
+
+ global_file_orig = get_xml_file (GLOBAL_SAMPLE);
+ mgr = empathy_irc_network_manager_new (global_file_orig, NULL);
+ g_free (global_file_orig);
+
+ network = empathy_irc_network_manager_find_network_by_address (mgr,
+ "irc.freenode.net");
+ fail_if (network == NULL);
+ check_network (network, "Freenode", "UTF-8", freenode_servers, 2);
+
+ network = empathy_irc_network_manager_find_network_by_address (mgr,
+ "irc.eu.freenode.net");
+ fail_if (network == NULL);
+ check_network (network, "Freenode", "UTF-8", freenode_servers, 2);
+
+ network = empathy_irc_network_manager_find_network_by_address (mgr,
+ "unknown");
+ fail_if (network != NULL);
+
+ g_object_unref (mgr);
+}
+END_TEST
+
+START_TEST (test_no_modify_with_empty_user_file)
+{
+ EmpathyIrcNetworkManager *mgr;
+ GSList *networks;
+ gchar *global_file_orig;
+ gchar *user_file_orig;
+
+ /* user don't have a networks file yet */
+ user_file_orig = get_user_xml_file (USER_FILE);
+ g_unlink (user_file_orig);
+
+ global_file_orig = get_xml_file (GLOBAL_SAMPLE);
+ mgr = empathy_irc_network_manager_new (global_file_orig, user_file_orig);
+ g_free (global_file_orig);
+ g_object_unref (mgr);
+
+ /* We didn't modify anything so USER_FILE should be empty */
+ mgr = empathy_irc_network_manager_new (NULL, user_file_orig);
+ g_free (user_file_orig);
+
+ networks = empathy_irc_network_manager_get_networks (mgr);
+ fail_if (g_slist_length (networks) != 0);
+
+ g_slist_foreach (networks, (GFunc) g_object_unref, NULL);
+ g_slist_free (networks);
+ g_object_unref (mgr);
+}
+END_TEST
+
+TCase *
+make_empathy_irc_network_manager_tcase (void)
+{
+ TCase *tc = tcase_create ("empathy-irc-network-manager");
+ tcase_add_test (tc, test_empathy_irc_network_manager_add);
+ tcase_add_test (tc, test_load_global_file);
+ tcase_add_test (tc, test_empathy_irc_network_manager_remove);
+ tcase_add_test (tc, test_load_user_file);
+ tcase_add_test (tc, test_load_both_files);
+ tcase_add_test (tc, test_modify_user_file);
+ tcase_add_test (tc, test_modify_both_files);
+ tcase_add_test (tc, test_empathy_irc_network_manager_find_network_by_address);
+ tcase_add_test (tc, test_no_modify_with_empty_user_file);
+ return tc;
+}
diff --git a/gnome-2-22/tests/check-empathy-irc-network.c b/gnome-2-22/tests/check-empathy-irc-network.c
new file mode 100644
index 000000000..b8124a305
--- /dev/null
+++ b/gnome-2-22/tests/check-empathy-irc-network.c
@@ -0,0 +1,240 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+
+#include <check.h>
+#include "check-helpers.h"
+#include "check-libempathy.h"
+#include "check-irc-helper.h"
+
+#include <libempathy/empathy-irc-network.h>
+
+START_TEST (test_empathy_irc_network_new)
+{
+ EmpathyIrcNetwork *network;
+
+ network = empathy_irc_network_new ("Network1");
+ check_network (network, "Network1", "UTF-8", NULL, 0);
+
+ g_object_unref (network);
+}
+END_TEST
+
+START_TEST (test_property_change)
+{
+ EmpathyIrcNetwork *network;
+
+ network = empathy_irc_network_new ("Network1");
+ check_network (network, "Network1", "UTF-8", NULL, 0);
+
+ g_object_set (network,
+ "name", "Network2",
+ "charset", "ISO-8859-1",
+ NULL);
+
+ check_network (network, "Network2", "ISO-8859-1", NULL, 0);
+
+ g_object_unref (network);
+
+}
+END_TEST
+
+static gboolean modified;
+
+static void
+modified_cb (EmpathyIrcNetwork *network,
+ gpointer unused)
+{
+ modified = TRUE;
+}
+
+START_TEST (test_modified_signal)
+{
+ EmpathyIrcNetwork *network;
+
+ network = empathy_irc_network_new ("Network1");
+ check_network (network, "Network1", "UTF-8", NULL, 0);
+
+ modified = FALSE;
+ g_signal_connect (network, "modified", G_CALLBACK (modified_cb), NULL);
+
+ g_object_set (network, "name", "Network2", NULL);
+ fail_if (!modified);
+ modified = FALSE;
+ g_object_set (network, "name", "Network2", NULL);
+ fail_if (modified);
+
+ g_object_unref (network);
+}
+END_TEST
+
+static void
+add_servers (EmpathyIrcNetwork *network,
+ struct server_t *servers,
+ guint nb_servers)
+{
+ guint i;
+
+ for (i = 0; i < nb_servers; i ++)
+ {
+ EmpathyIrcServer *server;
+
+ server = empathy_irc_server_new (servers[i].address,
+ servers[i].port, servers[i].ssl);
+ modified = FALSE;
+ empathy_irc_network_append_server (network, server);
+ fail_if (!modified);
+ g_object_unref (server);
+ }
+}
+
+START_TEST (test_add_server)
+{
+ EmpathyIrcNetwork *network;
+ EmpathyIrcServer *server;
+ GSList *servers, *l;
+ struct server_t test_servers[] = {
+ { "server1", 6667, FALSE },
+ { "server2", 6668, TRUE },
+ { "server3", 6667, FALSE },
+ { "server4", 6669, TRUE }};
+ struct server_t servers_without_3[] = {
+ { "server1", 6667, FALSE },
+ { "server2", 6668, TRUE },
+ { "server4", 6669, TRUE }};
+
+ network = empathy_irc_network_new ("Network1");
+ check_network (network, "Network1", "UTF-8", NULL, 0);
+
+ modified = FALSE;
+ g_signal_connect (network, "modified", G_CALLBACK (modified_cb), NULL);
+
+ check_network (network, "Network1", "UTF-8", NULL, 0);
+
+ /* add the servers */
+ add_servers (network, test_servers, 4);
+
+ check_network (network, "Network1", "UTF-8", test_servers, 4);
+
+ /* Now let's remove the 3rd server */
+ servers = empathy_irc_network_get_servers (network);
+ l = g_slist_nth (servers, 2);
+ fail_if (l == NULL);
+ server = l->data;
+ modified = FALSE;
+ empathy_irc_network_remove_server (network, server);
+ fail_if (!modified);
+
+ /* free the list */
+ g_slist_foreach (servers, (GFunc) g_object_unref, NULL);
+ g_slist_free (servers);
+
+ /* The 3rd server should have disappear */
+ check_network (network, "Network1", "UTF-8", servers_without_3, 3);
+
+ g_object_unref (network);
+}
+END_TEST
+
+START_TEST (test_modified_signal_because_of_server)
+{
+ EmpathyIrcNetwork *network;
+ EmpathyIrcServer *server;
+
+ network = empathy_irc_network_new ("Network1");
+ check_network (network, "Network1", "UTF-8", NULL, 0);
+
+ g_signal_connect (network, "modified", G_CALLBACK (modified_cb), NULL);
+
+ server = empathy_irc_server_new ("server1", 6667, FALSE);
+ empathy_irc_network_append_server (network, server);
+
+ /* Change server properties */
+ modified = FALSE;
+ g_object_set (server, "address", "server2", NULL);
+ fail_if (!modified);
+ modified = FALSE;
+ g_object_set (server, "port", 6668, NULL);
+ fail_if (!modified);
+ modified = FALSE;
+ g_object_set (server, "ssl", TRUE, NULL);
+ fail_if (!modified);
+
+ empathy_irc_network_remove_server (network, server);
+ modified = FALSE;
+ g_object_set (server, "address", "server3", NULL);
+ /* We removed the server so the network is not modified anymore */
+ fail_if (modified);
+
+ g_object_unref (network);
+}
+END_TEST
+
+START_TEST (test_empathy_irc_network_set_server_position)
+{
+ EmpathyIrcNetwork *network;
+ GSList *servers, *l;
+ struct server_t test_servers[] = {
+ { "server1", 6667, FALSE },
+ { "server2", 6668, TRUE },
+ { "server3", 6667, FALSE },
+ { "server4", 6669, TRUE }};
+ struct server_t test_servers_sorted[] = {
+ { "server2", 6668, TRUE },
+ { "server4", 6669, TRUE },
+ { "server3", 6667, FALSE },
+ { "server1", 6667, FALSE }};
+
+ network = empathy_irc_network_new ("Network1");
+ check_network (network, "Network1", "UTF-8", NULL, 0);
+
+ modified = FALSE;
+ g_signal_connect (network, "modified", G_CALLBACK (modified_cb), NULL);
+
+ /* add the servers */
+ add_servers (network, test_servers, 4);
+ check_network (network, "Network1", "UTF-8", test_servers, 4);
+
+ /* get servers list */
+ servers = empathy_irc_network_get_servers (network);
+ fail_if (g_slist_length (servers) != 4);
+ modified = FALSE;
+
+ /* server1 go to the last position */
+ empathy_irc_network_set_server_position (network, servers->data, -1);
+
+ /* server2 go to the first position */
+ l = servers->next;
+ empathy_irc_network_set_server_position (network, l->data, 0);
+
+ /* server3 go to the third position */
+ l = l->next;
+ empathy_irc_network_set_server_position (network, l->data, 2);
+
+ /* server4 go to the second position*/
+ l = l->next;
+ empathy_irc_network_set_server_position (network, l->data, 1);
+
+ fail_if (!modified);
+
+ /* free the list */
+ g_slist_foreach (servers, (GFunc) g_object_unref, NULL);
+ g_slist_free (servers);
+
+ /* Check if servers are sorted */
+ check_network (network, "Network1", "UTF-8", test_servers_sorted, 4);
+}
+END_TEST
+
+TCase *
+make_empathy_irc_network_tcase (void)
+{
+ TCase *tc = tcase_create ("empathy-irc-network");
+ tcase_add_test (tc, test_empathy_irc_network_new);
+ tcase_add_test (tc, test_property_change);
+ tcase_add_test (tc, test_modified_signal);
+ tcase_add_test (tc, test_add_server);
+ tcase_add_test (tc, test_modified_signal_because_of_server);
+ tcase_add_test (tc, test_empathy_irc_network_set_server_position);
+ return tc;
+}
diff --git a/gnome-2-22/tests/check-empathy-irc-server.c b/gnome-2-22/tests/check-empathy-irc-server.c
new file mode 100644
index 000000000..52607f221
--- /dev/null
+++ b/gnome-2-22/tests/check-empathy-irc-server.c
@@ -0,0 +1,93 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+
+#include <check.h>
+#include "check-helpers.h"
+#include "check-libempathy.h"
+#include "check-irc-helper.h"
+
+#include <libempathy/empathy-irc-server.h>
+
+START_TEST (test_empathy_irc_server_new)
+{
+ EmpathyIrcServer *server;
+
+ server = empathy_irc_server_new ("test.localhost", 6667, TRUE);
+ check_server (server, "test.localhost", 6667, TRUE);
+
+ g_object_unref (server);
+}
+END_TEST
+
+START_TEST (test_property_change)
+{
+ EmpathyIrcServer *server;
+
+ server = empathy_irc_server_new ("test.localhost", 6667, TRUE);
+ fail_if (server == NULL);
+
+ g_object_set (server,
+ "address", "test2.localhost",
+ "port", 6668,
+ "ssl", FALSE,
+ NULL);
+
+ check_server (server, "test2.localhost", 6668, FALSE);
+
+ g_object_unref (server);
+}
+END_TEST
+
+static gboolean modified = FALSE;
+
+static void
+modified_cb (EmpathyIrcServer *server,
+ gpointer unused)
+{
+ modified = TRUE;
+}
+
+START_TEST (test_modified_signal)
+{
+ EmpathyIrcServer *server;
+
+ server = empathy_irc_server_new ("test.localhost", 6667, TRUE);
+ fail_if (server == NULL);
+
+ g_signal_connect (server, "modified", G_CALLBACK (modified_cb), NULL);
+
+ /* address */
+ g_object_set (server, "address", "test2.localhost", NULL);
+ fail_if (!modified);
+ modified = FALSE;
+ g_object_set (server, "address", "test2.localhost", NULL);
+ fail_if (modified);
+
+ /* port */
+ g_object_set (server, "port", 6668, NULL);
+ fail_if (!modified);
+ modified = FALSE;
+ g_object_set (server, "port", 6668, NULL);
+ fail_if (modified);
+
+ /* ssl */
+ g_object_set (server, "ssl", FALSE, NULL);
+ fail_if (!modified);
+ modified = FALSE;
+ g_object_set (server, "ssl", FALSE, NULL);
+ fail_if (modified);
+
+ g_object_unref (server);
+}
+END_TEST
+
+TCase *
+make_empathy_irc_server_tcase (void)
+{
+ TCase *tc = tcase_create ("empathy-irc-server");
+ tcase_add_test (tc, test_empathy_irc_server_new);
+ tcase_add_test (tc, test_property_change);
+ tcase_add_test (tc, test_modified_signal);
+ return tc;
+}
diff --git a/gnome-2-22/tests/check-empathy-utils.c b/gnome-2-22/tests/check-empathy-utils.c
new file mode 100644
index 000000000..faf261058
--- /dev/null
+++ b/gnome-2-22/tests/check-empathy-utils.c
@@ -0,0 +1,29 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+
+#include <check.h>
+#include "check-helpers.h"
+#include "check-libempathy.h"
+
+#include <libempathy/empathy-utils.h>
+
+START_TEST (test_empathy_substring)
+{
+ gchar *tmp;
+
+ tmp = empathy_substring ("empathy", 2, 6);
+ fail_if (tmp == NULL);
+ fail_if (strcmp (tmp, "path") != 0);
+
+ g_free (tmp);
+}
+END_TEST
+
+TCase *
+make_empathy_utils_tcase (void)
+{
+ TCase *tc = tcase_create ("empathy-utils");
+ tcase_add_test (tc, test_empathy_substring);
+ return tc;
+}
diff --git a/gnome-2-22/tests/check-helpers.c b/gnome-2-22/tests/check-helpers.c
new file mode 100644
index 000000000..7a7663fce
--- /dev/null
+++ b/gnome-2-22/tests/check-helpers.c
@@ -0,0 +1,63 @@
+/*
+ * check-helpers.c - Source for some check helpers
+ * Copyright (C) 2007-2008 Collabora Ltd.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "check-helpers.h"
+
+static gboolean expecting_critical = FALSE;
+static gboolean received_critical = FALSE;
+
+static void
+check_helper_log_critical_func (const gchar *log_damain,
+ GLogLevelFlags log_level,
+ const gchar *message,
+ gpointer user_data)
+{
+
+ if (!expecting_critical)
+ {
+ fail("Unexpected critical message: %s\n", message);
+ }
+
+ g_assert (log_level & G_LOG_LEVEL_CRITICAL);
+
+ received_critical = TRUE;
+}
+
+gboolean
+got_critical (void)
+{
+ return received_critical;
+}
+
+void
+expect_critical (gboolean expected)
+{
+ expecting_critical = expected;
+ received_critical = FALSE;
+}
+
+void
+check_helpers_init (void)
+{
+ g_log_set_handler (NULL, G_LOG_LEVEL_CRITICAL,
+ check_helper_log_critical_func, NULL);
+}
diff --git a/gnome-2-22/tests/check-helpers.h b/gnome-2-22/tests/check-helpers.h
new file mode 100644
index 000000000..b71b3b65b
--- /dev/null
+++ b/gnome-2-22/tests/check-helpers.h
@@ -0,0 +1,43 @@
+/*
+ * check-helpers.c - Source for some check helpers
+ * Copyright (C) 2007 Collabora Ltd.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+#ifndef __CHECK_HELPERS_H__
+#define __CHECK_HELPERS_H__
+
+#include <glib.h>
+#include <check.h>
+
+void
+check_helpers_init (void);
+
+void
+expect_critical (gboolean expected);
+
+gboolean
+got_critical (void);
+
+#define fail_unless_critical(expr, ...) \
+G_STMT_START { \
+ expect_critical (TRUE); \
+ expr; \
+ _fail_unless (got_critical (), __FILE__, __LINE__, \
+ "Expected g_critical, got none", ## __VA_ARGS__, NULL); \
+ expect_critical (FALSE); \
+} G_STMT_END;
+
+#endif /* #ifndef __CHECK_HELPERS_H__ */
diff --git a/gnome-2-22/tests/check-irc-helper.c b/gnome-2-22/tests/check-irc-helper.c
new file mode 100644
index 000000000..477b134c2
--- /dev/null
+++ b/gnome-2-22/tests/check-irc-helper.c
@@ -0,0 +1,80 @@
+#include "check-irc-helper.h"
+
+void
+check_server (EmpathyIrcServer *server,
+ const gchar *_address,
+ guint _port,
+ gboolean _ssl)
+{
+ gchar *address;
+ guint port;
+ gboolean ssl;
+
+ fail_if (server == NULL);
+
+ g_object_get (server,
+ "address", &address,
+ "port", &port,
+ "ssl", &ssl,
+ NULL);
+
+ fail_if (address == NULL || strcmp (address, _address) != 0);
+ fail_if (port != _port);
+ fail_if (ssl != _ssl);
+
+ g_free (address);
+}
+
+void
+check_network (EmpathyIrcNetwork *network,
+ const gchar *_name,
+ const gchar *_charset,
+ struct server_t *_servers,
+ guint nb_servers)
+{
+ gchar *name, *charset;
+ GSList *servers, *l;
+ guint i;
+
+ fail_if (network == NULL);
+
+ g_object_get (network,
+ "name", &name,
+ "charset", &charset,
+ NULL);
+
+ fail_if (name == NULL || strcmp (name, _name) != 0);
+ fail_if (charset == NULL || strcmp (charset, _charset) != 0);
+
+ servers = empathy_irc_network_get_servers (network);
+ fail_if (g_slist_length (servers) != nb_servers);
+
+ /* Is that the right servers ? */
+ for (l = servers, i = 0; l != NULL; l = g_slist_next (l), i++)
+ {
+ EmpathyIrcServer *server;
+ gchar *address;
+ guint port;
+ gboolean ssl;
+
+ server = l->data;
+
+ g_object_get (server,
+ "address", &address,
+ "port", &port,
+ "ssl", &ssl,
+ NULL);
+
+ fail_if (address == NULL || strcmp (address, _servers[i].address)
+ != 0);
+ fail_if (port != _servers[i].port);
+ fail_if (ssl != _servers[i].ssl);
+
+ g_free (address);
+ }
+
+ g_slist_foreach (servers, (GFunc) g_object_unref, NULL);
+ g_slist_free (servers);
+ g_free (name);
+ g_free (charset);
+}
diff --git a/gnome-2-22/tests/check-irc-helper.h b/gnome-2-22/tests/check-irc-helper.h
new file mode 100644
index 000000000..32a34b60d
--- /dev/null
+++ b/gnome-2-22/tests/check-irc-helper.h
@@ -0,0 +1,27 @@
+#include <stdlib.h>
+#include <string.h>
+
+#include <check.h>
+#include "check-helpers.h"
+
+#include <libempathy/empathy-irc-server.h>
+#include <libempathy/empathy-irc-network.h>
+#include <libempathy/empathy-irc-network-manager.h>
+
+#ifndef __CHECK_IRC_HELPER_H__
+#define __CHECK_IRC_HELPER_H__
+
+struct server_t
+{
+ gchar *address;
+ guint port;
+ gboolean ssl;
+};
+
+void check_server (EmpathyIrcServer *server, const gchar *_address,
+ guint _port, gboolean _ssl);
+
+void check_network (EmpathyIrcNetwork *network, const gchar *_name,
+ const gchar *_charset, struct server_t *_servers, guint nb_servers);
+
+#endif /* __CHECK_IRC_HELPER_H__ */
diff --git a/gnome-2-22/tests/check-libempathy.h b/gnome-2-22/tests/check-libempathy.h
new file mode 100644
index 000000000..0f9388dcf
--- /dev/null
+++ b/gnome-2-22/tests/check-libempathy.h
@@ -0,0 +1,9 @@
+#ifndef __CHECK_LIBEMPATHY__
+#define __CHECK_LIBEMPATHY__
+
+TCase * make_empathy_utils_tcase (void);
+TCase * make_empathy_irc_server_tcase (void);
+TCase * make_empathy_irc_network_tcase (void);
+TCase * make_empathy_irc_network_manager_tcase (void);
+
+#endif /* #ifndef __CHECK_LIBEMPATHY__ */
diff --git a/gnome-2-22/tests/check-main.c b/gnome-2-22/tests/check-main.c
new file mode 100644
index 000000000..f0e366d03
--- /dev/null
+++ b/gnome-2-22/tests/check-main.c
@@ -0,0 +1,43 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <glib-object.h>
+
+#include <check.h>
+
+#include "check-helpers.h"
+#include "check-libempathy.h"
+
+#include "config.h"
+
+static Suite *
+make_libempathy_suite (void)
+{
+ Suite *s = suite_create ("libempathy");
+
+ suite_add_tcase (s, make_empathy_utils_tcase ());
+ suite_add_tcase (s, make_empathy_irc_server_tcase ());
+ suite_add_tcase (s, make_empathy_irc_network_tcase ());
+ suite_add_tcase (s, make_empathy_irc_network_manager_tcase ());
+
+ return s;
+}
+
+int
+main (void)
+{
+ int number_failed = 0;
+ Suite *s;
+ SRunner *sr;
+
+ check_helpers_init ();
+ g_type_init ();
+
+ s = make_libempathy_suite ();
+ sr = srunner_create (s);
+ srunner_run_all (sr, CK_NORMAL);
+ number_failed += srunner_ntests_failed (sr);
+ srunner_free (sr);
+
+ return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
+}
diff --git a/gnome-2-22/tests/contact-manager.c b/gnome-2-22/tests/contact-manager.c
new file mode 100644
index 000000000..75bfc7fae
--- /dev/null
+++ b/gnome-2-22/tests/contact-manager.c
@@ -0,0 +1,34 @@
+#include <stdlib.h>
+
+#include <glib.h>
+#include <libempathy/empathy-contact-manager.h>
+
+static gboolean
+time_out (gpointer main_loop)
+{
+ g_main_loop_quit (main_loop);
+
+ return FALSE;
+}
+
+int
+main (int argc, char **argv)
+{
+ EmpathyContactManager *manager;
+ GMainLoop *main_loop;
+
+ g_type_init ();
+
+ main_loop = g_main_loop_new (NULL, FALSE);
+ manager = empathy_contact_manager_new ();
+
+ g_timeout_add_seconds (5, time_out, main_loop);
+
+ g_main_loop_run (main_loop);
+
+ g_object_unref (manager);
+ g_main_loop_unref (main_loop);
+
+ return EXIT_SUCCESS;
+}
+
diff --git a/gnome-2-22/tests/dlopen.supp b/gnome-2-22/tests/dlopen.supp
new file mode 100644
index 000000000..f6300a3a7
--- /dev/null
+++ b/gnome-2-22/tests/dlopen.supp
@@ -0,0 +1,127 @@
+{
+ <dlopen>
+ Addrcheck,Memcheck:Cond
+ obj:/lib/ld-2.5.so
+ obj:/lib/ld-2.5.so
+ obj:/lib/ld-2.5.so
+ obj:/lib/i686/cmov/libdl-2.5.so
+ obj:/lib/ld-2.5.so
+ obj:/lib/i686/cmov/libdl-2.5.so
+ fun:dlopen
+}
+{
+ <dlopen>
+ Addrcheck,Memcheck:Addr4
+ obj:/lib/ld-2.5.so
+ obj:/lib/ld-2.5.so
+ obj:/lib/ld-2.5.so
+ obj:/lib/ld-2.5.so
+ obj:/lib/ld-2.5.so
+ obj:/lib/ld-2.5.so
+ obj:/lib/i686/cmov/libdl-2.5.so
+ obj:/lib/ld-2.5.so
+ obj:/lib/i686/cmov/libdl-2.5.so
+ fun:dlopen
+}
+{
+ <dlopen>
+ Addrcheck,Memcheck:Cond
+ obj:/lib/ld-2.5.so
+ obj:/lib/ld-2.5.so
+ obj:/lib/ld-2.5.so
+ obj:/lib/ld-2.5.so
+ obj:/lib/i686/cmov/libdl-2.5.so
+ obj:/lib/ld-2.5.so
+ obj:/lib/i686/cmov/libdl-2.5.so
+ fun:dlopen
+}
+{
+ <dlsym>
+ Addrcheck,Memcheck:Addr4
+ obj:/lib/ld-2.5.so
+ obj:/lib/ld-2.5.so
+ obj:/lib/ld-2.5.so
+ obj:/lib/i686/cmov/libc-2.5.so
+ fun:_dl_sym
+ obj:/lib/i686/cmov/libdl-2.5.so
+ obj:/lib/ld-2.5.so
+ obj:/lib/i686/cmov/libdl-2.5.so
+ fun:dlsym
+}
+{
+ <dlsym>
+ Addrcheck,Memcheck:Cond
+ obj:/lib/ld-2.5.so
+ obj:/lib/ld-2.5.so
+ obj:/lib/ld-2.5.so
+ obj:/lib/i686/cmov/libc-2.5.so
+ fun:_dl_sym
+ obj:/lib/i686/cmov/libdl-2.5.so
+ obj:/lib/ld-2.5.so
+ obj:/lib/i686/cmov/libdl-2.5.so
+ fun:dlsym
+}
+{
+ <dlopen>
+ Addrcheck,Memcheck:Addr1
+ fun:malloc
+ obj:/lib/ld-2.5.so
+ obj:/lib/ld-2.5.so
+ obj:/lib/ld-2.5.so
+ obj:/lib/ld-2.5.so
+ obj:/lib/ld-2.5.so
+ obj:/lib/ld-2.5.so
+ obj:/lib/ld-2.5.so
+ obj:/lib/i686/cmov/libdl-2.5.so
+ obj:/lib/ld-2.5.so
+ obj:/lib/i686/cmov/libdl-2.5.so
+ fun:dlopen
+}
+{
+ <dlopen>
+ Addrcheck,Memcheck:Addr1
+ fun:malloc
+ obj:/lib/ld-2.5.so
+ obj:/lib/ld-2.5.so
+ obj:/lib/ld-2.5.so
+ obj:/lib/ld-2.5.so
+ obj:/lib/ld-2.5.so
+ obj:/lib/ld-2.5.so
+ obj:/lib/ld-2.5.so
+ obj:/lib/i686/cmov/libdl-2.5.so
+ obj:/lib/ld-2.5.so
+ obj:/lib/i686/cmov/libdl-2.5.so
+ fun:dlopen
+}
+{
+ <dlopen>
+ Addrcheck,Memcheck:Addr1
+ fun:malloc
+ obj:/lib/ld-2.5.so
+ obj:/lib/ld-2.5.so
+ obj:/lib/ld-2.5.so
+ obj:/lib/ld-2.5.so
+ obj:/lib/ld-2.5.so
+ obj:/lib/ld-2.5.so
+ obj:/lib/ld-2.5.so
+ obj:/lib/i686/cmov/libdl-2.5.so
+ obj:/lib/ld-2.5.so
+ obj:/lib/i686/cmov/libdl-2.5.so
+ fun:dlopen
+}
+{
+ <libdl>
+ Addrcheck,Memcheck:Addr4
+ obj:/lib/ld-2.5.so
+ obj:/lib/ld-2.5.so
+ obj:/lib/ld-2.5.so
+ obj:/lib/ld-2.5.so
+ obj:/lib/ld-2.5.so
+ obj:/lib/ld-2.5.so
+ obj:/lib/ld-2.5.so
+ obj:/lib/ld-2.5.so
+ obj:/lib/ld-2.5.so
+ obj:/lib/i686/cmov/libdl-2.5.so
+ obj:/lib/ld-2.5.so
+ obj:/lib/i686/cmov/libdl-2.5.so
+}
diff --git a/gnome-2-22/tests/valgrind.supp b/gnome-2-22/tests/valgrind.supp
new file mode 100644
index 000000000..29bb04547
--- /dev/null
+++ b/gnome-2-22/tests/valgrind.supp
@@ -0,0 +1,711 @@
+### this file contains suppressions for valgrind when running
+### the gibber/telepathy-salut unit tests based on the gstreamer one
+
+### syscall suppressions
+
+{
+ <clone on Wim's Debian>
+ Memcheck:Param
+ clone(parent_tidptr)
+ fun:clone
+ fun:clone
+}
+
+{
+ <clone on Wim's Debian>
+ Memcheck:Param
+ clone(child_tidptr)
+ fun:clone
+ fun:clone
+}
+
+{
+ <clone on Wim's Debian>
+ Memcheck:Param
+ clone(tlsinfo)
+ fun:clone
+ fun:clone
+}
+
+### glibc suppressions
+
+{
+ <conditional jump on wim's debian 2/2/06>
+ Memcheck:Cond
+ obj:/lib/ld-2.3.*.so
+ fun:dl_open_worker
+ obj:/lib/ld-2.3.*.so
+ fun:_dl_open
+ fun:dlopen_doit
+ obj:/lib/ld-2.3.*.so
+ fun:_dlerror_run
+ fun:dlopen@@GLIBC_2.1
+ fun:g_module_open
+}
+
+# glibc does not deallocate thread-local storage
+
+{
+ <tls>
+ Memcheck:Leak
+ fun:calloc
+ fun:_dl_allocate_tls
+ fun:pthread_create@@*
+}
+
+# I get an extra stack entry on x86/dapper
+{
+ <tls>
+ Memcheck:Leak
+ fun:calloc
+ obj:/lib/ld-2.3.*.so
+ fun:_dl_allocate_tls
+ fun:pthread_create@@*
+}
+
+
+{
+ <pthread strstr>
+ Memcheck:Cond
+ fun:strstr
+ fun:__pthread_initialize_minimal
+ obj:/lib/libpthread-*.so
+ obj:/lib/libpthread-*.so
+ fun:call_init
+ fun:_dl_init
+ obj:/lib/ld-*.so
+}
+
+# a thread-related free problem in glibc from Edgard
+{
+ __libc_freeres_rw_acess
+ Memcheck:Addr4
+ obj:*
+ obj:*
+ obj:*
+ obj:*
+ obj:*
+ fun:__libc_freeres
+}
+
+{
+ <a conditional jump on wim's debian>
+ Memcheck:Cond
+ obj:/lib/ld-2.3.*.so
+ obj:/lib/ld-2.3.*.so
+ obj:/lib/ld-2.3.*.so
+ obj:/lib/ld-2.3.*.so
+ obj:/lib/ld-2.3.*.so
+}
+
+# g_module_open-related problems
+{
+ <started showing up on fc4-quick>
+ Memcheck:Addr2
+ fun:memcpy
+ fun:_dl_map_object_deps
+ fun:dl_open_worker
+ fun:_dl_catch_error
+ fun:_dl_open
+ fun:dlopen_doit
+ fun:_dl_catch_error
+ fun:_dlerror_run
+ fun:dlopen@@GLIBC_2.1
+ fun:g_module_open
+}
+
+{
+ <started showing up on fc4-quick>
+ Memcheck:Addr4
+ fun:memcpy
+ fun:_dl_map_object_deps
+ fun:dl_open_worker
+ fun:_dl_catch_error
+ fun:_dl_open
+ fun:dlopen_doit
+ fun:_dl_catch_error
+ fun:_dlerror_run
+ fun:dlopen@@GLIBC_2.1
+ fun:g_module_open
+}
+
+{
+ <g_module_open on wim's debian>
+ Memcheck:Cond
+ obj:/lib/ld-2.3.*.so
+ obj:/lib/ld-2.3.*.so
+ obj:/lib/ld-2.3.*.so
+ fun:do_sym
+ fun:_dl_sym
+ fun:dlsym_doit
+ obj:/lib/ld-2.3.*.so
+ fun:_dlerror_run
+ fun:dlsym
+ fun:g_module_symbol
+ fun:g_module_open
+}
+
+{
+ <g_module_open on wim's debian>
+ Memcheck:Cond
+ obj:/lib/ld-2.3.*.so
+ obj:/lib/ld-2.3.*.so
+ obj:/lib/ld-2.3.*.so
+ fun:dl_open_worker
+ obj:/lib/ld-2.3.*.so
+ fun:_dl_open
+ fun:dlopen_doit
+ obj:/lib/ld-2.3.*.so
+ fun:_dlerror_run
+ fun:dlopen@@GLIBC_2.1
+ fun:g_module_open
+}
+{
+ <g_module_open on wim's debian>
+ Memcheck:Cond
+ obj:/lib/ld-2.3.*.so
+ fun:dl_open_worker
+ obj:/lib/ld-2.3.*.so
+ fun:_dl_open
+ fun:dlopen_doit
+ obj:/lib/ld-2.3.*.so
+ fun:_dlerror_run
+ fun:dlopen@@GLIBC_2.1
+ fun:g_module_open
+}
+
+{
+ <leak on wim's debian in g_module_open>
+ Memcheck:Leak
+ fun:malloc
+ obj:/lib/ld-2.3.*.so
+ fun:dl_open_worker
+ obj:/lib/ld-2.3.*.so
+ fun:_dl_open
+ fun:dlopen_doit
+ obj:/lib/ld-2.3.*.so
+ fun:_dlerror_run
+ fun:dlopen@@GLIBC_2.1
+ fun:g_module_open
+}
+
+{
+ <invalid read on wim's debian>
+ Memcheck:Addr4
+ obj:/lib/ld-2.3.*.so
+ obj:/lib/ld-2.3.*.so
+ obj:/lib/ld-2.3.*.so
+ obj:/lib/ld-2.3.*.so
+ obj:/lib/ld-2.3.*.so
+ obj:/lib/ld-2.3.*.so
+ obj:/lib/ld-2.3.*.so
+ fun:dl_open_worker
+ obj:/lib/ld-2.3.*.so
+ fun:_dl_open
+ fun:dlopen_doit
+ obj:/lib/ld-2.3.*.so
+}
+
+{
+ <invalid read on wim's debian>
+ Memcheck:Addr4
+ obj:/lib/ld-2.3.*.so
+ obj:/lib/ld-2.3.*.so
+ obj:/lib/ld-2.3.*.so
+ obj:/lib/ld-2.3.*.so
+ obj:/lib/ld-2.3.*.so
+ obj:/lib/ld-2.3.*.so
+ fun:dl_open_worker
+ obj:/lib/ld-2.3.*.so
+ fun:_dl_open
+ fun:dlopen_doit
+ obj:/lib/ld-2.3.*.so
+ fun:_dlerror_run
+}
+
+{
+ <invalid read on wim's debian - 2006-02-02>
+ Memcheck:Addr4
+ obj:/lib/ld-2.3.*.so
+ obj:/lib/ld-2.3.*.so
+ obj:/lib/ld-2.3.*.so
+ fun:dl_open_worker
+ obj:/lib/ld-2.3.*.so
+ fun:_dl_open
+ fun:dlopen_doit
+ obj:/lib/ld-2.3.*.so
+ fun:_dlerror_run
+ fun:dlopen@@GLIBC_2.1
+ fun:g_module_open
+}
+
+{
+ <invalid read on wim's debian - 2006-02-02>
+ Memcheck:Addr4
+ obj:/lib/ld-2.3.*.so
+ obj:/lib/ld-2.3.*.so
+ fun:dl_open_worker
+ obj:/lib/ld-2.3.*.so
+ fun:_dl_open
+ fun:dlopen_doit
+ obj:/lib/ld-2.3.*.so
+ fun:_dlerror_run
+ fun:dlopen@@GLIBC_2.1
+ fun:g_module_open
+}
+
+{
+ <invalid read on wim's debian - 2006-02-02>
+ Memcheck:Addr4
+ obj:/lib/ld-2.3.*.so
+ obj:/lib/ld-2.3.*.so
+ obj:/lib/ld-2.3.*.so
+ fun:do_sym
+ fun:_dl_sym
+ fun:dlsym_doit
+ obj:/lib/ld-2.3.*.so
+ fun:_dlerror_run
+ fun:dlsym
+ fun:g_module_symbol
+ fun:g_module_open
+}
+
+{
+ <futex on Andy's 64-bit ubuntu>
+ Memcheck:Param
+ futex(uaddr2)
+ fun:pthread_once
+ obj:/lib/libc-2.3.*.so
+ obj:/lib/libc-2.3.*.so
+ fun:mbsnrtowcs
+ fun:vfprintf
+ fun:vsprintf
+ fun:sprintf
+ obj:/lib/libc-2.3.*.so
+}
+
+# valgrind doesn't allow me to specify a suppression for Addr1, Addr2, Addr4
+# as Addr*, so 3 copies for that; and then 2 of each for that pesky memcpy
+{
+ <Invalid read of size 1, 2, 4 on thomas's FC4>
+ Memcheck:Addr1
+ fun:_dl_signal_error
+ fun:_dl_map_object_deps
+ fun:dl_open_worker
+ fun:_dl_catch_error
+ fun:_dl_open
+ fun:dlopen_doit
+ fun:_dl_catch_error
+ fun:_dlerror_run
+ fun:dlopen@@GLIBC_2.1
+ fun:g_module_open
+}
+
+{
+ <Invalid read of size 1, 2, 4 on thomas's FC4>
+ Memcheck:Addr2
+ fun:_dl_signal_error
+ fun:_dl_map_object_deps
+ fun:dl_open_worker
+ fun:_dl_catch_error
+ fun:_dl_open
+ fun:dlopen_doit
+ fun:_dl_catch_error
+ fun:_dlerror_run
+ fun:dlopen@@GLIBC_2.1
+ fun:g_module_open
+}
+{
+ <Invalid read of size 1, 2, 4 on thomas's FC4>
+ Memcheck:Addr4
+ fun:_dl_signal_error
+ fun:_dl_map_object_deps
+ fun:dl_open_worker
+ fun:_dl_catch_error
+ fun:_dl_open
+ fun:dlopen_doit
+ fun:_dl_catch_error
+ fun:_dlerror_run
+ fun:dlopen@@GLIBC_2.1
+ fun:g_module_open
+}
+
+{
+ <Invalid read of size 1, 2, 4 on thomas's FC4>
+ Memcheck:Addr1
+ fun:memcpy
+ fun:_dl_signal_error
+ fun:_dl_map_object_deps
+ fun:dl_open_worker
+ fun:_dl_catch_error
+ fun:_dl_open
+ fun:dlopen_doit
+ fun:_dl_catch_error
+ fun:_dlerror_run
+ fun:dlopen@@GLIBC_2.1
+ fun:g_module_open
+}
+
+{
+ <Invalid read of size 1, 2, 4 on thomas's FC4>
+ Memcheck:Addr2
+ fun:memcpy
+ fun:_dl_signal_error
+ fun:_dl_map_object_deps
+ fun:dl_open_worker
+ fun:_dl_catch_error
+ fun:_dl_open
+ fun:dlopen_doit
+ fun:_dl_catch_error
+ fun:_dlerror_run
+ fun:dlopen@@GLIBC_2.1
+ fun:g_module_open
+}
+{
+ <Invalid read of size 1, 2, 4 on thomas's FC4>
+ Memcheck:Addr4
+ fun:memcpy
+ fun:_dl_signal_error
+ fun:_dl_map_object_deps
+ fun:dl_open_worker
+ fun:_dl_catch_error
+ fun:_dl_open
+ fun:dlopen_doit
+ fun:_dl_catch_error
+ fun:_dlerror_run
+ fun:dlopen@@GLIBC_2.1
+ fun:g_module_open
+}
+
+{
+ <Addr8 on Andy's AMD64 ubuntu in dl_open>
+ Memcheck:Addr8
+ obj:/lib/ld-2.3.*.so
+ obj:/lib/ld-2.3.*.so
+ obj:/lib/ld-2.3.*.so
+ obj:/lib/ld-2.3.*.so
+ obj:/lib/ld-2.3.*.so
+ obj:/lib/ld-2.3.*.so
+ obj:/lib/ld-2.3.*.so
+ obj:/lib/libc-2.3.*.so
+ obj:/lib/ld-2.3.*.so
+ fun:_dl_open
+ obj:/lib/libdl-2.3.*.so
+ obj:/lib/ld-2.3.*.so
+}
+
+{
+ <Conditional jump on Andy's AMD64 ubuntu>
+ Memcheck:Cond
+ obj:/lib/ld-2.3.*.so
+ obj:/lib/libc-2.3.*.so
+ obj:/lib/ld-2.3.*.so
+ fun:_dl_open
+ obj:/lib/libdl-2.3.*.so
+ obj:/lib/ld-2.3.*.so
+ obj:/lib/libdl-2.3.*.so
+ fun:dlopen
+ fun:g_module_open
+}
+
+{
+ <Mike's x86 dapper>
+ Memcheck:Addr4
+ obj:/lib/ld-2.3.6.so
+ obj:/lib/ld-2.3.6.so
+ obj:/lib/tls/i686/cmov/libc-2.3.6.so
+ obj:/lib/ld-2.3.6.so
+ fun:_dl_open
+ obj:/lib/tls/i686/cmov/libdl-2.3.6.so
+ obj:/lib/ld-2.3.6.so
+ obj:/lib/tls/i686/cmov/libdl-2.3.6.so
+ fun:dlopen
+}
+
+{
+ <Mike's x86 dapper>
+ Memcheck:Cond
+ obj:/lib/ld-2.3.6.so
+ obj:/lib/tls/i686/cmov/libc-2.3.6.so
+ obj:/lib/ld-2.3.6.so
+ fun:_dl_open
+ obj:/lib/tls/i686/cmov/libdl-2.3.6.so
+ obj:/lib/ld-2.3.6.so
+ obj:/lib/tls/i686/cmov/libdl-2.3.6.so
+ fun:dlopen
+}
+
+{
+ <Another dapper one>
+ Memcheck:Cond
+ obj:/lib/ld-2.3.6.so
+ obj:/lib/ld-2.3.6.so
+ obj:/lib/ld-2.3.6.so
+ obj:/lib/tls/i686/cmov/libc-2.3.6.so
+ obj:/lib/ld-2.3.6.so
+ fun:_dl_open
+ obj:/lib/tls/i686/cmov/libdl-2.3.6.so
+ obj:/lib/ld-2.3.6.so
+ obj:/lib/tls/i686/cmov/libdl-2.3.6.so
+ fun:dlopen
+}
+
+### glib suppressions
+{
+ <g_parse_debug_string>
+ Memcheck:Cond
+ fun:g_parse_debug_string
+ obj:/usr/lib*/libglib-2.0.so.*
+ fun:g_slice_alloc
+ fun:g_slice_alloc0
+}
+
+{
+ <g_type_init malloc>
+ Memcheck:Leak
+ fun:malloc
+ fun:g_malloc
+ fun:g_strdup
+ fun:g_quark_from_string
+ obj:*
+ obj:*
+ fun:g_type_register_fundamental
+ obj:*
+ fun:g_type_init_with_debug_flags
+ fun:g_type_init
+}
+
+{
+ <g_type_init calloc>
+ Memcheck:Leak
+ fun:calloc
+ fun:g_malloc0
+ obj:*
+ obj:*
+ fun:g_type_register_fundamental
+}
+
+{
+ <g_type_init calloc 2>
+ Memcheck:Leak
+ fun:calloc
+ fun:g_malloc0
+ obj:*
+ obj:*
+ fun:g_type_init_with_debug_flags
+}
+
+{
+ <g_type_init calloc 3, GSlice version>
+ Memcheck:Leak
+ fun:calloc
+ fun:g_malloc0
+ fun:g_slice_alloc
+ obj:*
+ obj:*
+ fun:g_type_init_with_debug_flags
+}
+
+#pthread memleaks
+
+{
+ Thread creation leak
+ Memcheck:Leak
+ fun:calloc
+ fun:allocate_dtv
+ fun:_dl_allocate*
+ fun:_dl_allocate*
+ fun:__pthread_initialize_minimal
+}
+
+{
+ Thread management leak
+ Memcheck:Leak
+ fun:calloc
+ fun:allocate_dtv
+ fun:_dl_allocate*
+ fun:_dl_allocate*
+ fun:__pthread_*
+}
+
+{
+ Thread management leak 2
+ Memcheck:Leak
+ fun:memalign
+ fun:_dl_allocate*
+ fun:_dl_allocate*
+ fun:__pthread_*
+}
+
+{
+ pthread_create Syscall param write(buf) points to uninitialised byte(s)
+ Memcheck:Param
+ write(buf)
+ fun:pthread_create@@GLIBC_2.2.5
+ fun:g_thread_create*
+
+}
+
+# nss_parse_* memleak (used by g_option_context_parse)
+{
+ nss_parse_* memleak
+ Memcheck:Leak
+ fun:malloc
+ fun:nss_parse_service_list
+ fun:__nss_database_lookup
+}
+
+{
+ <annoying read error inside dlopen stuff on Ubuntu Dapper x86_64>
+ Memcheck:Addr8
+ obj:/lib/ld-2.3.6.so
+}
+
+{
+ <Ubuntu Dapper x86_64>
+ Memcheck:Param
+ futex(uaddr2)
+ fun:pthread_once
+ obj:/lib/libc-2.3.6.so
+ obj:/lib/libc-2.3.6.so
+ fun:setlocale
+ fun:init_pre
+ fun:g_option_context_parse
+}
+
+{
+ <Ubuntu Dapper x86_64 dlopen stuff again>
+ Memcheck:Cond
+ obj:/lib/ld-2.3.6.so
+ obj:/lib/ld-2.3.6.so
+ fun:_dl_open
+ obj:/lib/libdl-2.3.6.so
+ obj:/lib/ld-2.3.6.so
+ obj:/lib/libdl-2.3.6.so
+ fun:dlopen
+ fun:g_module_open
+}
+# this exists in a bunch of different variations, hence the short tail/trace
+{
+ <dlopen invalid read of size 4 suppression on tpm's Ubuntu edgy/x86>
+ Memcheck:Addr4
+ obj:/lib/ld-2.4.so
+ obj:/lib/ld-2.4.so
+}
+{
+ <and the same for 64bit systems>
+ Memcheck:Addr8
+ obj:/lib/ld-2.4.so
+ obj:/lib/ld-2.4.so
+}
+
+# More edgy suppressions (Mike)
+{
+ <dlopen Condition jump suppressions for Ubuntu Edgy/x86>
+ Memcheck:Cond
+ obj:/lib/ld-2.4.so
+ obj:/lib/ld-2.4.so
+ obj:/lib/ld-2.4.so
+ obj:/lib/ld-2.4.so
+ fun:dlopen_doit
+ obj:/lib/ld-2.4.so
+ fun:_dlerror_run
+ fun:dlopen@@GLIBC_2.1
+}
+
+{
+ <dlopen Condition jump suppressions for Ubuntu Edgy/x86>
+ Memcheck:Cond
+ obj:/lib/ld-2.4.so
+ obj:/lib/ld-2.4.so
+ obj:/lib/ld-2.4.so
+ obj:/lib/ld-2.4.so
+ obj:/lib/ld-2.4.so
+ obj:/lib/ld-2.4.so
+ fun:dlopen_doit
+ obj:/lib/ld-2.4.so
+ fun:_dlerror_run
+ fun:dlopen@@GLIBC_2.1
+}
+
+{
+ <dlopen Condition jump suppressions for Ubuntu Edgy/x86>
+ Memcheck:Cond
+ obj:/lib/ld-2.4.so
+ obj:/lib/ld-2.4.so
+ obj:/lib/ld-2.4.so
+ fun:do_sym
+ fun:_dl_sym
+}
+
+# This one's overly general, but there's zero other information in the stack
+# trace - just these five lines!
+{
+ <dlopen Condition jump suppressions for Ubuntu Edgy/x86>
+ Memcheck:Cond
+ obj:/lib/ld-2.4.so
+ obj:/lib/ld-2.4.so
+ obj:/lib/ld-2.4.so
+ obj:/lib/ld-2.4.so
+ obj:/lib/ld-2.4.so
+}
+
+{
+ <tls leaks on Edgy/x86>
+ Memcheck:Leak
+ fun:calloc
+ obj:/lib/ld-2.4.so
+ fun:_dl_allocate_tls
+ fun:pthread_create@@GLIBC_2.1
+}
+
+{
+ <libcdio 0.76 leak>
+ Memcheck:Leak
+ fun:calloc
+ obj:/usr/lib/libcdio.so.6.0.1
+ fun:cdio_open_am_linux
+ obj:/usr/lib/libcdio.so.6.0.1
+ fun:cdio_open_am
+}
+
+# TLS leaks for feisty/x86
+{
+ <tls leaks on Feisty/x86>
+ Memcheck:Leak
+ fun:calloc
+ fun:allocate_dtv
+ fun:_dl_allocate_tls
+ fun:pthread_create@@GLIBC_2.1
+}
+
+{
+ <Addr8 on Jan's AMD64 ubuntu Feisty in dl_open>
+ Memcheck:Addr8
+ obj:/lib/ld-2.5.so
+}
+
+{
+ <GLib caching the home dir>
+ Memcheck:Leak
+ fun:malloc
+ obj:/lib/libc-*.so
+ fun:__nss_database_lookup
+ obj:*
+ obj:*
+ fun:getpwnam_r
+ fun:g_get_any_init_do
+ fun:g_get_home_dir
+}
+{
+ <GLib caching the user name>
+ Memcheck:Leak
+ fun:malloc
+ obj:/lib/libc-*.so
+ fun:__nss_database_lookup
+ obj:*
+ obj:*
+ fun:getpwnam_r
+ fun:g_get_any_init_do
+ fun:g_get_user_name
+}
diff --git a/gnome-2-22/tests/xml/.gitignore b/gnome-2-22/tests/xml/.gitignore
new file mode 100644
index 000000000..01af91dc1
--- /dev/null
+++ b/gnome-2-22/tests/xml/.gitignore
@@ -0,0 +1 @@
+user-irc-networks.xml
diff --git a/gnome-2-22/tests/xml/Makefile.am b/gnome-2-22/tests/xml/Makefile.am
new file mode 100644
index 000000000..eafe8de6c
--- /dev/null
+++ b/gnome-2-22/tests/xml/Makefile.am
@@ -0,0 +1,3 @@
+EXTRA_DIST = \
+ default-irc-networks-sample.xml \
+ user-irc-networks-sample.xml
diff --git a/gnome-2-22/tests/xml/default-irc-networks-sample.xml b/gnome-2-22/tests/xml/default-irc-networks-sample.xml
new file mode 100644
index 000000000..257919c27
--- /dev/null
+++ b/gnome-2-22/tests/xml/default-irc-networks-sample.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<networks>
+ <network id="freenode" name="Freenode">
+ <servers>
+ <server address="irc.freenode.net" port="6667" ssl="FALSE" />
+ <server address="irc.eu.freenode.net" port="6667" ssl="FALSE" />
+ </servers>
+ </network>
+
+ <network id="gimpnet" name="GIMPNet">
+ <servers>
+ <server address="irc.gimp.org" port="6667" ssl="FALSE" />
+ <server address="irc.us.gimp.org" port="6667" ssl="FALSE" />
+ </servers>
+ </network>
+
+ <network id="testsrv" name="Test Server" network_charset="ISO-8859-1">
+ <servers>
+ <server address="irc.test.org" port="6669" ssl="TRUE" />
+ </servers>
+ </network>
+
+ <network id="undernet" name="Undernet">
+ <servers>
+ <server address="eu.undernet.org" port="6667" ssl="FALSE" />
+ </servers>
+ </network>
+
+</networks>
diff --git a/gnome-2-22/tests/xml/user-irc-networks-sample.xml b/gnome-2-22/tests/xml/user-irc-networks-sample.xml
new file mode 100644
index 000000000..9e4f08693
--- /dev/null
+++ b/gnome-2-22/tests/xml/user-irc-networks-sample.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<networks>
+ <network id="gimpnet" name="GIMPNet">
+ <servers>
+ <server address="irc.gimp.org" port="6667" ssl="FALSE" />
+ <server address="irc.us.gimp.org" port="6667" ssl="FALSE" />
+ <server address="irc.au.gimp.org" port="6667" ssl="FALSE" />
+ </servers>
+ </network>
+
+ <network id="testsrv" name="Test Server" dropped="1"/>
+
+ <network id="mysrv" name="My Server">
+ <servers>
+ <server address="irc.mysrv.net" port="7495" ssl="TRUE" />
+ </servers>
+ </network>
+
+ <network id="anothersrv" name="Another Server">
+ <servers>
+ <server address="irc.anothersrv.be" port="6660" ssl="FALSE" />
+ </servers>
+ </network>
+
+</networks>
diff --git a/gnome-2-22/tools/.gitignore b/gnome-2-22/tools/.gitignore
new file mode 100644
index 000000000..48bd3a88a
--- /dev/null
+++ b/gnome-2-22/tools/.gitignore
@@ -0,0 +1 @@
+.py[co]
diff --git a/gnome-2-22/tools/Makefile.am b/gnome-2-22/tools/Makefile.am
new file mode 100644
index 000000000..4bf514f16
--- /dev/null
+++ b/gnome-2-22/tools/Makefile.am
@@ -0,0 +1,41 @@
+EXTRA_DIST = \
+ c-constants-generator.xsl \
+ check-coding-style.mk \
+ check-c-style.sh \
+ check-misc.sh \
+ check-whitespace.sh \
+ c-interfaces-generator.xsl \
+ doc-generator.xsl \
+ glib-client-gen.py \
+ glib-client-marshaller-gen.py \
+ glib-errors-enum-body.xsl \
+ glib-errors-enum-header.xsl \
+ glib-interfaces-generator.xsl \
+ glib-interfaces-body-generator.xsl \
+ glib-ginterface-gen.py \
+ glib-gtypes-generator.py \
+ glib-signals-marshal-gen.py \
+ identity.xsl \
+ libglibcodegen.py
+
+CLEANFILES = libglibcodegen.pyc libglibcodegen.pyo $(noinst_SCRIPTS)
+
+all: $(EXTRA_DIST)
+
+glib-client-marshaller-gen.py: libglibcodegen.py
+ touch $@
+glib-ginterface-gen.py: libglibcodegen.py
+ touch $@
+glib-gtypes-generator.py: libglibcodegen.py
+ touch $@
+glib-signals-marshal-gen.py: libglibcodegen.py
+ touch $@
+
+TELEPATHY_GLIB_SRCDIR = $(top_srcdir)/../telepathy-glib
+maintainer-update-from-telepathy-glib:
+ set -e && cd $(srcdir) && \
+ for x in $(EXTRA_DIST); do \
+ if test -f $(TELEPATHY_GLIB_SRCDIR)/tools/$$x; then \
+ cp $(TELEPATHY_GLIB_SRCDIR)/tools/$$x $$x; \
+ fi; \
+ done
diff --git a/gnome-2-22/tools/c-constants-generator.xsl b/gnome-2-22/tools/c-constants-generator.xsl
new file mode 100644
index 000000000..18b2e495d
--- /dev/null
+++ b/gnome-2-22/tools/c-constants-generator.xsl
@@ -0,0 +1,299 @@
+<!-- Stylesheet to extract C enumerations from the Telepathy spec.
+The master copy of this stylesheet is in telepathy-glib - please make any
+changes there.
+
+Copyright (C) 2006, 2007 Collabora Limited
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+-->
+
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0"
+ exclude-result-prefixes="tp">
+
+ <xsl:output method="text" indent="no" encoding="ascii"/>
+
+ <xsl:param name="mixed-case-prefix" select="''"/>
+
+ <xsl:variable name="upper" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ'"/>
+ <xsl:variable name="lower" select="'abcdefghijklmnopqrstuvwxyz'"/>
+
+ <xsl:variable name="upper-case-prefix" select="concat(translate($mixed-case-prefix, $lower, $upper), '_')"/>
+ <xsl:variable name="lower-case-prefix" select="concat(translate($mixed-case-prefix, $upper, $lower), '_')"/>
+
+
+ <xsl:template match="tp:flags">
+ <xsl:variable name="name">
+ <xsl:choose>
+ <xsl:when test="@plural">
+ <xsl:value-of select="@plural"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@name"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="value-prefix">
+ <xsl:choose>
+ <xsl:when test="@singular">
+ <xsl:value-of select="@singular"/>
+ </xsl:when>
+ <xsl:when test="@value-prefix">
+ <xsl:value-of select="@value-prefix"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@name"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:text>/**&#10;</xsl:text>
+ <xsl:text> *&#10;</xsl:text>
+ <xsl:value-of select="translate(concat($mixed-case-prefix, $name), '_', '')"/>
+ <xsl:text>:&#10;</xsl:text>
+ <xsl:apply-templates mode="flag-or-enumvalue-gtkdoc">
+ <xsl:with-param name="value-prefix" select="$value-prefix"/>
+ </xsl:apply-templates>
+ <xsl:text> *&#10;</xsl:text>
+ <xsl:if test="tp:docstring">
+ <xsl:text> * &lt;![CDATA[</xsl:text>
+ <xsl:value-of select="translate(string (tp:docstring), '&#13;&#10;', ' ')"/>
+ <xsl:text>]]&gt;&#10;</xsl:text>
+ <xsl:text> *&#10;</xsl:text>
+ </xsl:if>
+ <xsl:text> * Bitfield/set of flags generated from the Telepathy specification.&#10;</xsl:text>
+ <xsl:text> */&#10;</xsl:text>
+ <xsl:text>typedef enum {&#10;</xsl:text>
+ <xsl:apply-templates>
+ <xsl:with-param name="value-prefix" select="$value-prefix"/>
+ </xsl:apply-templates>
+ <xsl:text>} </xsl:text>
+ <xsl:value-of select="translate(concat($mixed-case-prefix, $name), '_', '')"/>
+ <xsl:text>;&#10;</xsl:text>
+ <xsl:text>&#10;</xsl:text>
+ </xsl:template>
+
+ <xsl:template match="text()" mode="flag-or-enumvalue-gtkdoc"/>
+
+ <xsl:template match="tp:enumvalue" mode="flag-or-enumvalue-gtkdoc">
+ <xsl:param name="value-prefix"/>
+ <xsl:text> * @</xsl:text>
+ <xsl:value-of select="translate(concat($upper-case-prefix, $value-prefix, '_', @suffix), $lower, $upper)"/>
+ <xsl:text>: &lt;![CDATA[</xsl:text>
+ <xsl:value-of select="translate(string(tp:docstring), '&#13;&#10;', ' ')"/>
+ <xsl:text>]]&gt;&#10;</xsl:text>
+ </xsl:template>
+
+ <xsl:template match="tp:flag" mode="flag-or-enumvalue-gtkdoc">
+ <xsl:param name="value-prefix"/>
+ <xsl:text> * @</xsl:text>
+ <xsl:value-of select="translate(concat($upper-case-prefix, $value-prefix, '_', @suffix), $lower, $upper)"/>
+ <xsl:text>: &lt;![CDATA[</xsl:text>
+ <xsl:value-of select="translate(string(tp:docstring), '&#13;&#10;', ' ')"/>
+ <xsl:text>]]&gt;&#10;</xsl:text>
+ </xsl:template>
+
+ <xsl:template match="tp:enum">
+ <xsl:variable name="name">
+ <xsl:choose>
+ <xsl:when test="@singular">
+ <xsl:value-of select="@singular"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@name"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="value-prefix">
+ <xsl:choose>
+ <xsl:when test="@singular">
+ <xsl:value-of select="@singular"/>
+ </xsl:when>
+ <xsl:when test="@value-prefix">
+ <xsl:value-of select="@value-prefix"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@name"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="name-plural">
+ <xsl:choose>
+ <xsl:when test="@plural">
+ <xsl:value-of select="@plural"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@name"/><xsl:text>s</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:text>/**&#10;</xsl:text>
+ <xsl:text> *&#10;</xsl:text>
+ <xsl:value-of select="translate(concat($mixed-case-prefix, $name), '_', '')"/>
+ <xsl:text>:&#10;</xsl:text>
+ <xsl:apply-templates mode="flag-or-enumvalue-gtkdoc">
+ <xsl:with-param name="value-prefix" select="$value-prefix"/>
+ </xsl:apply-templates>
+ <xsl:text> *&#10;</xsl:text>
+ <xsl:if test="tp:docstring">
+ <xsl:text> * &lt;![CDATA[</xsl:text>
+ <xsl:value-of select="translate(string (tp:docstring), '&#13;&#10;', ' ')"/>
+ <xsl:text>]]&gt;&#10;</xsl:text>
+ <xsl:text> *&#10;</xsl:text>
+ </xsl:if>
+ <xsl:text> * Bitfield/set of flags generated from the Telepathy specification.&#10;</xsl:text>
+ <xsl:text> */&#10;</xsl:text>
+ <xsl:text>typedef enum {&#10;</xsl:text>
+ <xsl:apply-templates>
+ <xsl:with-param name="value-prefix" select="$value-prefix"/>
+ </xsl:apply-templates>
+ <xsl:text>} </xsl:text>
+ <xsl:value-of select="translate(concat($mixed-case-prefix, $name), '_', '')"/>
+ <xsl:text>;&#10;</xsl:text>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:text>/**&#10;</xsl:text>
+ <xsl:text> * NUM_</xsl:text>
+ <xsl:value-of select="translate(concat($upper-case-prefix, $name-plural), $lower, $upper)"/>
+ <xsl:text>:&#10;</xsl:text>
+ <xsl:text> *&#10;</xsl:text>
+ <xsl:text> * 1 higher than the highest valid value of #</xsl:text>
+ <xsl:value-of select="translate(concat($mixed-case-prefix, $name), '_', '')"/>
+ <xsl:text>.&#10;</xsl:text>
+ <xsl:text> */&#10;</xsl:text>
+ <xsl:text>#define NUM_</xsl:text>
+ <xsl:value-of select="translate(concat($upper-case-prefix, $name-plural), $lower, $upper)"/>
+ <xsl:text> (</xsl:text>
+ <xsl:value-of select="tp:enumvalue[position() = last()]/@value"/>
+ <xsl:text>+1)&#10;</xsl:text>
+ <xsl:text>&#10;</xsl:text>
+ </xsl:template>
+
+ <xsl:template match="tp:flags/tp:flag">
+ <xsl:param name="value-prefix"/>
+ <xsl:variable name="suffix">
+ <xsl:choose>
+ <xsl:when test="@suffix">
+ <xsl:value-of select="@suffix"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@name"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="name" select="translate(concat($upper-case-prefix, $value-prefix, '_', $suffix), $lower, $upper)"/>
+
+ <xsl:if test="@name and @suffix and @name != @suffix">
+ <xsl:message terminate="yes">
+ <xsl:text>Flag name </xsl:text>
+ <xsl:value-of select="@name"/>
+ <xsl:text> != suffix </xsl:text>
+ <xsl:value-of select="@suffix"/>
+ <xsl:text>&#10;</xsl:text>
+ </xsl:message>
+ </xsl:if>
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="$name"/>
+ <xsl:text> = </xsl:text>
+ <xsl:value-of select="@value"/>
+ <xsl:text>,&#10;</xsl:text>
+ </xsl:template>
+
+ <xsl:template match="tp:enum/tp:enumvalue">
+ <xsl:param name="value-prefix"/>
+ <xsl:variable name="suffix">
+ <xsl:choose>
+ <xsl:when test="@suffix">
+ <xsl:value-of select="@suffix"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@name"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="name" select="translate(concat($upper-case-prefix, $value-prefix, '_', $suffix), $lower, $upper)"/>
+
+ <xsl:if test="@name and @suffix and @name != @suffix">
+ <xsl:message terminate="yes">
+ <xsl:text>Enumvalue name </xsl:text>
+ <xsl:value-of select="@name"/>
+ <xsl:text> != suffix </xsl:text>
+ <xsl:value-of select="@suffix"/>
+ <xsl:text>&#10;</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:if test="preceding-sibling::tp:enumvalue and number(preceding-sibling::tp:enumvalue[1]/@value) > number(@value)">
+ <xsl:message terminate="yes">
+ <xsl:text>Enum values must be in ascending numeric order, but </xsl:text>
+ <xsl:value-of select="$name"/>
+ <xsl:text> is less than the previous value</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="$name"/>
+ <xsl:text> = </xsl:text>
+ <xsl:value-of select="@value"/>
+ <xsl:text>,&#10;</xsl:text>
+ </xsl:template>
+
+ <xsl:template match="tp:flag">
+ <xsl:message terminate="yes">tp:flag found outside tp:flags&#10;</xsl:message>
+ </xsl:template>
+
+ <xsl:template match="tp:enumvalue">
+ <xsl:message terminate="yes">tp:enumvalue found outside tp:enum&#10;</xsl:message>
+ </xsl:template>
+
+ <xsl:template match="text()"/>
+
+ <xsl:template match="/tp:spec">
+ <xsl:if test="$mixed-case-prefix = ''">
+ <xsl:message terminate="yes">
+ <xsl:text>mixed-case-prefix param must be set&#10;</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:text>/* Generated from </xsl:text>
+ <xsl:value-of select="tp:title"/>
+ <xsl:if test="tp:version">
+ <xsl:text>, version </xsl:text>
+ <xsl:value-of select="tp:version"/>
+ </xsl:if>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:for-each select="tp:copyright">
+ <xsl:value-of select="."/>
+ <xsl:text>&#10;</xsl:text>
+ </xsl:for-each>
+ <xsl:value-of select="tp:license"/>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:value-of select="tp:docstring"/>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:text> */&#10;</xsl:text>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:text>#ifdef __cplusplus&#10;</xsl:text>
+ <xsl:text>extern "C" {&#10;</xsl:text>
+ <xsl:text>#endif&#10;</xsl:text>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:text>#ifdef __cplusplus&#10;</xsl:text>
+ <xsl:text>}&#10;</xsl:text>
+ <xsl:text>#endif&#10;</xsl:text>
+ </xsl:template>
+
+</xsl:stylesheet>
+
+<!-- vim:set sw=2 sts=2 et noai noci: -->
diff --git a/gnome-2-22/tools/c-interfaces-generator.xsl b/gnome-2-22/tools/c-interfaces-generator.xsl
new file mode 100644
index 000000000..f965a7051
--- /dev/null
+++ b/gnome-2-22/tools/c-interfaces-generator.xsl
@@ -0,0 +1,84 @@
+<!-- Stylesheet to extract C enumerations from the Telepathy spec.
+The master copy of this stylesheet is in telepathy-glib - please make any
+changes there.
+
+Copyright (C) 2006, 2007 Collabora Limited
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+-->
+
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0"
+ exclude-result-prefixes="tp">
+
+ <xsl:param name="mixed-case-prefix" select="''"/>
+
+ <xsl:variable name="PREFIX"
+ select="translate($mixed-case-prefix, $lower, $upper)"/>
+ <xsl:variable name="Prefix" select="$mixed-case-prefix"/>
+ <xsl:variable name="prefix"
+ select="translate($mixed-case-prefix, $upper, $lower)"/>
+
+ <xsl:output method="text" indent="no" encoding="ascii"/>
+
+ <xsl:variable name="upper" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ'"/>
+ <xsl:variable name="lower" select="'abcdefghijklmnopqrstuvwxyz'"/>
+
+ <xsl:template match="interface">
+ <xsl:text>/**&#10; * </xsl:text>
+ <xsl:value-of select="$PREFIX"/>
+ <xsl:text>_IFACE_</xsl:text>
+ <xsl:value-of select="translate(../@name, concat($lower, '/'), $upper)"/>
+ <xsl:text>:&#10; * &#10; * The interface name "</xsl:text>
+ <xsl:value-of select="@name"/>
+ <xsl:text>"&#10; */&#10;#define </xsl:text>
+ <xsl:value-of select="$PREFIX"/>
+ <xsl:text>_IFACE_</xsl:text>
+ <xsl:value-of select="translate(../@name, concat($lower, '/'), $upper)"/>
+ <xsl:text> \&#10;"</xsl:text>
+ <xsl:value-of select="@name"/>
+ <xsl:text>"&#10;&#10;</xsl:text>
+ </xsl:template>
+
+ <xsl:template match="text()"/>
+
+ <xsl:template match="/tp:spec">
+ <xsl:if test="$mixed-case-prefix = ''">
+ <xsl:message terminate="yes">
+ <xsl:text>mixed-case-prefix param must be set&#10;</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:text>/* Generated from: </xsl:text>
+ <xsl:value-of select="tp:title"/>
+ <xsl:if test="tp:version">
+ <xsl:text> version </xsl:text>
+ <xsl:value-of select="tp:version"/>
+ </xsl:if>
+ <xsl:text>&#10;&#10;</xsl:text>
+ <xsl:for-each select="tp:copyright">
+ <xsl:value-of select="."/>
+ <xsl:text>&#10;</xsl:text>
+ </xsl:for-each>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:value-of select="tp:license"/>
+ <xsl:value-of select="tp:docstring"/>
+ <xsl:text>&#10; */&#10;&#10;</xsl:text>
+ <xsl:apply-templates/>
+ </xsl:template>
+
+</xsl:stylesheet>
+
+<!-- vim:set sw=2 sts=2 et noai noci: -->
diff --git a/gnome-2-22/tools/check-c-style.sh b/gnome-2-22/tools/check-c-style.sh
new file mode 100644
index 000000000..357fdb365
--- /dev/null
+++ b/gnome-2-22/tools/check-c-style.sh
@@ -0,0 +1,36 @@
+#!/bin/sh
+fail=0
+
+( . "${tools_dir}"/check-misc.sh ) || fail=$?
+
+if grep -n '^ *GError *\*[[:alpha:]_][[:alnum:]_]* *;' "$@"
+then
+ echo "^^^ The above files contain uninitialized GError*s - they should be"
+ echo " initialized to NULL"
+ fail=1
+fi
+
+# The first regex finds function calls like foo() (as opposed to foo ()).
+# It attempts to ignore string constants (may cause false negatives).
+# The second and third ignore block comments (gtkdoc uses foo() as markup).
+# The fourth ignores cpp so you can
+# #define foo(bar) (_real_foo (__FUNC__, bar)) (cpp insists on foo() style).
+if grep -n '^[^"]*[[:lower:]](' "$@" \
+ | grep -v '^[-[:alnum:]_./]*:[[:digit:]]*: *\*' \
+ | grep -v '^[-[:alnum:]_./]*:[[:digit:]]*: */\*' \
+ | grep -v '^[-[:alnum:]_./]*:[[:digit:]]*: *#'
+then
+ echo "^^^ Our coding style is to use function calls like foo (), not foo()"
+ fail=1
+fi
+
+if test -n "$CHECK_FOR_LONG_LINES"
+then
+ if egrep -n '.{80,}' "$@"
+ then
+ echo "^^^ The above files contain long lines"
+ fail=1
+ fi
+fi
+
+exit $fail
diff --git a/gnome-2-22/tools/check-coding-style.mk b/gnome-2-22/tools/check-coding-style.mk
new file mode 100644
index 000000000..1499f2f05
--- /dev/null
+++ b/gnome-2-22/tools/check-coding-style.mk
@@ -0,0 +1,17 @@
+check-local::
+ @fail=0; \
+ if test -n "$(check_misc_sources)"; then \
+ tools_dir=$(top_srcdir)/tools \
+ sh $(top_srcdir)/tools/check-misc.sh \
+ $(check_misc_sources) || fail=1; \
+ fi; \
+ if test -n "$(check_c_sources)"; then \
+ tools_dir=$(top_srcdir)/tools \
+ sh $(top_srcdir)/tools/check-c-style.sh \
+ $(check_c_sources) || fail=1; \
+ fi;\
+ if test yes = "$(ENABLE_CODING_STYLE_CHECKS)"; then \
+ exit "$$fail";\
+ else \
+ exit 0;\
+ fi
diff --git a/gnome-2-22/tools/check-misc.sh b/gnome-2-22/tools/check-misc.sh
new file mode 100644
index 000000000..89e8e871a
--- /dev/null
+++ b/gnome-2-22/tools/check-misc.sh
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+fail=0
+
+( . "${tools_dir}"/check-whitespace.sh ) || fail=$?
+
+if egrep '(Free\s*Software\s*Foundation.*02139|02111-1307)' "$@"
+then
+ echo "^^^ The above files contain the FSF's old address in GPL headers"
+ fail=1
+fi
+
+exit $fail
diff --git a/gnome-2-22/tools/check-whitespace.sh b/gnome-2-22/tools/check-whitespace.sh
new file mode 100644
index 000000000..534833126
--- /dev/null
+++ b/gnome-2-22/tools/check-whitespace.sh
@@ -0,0 +1,17 @@
+#!/bin/sh
+
+fail=0
+
+if grep -n ' $' "$@"
+then
+ echo "^^^ The above files contain unwanted trailing spaces"
+ fail=1
+fi
+
+if grep -n ' ' "$@"
+then
+ echo "^^^ The above files contain tabs"
+ fail=1
+fi
+
+exit $fail
diff --git a/gnome-2-22/tools/doc-generator.xsl b/gnome-2-22/tools/doc-generator.xsl
new file mode 100644
index 000000000..83b42dc55
--- /dev/null
+++ b/gnome-2-22/tools/doc-generator.xsl
@@ -0,0 +1,689 @@
+<!-- Generate HTML documentation from the Telepathy specification.
+The master copy of this stylesheet is in the Telepathy spec repository -
+please make any changes there.
+
+Copyright (C) 2006, 2007 Collabora Limited
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that 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 Lesser 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
+-->
+
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0"
+ exclude-result-prefixes="tp">
+ <!--Don't move the declaration of the HTML namespace up here - XMLNSs
+ don't work ideally in the presence of two things that want to use the
+ absence of a prefix, sadly. -->
+
+ <xsl:template match="*" mode="identity">
+ <xsl:copy>
+ <xsl:apply-templates mode="identity"/>
+ </xsl:copy>
+ </xsl:template>
+
+ <xsl:template match="tp:docstring">
+ <xsl:apply-templates select="node()" mode="identity"/>
+ </xsl:template>
+
+ <xsl:template match="tp:errors">
+ <h1 xmlns="http://www.w3.org/1999/xhtml">Errors</h1>
+ <xsl:apply-templates/>
+ </xsl:template>
+
+ <xsl:template match="tp:generic-types">
+ <h1 xmlns="http://www.w3.org/1999/xhtml">Generic types</h1>
+ <xsl:call-template name="do-types"/>
+ </xsl:template>
+
+ <xsl:template name="do-types">
+ <xsl:if test="tp:simple-type">
+ <h2 xmlns="http://www.w3.org/1999/xhtml">Simple types</h2>
+ <xsl:apply-templates select="tp:simple-type"/>
+ </xsl:if>
+
+ <xsl:if test="tp:enum">
+ <h2 xmlns="http://www.w3.org/1999/xhtml">Enumerated types:</h2>
+ <xsl:apply-templates select="tp:enum"/>
+ </xsl:if>
+
+ <xsl:if test="tp:flags">
+ <h2 xmlns="http://www.w3.org/1999/xhtml">Sets of flags:</h2>
+ <xsl:apply-templates select="tp:flags"/>
+ </xsl:if>
+
+ <xsl:if test="tp:struct">
+ <h2 xmlns="http://www.w3.org/1999/xhtml">Structure types</h2>
+ <xsl:apply-templates select="tp:struct"/>
+ </xsl:if>
+
+ <xsl:if test="tp:mapping">
+ <h2 xmlns="http://www.w3.org/1999/xhtml">Mapping types</h2>
+ <xsl:apply-templates select="tp:mapping"/>
+ </xsl:if>
+
+ <xsl:if test="tp:external-type">
+ <h2 xmlns="http://www.w3.org/1999/xhtml">Types defined elsewhere</h2>
+ <dl><xsl:apply-templates select="tp:external-type"/></dl>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template match="tp:error">
+ <h2 xmlns="http://www.w3.org/1999/xhtml"><a name="{concat(../@namespace, '.', translate(@name, ' ', ''))}"></a><xsl:value-of select="concat(../@namespace, '.', translate(@name, ' ', ''))"/></h2>
+ <xsl:apply-templates select="tp:docstring"/>
+ </xsl:template>
+
+ <xsl:template match="/tp:spec/tp:copyright">
+ <div xmlns="http://www.w3.org/1999/xhtml">
+ <xsl:apply-templates/>
+ </div>
+ </xsl:template>
+ <xsl:template match="/tp:spec/tp:license">
+ <div xmlns="http://www.w3.org/1999/xhtml" class="license">
+ <xsl:apply-templates mode="identity"/>
+ </div>
+ </xsl:template>
+
+ <xsl:template match="tp:copyright"/>
+ <xsl:template match="tp:license"/>
+
+ <xsl:template match="interface">
+ <h1 xmlns="http://www.w3.org/1999/xhtml"><a name="{@name}"></a><xsl:value-of select="@name"/></h1>
+
+ <xsl:if test="@tp:causes-havoc">
+ <p xmlns="http://www.w3.org/1999/xhtml" class="causes-havoc">
+ This interface is <xsl:value-of select="@tp:causes-havoc"/>
+ and is likely to cause havoc to your API/ABI if bindings are generated.
+ Don't include it in libraries that care about compatibility.
+ </p>
+ </xsl:if>
+
+ <xsl:if test="tp:requires">
+ <p>Implementations of this interface must also implement:</p>
+ <ul xmlns="http://www.w3.org/1999/xhtml">
+ <xsl:for-each select="tp:requires">
+ <li><code><a href="#{@interface}"><xsl:value-of select="@interface"/></a></code></li>
+ </xsl:for-each>
+ </ul>
+ </xsl:if>
+
+ <xsl:apply-templates select="tp:docstring" />
+
+ <xsl:choose>
+ <xsl:when test="method">
+ <h2 xmlns="http://www.w3.org/1999/xhtml">Methods:</h2>
+ <xsl:apply-templates select="method"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <p xmlns="http://www.w3.org/1999/xhtml">Interface has no methods.</p>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="signal">
+ <h2 xmlns="http://www.w3.org/1999/xhtml">Signals:</h2>
+ <xsl:apply-templates select="signal"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <p xmlns="http://www.w3.org/1999/xhtml">Interface has no signals.</p>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="tp:property">
+ <h2 xmlns="http://www.w3.org/1999/xhtml">Properties:</h2>
+ <dl xmlns="http://www.w3.org/1999/xhtml">
+ <xsl:apply-templates select="tp:property"/>
+ </dl>
+ </xsl:when>
+ <xsl:otherwise>
+ <p xmlns="http://www.w3.org/1999/xhtml">Interface has no properties.</p>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:call-template name="do-types"/>
+
+ </xsl:template>
+
+ <xsl:template match="tp:flags">
+ <h3>
+ <a name="type-{@name}">
+ <xsl:value-of select="@name"/>
+ </a>
+ </h3>
+ <xsl:apply-templates select="tp:docstring" />
+ <dl xmlns="http://www.w3.org/1999/xhtml">
+ <xsl:variable name="value-prefix">
+ <xsl:choose>
+ <xsl:when test="@value-prefix">
+ <xsl:value-of select="@value-prefix"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@name"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:for-each select="tp:flag">
+ <dt xmlns="http://www.w3.org/1999/xhtml"><code><xsl:value-of select="concat($value-prefix, '_', @suffix)"/> = <xsl:value-of select="@value"/></code></dt>
+ <xsl:choose>
+ <xsl:when test="tp:docstring">
+ <dd xmlns="http://www.w3.org/1999/xhtml"><xsl:apply-templates select="tp:docstring" /></dd>
+ </xsl:when>
+ <xsl:otherwise>
+ <dd xmlns="http://www.w3.org/1999/xhtml">(Undocumented)</dd>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ </dl>
+ </xsl:template>
+
+ <xsl:template match="tp:enum">
+ <h3 xmlns="http://www.w3.org/1999/xhtml">
+ <a name="type-{@name}">
+ <xsl:value-of select="@name"/>
+ </a>
+ </h3>
+ <xsl:apply-templates select="tp:docstring" />
+ <dl xmlns="http://www.w3.org/1999/xhtml">
+ <xsl:variable name="value-prefix">
+ <xsl:choose>
+ <xsl:when test="@value-prefix">
+ <xsl:value-of select="@value-prefix"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@name"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:for-each select="tp:enumvalue">
+ <dt xmlns="http://www.w3.org/1999/xhtml"><code><xsl:value-of select="concat($value-prefix, '_', @suffix)"/> = <xsl:value-of select="@value"/></code></dt>
+ <xsl:choose>
+ <xsl:when test="tp:docstring">
+ <dd xmlns="http://www.w3.org/1999/xhtml"><xsl:apply-templates select="tp:docstring" /></dd>
+ </xsl:when>
+ <xsl:otherwise>
+ <dd xmlns="http://www.w3.org/1999/xhtml">(Undocumented)</dd>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ </dl>
+ </xsl:template>
+
+ <xsl:template match="tp:property">
+ <dt xmlns="http://www.w3.org/1999/xhtml">
+ <xsl:if test="@name">
+ <code><xsl:value-of select="@name"/></code> -
+ </xsl:if>
+ <code><xsl:value-of select="@type"/></code>
+ </dt>
+ <dd xmlns="http://www.w3.org/1999/xhtml">
+ <xsl:apply-templates select="tp:docstring"/>
+ </dd>
+ </xsl:template>
+
+ <xsl:template match="tp:mapping">
+ <div xmlns="http://www.w3.org/1999/xhtml" class="struct">
+ <h3>
+ <a name="type-{@name}">
+ <xsl:value-of select="@name"/>
+ </a> - a{
+ <xsl:for-each select="tp:member">
+ <xsl:value-of select="@type"/>
+ <xsl:text>: </xsl:text>
+ <xsl:value-of select="@name"/>
+ <xsl:if test="position() != last()"> &#x2192; </xsl:if>
+ </xsl:for-each>
+ }
+ </h3>
+ <div class="docstring">
+ <xsl:apply-templates select="tp:docstring"/>
+ </div>
+ <div>
+ <h4>Members</h4>
+ <dl>
+ <xsl:apply-templates select="tp:member" mode="members-in-docstring"/>
+ </dl>
+ </div>
+ </div>
+ </xsl:template>
+
+ <xsl:template match="tp:docstring" mode="in-index"/>
+
+ <xsl:template match="tp:simple-type | tp:enum | tp:flags | tp:external-type"
+ mode="in-index">
+ - <xsl:value-of select="@type"/>
+ </xsl:template>
+
+ <xsl:template match="tp:simple-type">
+ <div xmlns="http://www.w3.org/1999/xhtml" class="simple-type">
+ <h3>
+ <a name="type-{@name}">
+ <xsl:value-of select="@name"/>
+ </a> - <xsl:value-of select="@type"/>
+ </h3>
+ <div class="docstring">
+ <xsl:apply-templates select="tp:docstring"/>
+ </div>
+ </div>
+ </xsl:template>
+
+ <xsl:template match="tp:external-type">
+ <div xmlns="http://www.w3.org/1999/xhtml" class="external-type">
+ <dt>
+ <a name="type-{@name}">
+ <xsl:value-of select="@name"/>
+ </a> - <xsl:value-of select="@type"/>
+ </dt>
+ <dd>Defined by: <xsl:value-of select="@from"/></dd>
+ </div>
+ </xsl:template>
+
+ <xsl:template match="tp:struct" mode="in-index">
+ - ( <xsl:for-each select="tp:member">
+ <xsl:value-of select="@type"/>
+ <xsl:if test="position() != last()">, </xsl:if>
+ </xsl:for-each> )
+ </xsl:template>
+
+ <xsl:template match="tp:mapping" mode="in-index">
+ - a{ <xsl:for-each select="tp:member">
+ <xsl:value-of select="@type"/>
+ <xsl:if test="position() != last()"> &#x2192; </xsl:if>
+ </xsl:for-each> }
+ </xsl:template>
+
+ <xsl:template match="tp:struct">
+ <div xmlns="http://www.w3.org/1999/xhtml" class="struct">
+ <h3>
+ <a name="type-{@name}">
+ <xsl:value-of select="@name"/>
+ </a> - (
+ <xsl:for-each select="tp:member">
+ <xsl:value-of select="@type"/>
+ <xsl:text>: </xsl:text>
+ <xsl:value-of select="@name"/>
+ <xsl:if test="position() != last()">, </xsl:if>
+ </xsl:for-each>
+ )
+ </h3>
+ <div class="docstring">
+ <xsl:apply-templates select="tp:docstring"/>
+ </div>
+ <xsl:choose>
+ <xsl:when test="string(@array-name) != ''">
+ <p>In bindings that need a separate name, arrays of
+ <xsl:value-of select="@name"/> should be called
+ <xsl:value-of select="@array-name"/>.</p>
+ </xsl:when>
+ <xsl:otherwise>
+ <p>Arrays of <xsl:value-of select="@name"/> don't generally
+ make sense.</p>
+ </xsl:otherwise>
+ </xsl:choose>
+ <div>
+ <h4>Members</h4>
+ <dl>
+ <xsl:apply-templates select="tp:member" mode="members-in-docstring"/>
+ </dl>
+ </div>
+ </div>
+ </xsl:template>
+
+ <xsl:template match="method">
+ <div xmlns="http://www.w3.org/1999/xhtml" class="method">
+ <h3 xmlns="http://www.w3.org/1999/xhtml">
+ <a name="{concat(../@name, concat('.', @name))}">
+ <xsl:value-of select="@name"/>
+ </a> (
+ <xsl:for-each xmlns="" select="arg[@direction='in']">
+ <xsl:value-of select="@type"/>: <xsl:value-of select="@name"/>
+ <xsl:if test="position() != last()">, </xsl:if>
+ </xsl:for-each>
+ ) &#x2192;
+ <xsl:choose>
+ <xsl:when test="arg[@direction='out']">
+ <xsl:for-each xmlns="" select="arg[@direction='out']">
+ <xsl:value-of select="@type"/>
+ <xsl:if test="position() != last()">, </xsl:if>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:otherwise>nothing</xsl:otherwise>
+ </xsl:choose>
+ </h3>
+ <div xmlns="http://www.w3.org/1999/xhtml" class="docstring">
+ <xsl:apply-templates select="tp:docstring" />
+ </div>
+
+ <xsl:if test="arg[@direction='in']">
+ <div xmlns="http://www.w3.org/1999/xhtml">
+ <h4>Parameters</h4>
+ <dl xmlns="http://www.w3.org/1999/xhtml">
+ <xsl:apply-templates select="arg[@direction='in']"
+ mode="parameters-in-docstring"/>
+ </dl>
+ </div>
+ </xsl:if>
+
+ <xsl:if test="arg[@direction='out']">
+ <div xmlns="http://www.w3.org/1999/xhtml">
+ <h4>Returns</h4>
+ <dl xmlns="http://www.w3.org/1999/xhtml">
+ <xsl:apply-templates select="arg[@direction='out']"
+ mode="returns-in-docstring"/>
+ </dl>
+ </div>
+ </xsl:if>
+
+ <xsl:if test="tp:possible-errors">
+ <div xmlns="http://www.w3.org/1999/xhtml">
+ <h4>Possible errors</h4>
+ <dl xmlns="http://www.w3.org/1999/xhtml">
+ <xsl:apply-templates select="tp:possible-errors/tp:error"/>
+ </dl>
+ </div>
+ </xsl:if>
+
+ </div>
+ </xsl:template>
+
+ <xsl:template name="parenthesized-tp-type">
+ <xsl:if test="@tp:type">
+ <xsl:variable name="tp-type" select="@tp:type"/>
+ <xsl:variable name="single-type">
+ <xsl:choose>
+ <xsl:when test="contains($tp-type, '[]')">
+ <xsl:value-of select="substring-before($tp-type, '[]')"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$tp-type"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="//tp:simple-type[@name=$tp-type]" />
+ <xsl:when test="//tp:simple-type[concat(@name, '[]')=$tp-type]" />
+ <xsl:when test="//tp:struct[concat(@name, '[]')=$tp-type][string(@array-name) != '']" />
+ <xsl:when test="//tp:struct[@name=$tp-type]" />
+ <xsl:when test="//tp:enum[@name=$tp-type]" />
+ <xsl:when test="//tp:enum[concat(@name, '[]')=$tp-type]" />
+ <xsl:when test="//tp:flags[@name=$tp-type]" />
+ <xsl:when test="//tp:flags[concat(@name, '[]')=$tp-type]" />
+ <xsl:when test="//tp:mapping[@name=$tp-type]" />
+ <xsl:when test="//tp:external-type[concat(@name, '[]')=$tp-type]" />
+ <xsl:when test="//tp:external-type[@name=$tp-type]" />
+ <xsl:otherwise>
+ <xsl:message terminate="yes">
+ <xsl:text>ERR: Unable to find type '</xsl:text>
+ <xsl:value-of select="$tp-type"/>
+ <xsl:text>'&#10;</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ (<a href="#type-{$single-type}"><xsl:value-of select="$tp-type"/></a>)
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template match="tp:member" mode="members-in-docstring">
+ <dt xmlns="http://www.w3.org/1999/xhtml">
+ <code><xsl:value-of select="@name"/></code> -
+ <code><xsl:value-of select="@type"/></code>
+ <xsl:call-template name="parenthesized-tp-type"/>
+ </dt>
+ <dd xmlns="http://www.w3.org/1999/xhtml">
+ <xsl:choose>
+ <xsl:when test="tp:docstring">
+ <xsl:apply-templates select="tp:docstring" />
+ </xsl:when>
+ <xsl:otherwise>
+ <em>(undocumented)</em>
+ </xsl:otherwise>
+ </xsl:choose>
+ </dd>
+ </xsl:template>
+
+ <xsl:template match="arg" mode="parameters-in-docstring">
+ <dt xmlns="http://www.w3.org/1999/xhtml">
+ <code><xsl:value-of select="@name"/></code> -
+ <code><xsl:value-of select="@type"/></code>
+ <xsl:call-template name="parenthesized-tp-type"/>
+ </dt>
+ <dd xmlns="http://www.w3.org/1999/xhtml">
+ <xsl:apply-templates select="tp:docstring" />
+ </dd>
+ </xsl:template>
+
+ <xsl:template match="arg" mode="returns-in-docstring">
+ <dt xmlns="http://www.w3.org/1999/xhtml">
+ <xsl:if test="@name">
+ <code><xsl:value-of select="@name"/></code> -
+ </xsl:if>
+ <code><xsl:value-of select="@type"/></code>
+ <xsl:call-template name="parenthesized-tp-type"/>
+ </dt>
+ <dd xmlns="http://www.w3.org/1999/xhtml">
+ <xsl:apply-templates select="tp:docstring"/>
+ </dd>
+ </xsl:template>
+
+ <xsl:template match="tp:possible-errors/tp:error">
+ <dt xmlns="http://www.w3.org/1999/xhtml">
+ <code><xsl:value-of select="@name"/></code>
+ </dt>
+ <dd xmlns="http://www.w3.org/1999/xhtml">
+ <xsl:variable name="name" select="@name"/>
+ <xsl:choose>
+ <xsl:when test="tp:docstring">
+ <xsl:apply-templates select="tp:docstring"/>
+ </xsl:when>
+ <xsl:when test="//tp:errors/tp:error[concat(../@namespace, '.', translate(@name, ' ', ''))=$name]/tp:docstring">
+ <xsl:apply-templates select="//tp:errors/tp:error[concat(../@namespace, '.', translate(@name, ' ', ''))=$name]/tp:docstring"/> <em xmlns="http://www.w3.org/1999/xhtml">(generic description)</em>
+ </xsl:when>
+ <xsl:otherwise>
+ (Undocumented.)
+ </xsl:otherwise>
+ </xsl:choose>
+ </dd>
+ </xsl:template>
+
+ <xsl:template match="signal">
+ <div xmlns="http://www.w3.org/1999/xhtml" class="signal">
+ <h3 xmlns="http://www.w3.org/1999/xhtml">
+ <a name="{concat(../@name, concat('.', @name))}">
+ <xsl:value-of select="@name"/>
+ </a> (
+ <xsl:for-each xmlns="" select="arg">
+ <xsl:value-of select="@type"/>: <xsl:value-of select="@name"/>
+ <xsl:if test="position() != last()">, </xsl:if>
+ </xsl:for-each>
+ )</h3>
+ <div xmlns="http://www.w3.org/1999/xhtml" class="docstring">
+ <xsl:apply-templates select="tp:docstring"/>
+ </div>
+
+ <xsl:if test="arg">
+ <div xmlns="http://www.w3.org/1999/xhtml">
+ <h4>Parameters</h4>
+ <dl xmlns="http://www.w3.org/1999/xhtml">
+ <xsl:apply-templates select="arg" mode="parameters-in-docstring"/>
+ </dl>
+ </div>
+ </xsl:if>
+ </div>
+ </xsl:template>
+
+ <xsl:output method="xml" indent="no" encoding="ascii"
+ omit-xml-declaration="yes"
+ doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
+ doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" />
+
+ <xsl:template match="/tp:spec">
+ <html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title>
+ <xsl:value-of select="tp:title"/>
+ <xsl:if test="tp:version">
+ <xsl:text> version </xsl:text>
+ <xsl:value-of select="tp:version"/>
+ </xsl:if>
+ </title>
+ <style type="text/css">
+
+ body {
+ font-family: sans-serif;
+ margin: 2em;
+ height: 100%;
+ font-size: 1.2em;
+ }
+ h1 {
+ padding-top: 5px;
+ padding-bottom: 5px;
+ font-size: 1.6em;
+ background: #dadae2;
+ }
+ h2 {
+ font-size: 1.3em;
+ }
+ h3 {
+ font-size: 1.2em;
+ }
+ a:link, a:visited, a:link:hover, a:visited:hover {
+ font-weight: bold;
+ }
+ .topbox {
+ padding-top: 10px;
+ padding-left: 10px;
+ border-bottom: black solid 1px;
+ padding-bottom: 10px;
+ background: #dadae2;
+ font-size: 2em;
+ font-weight: bold;
+ color: #5c5c5c;
+ }
+ .topnavbox {
+ padding-left: 10px;
+ padding-top: 5px;
+ padding-bottom: 5px;
+ background: #abacba;
+ border-bottom: black solid 1px;
+ font-size: 1.2em;
+ }
+ .topnavbox a{
+ color: black;
+ font-weight: normal;
+ }
+ .sidebar {
+ float: left;
+ /* width:9em;
+ border-right:#abacba solid 1px;
+ border-left: #abacba solid 1px;
+ height:100%; */
+ border: #abacba solid 1px;
+ padding-left: 10px;
+ margin-left: 10px;
+ padding-right: 10px;
+ margin-right: 10px;
+ color: #5d5d5d;
+ background: #dadae2;
+ }
+ .sidebar a {
+ text-decoration: none;
+ border-bottom: #e29625 dotted 1px;
+ color: #e29625;
+ font-weight: normal;
+ }
+ .sidebar h1 {
+ font-size: 1.2em;
+ color: black;
+ }
+ .sidebar ul {
+ padding-left: 25px;
+ padding-bottom: 10px;
+ border-bottom: #abacba solid 1px;
+ }
+ .sidebar li {
+ padding-top: 2px;
+ padding-bottom: 2px;
+ }
+ .sidebar h2 {
+ font-style:italic;
+ font-size: 0.81em;
+ padding-left: 5px;
+ padding-right: 5px;
+ font-weight: normal;
+ }
+ .date {
+ font-size: 0.6em;
+ float: right;
+ font-style: italic;
+ }
+ .method {
+ margin-left: 1em;
+ margin-right: 4em;
+ }
+ .signal {
+ margin-left: 1em;
+ margin-right: 4em;
+ }
+
+ </style>
+ </head>
+ <body>
+ <h1 class="topbox">
+ <xsl:value-of select="tp:title" />
+ </h1>
+ <xsl:if test="tp:version">
+ <h2>Version <xsl:apply-templates select="tp:version"/></h2>
+ </xsl:if>
+ <xsl:apply-templates select="tp:copyright"/>
+ <xsl:apply-templates select="tp:license"/>
+ <xsl:apply-templates select="tp:docstring"/>
+
+ <h2>Interfaces</h2>
+ <ul>
+ <xsl:for-each select="node/interface">
+ <li><code><a href="#{@name}"><xsl:value-of select="@name"/></a></code></li>
+ </xsl:for-each>
+ </ul>
+
+ <xsl:apply-templates select="node"/>
+ <xsl:apply-templates select="tp:generic-types"/>
+ <xsl:apply-templates select="tp:errors"/>
+
+ <h1>Index</h1>
+ <h2>Index of interfaces</h2>
+ <ul>
+ <xsl:for-each select="node/interface">
+ <li><code><a href="#{@name}"><xsl:value-of select="@name"/></a></code></li>
+ </xsl:for-each>
+ </ul>
+ <h2>Index of types</h2>
+ <ul>
+ <xsl:for-each select="//tp:simple-type | //tp:enum | //tp:flags | //tp:mapping | //tp:struct | //tp:external-type">
+ <xsl:sort select="@name"/>
+ <li>
+ <code>
+ <a href="#type-{@name}">
+ <xsl:value-of select="@name"/>
+ </a>
+ </code>
+ <xsl:apply-templates mode="in-index" select="."/>
+ </li>
+ </xsl:for-each>
+ </ul>
+ </body>
+ </html>
+ </xsl:template>
+
+</xsl:stylesheet>
+
+<!-- vim:set sw=2 sts=2 et: -->
diff --git a/gnome-2-22/tools/glib-client-gen.py b/gnome-2-22/tools/glib-client-gen.py
new file mode 100644
index 000000000..4ff78cd0b
--- /dev/null
+++ b/gnome-2-22/tools/glib-client-gen.py
@@ -0,0 +1,1126 @@
+#!/usr/bin/python
+
+# glib-client-gen.py: "I Can't Believe It's Not dbus-binding-tool"
+#
+# Generate GLib client wrappers from the Telepathy specification.
+# The master copy of this program is in the telepathy-glib repository -
+# please make any changes there.
+#
+# Copyright (C) 2006-2008 Collabora Ltd. <http://www.collabora.co.uk/>
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+import sys
+import os.path
+import xml.dom.minidom
+from getopt import gnu_getopt
+
+from libglibcodegen import Signature, type_to_gtype, cmp_by_name, \
+ camelcase_to_lower, get_docstring, xml_escape
+
+
+NS_TP = "http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0"
+
+class Generator(object):
+
+ def __init__(self, dom, prefix, basename, opts):
+ self.dom = dom
+ self.__header = []
+ self.__body = []
+
+ self.prefix_lc = prefix.lower()
+ self.prefix_uc = prefix.upper()
+ self.prefix_mc = prefix.replace('_', '')
+ self.basename = basename
+ self.group = opts.get('--group', None)
+ self.iface_quark_prefix = opts.get('--iface-quark-prefix', None)
+ self.proxy_cls = opts.get('--subclass', 'TpProxy') + ' *'
+ self.proxy_arg = opts.get('--subclass', 'void') + ' *'
+ self.proxy_assert = opts.get('--subclass-assert', 'TP_IS_PROXY')
+ self.proxy_doc = ('A #%s or subclass'
+ % opts.get('--subclass', 'TpProxy'))
+ if self.proxy_arg == 'void *':
+ self.proxy_arg = 'gpointer '
+
+ def h(self, s):
+ self.__header.append(s)
+
+ def b(self, s):
+ self.__body.append(s)
+
+ def get_iface_quark(self):
+ assert self.iface_dbus is not None
+ assert self.iface_uc is not None
+ if self.iface_quark_prefix is None:
+ return 'g_quark_from_static_string (\"%s\")' % self.iface_dbus
+ else:
+ return '%s_%s' % (self.iface_quark_prefix, self.iface_uc)
+
+ def do_signal(self, iface, signal):
+ iface_lc = iface.lower()
+
+ member = signal.getAttribute('name')
+ member_lc = camelcase_to_lower(member)
+ member_uc = member_lc.upper()
+
+ arg_count = 0
+ args = []
+ out_args = []
+
+ for arg in signal.getElementsByTagName('arg'):
+ name = arg.getAttribute('name')
+ type = arg.getAttribute('type')
+ tp_type = arg.getAttribute('tp:type')
+
+ if not name:
+ name = 'arg%u' % arg_count
+ arg_count += 1
+ else:
+ name = 'arg_%s' % name
+
+ info = type_to_gtype(type)
+ args.append((name, info, tp_type, arg))
+
+ callback_name = ('%s_%s_signal_callback_%s'
+ % (self.prefix_lc, iface_lc, member_lc))
+ collect_name = ('_%s_%s_collect_args_of_%s'
+ % (self.prefix_lc, iface_lc, member_lc))
+ invoke_name = ('_%s_%s_invoke_callback_for_%s'
+ % (self.prefix_lc, iface_lc, member_lc))
+
+ # Example:
+ #
+ # typedef void (*tp_cli_connection_signal_callback_new_channel)
+ # (TpConnection *proxy, const gchar *arg_object_path,
+ # const gchar *arg_channel_type, guint arg_handle_type,
+ # guint arg_handle, gboolean arg_suppress_handler,
+ # gpointer user_data, GObject *weak_object);
+
+ self.b('/**')
+ self.b(' * %s:' % callback_name)
+ self.b(' * @proxy: The proxy on which %s_%s_connect_to_%s ()'
+ % (self.prefix_lc, iface_lc, member_lc))
+ self.b(' * was called')
+
+ for arg in args:
+ name, info, tp_type, elt = arg
+ ctype, gtype, marshaller, pointer = info
+
+ self.b(' * @%s: %s' % (name,
+ xml_escape(get_docstring(elt) or '(Undocumented)')))
+
+ self.b(' * @user_data: User-supplied data')
+ self.b(' * @weak_object: User-supplied weakly referenced object')
+ self.b(' *')
+ self.b(' * Represents the signature of a callback for the signal %s.'
+ % member)
+ self.b(' */')
+ self.h('typedef void (*%s) (%sproxy,'
+ % (callback_name, self.proxy_cls))
+
+ for arg in args:
+ name, info, tp_type, elt = arg
+ ctype, gtype, marshaller, pointer = info
+
+ const = pointer and 'const ' or ''
+
+ self.h(' %s%s%s,' % (const, ctype, name))
+
+ self.h(' gpointer user_data, GObject *weak_object);')
+
+ if args:
+ self.b('static void')
+ self.b('%s (DBusGProxy *proxy,' % collect_name)
+
+ for arg in args:
+ name, info, tp_type, elt = arg
+ ctype, gtype, marshaller, pointer = info
+
+ const = pointer and 'const ' or ''
+
+ self.b(' %s%s%s,' % (const, ctype, name))
+
+ self.b(' TpProxySignalConnection *sc)')
+ self.b('{')
+ self.b(' GValueArray *args = g_value_array_new (%d);' % len(args))
+ self.b(' GValue blank = { 0 };')
+ self.b(' guint i;')
+ self.b('')
+ self.b(' g_value_init (&blank, G_TYPE_INT);')
+ self.b('')
+ self.b(' for (i = 0; i < %d; i++)' % len(args))
+ self.b(' g_value_array_append (args, &blank);')
+ self.b('')
+
+ for i, arg in enumerate(args):
+ name, info, tp_type, elt = arg
+ ctype, gtype, marshaller, pointer = info
+
+ self.b(' g_value_unset (args->values + %d);' % i)
+ self.b(' g_value_init (args->values + %d, %s);' % (i, gtype))
+
+ if gtype == 'G_TYPE_STRING':
+ self.b(' g_value_set_string (args->values + %d, %s);'
+ % (i, name))
+ elif marshaller == 'BOXED':
+ self.b(' g_value_set_boxed (args->values + %d, %s);'
+ % (i, name))
+ elif gtype == 'G_TYPE_UCHAR':
+ self.b(' g_value_set_uchar (args->values + %d, %s);'
+ % (i, name))
+ elif gtype == 'G_TYPE_BOOLEAN':
+ self.b(' g_value_set_boolean (args->values + %d, %s);'
+ % (i, name))
+ elif gtype == 'G_TYPE_INT':
+ self.b(' g_value_set_int (args->values + %d, %s);'
+ % (i, name))
+ elif gtype == 'G_TYPE_UINT':
+ self.b(' g_value_set_uint (args->values + %d, %s);'
+ % (i, name))
+ elif gtype == 'G_TYPE_INT64':
+ self.b(' g_value_set_int (args->values + %d, %s);'
+ % (i, name))
+ elif gtype == 'G_TYPE_UINT64':
+ self.b(' g_value_set_uint (args->values + %d, %s);'
+ % (i, name))
+ elif gtype == 'G_TYPE_DOUBLE':
+ self.b(' g_value_set_double (args->values + %d, %s);'
+ % (i, name))
+ else:
+ assert False, ("Don't know how to put %s in a GValue"
+ % gtype)
+ self.b('')
+
+ self.b(' tp_proxy_signal_connection_v0_take_results (sc, args);')
+ self.b('}')
+
+ self.b('static void')
+ self.b('%s (TpProxy *tpproxy,' % invoke_name)
+ self.b(' GError *error,')
+ self.b(' GValueArray *args,')
+ self.b(' GCallback generic_callback,')
+ self.b(' gpointer user_data,')
+ self.b(' GObject *weak_object)')
+ self.b('{')
+ self.b(' %s callback =' % callback_name)
+ self.b(' (%s) generic_callback;' % callback_name)
+ self.b('')
+ self.b(' if (callback != NULL)')
+ self.b(' callback (g_object_ref (tpproxy),')
+
+ # FIXME: factor out into a function
+ for i, arg in enumerate(args):
+ name, info, tp_type, elt = arg
+ ctype, gtype, marshaller, pointer = info
+
+ if marshaller == 'BOXED':
+ self.b(' g_value_get_boxed (args->values + %d),' % i)
+ elif gtype == 'G_TYPE_STRING':
+ self.b(' g_value_get_string (args->values + %d),' % i)
+ elif gtype == 'G_TYPE_UCHAR':
+ self.b(' g_value_get_uchar (args->values + %d),' % i)
+ elif gtype == 'G_TYPE_BOOLEAN':
+ self.b(' g_value_get_boolean (args->values + %d),' % i)
+ elif gtype == 'G_TYPE_UINT':
+ self.b(' g_value_get_uint (args->values + %d),' % i)
+ elif gtype == 'G_TYPE_INT':
+ self.b(' g_value_get_int (args->values + %d),' % i)
+ elif gtype == 'G_TYPE_UINT64':
+ self.b(' g_value_get_uint64 (args->values + %d),' % i)
+ elif gtype == 'G_TYPE_INT64':
+ self.b(' g_value_get_int64 (args->values + %d),' % i)
+ elif gtype == 'G_TYPE_DOUBLE':
+ self.b(' g_value_get_double (args->values + %d),' % i)
+ else:
+ assert False, "Don't know how to get %s from a GValue" % gtype
+
+ self.b(' user_data,')
+ self.b(' weak_object);')
+ self.b('')
+
+ if len(args) > 0:
+ self.b(' g_value_array_free (args);')
+ else:
+ self.b(' if (args != NULL)')
+ self.b(' g_value_array_free (args);')
+ self.b('')
+
+ self.b(' g_object_unref (tpproxy);')
+ self.b('}')
+
+ # Example:
+ #
+ # TpProxySignalConnection *
+ # tp_cli_connection_connect_to_new_channel
+ # (TpConnection *proxy,
+ # tp_cli_connection_signal_callback_new_channel callback,
+ # gpointer user_data,
+ # GDestroyNotify destroy);
+ #
+ # destroy is invoked when the signal becomes disconnected. This
+ # is either because the signal has been disconnected explicitly
+ # by the user, because the TpProxy has become invalid and
+ # emitted the 'invalidated' signal, or because the weakly referenced
+ # object has gone away.
+
+ self.b('/**')
+ self.b(' * %s_%s_connect_to_%s:'
+ % (self.prefix_lc, iface_lc, member_lc))
+ self.b(' * @proxy: %s' % self.proxy_doc)
+ self.b(' * @callback: Callback to be called when the signal is')
+ self.b(' * received')
+ self.b(' * @user_data: User-supplied data for the callback')
+ self.b(' * @destroy: Destructor for the user-supplied data, which')
+ self.b(' * will be called when this signal is disconnected, or')
+ self.b(' * before this function returns %NULL')
+ self.b(' * @weak_object: A #GObject which will be weakly referenced; ')
+ self.b(' * if it is destroyed, this callback will automatically be')
+ self.b(' * disconnected')
+ self.b(' * @error: If not %NULL, used to raise an error if %NULL is')
+ self.b(' * returned')
+ self.b(' *')
+ self.b(' * Connect a handler to the signal %s.' % member)
+ self.b(' *')
+ self.b(' * %s' % xml_escape(get_docstring(signal) or '(Undocumented)'))
+ self.b(' *')
+ self.b(' * Returns: a #TpProxySignalConnection containing all of the')
+ self.b(' * above, which can be used to disconnect the signal; or')
+ self.b(' * %NULL if the proxy does not have the desired interface')
+ self.b(' * or has become invalid.')
+ self.b(' */')
+ self.h('TpProxySignalConnection *%s_%s_connect_to_%s (%sproxy,'
+ % (self.prefix_lc, iface_lc, member_lc, self.proxy_arg))
+ self.h(' %s callback,' % callback_name)
+ self.h(' gpointer user_data,')
+ self.h(' GDestroyNotify destroy,')
+ self.h(' GObject *weak_object,')
+ self.h(' GError **error);')
+
+ self.b('TpProxySignalConnection *')
+ self.b('%s_%s_connect_to_%s (%sproxy,'
+ % (self.prefix_lc, iface_lc, member_lc, self.proxy_arg))
+ self.b(' %s callback,' % callback_name)
+ self.b(' gpointer user_data,')
+ self.b(' GDestroyNotify destroy,')
+ self.b(' GObject *weak_object,')
+ self.b(' GError **error)')
+ self.b('{')
+ self.b(' GType expected_types[%d] = {' % (len(args) + 1))
+
+ for arg in args:
+ name, info, tp_type, elt = arg
+ ctype, gtype, marshaller, pointer = info
+
+ self.b(' %s,' % gtype)
+
+ self.b(' G_TYPE_INVALID };')
+ self.b('')
+ self.b(' g_return_val_if_fail (%s (proxy), NULL);'
+ % self.proxy_assert)
+ self.b(' g_return_val_if_fail (callback != NULL, NULL);')
+ self.b('')
+ self.b(' return tp_proxy_signal_connection_v0_new ((TpProxy *) proxy,')
+ self.b(' %s, \"%s\",' % (self.get_iface_quark(), member))
+ self.b(' expected_types,')
+
+ if args:
+ self.b(' G_CALLBACK (%s),' % collect_name)
+ else:
+ self.b(' NULL, /* no args => no collector function */')
+
+ self.b(' %s,' % invoke_name)
+ self.b(' G_CALLBACK (callback), user_data, destroy,')
+ self.b(' weak_object, error);')
+ self.b('}')
+ self.b('')
+
+ self.h('')
+
+ def do_method(self, iface, method):
+ iface_lc = iface.lower()
+
+ member = method.getAttribute('name')
+ member_lc = camelcase_to_lower(member)
+ member_uc = member_lc.upper()
+
+ in_count = 0
+ ret_count = 0
+ in_args = []
+ out_args = []
+
+ for arg in method.getElementsByTagName('arg'):
+ name = arg.getAttribute('name')
+ direction = arg.getAttribute('direction')
+ type = arg.getAttribute('type')
+ tp_type = arg.getAttribute('tp:type')
+
+ if direction != 'out':
+ if not name:
+ name = 'in%u' % in_count
+ in_count += 1
+ else:
+ name = 'in_%s' % name
+ else:
+ if not name:
+ name = 'out%u' % ret_count
+ ret_count += 1
+ else:
+ name = 'out_%s' % name
+
+ info = type_to_gtype(type)
+ if direction != 'out':
+ in_args.append((name, info, tp_type, arg))
+ else:
+ out_args.append((name, info, tp_type, arg))
+
+ # Async reply callback type
+
+ # Example:
+ # void (*tp_cli_properties_interface_callback_for_get_properties)
+ # (TpProxy *proxy,
+ # const GPtrArray *out0,
+ # const GError *error,
+ # gpointer user_data,
+ # GObject *weak_object);
+
+ self.b('/**')
+ self.b(' * %s_%s_callback_for_%s:'
+ % (self.prefix_lc, iface_lc, member_lc))
+ self.b(' * @proxy: the proxy on which the call was made')
+
+ for arg in out_args:
+ name, info, tp_type, elt = arg
+ ctype, gtype, marshaller, pointer = info
+
+ self.b(' * @%s: Used to return an \'out\' argument if @error is '
+ '%%NULL: %s'
+ % (name, xml_escape(get_docstring(elt) or '(Undocumented)')))
+
+ self.b(' * @error: %NULL on success, or an error on failure')
+ self.b(' * @user_data: user-supplied data')
+ self.b(' * @weak_object: user-supplied object')
+ self.b(' *')
+ self.b(' * Signature of the callback called when a %s method call'
+ % member)
+ self.b(' * succeeds or fails.')
+ self.b(' */')
+
+ callback_name = '%s_%s_callback_for_%s' % (self.prefix_lc, iface_lc,
+ member_lc)
+
+ self.h('typedef void (*%s) (%sproxy,'
+ % (callback_name, self.proxy_cls))
+
+ for arg in out_args:
+ name, info, tp_type, elt = arg
+ ctype, gtype, marshaller, pointer = info
+ const = pointer and 'const ' or ''
+
+ self.h(' %s%s%s,' % (const, ctype, name))
+
+ self.h(' const GError *error, gpointer user_data,')
+ self.h(' GObject *weak_object);')
+ self.h('')
+
+ # Async callback implementation
+
+ invoke_callback = '_%s_%s_invoke_callback_%s' % (self.prefix_lc,
+ iface_lc,
+ member_lc)
+
+ collect_callback = '_%s_%s_collect_callback_%s' % (self.prefix_lc,
+ iface_lc,
+ member_lc)
+
+ # The callback called by dbus-glib; this ends the call and collects
+ # the results into a GValueArray.
+ self.b('static void')
+ self.b('%s (DBusGProxy *proxy,' % collect_callback)
+ self.b(' DBusGProxyCall *call,')
+ self.b(' gpointer user_data)')
+ self.b('{')
+ self.b(' GError *error = NULL;')
+
+ if len(out_args) > 0:
+ self.b(' GValueArray *args;')
+ self.b(' GValue blank = { 0 };')
+ self.b(' guint i;')
+
+ for arg in out_args:
+ name, info, tp_type, elt = arg
+ ctype, gtype, marshaller, pointer = info
+
+ # "We handle variants specially; the caller is expected to
+ # have already allocated storage for them". Thanks,
+ # dbus-glib...
+ if gtype == 'G_TYPE_VALUE':
+ self.b(' GValue *%s = g_new0 (GValue, 1);' % name)
+ else:
+ self.b(' %s%s;' % (ctype, name))
+
+ self.b('')
+ self.b(' dbus_g_proxy_end_call (proxy, call, &error,')
+
+ for arg in out_args:
+ name, info, tp_type, elt = arg
+ ctype, gtype, marshaller, pointer = info
+
+ if gtype == 'G_TYPE_VALUE':
+ self.b(' %s, %s,' % (gtype, name))
+ else:
+ self.b(' %s, &%s,' % (gtype, name))
+
+ self.b(' G_TYPE_INVALID);')
+
+ if len(out_args) == 0:
+ self.b(' tp_proxy_pending_call_v0_take_results (user_data, error,'
+ 'NULL);')
+ else:
+ self.b('')
+ self.b(' if (error != NULL)')
+ self.b(' {')
+ self.b(' tp_proxy_pending_call_v0_take_results (user_data, error,')
+ self.b(' NULL);')
+
+ for arg in out_args:
+ name, info, tp_type, elt = arg
+ ctype, gtype, marshaller, pointer = info
+ if gtype == 'G_TYPE_VALUE':
+ self.b(' g_free (%s);' % name)
+
+ self.b(' return;')
+ self.b(' }')
+ self.b('')
+ self.b(' args = g_value_array_new (%d);' % len(out_args))
+ self.b(' g_value_init (&blank, G_TYPE_INT);')
+ self.b('')
+ self.b(' for (i = 0; i < %d; i++)' % len(out_args))
+ self.b(' g_value_array_append (args, &blank);')
+
+ for i, arg in enumerate(out_args):
+ name, info, tp_type, elt = arg
+ ctype, gtype, marshaller, pointer = info
+
+ self.b('')
+ self.b(' g_value_unset (args->values + %d);' % i)
+ self.b(' g_value_init (args->values + %d, %s);' % (i, gtype))
+
+ if gtype == 'G_TYPE_STRING':
+ self.b(' g_value_take_string (args->values + %d, %s);'
+ % (i, name))
+ elif marshaller == 'BOXED':
+ self.b(' g_value_take_boxed (args->values + %d, %s);'
+ % (i, name))
+ elif gtype == 'G_TYPE_UCHAR':
+ self.b(' g_value_set_uchar (args->values + %d, %s);'
+ % (i, name))
+ elif gtype == 'G_TYPE_BOOLEAN':
+ self.b(' g_value_set_boolean (args->values + %d, %s);'
+ % (i, name))
+ elif gtype == 'G_TYPE_INT':
+ self.b(' g_value_set_int (args->values + %d, %s);'
+ % (i, name))
+ elif gtype == 'G_TYPE_UINT':
+ self.b(' g_value_set_uint (args->values + %d, %s);'
+ % (i, name))
+ elif gtype == 'G_TYPE_INT64':
+ self.b(' g_value_set_int (args->values + %d, %s);'
+ % (i, name))
+ elif gtype == 'G_TYPE_UINT64':
+ self.b(' g_value_set_uint (args->values + %d, %s);'
+ % (i, name))
+ elif gtype == 'G_TYPE_DOUBLE':
+ self.b(' g_value_set_double (args->values + %d, %s);'
+ % (i, name))
+ else:
+ assert False, ("Don't know how to put %s in a GValue"
+ % gtype)
+
+ self.b(' tp_proxy_pending_call_v0_take_results (user_data, '
+ 'NULL, args);')
+
+ self.b('}')
+
+ self.b('static void')
+ self.b('%s (TpProxy *self,' % invoke_callback)
+ self.b(' GError *error,')
+ self.b(' GValueArray *args,')
+ self.b(' GCallback generic_callback,')
+ self.b(' gpointer user_data,')
+ self.b(' GObject *weak_object)')
+ self.b('{')
+ self.b(' %s callback = (%s) generic_callback;'
+ % (callback_name, callback_name))
+ self.b('')
+ self.b(' if (error != NULL)')
+ self.b(' {')
+ self.b(' callback ((%s) self,' % self.proxy_cls)
+
+ for arg in out_args:
+ name, info, tp_type, elt = arg
+ ctype, gtype, marshaller, pointer = info
+
+ if marshaller == 'BOXED' or pointer:
+ self.b(' NULL,')
+ elif gtype == 'G_TYPE_DOUBLE':
+ self.b(' 0.0,')
+ else:
+ self.b(' 0,')
+
+ self.b(' error, user_data, weak_object);')
+ self.b(' g_error_free (error);')
+ self.b(' return;')
+ self.b(' }')
+
+ self.b(' callback ((%s) self,' % self.proxy_cls)
+
+ # FIXME: factor out into a function
+ for i, arg in enumerate(out_args):
+ name, info, tp_type, elt = arg
+ ctype, gtype, marshaller, pointer = info
+
+ if marshaller == 'BOXED':
+ self.b(' g_value_get_boxed (args->values + %d),' % i)
+ elif gtype == 'G_TYPE_STRING':
+ self.b(' g_value_get_string (args->values + %d),' % i)
+ elif gtype == 'G_TYPE_UCHAR':
+ self.b(' g_value_get_uchar (args->values + %d),' % i)
+ elif gtype == 'G_TYPE_BOOLEAN':
+ self.b(' g_value_get_boolean (args->values + %d),' % i)
+ elif gtype == 'G_TYPE_UINT':
+ self.b(' g_value_get_uint (args->values + %d),' % i)
+ elif gtype == 'G_TYPE_INT':
+ self.b(' g_value_get_int (args->values + %d),' % i)
+ elif gtype == 'G_TYPE_UINT64':
+ self.b(' g_value_get_uint64 (args->values + %d),' % i)
+ elif gtype == 'G_TYPE_INT64':
+ self.b(' g_value_get_int64 (args->values + %d),' % i)
+ elif gtype == 'G_TYPE_DOUBLE':
+ self.b(' g_value_get_double (args->values + %d),' % i)
+ else:
+ assert False, "Don't know how to get %s from a GValue" % gtype
+
+ self.b(' error, user_data, weak_object);')
+ self.b('')
+
+ if len(out_args) > 0:
+ self.b(' g_value_array_free (args);')
+ else:
+ self.b(' if (args != NULL)')
+ self.b(' g_value_array_free (args);')
+
+ self.b('}')
+ self.b('')
+
+ # Async stub
+
+ # Example:
+ # TpProxyPendingCall *
+ # tp_cli_properties_interface_call_get_properties
+ # (gpointer proxy,
+ # gint timeout_ms,
+ # const GArray *in_properties,
+ # tp_cli_properties_interface_callback_for_get_properties callback,
+ # gpointer user_data,
+ # GDestroyNotify *destructor);
+
+ self.h('TpProxyPendingCall *%s_%s_call_%s (%sproxy,'
+ % (self.prefix_lc, iface_lc, member_lc, self.proxy_arg))
+ self.h(' gint timeout_ms,')
+
+ self.b('/**')
+ self.b(' * %s_%s_call_%s:'
+ % (self.prefix_lc, iface_lc, member_lc))
+ self.b(' * @proxy: the #TpProxy')
+ self.b(' * @timeout_ms: the timeout in milliseconds, or -1 to use the')
+ self.b(' * default')
+
+ for arg in in_args:
+ name, info, tp_type, elt = arg
+ ctype, gtype, marshaller, pointer = info
+
+ self.b(' * @%s: Used to pass an \'in\' argument: %s'
+ % (name, xml_escape(get_docstring(elt) or '(Undocumented)')))
+
+ self.b(' * @callback: called when the method call succeeds or fails')
+ self.b(' * @user_data: user-supplied data passed to the callback')
+ self.b(' * @destroy: called with the user_data as argument, after the')
+ self.b(' * call has succeeded, failed or been cancelled')
+ self.b(' * @weak_object: A #GObject which will be weakly referenced; ')
+ self.b(' * if it is destroyed, this callback will automatically be')
+ self.b(' * disconnected')
+ self.b(' *')
+ self.b(' * Start a %s method call.' % member)
+ self.b(' *')
+ self.b(' * %s' % xml_escape(get_docstring(method) or '(Undocumented)'))
+ self.b(' *')
+ self.b(' * Returns: a #TpProxyPendingCall representing the call in')
+ self.b(' * progress. It is borrowed from the object, and will become')
+ self.b(' * invalid when the callback is called, the call is')
+ self.b(' * cancelled or the #TpProxy becomes invalid.')
+ self.b(' */')
+ self.b('TpProxyPendingCall *\n%s_%s_call_%s (%sproxy,'
+ % (self.prefix_lc, iface_lc, member_lc, self.proxy_arg))
+ self.b(' gint timeout_ms,')
+
+ for arg in in_args:
+ name, info, tp_type, elt = arg
+ ctype, gtype, marshaller, pointer = info
+
+ const = pointer and 'const ' or ''
+
+ self.h(' %s%s%s,' % (const, ctype, name))
+ self.b(' %s%s%s,' % (const, ctype, name))
+
+ self.h(' %s callback,' % callback_name)
+ self.h(' gpointer user_data,')
+ self.h(' GDestroyNotify destroy,')
+ self.h(' GObject *weak_object);')
+ self.h('')
+
+ self.b(' %s callback,' % callback_name)
+ self.b(' gpointer user_data,')
+ self.b(' GDestroyNotify destroy,')
+ self.b(' GObject *weak_object)')
+ self.b('{')
+ self.b(' GError *error = NULL;')
+ self.b(' GQuark interface = %s;' % self.get_iface_quark())
+ self.b(' DBusGProxy *iface;')
+ self.b('')
+ self.b(' g_return_val_if_fail (%s (proxy), NULL);'
+ % self.proxy_assert)
+ self.b('')
+ self.b(' iface = tp_proxy_borrow_interface_by_id (')
+ self.b(' (TpProxy *) proxy,')
+ self.b(' interface, &error);')
+ self.b('')
+ self.b(' if (iface == NULL)')
+ self.b(' {')
+ self.b(' if (callback != NULL)')
+ self.b(' callback (proxy,')
+
+ for arg in out_args:
+ name, info, tp_type, elt = arg
+ ctype, gtype, marshaller, pointer = info
+
+ if pointer:
+ self.b(' NULL,')
+ else:
+ self.b(' 0,')
+
+ self.b(' error, user_data, weak_object);')
+ self.b(' return NULL;')
+ self.b(' }')
+ self.b('')
+ self.b(' if (callback == NULL)')
+ self.b(' {')
+ self.b(' dbus_g_proxy_call_no_reply (iface, "%s",' % member)
+
+ for arg in in_args:
+ name, info, tp_type, elt = arg
+ ctype, gtype, marshaller, pointer = info
+
+ const = pointer and 'const ' or ''
+
+ self.b(' %s, %s,' % (gtype, name))
+
+ self.b(' G_TYPE_INVALID);')
+ self.b(' return NULL;')
+ self.b(' }')
+ self.b(' else')
+ self.b(' {')
+ self.b(' TpProxyPendingCall *data;')
+ self.b('')
+ self.b(' data = tp_proxy_pending_call_v0_new ((TpProxy *) proxy,')
+ self.b(' interface, "%s", iface,' % member)
+ self.b(' %s,' % invoke_callback)
+ self.b(' G_CALLBACK (callback), user_data, destroy,')
+ self.b(' weak_object, FALSE);')
+ self.b(' tp_proxy_pending_call_v0_take_pending_call (data,')
+ self.b(' dbus_g_proxy_begin_call_with_timeout (iface,')
+ self.b(' "%s",' % member)
+ self.b(' %s,' % collect_callback)
+ self.b(' data,')
+ self.b(' tp_proxy_pending_call_v0_completed,')
+ self.b(' timeout_ms,')
+
+ for arg in in_args:
+ name, info, tp_type, elt = arg
+ ctype, gtype, marshaller, pointer = info
+
+ const = pointer and 'const ' or ''
+
+ self.b(' %s, %s,' % (gtype, name))
+
+ self.b(' G_TYPE_INVALID));')
+ self.b('')
+ self.b(' return data;')
+ self.b(' }')
+ self.b('}')
+ self.b('')
+
+ # Reentrant blocking calls
+ # Example:
+ # gboolean tp_cli_properties_interface_run_get_properties
+ # (gpointer proxy,
+ # gint timeout_ms,
+ # const GArray *in_properties,
+ # GPtrArray **out0,
+ # GError **error,
+ # GMainLoop **loop);
+
+ self.b('typedef struct {')
+ self.b(' GMainLoop *loop;')
+ self.b(' GError **error;')
+
+ for arg in out_args:
+ name, info, tp_type, elt = arg
+ ctype, gtype, marshaller, pointer = info
+
+ self.b(' %s*%s;' % (ctype, name))
+
+ self.b(' gboolean success:1;')
+ self.b(' gboolean completed:1;')
+ self.b('} _%s_%s_run_state_%s;'
+ % (self.prefix_lc, iface_lc, member_lc))
+
+ reentrant_invoke = '_%s_%s_finish_running_%s' % (self.prefix_lc,
+ iface_lc,
+ member_lc)
+
+ self.b('static void')
+ self.b('%s (TpProxy *self,' % reentrant_invoke)
+ self.b(' GError *error,')
+ self.b(' GValueArray *args,')
+ self.b(' GCallback unused,')
+ self.b(' gpointer user_data,')
+ self.b(' GObject *unused2)')
+ self.b('{')
+ self.b(' _%s_%s_run_state_%s *state = user_data;'
+ % (self.prefix_lc, iface_lc, member_lc))
+ self.b('')
+ self.b(' state->success = (error == NULL);')
+ self.b(' state->completed = TRUE;')
+ self.b(' g_main_loop_quit (state->loop);')
+ self.b('')
+ self.b(' if (error != NULL)')
+ self.b(' {')
+ self.b(' if (state->error != NULL)')
+ self.b(' *state->error = error;')
+ self.b(' else')
+ self.b(' g_error_free (error);')
+ self.b('')
+ self.b(' return;')
+ self.b(' }')
+ self.b('')
+
+ for i, arg in enumerate(out_args):
+ name, info, tp_type, elt = arg
+ ctype, gtype, marshaller, pointer = info
+
+ self.b(' if (state->%s != NULL)' % name)
+ if marshaller == 'BOXED':
+ self.b(' *state->%s = g_value_dup_boxed ('
+ 'args->values + %d);' % (name, i))
+ elif marshaller == 'STRING':
+ self.b(' *state->%s = g_value_dup_string '
+ '(args->values + %d);' % (name, i))
+ elif marshaller in ('UCHAR', 'BOOLEAN', 'INT', 'UINT',
+ 'INT64', 'UINT64', 'DOUBLE'):
+ self.b(' *state->%s = g_value_get_%s (args->values + %d);'
+ % (name, marshaller.lower(), i))
+ else:
+ assert False, "Don't know how to copy %s" % gtype
+
+ self.b('')
+
+ if len(out_args) > 0:
+ self.b(' g_value_array_free (args);')
+ else:
+ self.b(' if (args != NULL)')
+ self.b(' g_value_array_free (args);')
+
+ self.b('}')
+ self.b('')
+
+ self.h('gboolean %s_%s_run_%s (%sproxy,'
+ % (self.prefix_lc, iface_lc, member_lc, self.proxy_arg))
+ self.h(' gint timeout_ms,')
+
+ self.b('/**')
+ self.b(' * %s_%s_run_%s:' % (self.prefix_lc, iface_lc, member_lc))
+ self.b(' * @proxy: %s' % self.proxy_doc)
+ self.b(' * @timeout_ms: Timeout in milliseconds, or -1 for default')
+
+ for arg in in_args:
+ name, info, tp_type, elt = arg
+ ctype, gtype, marshaller, pointer = info
+
+ self.b(' * @%s: Used to pass an \'in\' argument: %s'
+ % (name, xml_escape(get_docstring(elt) or '(Undocumented)')))
+
+ for arg in out_args:
+ name, info, tp_type, elt = arg
+ ctype, gtype, marshaller, pointer = info
+
+ self.b(' * @%s: Used to return an \'out\' argument if %%TRUE is '
+ 'returned: %s'
+ % (name, xml_escape(get_docstring(elt) or '(Undocumented)')))
+
+ self.b(' * @error: If not %NULL, used to return errors if %FALSE ')
+ self.b(' * is returned')
+ self.b(' * @loop: If not %NULL, set before re-entering ')
+ self.b(' * the main loop, to point to a #GMainLoop ')
+ self.b(' * which can be used to cancel this call with ')
+ self.b(' * g_main_loop_quit(), causing a return of ')
+ self.b(' * %FALSE with @error set to %TP_DBUS_ERROR_CANCELLED')
+ self.b(' *')
+ self.b(' * Call the method %s and run the main loop' % member)
+ self.b(' * until it returns. Before calling this method, you must')
+ self.b(' * add a reference to any borrowed objects you need to keep,')
+ self.b(' * and generally ensure that everything is in a consistent')
+ self.b(' * state.')
+ self.b(' *')
+ self.b(' * %s' % xml_escape(get_docstring(method) or '(Undocumented)'))
+ self.b(' *')
+ self.b(' * Returns: TRUE on success, FALSE and sets @error on error')
+ self.b(' */')
+ self.b('gboolean\n%s_%s_run_%s (%sproxy,'
+ % (self.prefix_lc, iface_lc, member_lc, self.proxy_arg))
+ self.b(' gint timeout_ms,')
+
+ for arg in in_args:
+ name, info, tp_type, elt = arg
+ ctype, gtype, marshaller, pointer = info
+
+ const = pointer and 'const ' or ''
+
+ self.h(' %s%s%s,' % (const, ctype, name))
+ self.b(' %s%s%s,' % (const, ctype, name))
+
+ for arg in out_args:
+ name, info, tp_type, elt = arg
+ ctype, gtype, marshaller, pointer = info
+
+ self.h(' %s*%s,' % (ctype, name))
+ self.b(' %s*%s,' % (ctype, name))
+
+ self.h(' GError **error,')
+ self.h(' GMainLoop **loop);')
+ self.h('')
+
+ self.b(' GError **error,')
+ self.b(' GMainLoop **loop)')
+ self.b('{')
+ self.b(' DBusGProxy *iface;')
+ self.b(' GQuark interface = %s;' % self.get_iface_quark())
+ self.b(' TpProxyPendingCall *pc;')
+ self.b(' _%s_%s_run_state_%s state = {'
+ % (self.prefix_lc, iface_lc, member_lc))
+ self.b(' NULL /* loop */, error,')
+
+ for arg in out_args:
+ name, info, tp_type, elt = arg
+
+ self.b(' %s,' % name)
+
+ self.b(' FALSE /* completed */, FALSE /* success */ };')
+ self.b('')
+ self.b(' g_return_val_if_fail (%s (proxy), FALSE);'
+ % self.proxy_assert)
+ self.b('')
+ self.b(' iface = tp_proxy_borrow_interface_by_id')
+ self.b(' ((TpProxy *) proxy, interface, error);')
+ self.b('')
+ self.b(' if (iface == NULL)')
+ self.b(' return FALSE;')
+ self.b('')
+ self.b(' state.loop = g_main_loop_new (NULL, FALSE);')
+ self.b('')
+ self.b(' pc = tp_proxy_pending_call_v0_new ((TpProxy *) proxy,')
+ self.b(' interface, "%s", iface,' % member)
+ self.b(' %s,' % reentrant_invoke)
+ self.b(' NULL, &state, NULL, NULL, TRUE);')
+ self.b('')
+ self.b(' if (loop != NULL)')
+ self.b(' *loop = state.loop;')
+ self.b('')
+ self.b(' tp_proxy_pending_call_v0_take_pending_call (pc,')
+ self.b(' dbus_g_proxy_begin_call_with_timeout (iface,')
+ self.b(' "%s",' % member)
+ self.b(' %s,' % collect_callback)
+ self.b(' pc,')
+ self.b(' tp_proxy_pending_call_v0_completed,')
+ self.b(' timeout_ms,')
+
+ for arg in in_args:
+ name, info, tp_type, elt = arg
+ ctype, gtype, marshaller, pointer = info
+
+ const = pointer and 'const ' or ''
+
+ self.b(' %s, %s,' % (gtype, name))
+
+ self.b(' G_TYPE_INVALID));')
+ self.b('')
+ self.b(' if (!state.completed)')
+ self.b(' g_main_loop_run (state.loop);')
+ self.b('')
+ self.b(' if (!state.completed)')
+ self.b(' tp_proxy_pending_call_cancel (pc);')
+ self.b('')
+ self.b(' if (loop != NULL)')
+ self.b(' *loop = NULL;')
+ self.b('')
+ self.b(' g_main_loop_unref (state.loop);')
+ self.b('')
+ self.b(' return state.success;')
+ self.b('}')
+ self.b('')
+
+ # leave a gap for the end of the method
+ self.b('')
+ self.h('')
+
+ def do_signal_add(self, signal):
+ marshaller_items = []
+ gtypes = []
+
+ for i in signal.getElementsByTagName('arg'):
+ name = i.getAttribute('name')
+ type = i.getAttribute('type')
+ info = type_to_gtype(type)
+ # type, GType, STRING, is a pointer
+ gtypes.append(info[1])
+
+ self.b(' dbus_g_proxy_add_signal (proxy, "%s",'
+ % signal.getAttribute('name'))
+ for gtype in gtypes:
+ self.b(' %s,' % gtype)
+ self.b(' G_TYPE_INVALID);')
+
+ def do_interface(self, node):
+ ifaces = node.getElementsByTagName('interface')
+ assert len(ifaces) == 1
+ iface = ifaces[0]
+ name = node.getAttribute('name').replace('/', '')
+
+ self.iface = name
+ self.iface_lc = name.lower()
+ self.iface_uc = name.upper()
+ self.iface_mc = name.replace('_', '')
+ self.iface_dbus = iface.getAttribute('name')
+
+ signals = node.getElementsByTagName('signal')
+ methods = node.getElementsByTagName('method')
+
+ self.b('static inline void')
+ self.b('%s_add_signals_for_%s (DBusGProxy *proxy)'
+ % (self.prefix_lc, name.lower()))
+ self.b('{')
+
+ for signal in signals:
+ self.do_signal_add(signal)
+
+ self.b('}')
+ self.b('')
+ self.b('')
+
+ for signal in signals:
+ self.do_signal(name, signal)
+
+ for method in methods:
+ self.do_method(name, method)
+
+ self.iface_dbus = None
+
+ def __call__(self):
+
+ self.h('G_BEGIN_DECLS')
+ self.h('')
+
+ self.b('/* We don\'t want gtkdoc scanning this file, it\'ll get')
+ self.b(' * confused by seeing function definitions, so mark it as: */')
+ self.b('/*<private_header>*/')
+ self.b('')
+
+ nodes = self.dom.getElementsByTagName('node')
+ nodes.sort(cmp_by_name)
+
+ for node in nodes:
+ self.do_interface(node)
+
+ if self.group is not None:
+
+ self.b('/*')
+ self.b(' * %s_%s_add_signals:' % (self.prefix_lc, self.group))
+ self.b(' * @self: the #TpProxy')
+ self.b(' * @quark: a quark whose string value is the interface')
+ self.b(' * name whose signals should be added')
+ self.b(' * @proxy: the D-Bus proxy to which to add the signals')
+ self.b(' * @unused: not used for anything')
+ self.b(' *')
+ self.b(' * Tell dbus-glib that @proxy has the signatures of all')
+ self.b(' * signals on the given interface, if it\'s one we')
+ self.b(' * support.')
+ self.b(' *')
+ self.b(' * This function should be used as a signal handler for')
+ self.b(' * #TpProxy::interface-added.')
+ self.b(' */')
+ self.b('static void')
+ self.b('%s_%s_add_signals (TpProxy *self,'
+ % (self.prefix_lc, self.group))
+ self.b(' guint quark,')
+ self.b(' DBusGProxy *proxy,')
+ self.b(' gpointer unused)')
+
+ self.b('{')
+
+ for node in nodes:
+ iface = node.getElementsByTagName('interface')[0]
+ self.iface_dbus = iface.getAttribute('name')
+ name = node.getAttribute('name').replace('/', '').lower()
+ self.iface_uc = name.upper()
+ self.b(' if (quark == %s)' % self.get_iface_quark())
+ self.b(' %s_add_signals_for_%s (proxy);'
+ % (self.prefix_lc, name))
+
+ self.b('}')
+ self.b('')
+
+ self.h('G_END_DECLS')
+ self.h('')
+
+ open(self.basename + '.h', 'w').write('\n'.join(self.__header))
+ open(self.basename + '-body.h', 'w').write('\n'.join(self.__body))
+
+
+def types_to_gtypes(types):
+ return [type_to_gtype(t)[1] for t in types]
+
+
+if __name__ == '__main__':
+ options, argv = gnu_getopt(sys.argv[1:], '',
+ ['group=', 'subclass=', 'subclass-assert=',
+ 'iface-quark-prefix='])
+
+ opts = {}
+
+ for option, value in options:
+ opts[option] = value
+
+ dom = xml.dom.minidom.parse(argv[0])
+
+ Generator(dom, argv[1], argv[2], opts)()
diff --git a/gnome-2-22/tools/glib-client-marshaller-gen.py b/gnome-2-22/tools/glib-client-marshaller-gen.py
new file mode 100644
index 000000000..54447255b
--- /dev/null
+++ b/gnome-2-22/tools/glib-client-marshaller-gen.py
@@ -0,0 +1,59 @@
+#!/usr/bin/python
+
+import sys
+import xml.dom.minidom
+from string import ascii_letters, digits
+
+
+from libglibcodegen import signal_to_marshal_name
+
+
+NS_TP = "http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0"
+
+class Generator(object):
+
+ def __init__(self, dom, prefix):
+ self.dom = dom
+ self.marshallers = {}
+ self.prefix = prefix
+
+ def do_signal(self, signal):
+ marshaller = signal_to_marshal_name(signal, self.prefix)
+
+ assert '__' in marshaller
+ rhs = marshaller.split('__', 1)[1].split('_')
+
+ self.marshallers[marshaller] = rhs
+
+ def __call__(self):
+ signals = self.dom.getElementsByTagName('signal')
+
+ for signal in signals:
+ self.do_signal(signal)
+
+ print 'void'
+ print '%s_register_dbus_glib_marshallers (void)' % self.prefix
+ print '{'
+
+ all = self.marshallers.keys()
+ all.sort()
+ for marshaller in all:
+ rhs = self.marshallers[marshaller]
+
+ print ' dbus_g_object_register_marshaller (%s,' % marshaller
+ print ' G_TYPE_NONE, /* return */'
+ for type in rhs:
+ print ' G_TYPE_%s,' % type.replace('VOID', 'NONE')
+ print ' G_TYPE_INVALID);'
+
+ print '}'
+
+
+def types_to_gtypes(types):
+ return [type_to_gtype(t)[1] for t in types]
+
+if __name__ == '__main__':
+ argv = sys.argv[1:]
+ dom = xml.dom.minidom.parse(argv[0])
+
+ Generator(dom, argv[1])()
diff --git a/gnome-2-22/tools/glib-errors-enum-body.xsl b/gnome-2-22/tools/glib-errors-enum-body.xsl
new file mode 100644
index 000000000..17054b765
--- /dev/null
+++ b/gnome-2-22/tools/glib-errors-enum-body.xsl
@@ -0,0 +1,72 @@
+<!-- Stylesheet to extract GLib error enumerations from the Telepathy spec.
+The master copy of this stylesheet is in telepathy-glib - please make any
+changes there.
+
+Copyright (C) 2006, 2007 Collabora Limited
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+-->
+
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0"
+ exclude-result-prefixes="tp">
+
+ <xsl:output method="text" indent="no" encoding="ascii"/>
+
+ <xsl:variable name="upper" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ'"/>
+ <xsl:variable name="lower" select="'abcdefghijklmnopqrstuvwxyz'"/>
+
+ <xsl:template match="tp:error" mode="values">
+ <!-- CHANNEL_BANNED -->
+ <xsl:variable name="name" select="translate(@name, concat($lower, '. '),
+ concat($upper, '__'))"/>
+ <!-- Channel.Banned -->
+ <xsl:variable name="nick" select="translate(@name, ' ', '')"/>
+ /* <xsl:value-of select="concat(../@namespace, '.', $name)"/>
+ <xsl:value-of select="tp:docstring"/> */
+ { TP_ERROR_<xsl:value-of select="$name"/>, "TP_ERROR_<xsl:value-of select="$name"/>", "<xsl:value-of select="$nick"/>" },
+</xsl:template>
+
+ <xsl:template match="text()"/>
+
+ <xsl:template match="//tp:errors">/* Generated from the Telepathy spec
+
+<xsl:for-each select="tp:copyright">
+<xsl:value-of select="."/><xsl:text>
+</xsl:text></xsl:for-each><xsl:text>
+</xsl:text><xsl:value-of select="tp:license"/>
+*/
+
+#include &lt;_gen/telepathy-errors.h&gt;
+
+GType
+tp_error_get_type (void)
+{
+ static GType etype = 0;
+ if (G_UNLIKELY (etype == 0))
+ {
+ static const GEnumValue values[] = {
+<xsl:apply-templates select="tp:error" mode="values"/> };
+
+ etype = g_enum_register_static ("TpError", values);
+ }
+ return etype;
+}
+
+</xsl:template>
+
+</xsl:stylesheet>
+
+<!-- vim:set sw=2 sts=2 et noai noci: -->
diff --git a/gnome-2-22/tools/glib-errors-enum-header.xsl b/gnome-2-22/tools/glib-errors-enum-header.xsl
new file mode 100644
index 000000000..5275041cd
--- /dev/null
+++ b/gnome-2-22/tools/glib-errors-enum-header.xsl
@@ -0,0 +1,73 @@
+<!-- Stylesheet to extract GLib error enumerations from the Telepathy spec.
+The master copy of this stylesheet is in telepathy-glib - please make any
+changes there.
+
+Copyright (C) 2006, 2007 Collabora Limited
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+-->
+
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0"
+ exclude-result-prefixes="tp">
+
+ <xsl:output method="text" indent="no" encoding="ascii"/>
+
+ <xsl:template match="tp:error" mode="gtkdoc">
+ * @TP_ERROR_<xsl:value-of select="translate(@name, 'abcdefghijklmnopqrstuvwxyz .', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ__')"/>: <xsl:value-of select="concat(../@namespace, '.', translate(@name, ' ', ''))"/>:
+ * <xsl:value-of select="translate(tp:docstring, '&#13;&#10;', '')"/>
+ </xsl:template>
+
+ <xsl:template match="tp:error" mode="enum">
+<xsl:text> TP_ERROR_</xsl:text><xsl:value-of select="translate(@name, 'abcdefghijklmnopqrstuvwxyz .', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ__')"/>,
+</xsl:template>
+
+ <xsl:template match="text()"/>
+
+ <xsl:template match="//tp:errors">/* Generated from the Telepathy spec
+
+<xsl:for-each select="tp:copyright">
+<xsl:value-of select="."/><xsl:text>
+</xsl:text></xsl:for-each><xsl:text>
+</xsl:text><xsl:value-of select="tp:license"/>
+*/
+
+#include &lt;glib-object.h&gt;
+
+G_BEGIN_DECLS
+
+GType tp_error_get_type (void);
+
+/**
+ * TP_TYPE_ERROR:
+ *
+ * The GType of the Telepathy error enumeration.
+ */
+#define TP_TYPE_ERROR (tp_error_get_type())
+
+/**
+ * TpError:<xsl:apply-templates select="tp:error" mode="gtkdoc"/>
+ *
+ * Enumerated type representing the Telepathy D-Bus errors.
+ */
+typedef enum {
+<xsl:apply-templates select="tp:error" mode="enum"/>} TpError;
+
+G_END_DECLS
+</xsl:template>
+
+</xsl:stylesheet>
+
+<!-- vim:set sw=2 sts=2 et noai noci: -->
diff --git a/gnome-2-22/tools/glib-ginterface-gen.py b/gnome-2-22/tools/glib-ginterface-gen.py
new file mode 100644
index 000000000..0c7c419e6
--- /dev/null
+++ b/gnome-2-22/tools/glib-ginterface-gen.py
@@ -0,0 +1,711 @@
+#!/usr/bin/python
+
+# glib-ginterface-gen.py: service-side interface generator
+#
+# Generate dbus-glib 0.x service GInterfaces from the Telepathy specification.
+# The master copy of this program is in the telepathy-glib repository -
+# please make any changes there.
+#
+# Copyright (C) 2006, 2007 Collabora Limited
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+import sys
+import os.path
+import xml.dom.minidom
+
+from libglibcodegen import Signature, type_to_gtype, cmp_by_name, \
+ camelcase_to_lower, NS_TP, dbus_gutils_wincaps_to_uscore, \
+ signal_to_marshal_name, method_to_glue_marshal_name
+
+
+NS_TP = "http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0"
+
+class Generator(object):
+
+ def __init__(self, dom, prefix, basename, signal_marshal_prefix,
+ headers, end_headers, not_implemented_func,
+ allow_havoc):
+ self.dom = dom
+ self.__header = []
+ self.__body = []
+
+ assert prefix.endswith('_')
+ assert not signal_marshal_prefix.endswith('_')
+
+ # The main_prefix, sub_prefix thing is to get:
+ # FOO_ -> (FOO_, _)
+ # FOO_SVC_ -> (FOO_, _SVC_)
+ # but
+ # FOO_BAR/ -> (FOO_BAR_, _)
+ # FOO_BAR/SVC_ -> (FOO_BAR_, _SVC_)
+
+ if '/' in prefix:
+ main_prefix, sub_prefix = prefix.upper().split('/', 1)
+ prefix = prefix.replace('/', '_')
+ else:
+ main_prefix, sub_prefix = prefix.upper().split('_', 1)
+
+ self.MAIN_PREFIX_ = main_prefix + '_'
+ self._SUB_PREFIX_ = '_' + sub_prefix
+
+ self.Prefix_ = prefix
+ self.Prefix = prefix.replace('_', '')
+ self.prefix_ = prefix.lower()
+ self.PREFIX_ = prefix.upper()
+
+ self.signal_marshal_prefix = signal_marshal_prefix
+ self.headers = headers
+ self.end_headers = end_headers
+ self.not_implemented_func = not_implemented_func
+ self.allow_havoc = allow_havoc
+
+ def h(self, s):
+ self.__header.append(s)
+
+ def b(self, s):
+ self.__body.append(s)
+
+ def do_node(self, node):
+ node_name = node.getAttribute('name').replace('/', '')
+ node_name_mixed = self.node_name_mixed = node_name.replace('_', '')
+ node_name_lc = self.node_name_lc = node_name.lower()
+ node_name_uc = self.node_name_uc = node_name.upper()
+
+ interfaces = node.getElementsByTagName('interface')
+ assert len(interfaces) == 1, interfaces
+ interface = interfaces[0]
+ self.iface_name = interface.getAttribute('name')
+
+ tmp = interface.getAttribute('tp:implement-service')
+ if tmp == "no":
+ return
+
+ tmp = interface.getAttribute('tp:causes-havoc')
+ if tmp and not self.allow_havoc:
+ raise AssertionError('%s is %s' % (self.iface_name, tmp))
+
+ self.b('static const DBusGObjectInfo _%s%s_object_info;'
+ % (self.prefix_, node_name_lc))
+ self.b('')
+
+ methods = interface.getElementsByTagName('method')
+ signals = interface.getElementsByTagName('signal')
+ properties = interface.getElementsByTagName('property')
+ # Don't put properties in dbus-glib glue
+ glue_properties = []
+
+ self.b('struct _%s%sClass {' % (self.Prefix, node_name_mixed))
+ self.b(' GTypeInterface parent_class;')
+ for method in methods:
+ self.b(' %s %s;' % self.get_method_impl_names(method))
+ self.b('};')
+ self.b('')
+
+ if signals:
+ self.b('enum {')
+ for signal in signals:
+ self.b(' %s,' % self.get_signal_const_entry(signal))
+ self.b(' N_%s_SIGNALS' % node_name_uc)
+ self.b('};')
+ self.b('static guint %s_signals[N_%s_SIGNALS] = {0};'
+ % (node_name_lc, node_name_uc))
+ self.b('')
+
+ self.b('static void %s%s_base_init (gpointer klass);'
+ % (self.prefix_, node_name_lc))
+ self.b('')
+
+ self.b('GType')
+ self.b('%s%s_get_type (void)'
+ % (self.prefix_, node_name_lc))
+ self.b('{')
+ self.b(' static GType type = 0;')
+ self.b('')
+ self.b(' if (G_UNLIKELY (type == 0))')
+ self.b(' {')
+ self.b(' static const GTypeInfo info = {')
+ self.b(' sizeof (%s%sClass),' % (self.Prefix, node_name_mixed))
+ self.b(' %s%s_base_init, /* base_init */'
+ % (self.prefix_, node_name_lc))
+ self.b(' NULL, /* base_finalize */')
+ self.b(' NULL, /* class_init */')
+ self.b(' NULL, /* class_finalize */')
+ self.b(' NULL, /* class_data */')
+ self.b(' 0,')
+ self.b(' 0, /* n_preallocs */')
+ self.b(' NULL /* instance_init */')
+ self.b(' };')
+ self.b('')
+ self.b(' type = g_type_register_static (G_TYPE_INTERFACE,')
+ self.b(' "%s%s", &info, 0);' % (self.Prefix, node_name_mixed))
+ self.b(' }')
+ self.b('')
+ self.b(' return type;')
+ self.b('}')
+ self.b('')
+
+ self.h('/**')
+ self.h(' * %s%s:' % (self.Prefix, node_name_mixed))
+ self.h(' *')
+ self.h(' * Dummy typedef representing any implementation of this '
+ 'interface.')
+ self.h(' */')
+ self.h('typedef struct _%s%s %s%s;'
+ % (self.Prefix, node_name_mixed, self.Prefix, node_name_mixed))
+ self.h('')
+ self.h('/**')
+ self.h(' * %s%sClass:' % (self.Prefix, node_name_mixed))
+ self.h(' *')
+ self.h(' * The class of %s%s.' % (self.Prefix, node_name_mixed))
+ self.h(' */')
+ self.h('typedef struct _%s%sClass %s%sClass;'
+ % (self.Prefix, node_name_mixed, self.Prefix, node_name_mixed))
+ self.h('')
+ self.h('GType %s%s_get_type (void);'
+ % (self.prefix_, node_name_lc))
+
+ gtype = self.current_gtype = \
+ self.MAIN_PREFIX_ + 'TYPE' + self._SUB_PREFIX_ + node_name_uc
+ classname = self.Prefix + node_name_mixed
+
+ self.h('#define %s \\\n (%s%s_get_type ())'
+ % (gtype, self.prefix_, node_name_lc))
+ self.h('#define %s%s(obj) \\\n'
+ ' (G_TYPE_CHECK_INSTANCE_CAST((obj), %s, %s))'
+ % (self.PREFIX_, node_name_uc, gtype, classname))
+ self.h('#define %sIS%s%s(obj) \\\n'
+ ' (G_TYPE_CHECK_INSTANCE_TYPE((obj), %s))'
+ % (self.MAIN_PREFIX_, self._SUB_PREFIX_, node_name_uc, gtype))
+ self.h('#define %s%s_GET_CLASS(obj) \\\n'
+ ' (G_TYPE_INSTANCE_GET_INTERFACE((obj), %s, %sClass))'
+ % (self.PREFIX_, node_name_uc, gtype, classname))
+ self.h('')
+ self.h('')
+
+ base_init_code = []
+
+ for method in methods:
+ self.do_method(method)
+
+ for signal in signals:
+ base_init_code.extend(self.do_signal(signal))
+
+ self.b('static inline void')
+ self.b('%s%s_base_init_once (gpointer klass)'
+ % (self.prefix_, node_name_lc))
+ self.b('{')
+ self.b(' static TpDBusPropertiesMixinPropInfo properties[%d] = {'
+ % (len(properties) + 1))
+
+ for m in properties:
+ access = m.getAttribute('access')
+ assert access in ('read', 'write', 'readwrite')
+
+ if access == 'read':
+ flags = 'TP_DBUS_PROPERTIES_MIXIN_FLAG_READ'
+ elif access == 'write':
+ flags = 'TP_DBUS_PROPERTIES_MIXIN_FLAG_WRITE'
+ else:
+ flags = ('TP_DBUS_PROPERTIES_MIXIN_FLAG_READ | '
+ 'TP_DBUS_PROPERTIES_MIXIN_FLAG_WRITE')
+
+ self.b(' { 0, %s, "%s", 0, NULL, NULL }, /* %s */'
+ % (flags, m.getAttribute('type'), m.getAttribute('name')))
+
+ self.b(' { 0, 0, NULL, 0, NULL, NULL }')
+ self.b(' };')
+ self.b(' static TpDBusPropertiesMixinIfaceInfo interface =')
+ self.b(' { 0, properties, NULL, NULL };')
+ self.b('')
+ self.b(' interface.dbus_interface = g_quark_from_static_string '
+ '("%s");' % self.iface_name)
+
+ for i, m in enumerate(properties):
+ self.b(' properties[%d].name = g_quark_from_static_string ("%s");'
+ % (i, m.getAttribute('name')))
+ self.b(' properties[%d].type = %s;'
+ % (i, type_to_gtype(m.getAttribute('type'))[1]))
+
+ self.b(' tp_svc_interface_set_dbus_properties_info (%s, &interface);'
+ % self.current_gtype)
+
+ self.b('')
+ for s in base_init_code:
+ self.b(s)
+ self.b(' dbus_g_object_type_install_info (%s%s_get_type (),'
+ % (self.prefix_, node_name_lc))
+ self.b(' &_%s%s_object_info);'
+ % (self.prefix_, node_name_lc))
+ self.b('}')
+
+ self.b('static void')
+ self.b('%s%s_base_init (gpointer klass)'
+ % (self.prefix_, node_name_lc))
+ self.b('{')
+ self.b(' static gboolean initialized = FALSE;')
+ self.b('')
+ self.b(' if (!initialized)')
+ self.b(' {')
+ self.b(' initialized = TRUE;')
+ self.b(' %s%s_base_init_once (klass);'
+ % (self.prefix_, node_name_lc))
+ self.b(' }')
+ # insert anything we need to do per implementation here
+ self.b('}')
+
+ self.h('')
+
+ self.b('static const DBusGMethodInfo _%s%s_methods[] = {'
+ % (self.prefix_, node_name_lc))
+
+ method_blob, offsets = self.get_method_glue(methods)
+
+ for method, offset in zip(methods, offsets):
+ self.do_method_glue(method, offset)
+
+ self.b('};')
+ self.b('')
+
+ self.b('static const DBusGObjectInfo _%s%s_object_info = {'
+ % (self.prefix_, node_name_lc))
+ self.b(' 0,') # version
+ self.b(' _%s%s_methods,' % (self.prefix_, node_name_lc))
+ self.b(' %d,' % len(methods))
+ self.b('"' + method_blob.replace('\0', '\\0') + '",')
+ self.b('"' + self.get_signal_glue(signals).replace('\0', '\\0') + '",')
+ self.b('"' +
+ self.get_property_glue(glue_properties).replace('\0', '\\0') +
+ '",')
+ self.b('};')
+ self.b('')
+
+ self.node_name_mixed = None
+ self.node_name_lc = None
+ self.node_name_uc = None
+
+ def get_method_glue(self, methods):
+ info = []
+ offsets = []
+
+ for method in methods:
+ offsets.append(len(''.join(info)))
+
+ info.append(self.iface_name + '\0')
+ info.append(method.getAttribute('name') + '\0')
+
+ info.append('A\0') # async
+
+ counter = 0
+ for arg in method.getElementsByTagName('arg'):
+ out = arg.getAttribute('direction') == 'out'
+
+ name = arg.getAttribute('name')
+ if not name:
+ assert out
+ name = 'arg%u' % counter
+ counter += 1
+
+ info.append(name + '\0')
+
+ if out:
+ info.append('O\0')
+ else:
+ info.append('I\0')
+
+ if out:
+ info.append('F\0') # not const
+ info.append('N\0') # not error or return
+ info.append(arg.getAttribute('type') + '\0')
+
+ info.append('\0')
+
+ return ''.join(info) + '\0', offsets
+
+ def do_method_glue(self, method, offset):
+ lc_name = camelcase_to_lower(method.getAttribute('name'))
+
+ marshaller = method_to_glue_marshal_name(method,
+ self.signal_marshal_prefix)
+ wrapper = self.prefix_ + self.node_name_lc + '_' + lc_name
+
+ self.b(" { (GCallback) %s, %s, %d }," % (wrapper, marshaller, offset))
+
+ def get_signal_glue(self, signals):
+ info = []
+
+ for signal in signals:
+ info.append(self.iface_name)
+ info.append(signal.getAttribute('name'))
+
+ return '\0'.join(info) + '\0\0'
+
+ # the implementation can be the same
+ get_property_glue = get_signal_glue
+
+ def get_method_impl_names(self, method):
+ dbus_method_name = method.getAttribute('name')
+ class_member_name = camelcase_to_lower(dbus_method_name)
+ stub_name = (self.prefix_ + self.node_name_lc + '_' +
+ class_member_name)
+ return (stub_name + '_impl', class_member_name)
+
+ def do_method(self, method):
+ assert self.node_name_mixed is not None
+
+ in_class = []
+
+ # Examples refer to Thing.DoStuff (su) -> ii
+
+ # DoStuff
+ dbus_method_name = method.getAttribute('name')
+ # do_stuff
+ class_member_name = camelcase_to_lower(dbus_method_name)
+ # void tp_svc_thing_do_stuff (TpSvcThing *, const char *, guint,
+ # DBusGMethodInvocation *);
+ stub_name = (self.prefix_ + self.node_name_lc + '_' +
+ class_member_name)
+ # typedef void (*tp_svc_thing_do_stuff_impl) (TpSvcThing *,
+ # const char *, guint, DBusGMethodInvocation);
+ impl_name = stub_name + '_impl'
+ # void tp_svc_thing_return_from_do_stuff (DBusGMethodInvocation *,
+ # gint, gint);
+ ret_name = (self.prefix_ + self.node_name_lc + '_return_from_' +
+ class_member_name)
+
+ # Gather arguments
+ in_args = []
+ out_args = []
+ for i in method.getElementsByTagName('arg'):
+ name = i.getAttribute('name')
+ direction = i.getAttribute('direction') or 'in'
+ dtype = i.getAttribute('type')
+
+ assert direction in ('in', 'out')
+
+ if name:
+ name = direction + '_' + name
+ elif direction == 'in':
+ name = direction + str(len(in_args))
+ else:
+ name = direction + str(len(out_args))
+
+ ctype, gtype, marshaller, pointer = type_to_gtype(dtype)
+
+ if pointer:
+ ctype = 'const ' + ctype
+
+ struct = (ctype, name)
+
+ if direction == 'in':
+ in_args.append(struct)
+ else:
+ out_args.append(struct)
+
+ # Implementation type declaration (in header, docs in body)
+ self.b('/**')
+ self.b(' * %s:' % impl_name)
+ self.b(' * @self: The object implementing this interface')
+ for (ctype, name) in in_args:
+ self.b(' * @%s: %s (FIXME, generate documentation)'
+ % (name, ctype))
+ self.b(' * @context: Used to return values or throw an error')
+ self.b(' *')
+ self.b(' * The signature of an implementation of the D-Bus method')
+ self.b(' * %s on interface %s.' % (dbus_method_name, self.iface_name))
+ self.b(' */')
+ self.h('typedef void (*%s) (%s%s *self,'
+ % (impl_name, self.Prefix, self.node_name_mixed))
+ for (ctype, name) in in_args:
+ self.h(' %s%s,' % (ctype, name))
+ self.h(' DBusGMethodInvocation *context);')
+
+ # Class member (in class definition)
+ in_class.append(' %s %s;' % (impl_name, class_member_name))
+
+ # Stub definition (in body only - it's static)
+ self.b('static void')
+ self.b('%s (%s%s *self,'
+ % (stub_name, self.Prefix, self.node_name_mixed))
+ for (ctype, name) in in_args:
+ self.b(' %s%s,' % (ctype, name))
+ self.b(' DBusGMethodInvocation *context)')
+ self.b('{')
+ self.b(' %s impl = (%s%s_GET_CLASS (self)->%s);'
+ % (impl_name, self.PREFIX_, self.node_name_uc, class_member_name))
+ self.b('')
+ self.b(' if (impl != NULL)')
+ tmp = ['self'] + [name for (ctype, name) in in_args] + ['context']
+ self.b(' {')
+ self.b(' (impl) (%s);' % ',\n '.join(tmp))
+ self.b(' }')
+ self.b(' else')
+ self.b(' {')
+ if self.not_implemented_func:
+ self.b(' %s (context);' % self.not_implemented_func)
+ else:
+ self.b(' GError e = { DBUS_GERROR, ')
+ self.b(' DBUS_GERROR_UNKNOWN_METHOD,')
+ self.b(' "Method not implemented" };')
+ self.b('')
+ self.b(' dbus_g_method_return_error (context, &e);')
+ self.b(' }')
+ self.b('}')
+ self.b('')
+
+ # Implementation registration (in both header and body)
+ self.h('void %s%s_implement_%s (%s%sClass *klass, %s impl);'
+ % (self.prefix_, self.node_name_lc, class_member_name,
+ self.Prefix, self.node_name_mixed, impl_name))
+
+ self.b('/**')
+ self.b(' * %s%s_implement_%s:'
+ % (self.prefix_, self.node_name_lc, class_member_name))
+ self.b(' * @klass: A class whose instances implement this interface')
+ self.b(' * @impl: A callback used to implement the %s D-Bus method'
+ % dbus_method_name)
+ self.b(' *')
+ self.b(' * Register an implementation for the %s method in the vtable'
+ % dbus_method_name)
+ self.b(' * of an implementation of this interface. To be called from')
+ self.b(' * the interface init function.')
+ self.b(' */')
+ self.b('void')
+ self.b('%s%s_implement_%s (%s%sClass *klass, %s impl)'
+ % (self.prefix_, self.node_name_lc, class_member_name,
+ self.Prefix, self.node_name_mixed, impl_name))
+ self.b('{')
+ self.b(' klass->%s = impl;' % class_member_name)
+ self.b('}')
+ self.b('')
+
+ # Return convenience function (static inline, in header)
+ self.h('/**')
+ self.h(' * %s:' % ret_name)
+ self.h(' * @context: The D-Bus method invocation context')
+ for (ctype, name) in out_args:
+ self.h(' * @%s: %s (FIXME, generate documentation)'
+ % (name, ctype))
+ self.h(' *')
+ self.h(' * Return successfully by calling dbus_g_method_return().')
+ self.h(' * This inline function exists only to provide type-safety.')
+ self.h(' */')
+ tmp = (['DBusGMethodInvocation *context'] +
+ [ctype + name for (ctype, name) in out_args])
+ self.h('static inline')
+ self.h('/* this comment is to stop gtkdoc realising this is static */')
+ self.h(('void %s (' % ret_name) + (',\n '.join(tmp)) + ');')
+ self.h('static inline void')
+ self.h(('%s (' % ret_name) + (',\n '.join(tmp)) + ')')
+ self.h('{')
+ tmp = ['context'] + [name for (ctype, name) in out_args]
+ self.h(' dbus_g_method_return (' + ',\n '.join(tmp) + ');')
+ self.h('}')
+ self.h('')
+
+ return in_class
+
+ def get_signal_const_entry(self, signal):
+ assert self.node_name_uc is not None
+ return ('SIGNAL_%s_%s'
+ % (self.node_name_uc, signal.getAttribute('name')))
+
+ def do_signal(self, signal):
+ assert self.node_name_mixed is not None
+
+ in_base_init = []
+
+ # for signal: Thing::StuffHappened (s, u)
+ # we want to emit:
+ # void tp_svc_thing_emit_stuff_happened (gpointer instance,
+ # const char *arg0, guint arg1);
+
+ dbus_name = signal.getAttribute('name')
+ stub_name = (self.prefix_ + self.node_name_lc + '_emit_' +
+ camelcase_to_lower(dbus_name))
+ const_name = self.get_signal_const_entry(signal)
+
+ # Gather arguments
+ args = []
+ for i in signal.getElementsByTagName('arg'):
+ name = i.getAttribute('name')
+ dtype = i.getAttribute('type')
+ tp_type = i.getAttribute('tp:type')
+
+ if name:
+ name = 'arg_' + name
+ else:
+ name = 'arg' + str(len(args))
+
+ ctype, gtype, marshaller, pointer = type_to_gtype(dtype)
+
+ if pointer:
+ ctype = 'const ' + ctype
+
+ struct = (ctype, name, gtype)
+ args.append(struct)
+
+ tmp = (['gpointer instance'] +
+ [ctype + name for (ctype, name, gtype) in args])
+
+ self.h(('void %s (' % stub_name) + (',\n '.join(tmp)) + ');')
+
+ # FIXME: emit docs
+
+ self.b('/**')
+ self.b(' * %s:' % stub_name)
+ self.b(' * @instance: The object implementing this interface')
+ for (ctype, name, gtype) in args:
+ self.b(' * @%s: %s (FIXME, generate documentation)'
+ % (name, ctype))
+ self.b(' *')
+ self.b(' * Type-safe wrapper around g_signal_emit to emit the')
+ self.b(' * %s signal on interface %s.'
+ % (dbus_name, self.iface_name))
+ self.b(' */')
+
+ self.b('void')
+ self.b(('%s (' % stub_name) + (',\n '.join(tmp)) + ')')
+ self.b('{')
+ self.b(' g_assert (instance != NULL);')
+ self.b(' g_assert (G_TYPE_CHECK_INSTANCE_TYPE (instance, %s));'
+ % (self.current_gtype))
+ tmp = (['instance', '%s_signals[%s]' % (self.node_name_lc, const_name),
+ '0'] + [name for (ctype, name, gtype) in args])
+ self.b(' g_signal_emit (' + ',\n '.join(tmp) + ');')
+ self.b('}')
+ self.b('')
+
+ in_base_init.append(' %s_signals[%s] ='
+ % (self.node_name_lc, const_name))
+ in_base_init.append(' g_signal_new ("%s",'
+ % (dbus_gutils_wincaps_to_uscore(dbus_name).replace('_', '-')))
+ in_base_init.append(' G_OBJECT_CLASS_TYPE (klass),')
+ in_base_init.append(' G_SIGNAL_RUN_LAST|G_SIGNAL_DETAILED,')
+ in_base_init.append(' 0,')
+ in_base_init.append(' NULL, NULL,')
+ in_base_init.append(' %s,'
+ % signal_to_marshal_name(signal, self.signal_marshal_prefix))
+ in_base_init.append(' G_TYPE_NONE,')
+ tmp = ['%d' % len(args)] + [gtype for (ctype, name, gtype) in args]
+ in_base_init.append(' %s);' % ',\n '.join(tmp))
+ in_base_init.append('')
+
+ return in_base_init
+
+ def __call__(self):
+ self.h('#include <glib-object.h>')
+ self.h('#include <dbus/dbus-glib.h>')
+ self.h('#include <telepathy-glib/dbus-properties-mixin.h>')
+ self.h('')
+ self.h('G_BEGIN_DECLS')
+ self.h('')
+
+ self.b('#include "%s.h"' % basename)
+ self.b('')
+ for header in self.headers:
+ self.b('#include %s' % header)
+ self.b('')
+
+ nodes = self.dom.getElementsByTagName('node')
+ nodes.sort(cmp_by_name)
+
+ for node in nodes:
+ self.do_node(node)
+
+ self.h('')
+ self.h('G_END_DECLS')
+
+ self.b('')
+ for header in self.end_headers:
+ self.b('#include %s' % header)
+
+ self.h('')
+ self.b('')
+ open(basename + '.h', 'w').write('\n'.join(self.__header))
+ open(basename + '.c', 'w').write('\n'.join(self.__body))
+
+
+def cmdline_error():
+ print """\
+usage:
+ gen-ginterface [OPTIONS] xmlfile Prefix_
+options:
+ --include='<header.h>' (may be repeated)
+ --include='"header.h"' (ditto)
+ --include-end='"header.h"' (ditto)
+ Include extra headers in the generated .c file
+ --signal-marshal-prefix='prefix'
+ Use the given prefix on generated signal marshallers (default is
+ prefix.lower()).
+ --filename='BASENAME'
+ Set the basename for the output files (default is prefix.lower()
+ + 'ginterfaces')
+ --not-implemented-func='symbol'
+ Set action when methods not implemented in the interface vtable are
+ called. symbol must have signature
+ void symbol (DBusGMethodInvocation *context)
+ and return some sort of "not implemented" error via
+ dbus_g_method_return_error (context, ...)
+"""
+ sys.exit(1)
+
+
+if __name__ == '__main__':
+ from getopt import gnu_getopt
+
+ options, argv = gnu_getopt(sys.argv[1:], '',
+ ['filename=', 'signal-marshal-prefix=',
+ 'include=', 'include-end=',
+ 'allow-unstable',
+ 'not-implemented-func='])
+
+ try:
+ prefix = argv[1]
+ except IndexError:
+ cmdline_error()
+
+ basename = prefix.lower() + 'ginterfaces'
+ signal_marshal_prefix = prefix.lower().rstrip('_')
+ headers = []
+ end_headers = []
+ not_implemented_func = ''
+ allow_havoc = False
+
+ for option, value in options:
+ if option == '--filename':
+ basename = value
+ elif option == '--signal-marshal-prefix':
+ signal_marshal_prefix = value
+ elif option == '--include':
+ if value[0] not in '<"':
+ value = '"%s"' % value
+ headers.append(value)
+ elif option == '--include-end':
+ if value[0] not in '<"':
+ value = '"%s"' % value
+ end_headers.append(value)
+ elif option == '--not-implemented-func':
+ not_implemented_func = value
+ elif option == '--allow-unstable':
+ allow_havoc = True
+
+ try:
+ dom = xml.dom.minidom.parse(argv[0])
+ except IndexError:
+ cmdline_error()
+
+ Generator(dom, prefix, basename, signal_marshal_prefix, headers,
+ end_headers, not_implemented_func, allow_havoc)()
diff --git a/gnome-2-22/tools/glib-gtypes-generator.py b/gnome-2-22/tools/glib-gtypes-generator.py
new file mode 100644
index 000000000..fcb46e841
--- /dev/null
+++ b/gnome-2-22/tools/glib-gtypes-generator.py
@@ -0,0 +1,230 @@
+#!/usr/bin/python
+
+# Generate GLib GInterfaces from the Telepathy specification.
+# The master copy of this program is in the telepathy-glib repository -
+# please make any changes there.
+#
+# Copyright (C) 2006, 2007 Collabora Limited
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+import sys
+import xml.dom.minidom
+
+from libglibcodegen import escape_as_identifier, \
+ get_docstring, \
+ NS_TP, \
+ Signature, \
+ type_to_gtype, \
+ xml_escape
+
+
+def types_to_gtypes(types):
+ return [type_to_gtype(t)[1] for t in types]
+
+
+class GTypesGenerator(object):
+ def __init__(self, dom, output, mixed_case_prefix):
+ self.dom = dom
+ self.Prefix = mixed_case_prefix
+ self.PREFIX_ = self.Prefix.upper() + '_'
+ self.prefix_ = self.Prefix.lower() + '_'
+
+ self.header = open(output + '.h', 'w')
+ self.body = open(output + '-body.h', 'w')
+
+ for f in (self.header, self.body):
+ f.write('/* Auto-generated, do not edit.\n *\n'
+ ' * This file may be distributed under the same terms\n'
+ ' * as the specification from which it was generated.\n'
+ ' */\n\n')
+
+ self.need_mappings = {}
+ self.need_structs = {}
+ self.need_arrays = {}
+
+ def do_mapping_header(self, mapping):
+ members = mapping.getElementsByTagNameNS(NS_TP, 'member')
+ assert len(members) == 2
+
+ impl_sig = ''.join([elt.getAttribute('type')
+ for elt in members])
+
+ esc_impl_sig = escape_as_identifier(impl_sig)
+
+ name = (self.PREFIX_ + 'HASH_TYPE_' +
+ mapping.getAttribute('name').upper())
+ impl = self.prefix_ + 'type_dbus_hash_' + esc_impl_sig
+
+ docstring = get_docstring(mapping) or '(Undocumented)'
+
+ self.header.write('/**\n * %s:\n *\n' % name)
+ self.header.write(' * %s\n' % xml_escape(docstring))
+ self.header.write(' *\n')
+ self.header.write(' * This macro expands to a call to a function\n')
+ self.header.write(' * that returns the #GType of a #GHashTable\n')
+ self.header.write(' * appropriate for representing a D-Bus\n')
+ self.header.write(' * dictionary of signature\n')
+ self.header.write(' * <literal>a{%s}</literal>.\n' % impl_sig)
+ self.header.write(' *\n')
+
+ key, value = members
+
+ self.header.write(' * Keys (D-Bus type <literal>%s</literal>,\n'
+ % key.getAttribute('type'))
+ tp_type = key.getAttributeNS(NS_TP, 'type')
+ if tp_type:
+ self.header.write(' * type <literal>%s</literal>,\n' % tp_type)
+ self.header.write(' * named <literal>%s</literal>):\n'
+ % key.getAttribute('name'))
+ docstring = get_docstring(key) or '(Undocumented)'
+ self.header.write(' * %s\n' % xml_escape(docstring))
+ self.header.write(' *\n')
+
+ self.header.write(' * Values (D-Bus type <literal>%s</literal>,\n'
+ % value.getAttribute('type'))
+ tp_type = value.getAttributeNS(NS_TP, 'type')
+ if tp_type:
+ self.header.write(' * type <literal>%s</literal>,\n' % tp_type)
+ self.header.write(' * named <literal>%s</literal>):\n'
+ % value.getAttribute('name'))
+ docstring = get_docstring(value) or '(Undocumented)'
+ self.header.write(' * %s\n' % xml_escape(docstring))
+ self.header.write(' *\n')
+
+ self.header.write(' */\n')
+
+ self.header.write('#define %s (%s ())\n\n' % (name, impl))
+ self.need_mappings[impl_sig] = esc_impl_sig
+
+ def do_struct_header(self, struct):
+ members = struct.getElementsByTagNameNS(NS_TP, 'member')
+ impl_sig = ''.join([elt.getAttribute('type') for elt in members])
+ esc_impl_sig = escape_as_identifier(impl_sig)
+
+ name = (self.PREFIX_ + 'STRUCT_TYPE_' +
+ struct.getAttribute('name').upper())
+ impl = self.prefix_ + 'type_dbus_struct_' + esc_impl_sig
+ docstring = struct.getElementsByTagNameNS(NS_TP, 'docstring')
+ if docstring:
+ docstring = docstring[0].toprettyxml()
+ if docstring.startswith('<tp:docstring>'):
+ docstring = docstring[14:]
+ if docstring.endswith('</tp:docstring>\n'):
+ docstring = docstring[:-16]
+ if docstring.strip() in ('<tp:docstring/>', ''):
+ docstring = '(Undocumented)'
+ else:
+ docstring = '(Undocumented)'
+ self.header.write('/**\n * %s:\n\n' % name)
+ self.header.write(' * %s\n' % xml_escape(docstring))
+ self.header.write(' *\n')
+ self.header.write(' * This macro expands to a call to a function\n')
+ self.header.write(' * that returns the #GType of a #GValueArray\n')
+ self.header.write(' * appropriate for representing a D-Bus struct\n')
+ self.header.write(' * with signature <literal>(%s)</literal>.\n'
+ % impl_sig)
+ self.header.write(' *\n')
+
+ for i, member in enumerate(members):
+ self.header.write(' * Member %d (D-Bus type '
+ '<literal>%s</literal>,\n'
+ % (i, member.getAttribute('type')))
+ tp_type = member.getAttributeNS(NS_TP, 'type')
+ if tp_type:
+ self.header.write(' * type <literal>%s</literal>,\n' % tp_type)
+ self.header.write(' * named <literal>%s</literal>):\n'
+ % member.getAttribute('name'))
+ docstring = get_docstring(member) or '(Undocumented)'
+ self.header.write(' * %s\n' % xml_escape(docstring))
+ self.header.write(' *\n')
+
+ self.header.write(' */\n')
+ self.header.write('#define %s (%s ())\n\n' % (name, impl))
+
+ array_name = struct.getAttribute('array-name')
+ if array_name != '':
+ array_name = (self.PREFIX_ + 'ARRAY_TYPE_' + array_name.upper())
+ impl = self.prefix_ + 'type_dbus_array_' + esc_impl_sig
+ self.header.write('/**\n * %s:\n\n' % array_name)
+ self.header.write(' * Expands to a call to a function\n')
+ self.header.write(' * that returns the #GType of a #GPtrArray\n')
+ self.header.write(' * of #%s.\n' % name)
+ self.header.write(' */\n')
+ self.header.write('#define %s (%s ())\n\n' % (array_name, impl))
+ self.need_arrays[impl_sig] = esc_impl_sig
+
+ self.need_structs[impl_sig] = esc_impl_sig
+
+ def __call__(self):
+ mappings = self.dom.getElementsByTagNameNS(NS_TP, 'mapping')
+ structs = self.dom.getElementsByTagNameNS(NS_TP, 'struct')
+
+ for mapping in mappings:
+ self.do_mapping_header(mapping)
+
+ for sig in self.need_mappings:
+ self.header.write('GType %stype_dbus_hash_%s (void);\n\n' %
+ (self.prefix_, self.need_mappings[sig]))
+ self.body.write('GType\n%stype_dbus_hash_%s (void)\n{\n' %
+ (self.prefix_, self.need_mappings[sig]))
+ self.body.write(' static GType t = 0;\n\n')
+ self.body.write(' if (G_UNLIKELY (t == 0))\n')
+ # FIXME: translate sig into two GTypes
+ items = tuple(Signature(sig))
+ gtypes = types_to_gtypes(items)
+ self.body.write(' t = dbus_g_type_get_map ("GHashTable", '
+ '%s, %s);\n' % (gtypes[0], gtypes[1]))
+ self.body.write(' return t;\n')
+ self.body.write('}\n\n')
+
+ for struct in structs:
+ self.do_struct_header(struct)
+
+ for sig in self.need_structs:
+ self.header.write('GType %stype_dbus_struct_%s (void);\n\n' %
+ (self.prefix_, self.need_structs[sig]))
+ self.body.write('GType\n%stype_dbus_struct_%s (void)\n{\n' %
+ (self.prefix_, self.need_structs[sig]))
+ self.body.write(' static GType t = 0;\n\n')
+ self.body.write(' if (G_UNLIKELY (t == 0))\n')
+ self.body.write(' t = dbus_g_type_get_struct ("GValueArray",\n')
+ items = tuple(Signature(sig))
+ gtypes = types_to_gtypes(items)
+ for gtype in gtypes:
+ self.body.write(' %s,\n' % gtype)
+ self.body.write(' G_TYPE_INVALID);\n')
+ self.body.write(' return t;\n')
+ self.body.write('}\n\n')
+
+ for sig in self.need_arrays:
+ self.header.write('GType %stype_dbus_array_%s (void);\n\n' %
+ (self.prefix_, self.need_structs[sig]))
+ self.body.write('GType\n%stype_dbus_array_%s (void)\n{\n' %
+ (self.prefix_, self.need_structs[sig]))
+ self.body.write(' static GType t = 0;\n\n')
+ self.body.write(' if (G_UNLIKELY (t == 0))\n')
+ self.body.write(' t = dbus_g_type_get_collection ("GPtrArray", '
+ '%stype_dbus_struct_%s ());\n' %
+ (self.prefix_, self.need_structs[sig]))
+ self.body.write(' return t;\n')
+ self.body.write('}\n\n')
+
+if __name__ == '__main__':
+ argv = sys.argv[1:]
+
+ dom = xml.dom.minidom.parse(argv[0])
+
+ GTypesGenerator(dom, argv[1], argv[2])()
diff --git a/gnome-2-22/tools/glib-interfaces-body-generator.xsl b/gnome-2-22/tools/glib-interfaces-body-generator.xsl
new file mode 100644
index 000000000..caff8917a
--- /dev/null
+++ b/gnome-2-22/tools/glib-interfaces-body-generator.xsl
@@ -0,0 +1,47 @@
+<!-- Stylesheet to extract C interface names from the Telepathy spec.
+The master copy of this stylesheet is in telepathy-glib - please make any
+changes there.
+
+Copyright (C) 2006, 2007 Collabora Limited
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+-->
+
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0"
+ exclude-result-prefixes="tp">
+
+ <xsl:import href="c-interfaces-generator.xsl"/>
+
+ <xsl:template match="interface">
+ <xsl:text>GQuark&#10;</xsl:text>
+ <xsl:value-of select="$prefix"/>
+ <xsl:text>_iface_quark_</xsl:text>
+ <xsl:value-of select="translate(../@name, concat($upper, '/'), $lower)"/>
+ <xsl:text> (void)&#10;{&#10;</xsl:text>
+ <xsl:text> static GQuark quark = 0;&#10;&#10;</xsl:text>
+ <xsl:text> if (G_UNLIKELY (quark == 0))&#10;</xsl:text>
+ <xsl:text> {&#10;</xsl:text>
+ <xsl:text> quark = g_quark_from_static_string ("</xsl:text>
+ <xsl:value-of select="@name"/>
+ <xsl:text>");&#10;</xsl:text>
+ <xsl:text> }&#10;&#10;</xsl:text>
+ <xsl:text> return quark;&#10;</xsl:text>
+ <xsl:text>}&#10;&#10;</xsl:text>
+ </xsl:template>
+
+</xsl:stylesheet>
+
+<!-- vim:set sw=2 sts=2 et noai noci: -->
diff --git a/gnome-2-22/tools/glib-interfaces-generator.xsl b/gnome-2-22/tools/glib-interfaces-generator.xsl
new file mode 100644
index 000000000..e703c407e
--- /dev/null
+++ b/gnome-2-22/tools/glib-interfaces-generator.xsl
@@ -0,0 +1,55 @@
+<!-- Stylesheet to extract C interface names from the Telepathy spec.
+The master copy of this stylesheet is in telepathy-glib - please make any
+changes there.
+
+Copyright (C) 2006, 2007 Collabora Limited
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+-->
+
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0"
+ exclude-result-prefixes="tp">
+
+ <xsl:import href="c-interfaces-generator.xsl"/>
+
+ <xsl:template match="interface">
+ <xsl:apply-imports/>
+
+ <xsl:text>/**&#10; * </xsl:text>
+ <xsl:value-of select="$PREFIX"/>
+ <xsl:text>_IFACE_QUARK_</xsl:text>
+ <xsl:value-of select="translate(../@name, concat($lower, '/'), $upper)"/>
+ <xsl:text>:&#10; * &#10; * Expands to a call to a function that </xsl:text>
+ <xsl:text>returns a quark for the interface name "</xsl:text>
+ <xsl:value-of select="@name"/>
+ <xsl:text>"&#10; */&#10;#define </xsl:text>
+ <xsl:value-of select="$PREFIX"/>
+ <xsl:text>_IFACE_QUARK_</xsl:text>
+ <xsl:value-of select="translate(../@name, concat($lower, '/'), $upper)"/>
+ <xsl:text> \&#10; (</xsl:text>
+ <xsl:value-of select="$prefix"/>
+ <xsl:text>_iface_quark_</xsl:text>
+ <xsl:value-of select="translate(../@name, concat($upper, '/'), $lower)"/>
+ <xsl:text> ())&#10;&#10;GQuark </xsl:text>
+ <xsl:value-of select="$prefix"/>
+ <xsl:text>_iface_quark_</xsl:text>
+ <xsl:value-of select="translate(../@name, concat($upper, '/'), $lower)"/>
+ <xsl:text> (void);&#10;&#10;</xsl:text>
+ </xsl:template>
+
+</xsl:stylesheet>
+
+<!-- vim:set sw=2 sts=2 et noai noci: -->
diff --git a/gnome-2-22/tools/glib-signals-marshal-gen.py b/gnome-2-22/tools/glib-signals-marshal-gen.py
new file mode 100644
index 000000000..0d02c1341
--- /dev/null
+++ b/gnome-2-22/tools/glib-signals-marshal-gen.py
@@ -0,0 +1,55 @@
+#!/usr/bin/python
+
+import sys
+import xml.dom.minidom
+from string import ascii_letters, digits
+
+
+from libglibcodegen import signal_to_marshal_name, method_to_glue_marshal_name
+
+
+class Generator(object):
+
+ def __init__(self, dom):
+ self.dom = dom
+ self.marshallers = {}
+
+ def do_method(self, method):
+ marshaller = method_to_glue_marshal_name(method, 'PREFIX')
+
+ assert '__' in marshaller
+ rhs = marshaller.split('__', 1)[1].split('_')
+
+ self.marshallers[marshaller] = rhs
+
+ def do_signal(self, signal):
+ marshaller = signal_to_marshal_name(signal, 'PREFIX')
+
+ assert '__' in marshaller
+ rhs = marshaller.split('__', 1)[1].split('_')
+
+ self.marshallers[marshaller] = rhs
+
+ def __call__(self):
+ methods = self.dom.getElementsByTagName('method')
+
+ for method in methods:
+ self.do_method(method)
+
+ signals = self.dom.getElementsByTagName('signal')
+
+ for signal in signals:
+ self.do_signal(signal)
+
+ all = self.marshallers.keys()
+ all.sort()
+ for marshaller in all:
+ rhs = self.marshallers[marshaller]
+ if not marshaller.startswith('g_cclosure'):
+ print 'VOID:' + ','.join(rhs)
+
+if __name__ == '__main__':
+ argv = sys.argv[1:]
+ dom = xml.dom.minidom.parse(argv[0])
+
+ Generator(dom)()
diff --git a/gnome-2-22/tools/identity.xsl b/gnome-2-22/tools/identity.xsl
new file mode 100644
index 000000000..6630f84de
--- /dev/null
+++ b/gnome-2-22/tools/identity.xsl
@@ -0,0 +1,7 @@
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+ <xsl:template match="@*|node()">
+ <xsl:copy>
+ <xsl:apply-templates select="@*|node()"/>
+ </xsl:copy>
+ </xsl:template>
+</xsl:stylesheet>
diff --git a/gnome-2-22/tools/libglibcodegen.py b/gnome-2-22/tools/libglibcodegen.py
new file mode 100644
index 000000000..090e8decb
--- /dev/null
+++ b/gnome-2-22/tools/libglibcodegen.py
@@ -0,0 +1,320 @@
+"""Library code for GLib/D-Bus-related code generation.
+
+The master copy of this library is in the telepathy-glib repository -
+please make any changes there.
+"""
+
+# Copyright (C) 2006, 2007 Collabora Limited
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+
+from string import ascii_letters, digits
+
+
+NS_TP = "http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0"
+
+_ASCII_ALNUM = ascii_letters + digits
+
+
+def camelcase_to_lower(s):
+ out ="";
+ out += s[0].lower()
+ last_upper=False
+ if s[0].isupper():
+ last_upper=True
+ for i in range(1,len(s)):
+ if s[i].isupper():
+ if last_upper:
+ if (i+1) < len(s) and s[i+1].islower():
+ out += "_" + s[i].lower()
+ else:
+ out += s[i].lower()
+ else:
+ out += "_" + s[i].lower()
+ last_upper=True
+ else:
+ out += s[i]
+ last_upper=False
+ return out
+
+
+def camelcase_to_upper(s):
+ return camelcase_to_lower(s).upper()
+
+
+def cmp_by_name(node1, node2):
+ return cmp(node1.getAttributeNode("name").nodeValue,
+ node2.getAttributeNode("name").nodeValue)
+
+
+def dbus_gutils_wincaps_to_uscore(s):
+ """Bug-for-bug compatible Python port of _dbus_gutils_wincaps_to_uscore
+ which gets sequences of capital letters wrong in the same way.
+ (e.g. in Telepathy, SendDTMF -> send_dt_mf)
+ """
+ ret = ''
+ for c in s:
+ if c >= 'A' and c <= 'Z':
+ length = len(ret)
+ if length > 0 and (length < 2 or ret[length-2] != '_'):
+ ret += '_'
+ ret += c.lower()
+ else:
+ ret += c
+ return ret
+
+
+def escape_as_identifier(identifier):
+ """Escape the given string to be a valid D-Bus object path or service
+ name component, using a reversible encoding to ensure uniqueness.
+
+ The reversible encoding is as follows:
+
+ * The empty string becomes '_'
+ * Otherwise, each non-alphanumeric character is replaced by '_' plus
+ two lower-case hex digits; the same replacement is carried out on
+ the first character, if it's a digit
+ """
+ # '' -> '_'
+ if not identifier:
+ return '_'
+
+ # A bit of a fast path for strings which are already OK.
+ # We deliberately omit '_' because, for reversibility, that must also
+ # be escaped.
+ if (identifier.strip(_ASCII_ALNUM) == '' and
+ identifier[0] in ascii_letters):
+ return identifier
+
+ # The first character may not be a digit
+ if identifier[0] not in ascii_letters:
+ ret = ['_%02x' % ord(identifier[0])]
+ else:
+ ret = [identifier[0]]
+
+ # Subsequent characters may be digits or ASCII letters
+ for c in identifier[1:]:
+ if c in _ASCII_ALNUM:
+ ret.append(c)
+ else:
+ ret.append('_%02x' % ord(c))
+
+ return ''.join(ret)
+
+
+def get_docstring(element):
+ docstring = None
+ for x in element.childNodes:
+ if x.namespaceURI == NS_TP and x.localName == 'docstring':
+ docstring = x
+ if docstring is not None:
+ docstring = docstring.toxml().replace('\n', ' ').strip()
+ if docstring.startswith('<tp:docstring>'):
+ docstring = docstring[14:].lstrip()
+ if docstring.endswith('</tp:docstring>'):
+ docstring = docstring[:-15].rstrip()
+ if docstring in ('<tp:docstring/>', ''):
+ docstring = ''
+ return docstring
+
+
+def signal_to_marshal_type(signal):
+ """
+ return a list of strings indicating the marshalling type for this signal.
+ """
+
+ mtype=[]
+ for i in signal.getElementsByTagName("arg"):
+ name =i.getAttribute("name")
+ type = i.getAttribute("type")
+ mtype.append(type_to_gtype(type)[2])
+
+ return mtype
+
+
+_glib_marshallers = ['VOID', 'BOOLEAN', 'CHAR', 'UCHAR', 'INT',
+ 'STRING', 'UINT', 'LONG', 'ULONG', 'ENUM', 'FLAGS', 'FLOAT',
+ 'DOUBLE', 'STRING', 'PARAM', 'BOXED', 'POINTER', 'OBJECT',
+ 'UINT_POINTER']
+
+
+def signal_to_marshal_name(signal, prefix):
+
+ mtype = signal_to_marshal_type(signal)
+ if len(mtype):
+ name = '_'.join(mtype)
+ else:
+ name = 'VOID'
+
+ if name in _glib_marshallers:
+ return 'g_cclosure_marshal_VOID__' + name
+ else:
+ return prefix + '_marshal_VOID__' + name
+
+
+def method_to_glue_marshal_name(method, prefix):
+
+ mtype = []
+ for i in method.getElementsByTagName("arg"):
+ if i.getAttribute("direction") != "out":
+ type = i.getAttribute("type")
+ mtype.append(type_to_gtype(type)[2])
+
+ mtype.append('POINTER')
+
+ name = '_'.join(mtype)
+
+ if name in _glib_marshallers:
+ return 'g_cclosure_marshal_VOID__' + name
+ else:
+ return prefix + '_marshal_VOID__' + name
+
+
+class _SignatureIter:
+ """Iterator over a D-Bus signature. Copied from dbus-python 0.71 so we
+ can run genginterface in a limited environment with only Python
+ (like Scratchbox).
+ """
+ def __init__(self, string):
+ self.remaining = string
+
+ def next(self):
+ if self.remaining == '':
+ raise StopIteration
+
+ signature = self.remaining
+ block_depth = 0
+ block_type = None
+ end = len(signature)
+
+ for marker in range(0, end):
+ cur_sig = signature[marker]
+
+ if cur_sig == 'a':
+ pass
+ elif cur_sig == '{' or cur_sig == '(':
+ if block_type == None:
+ block_type = cur_sig
+
+ if block_type == cur_sig:
+ block_depth = block_depth + 1
+
+ elif cur_sig == '}':
+ if block_type == '{':
+ block_depth = block_depth - 1
+
+ if block_depth == 0:
+ end = marker
+ break
+
+ elif cur_sig == ')':
+ if block_type == '(':
+ block_depth = block_depth - 1
+
+ if block_depth == 0:
+ end = marker
+ break
+
+ else:
+ if block_depth == 0:
+ end = marker
+ break
+
+ end = end + 1
+ self.remaining = signature[end:]
+ return Signature(signature[0:end])
+
+
+class Signature(str):
+ """A string, iteration over which is by D-Bus single complete types
+ rather than characters.
+ """
+ def __iter__(self):
+ return _SignatureIter(self)
+
+
+def type_to_gtype(s):
+ if s == 'y': #byte
+ return ("guchar ", "G_TYPE_UCHAR","UCHAR", False)
+ elif s == 'b': #boolean
+ return ("gboolean ", "G_TYPE_BOOLEAN","BOOLEAN", False)
+ elif s == 'n': #int16
+ return ("gint ", "G_TYPE_INT","INT", False)
+ elif s == 'q': #uint16
+ return ("guint ", "G_TYPE_UINT","UINT", False)
+ elif s == 'i': #int32
+ return ("gint ", "G_TYPE_INT","INT", False)
+ elif s == 'u': #uint32
+ return ("guint ", "G_TYPE_UINT","UINT", False)
+ elif s == 'x': #int64
+ return ("gint64 ", "G_TYPE_INT64","INT64", False)
+ elif s == 't': #uint64
+ return ("guint64 ", "G_TYPE_UINT64","UINT64", False)
+ elif s == 'd': #double
+ return ("gdouble ", "G_TYPE_DOUBLE","DOUBLE", False)
+ elif s == 's': #string
+ return ("gchar *", "G_TYPE_STRING", "STRING", True)
+ elif s == 'g': #signature - FIXME
+ return ("gchar *", "DBUS_TYPE_G_SIGNATURE", "STRING", True)
+ elif s == 'o': #object path
+ return ("gchar *", "DBUS_TYPE_G_OBJECT_PATH", "BOXED", True)
+ elif s == 'v': #variant
+ return ("GValue *", "G_TYPE_VALUE", "BOXED", True)
+ elif s == 'as': #array of strings
+ return ("gchar **", "G_TYPE_STRV", "BOXED", True)
+ elif s == 'ay': #byte array
+ return ("GArray *",
+ "dbus_g_type_get_collection (\"GArray\", G_TYPE_UCHAR)", "BOXED",
+ True)
+ elif s == 'au': #uint array
+ return ("GArray *", "DBUS_TYPE_G_UINT_ARRAY", "BOXED", True)
+ elif s == 'ai': #int array
+ return ("GArray *", "DBUS_TYPE_G_INT_ARRAY", "BOXED", True)
+ elif s == 'ax': #int64 array
+ return ("GArray *", "DBUS_TYPE_G_INT64_ARRAY", "BOXED", True)
+ elif s == 'at': #uint64 array
+ return ("GArray *", "DBUS_TYPE_G_UINT64_ARRAY", "BOXED", True)
+ elif s == 'ad': #double array
+ return ("GArray *", "DBUS_TYPE_G_DOUBLE_ARRAY", "BOXED", True)
+ elif s == 'ab': #boolean array
+ return ("GArray *", "DBUS_TYPE_G_BOOLEAN_ARRAY", "BOXED", True)
+ elif s == 'ao': #object path array
+ return ("GArray *", "DBUS_TYPE_G_OBJECT_ARRAY", "BOXED", True)
+ elif s == 'a{ss}': #hash table of string to string
+ return ("GHashTable *", "DBUS_TYPE_G_STRING_STRING_HASHTABLE", "BOXED", False)
+ elif s[:2] == 'a{': #some arbitrary hash tables
+ if s[2] not in ('y', 'b', 'n', 'q', 'i', 'u', 's', 'o', 'g'):
+ raise Exception, "can't index a hashtable off non-basic type " + s
+ first = type_to_gtype(s[2])
+ second = type_to_gtype(s[3:-1])
+ return ("GHashTable *", "(dbus_g_type_get_map (\"GHashTable\", " + first[1] + ", " + second[1] + "))", "BOXED", False)
+ elif s[:2] in ('a(', 'aa'): # array of structs or arrays, recurse
+ gtype = type_to_gtype(s[1:])[1]
+ return ("GPtrArray *", "(dbus_g_type_get_collection (\"GPtrArray\", "+gtype+"))", "BOXED", True)
+ elif s[:1] == '(': #struct
+ gtype = "(dbus_g_type_get_struct (\"GValueArray\", "
+ for subsig in Signature(s[1:-1]):
+ gtype = gtype + type_to_gtype(subsig)[1] + ", "
+ gtype = gtype + "G_TYPE_INVALID))"
+ return ("GValueArray *", gtype, "BOXED", True)
+
+ # we just don't know ..
+ raise Exception, "don't know the GType for " + s
+
+
+def xml_escape(s):
+ s = s.replace('&', '&amp;').replace("'", '&apos;').replace('"', '&quot;')
+ return s.replace('<', '&lt;').replace('>', '&gt;')