changeset 24096:d9d31ff2e7f8

merge of 'b341289e9194564cc4f7250228a66b854c2ec3c5' and 'd566b6f77a48d607fad872411a4fcd2d9f86c558'
author Kevin Stange <kevin@simguy.net>
date Thu, 11 Sep 2008 20:26:21 +0000
parents f869a6e43a12 (diff) 5045f2ce9cff (current diff)
children ec85a522b455 dc25ef2669f6
files pidgin/artwork/art-tools/clean-svg-definitions.sh pidgin/artwork/art-tools/render-pidgin-emotes.rb pidgin/artwork/hicolor/16x16/actions/pidgin-change-bgcolor.png pidgin/artwork/hicolor/16x16/actions/pidgin-change-fgcolor.png pidgin/artwork/hicolor/16x16/actions/pidgin-drag-down.png pidgin/artwork/hicolor/16x16/actions/pidgin-drag-left.png pidgin/artwork/hicolor/16x16/actions/pidgin-drag-right.png pidgin/artwork/hicolor/16x16/actions/pidgin-drag-up.png pidgin/artwork/hicolor/16x16/actions/pidgin-emote-select.png pidgin/artwork/hicolor/16x16/actions/pidgin-font-face.png pidgin/artwork/hicolor/16x16/actions/pidgin-font-size-down.png pidgin/artwork/hicolor/16x16/actions/pidgin-font-size-up.png pidgin/artwork/hicolor/16x16/actions/pidgin-get-attention.png pidgin/artwork/hicolor/16x16/actions/pidgin-insert-image.png pidgin/artwork/hicolor/16x16/actions/pidgin-insert-link.png pidgin/artwork/hicolor/16x16/actions/pidgin-insert.png pidgin/artwork/hicolor/16x16/actions/pidgin-message-new.png pidgin/artwork/hicolor/16x16/actions/pidgin-send-file.png pidgin/artwork/hicolor/16x16/actions/pidgin-unblock.png pidgin/artwork/hicolor/16x16/actions/pidgin-view-plugins.png pidgin/artwork/hicolor/16x16/actions/pidgin-view-transfers.png pidgin/artwork/hicolor/16x16/animations/process-working0.png pidgin/artwork/hicolor/16x16/animations/process-working1.png pidgin/artwork/hicolor/16x16/animations/process-working10.png pidgin/artwork/hicolor/16x16/animations/process-working11.png pidgin/artwork/hicolor/16x16/animations/process-working12.png pidgin/artwork/hicolor/16x16/animations/process-working13.png pidgin/artwork/hicolor/16x16/animations/process-working14.png pidgin/artwork/hicolor/16x16/animations/process-working15.png pidgin/artwork/hicolor/16x16/animations/process-working16.png pidgin/artwork/hicolor/16x16/animations/process-working17.png pidgin/artwork/hicolor/16x16/animations/process-working18.png pidgin/artwork/hicolor/16x16/animations/process-working19.png pidgin/artwork/hicolor/16x16/animations/process-working2.png pidgin/artwork/hicolor/16x16/animations/process-working20.png pidgin/artwork/hicolor/16x16/animations/process-working21.png pidgin/artwork/hicolor/16x16/animations/process-working22.png pidgin/artwork/hicolor/16x16/animations/process-working23.png pidgin/artwork/hicolor/16x16/animations/process-working24.png pidgin/artwork/hicolor/16x16/animations/process-working25.png pidgin/artwork/hicolor/16x16/animations/process-working26.png pidgin/artwork/hicolor/16x16/animations/process-working27.png pidgin/artwork/hicolor/16x16/animations/process-working28.png pidgin/artwork/hicolor/16x16/animations/process-working29.png pidgin/artwork/hicolor/16x16/animations/process-working3.png pidgin/artwork/hicolor/16x16/animations/process-working30.png pidgin/artwork/hicolor/16x16/animations/process-working4.png pidgin/artwork/hicolor/16x16/animations/process-working5.png pidgin/artwork/hicolor/16x16/animations/process-working6.png pidgin/artwork/hicolor/16x16/animations/process-working7.png pidgin/artwork/hicolor/16x16/animations/process-working8.png pidgin/artwork/hicolor/16x16/animations/process-working9.png pidgin/artwork/hicolor/16x16/animations/typing0.png pidgin/artwork/hicolor/16x16/animations/typing1.png pidgin/artwork/hicolor/16x16/animations/typing2.png pidgin/artwork/hicolor/16x16/animations/typing3.png pidgin/artwork/hicolor/16x16/animations/typing4.png pidgin/artwork/hicolor/16x16/animations/typing5.png pidgin/artwork/hicolor/16x16/apps/pidgin-aim.png pidgin/artwork/hicolor/16x16/apps/pidgin-bonjour.png pidgin/artwork/hicolor/16x16/apps/pidgin-facebook.png pidgin/artwork/hicolor/16x16/apps/pidgin-gadu-gadu.png pidgin/artwork/hicolor/16x16/apps/pidgin-google-talk.png pidgin/artwork/hicolor/16x16/apps/pidgin-icq.png pidgin/artwork/hicolor/16x16/apps/pidgin-irc.png pidgin/artwork/hicolor/16x16/apps/pidgin-jabber.png pidgin/artwork/hicolor/16x16/apps/pidgin-meanwhile.png pidgin/artwork/hicolor/16x16/apps/pidgin-msn.png pidgin/artwork/hicolor/16x16/apps/pidgin-myspace.png pidgin/artwork/hicolor/16x16/apps/pidgin-novell.png pidgin/artwork/hicolor/16x16/apps/pidgin-qq.png pidgin/artwork/hicolor/16x16/apps/pidgin-silc.png pidgin/artwork/hicolor/16x16/apps/pidgin-simple.png pidgin/artwork/hicolor/16x16/apps/pidgin-yahoo.png pidgin/artwork/hicolor/16x16/apps/pidgin-zephyr.png pidgin/artwork/hicolor/16x16/apps/pidgin.png pidgin/artwork/hicolor/16x16/devices/pidgin-hiptop.png pidgin/artwork/hicolor/16x16/devices/pidgin-mobile.png pidgin/artwork/hicolor/16x16/emblems/pidgin-aol-client.png pidgin/artwork/hicolor/16x16/emblems/pidgin-birthday.png pidgin/artwork/hicolor/16x16/emblems/pidgin-blocked.png pidgin/artwork/hicolor/16x16/emblems/pidgin-bot.png pidgin/artwork/hicolor/16x16/emblems/pidgin-external.png pidgin/artwork/hicolor/16x16/emblems/pidgin-female.png pidgin/artwork/hicolor/16x16/emblems/pidgin-founder.png pidgin/artwork/hicolor/16x16/emblems/pidgin-free-for-chat.png pidgin/artwork/hicolor/16x16/emblems/pidgin-game.png pidgin/artwork/hicolor/16x16/emblems/pidgin-half-operator.png pidgin/artwork/hicolor/16x16/emblems/pidgin-male.png pidgin/artwork/hicolor/16x16/emblems/pidgin-music.png pidgin/artwork/hicolor/16x16/emblems/pidgin-not-authorized.png pidgin/artwork/hicolor/16x16/emblems/pidgin-operator.png pidgin/artwork/hicolor/16x16/emblems/pidgin-qq-member.png pidgin/artwork/hicolor/16x16/emblems/pidgin-secure.png pidgin/artwork/hicolor/16x16/emblems/pidgin-unavailable.png pidgin/artwork/hicolor/16x16/emblems/pidgin-video.png pidgin/artwork/hicolor/16x16/emblems/pidgin-voice.png pidgin/artwork/hicolor/16x16/status/pidgin-available.png pidgin/artwork/hicolor/16x16/status/pidgin-away.png pidgin/artwork/hicolor/16x16/status/pidgin-busy.png pidgin/artwork/hicolor/16x16/status/pidgin-chatroom.png pidgin/artwork/hicolor/16x16/status/pidgin-contact.png pidgin/artwork/hicolor/16x16/status/pidgin-dialog-auth.png pidgin/artwork/hicolor/16x16/status/pidgin-dialog-error.png pidgin/artwork/hicolor/16x16/status/pidgin-dialog-info.png pidgin/artwork/hicolor/16x16/status/pidgin-dialog-mail.png pidgin/artwork/hicolor/16x16/status/pidgin-dialog-question.png pidgin/artwork/hicolor/16x16/status/pidgin-extended-away.png pidgin/artwork/hicolor/16x16/status/pidgin-invisible.png pidgin/artwork/hicolor/16x16/status/pidgin-offline.png pidgin/artwork/hicolor/16x16/status/pidgin-tray-available.png pidgin/artwork/hicolor/16x16/status/pidgin-tray-away.png pidgin/artwork/hicolor/16x16/status/pidgin-tray-busy.png pidgin/artwork/hicolor/16x16/status/pidgin-tray-extended-away.png pidgin/artwork/hicolor/16x16/status/pidgin-tray-invisible.png pidgin/artwork/hicolor/16x16/status/pidgin-tray-message-pending.png pidgin/artwork/hicolor/16x16/status/pidgin-tray-new-im.png pidgin/artwork/hicolor/16x16/status/pidgin-tray-offline.png pidgin/artwork/hicolor/22x22/apps/pidgin.png pidgin/artwork/hicolor/22x22/status/pidgin-available.png pidgin/artwork/hicolor/22x22/status/pidgin-away.png pidgin/artwork/hicolor/22x22/status/pidgin-busy.png pidgin/artwork/hicolor/22x22/status/pidgin-chatroom.png pidgin/artwork/hicolor/22x22/status/pidgin-contact.png pidgin/artwork/hicolor/22x22/status/pidgin-extended-away.png pidgin/artwork/hicolor/22x22/status/pidgin-invisible.png pidgin/artwork/hicolor/22x22/status/pidgin-offline.png pidgin/artwork/hicolor/22x22/status/pidgin-tray-available.png pidgin/artwork/hicolor/22x22/status/pidgin-tray-away.png pidgin/artwork/hicolor/22x22/status/pidgin-tray-busy.png pidgin/artwork/hicolor/22x22/status/pidgin-tray-extended-away.png pidgin/artwork/hicolor/22x22/status/pidgin-tray-invisible.png pidgin/artwork/hicolor/22x22/status/pidgin-tray-message-pending.png pidgin/artwork/hicolor/22x22/status/pidgin-tray-new-im.png pidgin/artwork/hicolor/22x22/status/pidgin-tray-offline.png pidgin/artwork/hicolor/24x24/apps/pidgin-aim.png pidgin/artwork/hicolor/24x24/apps/pidgin-bonjour.png pidgin/artwork/hicolor/24x24/apps/pidgin-facebook.png pidgin/artwork/hicolor/24x24/apps/pidgin-gadu-gadu.png pidgin/artwork/hicolor/24x24/apps/pidgin-google-talk.png pidgin/artwork/hicolor/24x24/apps/pidgin-icq.png pidgin/artwork/hicolor/24x24/apps/pidgin-irc.png pidgin/artwork/hicolor/24x24/apps/pidgin-jabber.png pidgin/artwork/hicolor/24x24/apps/pidgin-meanwhile.png pidgin/artwork/hicolor/24x24/apps/pidgin-msn.png pidgin/artwork/hicolor/24x24/apps/pidgin-myspace.png pidgin/artwork/hicolor/24x24/apps/pidgin-novell.png pidgin/artwork/hicolor/24x24/apps/pidgin-qq.png pidgin/artwork/hicolor/24x24/apps/pidgin-silc.png pidgin/artwork/hicolor/24x24/apps/pidgin-simple.png pidgin/artwork/hicolor/24x24/apps/pidgin-yahoo.png pidgin/artwork/hicolor/24x24/apps/pidgin-zephyr.png pidgin/artwork/hicolor/24x24/apps/pidgin.png pidgin/artwork/hicolor/24x24/emotes/Makefile.am pidgin/artwork/hicolor/24x24/emotes/Makefile.mingw pidgin/artwork/hicolor/24x24/emotes/default.theme.in pidgin/artwork/hicolor/24x24/emotes/none/Makefile.am pidgin/artwork/hicolor/24x24/emotes/none/Makefile.mingw pidgin/artwork/hicolor/24x24/emotes/none/none.theme.in pidgin/artwork/hicolor/24x24/emotes/none/theme pidgin/artwork/hicolor/24x24/emotes/pidgin-act-up.png pidgin/artwork/hicolor/24x24/emotes/pidgin-airplane.png pidgin/artwork/hicolor/24x24/emotes/pidgin-alien.png pidgin/artwork/hicolor/24x24/emotes/pidgin-angel.png pidgin/artwork/hicolor/24x24/emotes/pidgin-angry.png pidgin/artwork/hicolor/24x24/emotes/pidgin-arrogant.png pidgin/artwork/hicolor/24x24/emotes/pidgin-at-wits-end.png pidgin/artwork/hicolor/24x24/emotes/pidgin-bad.png pidgin/artwork/hicolor/24x24/emotes/pidgin-bashful.png pidgin/artwork/hicolor/24x24/emotes/pidgin-beat-up.png pidgin/artwork/hicolor/24x24/emotes/pidgin-beauty.png pidgin/artwork/hicolor/24x24/emotes/pidgin-beer.png pidgin/artwork/hicolor/24x24/emotes/pidgin-blowkiss.png pidgin/artwork/hicolor/24x24/emotes/pidgin-bomb.png pidgin/artwork/hicolor/24x24/emotes/pidgin-bowl.png pidgin/artwork/hicolor/24x24/emotes/pidgin-boy.png pidgin/artwork/hicolor/24x24/emotes/pidgin-brb.png pidgin/artwork/hicolor/24x24/emotes/pidgin-bulgy-eyes.png pidgin/artwork/hicolor/24x24/emotes/pidgin-bunny.png pidgin/artwork/hicolor/24x24/emotes/pidgin-bye.png pidgin/artwork/hicolor/24x24/emotes/pidgin-cake.png pidgin/artwork/hicolor/24x24/emotes/pidgin-call-me.png pidgin/artwork/hicolor/24x24/emotes/pidgin-camera.png pidgin/artwork/hicolor/24x24/emotes/pidgin-can.png pidgin/artwork/hicolor/24x24/emotes/pidgin-car.png pidgin/artwork/hicolor/24x24/emotes/pidgin-cat.png pidgin/artwork/hicolor/24x24/emotes/pidgin-chicken.png pidgin/artwork/hicolor/24x24/emotes/pidgin-cigarette.png pidgin/artwork/hicolor/24x24/emotes/pidgin-clap.png pidgin/artwork/hicolor/24x24/emotes/pidgin-clock.png pidgin/artwork/hicolor/24x24/emotes/pidgin-cloudy.png pidgin/artwork/hicolor/24x24/emotes/pidgin-clover.png pidgin/artwork/hicolor/24x24/emotes/pidgin-clown.png pidgin/artwork/hicolor/24x24/emotes/pidgin-coffee.png pidgin/artwork/hicolor/24x24/emotes/pidgin-coins.png pidgin/artwork/hicolor/24x24/emotes/pidgin-computer.png pidgin/artwork/hicolor/24x24/emotes/pidgin-confused.png pidgin/artwork/hicolor/24x24/emotes/pidgin-console.png pidgin/artwork/hicolor/24x24/emotes/pidgin-cow.png pidgin/artwork/hicolor/24x24/emotes/pidgin-cowboy.png pidgin/artwork/hicolor/24x24/emotes/pidgin-crying.png pidgin/artwork/hicolor/24x24/emotes/pidgin-curl-lip.png pidgin/artwork/hicolor/24x24/emotes/pidgin-curse.png pidgin/artwork/hicolor/24x24/emotes/pidgin-cute.png pidgin/artwork/hicolor/24x24/emotes/pidgin-cyclops.png pidgin/artwork/hicolor/24x24/emotes/pidgin-dance.png pidgin/artwork/hicolor/24x24/emotes/pidgin-dazed.png pidgin/artwork/hicolor/24x24/emotes/pidgin-desire.png pidgin/artwork/hicolor/24x24/emotes/pidgin-devil.png pidgin/artwork/hicolor/24x24/emotes/pidgin-disappointed.png pidgin/artwork/hicolor/24x24/emotes/pidgin-disdain.png pidgin/artwork/hicolor/24x24/emotes/pidgin-doctor.png pidgin/artwork/hicolor/24x24/emotes/pidgin-dog.png pidgin/artwork/hicolor/24x24/emotes/pidgin-doh.png pidgin/artwork/hicolor/24x24/emotes/pidgin-dont-know.png pidgin/artwork/hicolor/24x24/emotes/pidgin-drink.png pidgin/artwork/hicolor/24x24/emotes/pidgin-drool.png pidgin/artwork/hicolor/24x24/emotes/pidgin-eat.png pidgin/artwork/hicolor/24x24/emotes/pidgin-embarrassed.png pidgin/artwork/hicolor/24x24/emotes/pidgin-excruciating.png pidgin/artwork/hicolor/24x24/emotes/pidgin-eyeroll.png pidgin/artwork/hicolor/24x24/emotes/pidgin-female-fighter.png pidgin/artwork/hicolor/24x24/emotes/pidgin-film.png pidgin/artwork/hicolor/24x24/emotes/pidgin-fingers-crossed.png pidgin/artwork/hicolor/24x24/emotes/pidgin-flag.png pidgin/artwork/hicolor/24x24/emotes/pidgin-foot-in-mouth.png pidgin/artwork/hicolor/24x24/emotes/pidgin-freaked-out.png pidgin/artwork/hicolor/24x24/emotes/pidgin-ghost.png pidgin/artwork/hicolor/24x24/emotes/pidgin-giggle.png pidgin/artwork/hicolor/24x24/emotes/pidgin-girl.png pidgin/artwork/hicolor/24x24/emotes/pidgin-glasses-cool.png pidgin/artwork/hicolor/24x24/emotes/pidgin-glasses-nerdy.png pidgin/artwork/hicolor/24x24/emotes/pidgin-go-away.png pidgin/artwork/hicolor/24x24/emotes/pidgin-goat.png pidgin/artwork/hicolor/24x24/emotes/pidgin-good.png pidgin/artwork/hicolor/24x24/emotes/pidgin-hammer.png pidgin/artwork/hicolor/24x24/emotes/pidgin-handcuffs.png pidgin/artwork/hicolor/24x24/emotes/pidgin-handshake.png pidgin/artwork/hicolor/24x24/emotes/pidgin-highfive.png pidgin/artwork/hicolor/24x24/emotes/pidgin-hug-left.png pidgin/artwork/hicolor/24x24/emotes/pidgin-hug-right.png pidgin/artwork/hicolor/24x24/emotes/pidgin-hypnotized.png pidgin/artwork/hicolor/24x24/emotes/pidgin-in-love.png pidgin/artwork/hicolor/24x24/emotes/pidgin-island.png pidgin/artwork/hicolor/24x24/emotes/pidgin-jump.png pidgin/artwork/hicolor/24x24/emotes/pidgin-kiss.png pidgin/artwork/hicolor/24x24/emotes/pidgin-kissed.png pidgin/artwork/hicolor/24x24/emotes/pidgin-kissing.png pidgin/artwork/hicolor/24x24/emotes/pidgin-knife.png pidgin/artwork/hicolor/24x24/emotes/pidgin-lamp.png pidgin/artwork/hicolor/24x24/emotes/pidgin-lashes.png pidgin/artwork/hicolor/24x24/emotes/pidgin-laugh.png pidgin/artwork/hicolor/24x24/emotes/pidgin-liquor.png pidgin/artwork/hicolor/24x24/emotes/pidgin-loser.png pidgin/artwork/hicolor/24x24/emotes/pidgin-love-over.png pidgin/artwork/hicolor/24x24/emotes/pidgin-love.png pidgin/artwork/hicolor/24x24/emotes/pidgin-lying.png pidgin/artwork/hicolor/24x24/emotes/pidgin-mad-tongue.png pidgin/artwork/hicolor/24x24/emotes/pidgin-mail.png pidgin/artwork/hicolor/24x24/emotes/pidgin-male-fighter1.png pidgin/artwork/hicolor/24x24/emotes/pidgin-male-fighter2.png pidgin/artwork/hicolor/24x24/emotes/pidgin-mean.png pidgin/artwork/hicolor/24x24/emotes/pidgin-meeting.png pidgin/artwork/hicolor/24x24/emotes/pidgin-messed.png pidgin/artwork/hicolor/24x24/emotes/pidgin-mobile.png pidgin/artwork/hicolor/24x24/emotes/pidgin-mohawk.png pidgin/artwork/hicolor/24x24/emotes/pidgin-moneymouth.png pidgin/artwork/hicolor/24x24/emotes/pidgin-monkey.png pidgin/artwork/hicolor/24x24/emotes/pidgin-moon.png pidgin/artwork/hicolor/24x24/emotes/pidgin-msn-away.png pidgin/artwork/hicolor/24x24/emotes/pidgin-msn-busy.png pidgin/artwork/hicolor/24x24/emotes/pidgin-msn.png pidgin/artwork/hicolor/24x24/emotes/pidgin-msn_online.png pidgin/artwork/hicolor/24x24/emotes/pidgin-music.png pidgin/artwork/hicolor/24x24/emotes/pidgin-musical-note.png pidgin/artwork/hicolor/24x24/emotes/pidgin-nailbiting.png pidgin/artwork/hicolor/24x24/emotes/pidgin-neutral.png pidgin/artwork/hicolor/24x24/emotes/pidgin-on-the-phone.png pidgin/artwork/hicolor/24x24/emotes/pidgin-party.png pidgin/artwork/hicolor/24x24/emotes/pidgin-peace.png pidgin/artwork/hicolor/24x24/emotes/pidgin-phone.png pidgin/artwork/hicolor/24x24/emotes/pidgin-pig.png pidgin/artwork/hicolor/24x24/emotes/pidgin-pill.png pidgin/artwork/hicolor/24x24/emotes/pidgin-pirate.png pidgin/artwork/hicolor/24x24/emotes/pidgin-pissed-off.png pidgin/artwork/hicolor/24x24/emotes/pidgin-pizza.png pidgin/artwork/hicolor/24x24/emotes/pidgin-plate.png pidgin/artwork/hicolor/24x24/emotes/pidgin-poop.png pidgin/artwork/hicolor/24x24/emotes/pidgin-pray.png pidgin/artwork/hicolor/24x24/emotes/pidgin-present.png pidgin/artwork/hicolor/24x24/emotes/pidgin-pumpkin.png pidgin/artwork/hicolor/24x24/emotes/pidgin-qq.png pidgin/artwork/hicolor/24x24/emotes/pidgin-question.png pidgin/artwork/hicolor/24x24/emotes/pidgin-quiet.png pidgin/artwork/hicolor/24x24/emotes/pidgin-rain.png pidgin/artwork/hicolor/24x24/emotes/pidgin-rainbow.png pidgin/artwork/hicolor/24x24/emotes/pidgin-rose-dead.png pidgin/artwork/hicolor/24x24/emotes/pidgin-rose.png pidgin/artwork/hicolor/24x24/emotes/pidgin-rotfl.png pidgin/artwork/hicolor/24x24/emotes/pidgin-sad.png pidgin/artwork/hicolor/24x24/emotes/pidgin-sarcastic.png pidgin/artwork/hicolor/24x24/emotes/pidgin-search.png pidgin/artwork/hicolor/24x24/emotes/pidgin-secret.png pidgin/artwork/hicolor/24x24/emotes/pidgin-shame.png pidgin/artwork/hicolor/24x24/emotes/pidgin-sheep.png pidgin/artwork/hicolor/24x24/emotes/pidgin-shock.png pidgin/artwork/hicolor/24x24/emotes/pidgin-shout.png pidgin/artwork/hicolor/24x24/emotes/pidgin-shut-mouth.png pidgin/artwork/hicolor/24x24/emotes/pidgin-sick.png pidgin/artwork/hicolor/24x24/emotes/pidgin-sidefrown.png pidgin/artwork/hicolor/24x24/emotes/pidgin-silly.png pidgin/artwork/hicolor/24x24/emotes/pidgin-sinister.png pidgin/artwork/hicolor/24x24/emotes/pidgin-skeleton.png pidgin/artwork/hicolor/24x24/emotes/pidgin-skywalker.png pidgin/artwork/hicolor/24x24/emotes/pidgin-sleepy.png pidgin/artwork/hicolor/24x24/emotes/pidgin-smile-big.png pidgin/artwork/hicolor/24x24/emotes/pidgin-smile.png pidgin/artwork/hicolor/24x24/emotes/pidgin-smirk.png pidgin/artwork/hicolor/24x24/emotes/pidgin-snail.png pidgin/artwork/hicolor/24x24/emotes/pidgin-snicker.png pidgin/artwork/hicolor/24x24/emotes/pidgin-snowman.png pidgin/artwork/hicolor/24x24/emotes/pidgin-soccerball.png pidgin/artwork/hicolor/24x24/emotes/pidgin-soldier.png pidgin/artwork/hicolor/24x24/emotes/pidgin-star.png pidgin/artwork/hicolor/24x24/emotes/pidgin-starving.png pidgin/artwork/hicolor/24x24/emotes/pidgin-stop.png pidgin/artwork/hicolor/24x24/emotes/pidgin-struggle.png pidgin/artwork/hicolor/24x24/emotes/pidgin-sun.png pidgin/artwork/hicolor/24x24/emotes/pidgin-sweat.png pidgin/artwork/hicolor/24x24/emotes/pidgin-talktohand.png pidgin/artwork/hicolor/24x24/emotes/pidgin-teeth.png pidgin/artwork/hicolor/24x24/emotes/pidgin-terror.png pidgin/artwork/hicolor/24x24/emotes/pidgin-thinking.png pidgin/artwork/hicolor/24x24/emotes/pidgin-thunder.png pidgin/artwork/hicolor/24x24/emotes/pidgin-time-out.png pidgin/artwork/hicolor/24x24/emotes/pidgin-tongue.png pidgin/artwork/hicolor/24x24/emotes/pidgin-tremble.png pidgin/artwork/hicolor/24x24/emotes/pidgin-turtle.png pidgin/artwork/hicolor/24x24/emotes/pidgin-tv.png pidgin/artwork/hicolor/24x24/emotes/pidgin-umbrella.png pidgin/artwork/hicolor/24x24/emotes/pidgin-vampire.png pidgin/artwork/hicolor/24x24/emotes/pidgin-victory.png pidgin/artwork/hicolor/24x24/emotes/pidgin-waiting.png pidgin/artwork/hicolor/24x24/emotes/pidgin-watermelon.png pidgin/artwork/hicolor/24x24/emotes/pidgin-waving.png pidgin/artwork/hicolor/24x24/emotes/pidgin-weep.png pidgin/artwork/hicolor/24x24/emotes/pidgin-wilt.png pidgin/artwork/hicolor/24x24/emotes/pidgin-wink.png pidgin/artwork/hicolor/24x24/emotes/pidgin-worship.png pidgin/artwork/hicolor/24x24/emotes/pidgin-yawn.png pidgin/artwork/hicolor/24x24/emotes/pidgin-yin-yang.png pidgin/artwork/hicolor/24x24/emotes/theme pidgin/artwork/hicolor/24x24/status/pidgin-available.png pidgin/artwork/hicolor/24x24/status/pidgin-away.png pidgin/artwork/hicolor/24x24/status/pidgin-busy.png pidgin/artwork/hicolor/24x24/status/pidgin-chatroom.png pidgin/artwork/hicolor/24x24/status/pidgin-contact.png pidgin/artwork/hicolor/24x24/status/pidgin-extended-away.png pidgin/artwork/hicolor/24x24/status/pidgin-invisible.png pidgin/artwork/hicolor/24x24/status/pidgin-offline.png pidgin/artwork/hicolor/24x24/status/pidgin-tray-available.png pidgin/artwork/hicolor/24x24/status/pidgin-tray-away.png pidgin/artwork/hicolor/24x24/status/pidgin-tray-busy.png pidgin/artwork/hicolor/24x24/status/pidgin-tray-extended-away.png pidgin/artwork/hicolor/24x24/status/pidgin-tray-invisible.png pidgin/artwork/hicolor/24x24/status/pidgin-tray-message-pending.png pidgin/artwork/hicolor/24x24/status/pidgin-tray-new-im.png pidgin/artwork/hicolor/24x24/status/pidgin-tray-offline.png pidgin/artwork/hicolor/32x32/actions/pidgin-select-avatar.png pidgin/artwork/hicolor/32x32/apps/pidgin.png pidgin/artwork/hicolor/32x32/status/pidgin-available.png pidgin/artwork/hicolor/32x32/status/pidgin-away.png pidgin/artwork/hicolor/32x32/status/pidgin-busy.png pidgin/artwork/hicolor/32x32/status/pidgin-extended-away.png pidgin/artwork/hicolor/32x32/status/pidgin-invisible.png pidgin/artwork/hicolor/32x32/status/pidgin-offline.png pidgin/artwork/hicolor/32x32/status/pidgin-tray-available.png pidgin/artwork/hicolor/32x32/status/pidgin-tray-away.png pidgin/artwork/hicolor/32x32/status/pidgin-tray-busy.png pidgin/artwork/hicolor/32x32/status/pidgin-tray-extended-away.png pidgin/artwork/hicolor/32x32/status/pidgin-tray-invisible.png pidgin/artwork/hicolor/32x32/status/pidgin-tray-message-pending.png pidgin/artwork/hicolor/32x32/status/pidgin-tray-new-im.png pidgin/artwork/hicolor/32x32/status/pidgin-tray-offline.png pidgin/artwork/hicolor/48x48/apps/pidgin-aim.png pidgin/artwork/hicolor/48x48/apps/pidgin-bonjour.png pidgin/artwork/hicolor/48x48/apps/pidgin-facebook.png pidgin/artwork/hicolor/48x48/apps/pidgin-gadu-gadu.png pidgin/artwork/hicolor/48x48/apps/pidgin-icq.png pidgin/artwork/hicolor/48x48/apps/pidgin-irc.png pidgin/artwork/hicolor/48x48/apps/pidgin-jabber.png pidgin/artwork/hicolor/48x48/apps/pidgin-meanwhile.png pidgin/artwork/hicolor/48x48/apps/pidgin-msn.png pidgin/artwork/hicolor/48x48/apps/pidgin-myspace.png pidgin/artwork/hicolor/48x48/apps/pidgin-novell.png pidgin/artwork/hicolor/48x48/apps/pidgin-qq.png pidgin/artwork/hicolor/48x48/apps/pidgin-silc.png pidgin/artwork/hicolor/48x48/apps/pidgin-simple.png pidgin/artwork/hicolor/48x48/apps/pidgin-yahoo.png pidgin/artwork/hicolor/48x48/apps/pidgin-zephyr.png pidgin/artwork/hicolor/48x48/apps/pidgin.png pidgin/artwork/hicolor/48x48/status/pidgin-available.png pidgin/artwork/hicolor/48x48/status/pidgin-away.png pidgin/artwork/hicolor/48x48/status/pidgin-busy.png pidgin/artwork/hicolor/48x48/status/pidgin-dialog-auth.png pidgin/artwork/hicolor/48x48/status/pidgin-dialog-cool.png pidgin/artwork/hicolor/48x48/status/pidgin-dialog-dialog.png pidgin/artwork/hicolor/48x48/status/pidgin-dialog-error.png pidgin/artwork/hicolor/48x48/status/pidgin-dialog-info.png pidgin/artwork/hicolor/48x48/status/pidgin-dialog-mail.png pidgin/artwork/hicolor/48x48/status/pidgin-extended-away.png pidgin/artwork/hicolor/48x48/status/pidgin-invisible.png pidgin/artwork/hicolor/48x48/status/pidgin-offline.png pidgin/artwork/hicolor/48x48/status/pidgin-tray-available.png pidgin/artwork/hicolor/48x48/status/pidgin-tray-away.png pidgin/artwork/hicolor/48x48/status/pidgin-tray-busy.png pidgin/artwork/hicolor/48x48/status/pidgin-tray-extended-away.png pidgin/artwork/hicolor/48x48/status/pidgin-tray-invisible.png pidgin/artwork/hicolor/48x48/status/pidgin-tray-message-pending.png pidgin/artwork/hicolor/48x48/status/pidgin-tray-new-im.png pidgin/artwork/hicolor/48x48/status/pidgin-tray-offline.png pidgin/artwork/hicolor/48x48/status/question.png pidgin/artwork/hicolor/48x48/status/warning.png pidgin/artwork/hicolor/scalable/apps/pidgin.svg pidgin/artwork/hicolor/scalable/status/pidgin-auth.svg pidgin/artwork/hicolor/scalable/status/pidgin-cool.svg pidgin/artwork/hicolor/scalable/status/pidgin-dialog.svg pidgin/artwork/hicolor/scalable/status/pidgin-error.svg pidgin/artwork/hicolor/scalable/status/pidgin-info.svg pidgin/artwork/hicolor/scalable/status/pidgin-mail.svg pidgin/artwork/hicolor/scalable/status/pidgin-question.svg pidgin/artwork/hicolor/scalable/status/pidgin-warning.svg pidgin/artwork/pixmaps/logo.png pidgin/artwork/pixmaps/pidgin.ico
diffstat 32 files changed, 1293 insertions(+), 236 deletions(-) [+]
line wrap: on
line diff
--- a/.mtn-ignore	Thu Sep 11 20:25:47 2008 +0000
+++ b/.mtn-ignore	Thu Sep 11 20:26:21 2008 +0000
@@ -58,6 +58,7 @@
 libpurple/purple-client-bindings.h
 libpurple/purple-client-example
 libpurple/tests/check_libpurple
+libpurple/tests/libpurple..
 libpurple/version.h$
 libpurple/win32/libpurplerc.rc$
 libtool
--- a/AUTHORS	Thu Sep 11 20:25:47 2008 +0000
+++ b/AUTHORS	Thu Sep 11 20:26:21 2008 +0000
@@ -36,6 +36,7 @@
 Crazy Patch Writers:
 -------------------
 Felipe 'shx' Contreras
+Marcus 'malu' Lundblad
 Dennis 'EvilDennisR' Ristuccia
 Peter 'Fmoo' Ruibal
 Gabriel 'Nix' Schulhof
--- a/configure.ac	Thu Sep 11 20:25:47 2008 +0000
+++ b/configure.ac	Thu Sep 11 20:26:21 2008 +0000
@@ -1240,20 +1240,24 @@
 		AC_SUBST(DBUS_LIBS)
 		enable_dbus=yes
 	], [
+	enable_dbus=no
 	if test "x$force_deps" = "xyes" ; then
 		AC_MSG_ERROR([
 D-Bus development headers not found.
 Use --disable-dbus if you do not need D-Bus support.
 ])
 	fi])
+fi
 
 dnl Check for NetworkManager.h; if we don't have it, oh well
+if test "x$enable_dbus" = "xyes" ; then
 	if test "x$enable_nm" = "xyes" ; then
-		PKG_CHECK_MODULES(NETWORKMANAGER, [NetworkManager], [
+		PKG_CHECK_MODULES(NETWORKMANAGER, [NetworkManager >= 0.5.0], [
 			AC_SUBST(NETWORKMANAGER_CFLAGS)
 			AC_SUBST(NETWORKMANAGER_LIBS)
 			AC_DEFINE(HAVE_NETWORKMANAGER, 1, [Define if we have NetworkManager.])
 		], [
+			enable_nm=no
 			if test "x$force_deps" = "xyes" ; then
 				AC_MSG_ERROR([
 NetworkManager development headers not found.
--- a/doc/funniest_home_convos.txt	Thu Sep 11 20:25:47 2008 +0000
+++ b/doc/funniest_home_convos.txt	Thu Sep 11 20:26:21 2008 +0000
@@ -398,6 +398,8 @@
 (17:49:25) elb: awesome, thanks
 (17:49:28) elb: Kanon in D
 
+--
+
 edited for brevity, and name changed.
 (13:51:31) l33t_h4x0r: Is there such thing as a gaim ip sniffer for linux?
 (13:51:40) LSchiere: no
@@ -417,6 +419,8 @@
 (13:58:58) LSchiere: *amused* that's the first time in a while that the requester has *agreed* that there is no legit reason to want the feature
 (13:59:19) Err: he was not the sharpest knife in the drawer
 
+--
+
 14:57 <itchypants> [blah blah blah simple question]
       [other traffic]
 14:57 <itchypants> [retransmit simple question]
@@ -424,6 +428,8 @@
 14:59 <itchypants> seanegan, ah okay thanks
 15:00 <seanegan> no problem
 
+--
+
 (15:57:11) sadrul: the files (at least a couple) in the tar.bz2 are different
 (15:57:23) datallah: right.. that is the problem - the code in svn is fine
 (15:57:31) seanegan: oh, what the hell?
@@ -440,6 +446,8 @@
 (15:59:06) SimGuy: seanegan: by experience, I think we've determined you do
 not :)
 
+--
+
 (07:52:07 PM) clueless21: are you one of the gaim makers?
 (07:52:14 PM) Nathan Walp: yes
 (07:52:24 PM) clueless21:  cool
@@ -452,6 +460,8 @@
 (07:54:25 PM) Nathan Walp: it lets you chat with other people, like we are chatting now
 (07:54:45 PM) clueless21:  oooooooooo... thanks
 
+--
+
 23:58 -!- seanegan is now known as beta7
 23:58 <beta7> Hey, guys, remember me?
 23:59 <beta7> We were all supposed to be working on getting me out.
@@ -461,6 +471,8 @@
 23:59 -!- mode/#pidgin [-o elb] by ChanServ
 23:59 <marv> elb: good job getting beta7 out
 
+--
+
 14:07 <elb> rizzo: I actually prefer elb, and used it for a long time -- but 
             switched to Paco-Paco because people kept asking me what an 'elb'
             was
@@ -472,8 +484,12 @@
 14:08 <elb> I mean, what do you say
 14:08 <Robot101> elb: was their nick "idi"?
 
+--
+
 19:23 <-- elb has quit (K-lined)
 
+--
+
 19:01 <user> whoa
 19:01 <user> okay
 19:01 <user> now when i try to go into the left over files after the 
@@ -506,16 +522,19 @@
 17:16 <sadrul> I think blocking in pidgin not working is not your biggest
                problem here.
 
+--
 
 12:58 <staggered_ranks> why hasn't support for napster been removed?
 12:58 <deryni> It has.
 12:59 <staggered_ranks> oh.. ok
 
+--
 
 14:39 <rrobbertt> Does anyone know a way to get text to speech with pidgin?
 14:41 <elb> do you want to be rooted sooner, or later?
 14:42 <seanegan> good question"; rm -rf ~
 
+--
 
 (11:55:03) *** elb cuts seanegn for taunting the masses with adium
                    message styles and then dropping it
@@ -523,3 +542,17 @@
 (11:56:04) *** elb waits to see if this is an additive, fibbonaci, or
                    exponential cutting
 (11:56:16) *** seanegn hopes for additive.
+
+--
+
+/* explaining the behavior of g_list_delete_link */
+(13:15:04) elb: if the item is not part of the list, it will be
+           removed from whatever list it *was* in
+(13:15:20) elb: and if it was the head of that list, and the caller is
+           holding onto the head someplace, Bad Things happen
+(13:15:55) elb: don't do that
+(13:15:57) elb: is my advice on the matter
+/* more than 3 hours later */
+(16:58:10) elb: I just spent literally a couple of HOURS trying to
+           debug a problem where I was using g_list_delete_link with a
+           list item which wasn't in the list
--- a/doc/pidgin.1.in	Thu Sep 11 20:25:47 2008 +0000
+++ b/doc/pidgin.1.in	Thu Sep 11 20:26:21 2008 +0000
@@ -643,6 +643,8 @@
 .br
   Felipe 'shx' Contreras
 .br
+  Marcus 'malu' Lundblad
+.br
   Dennis 'EvilDennisR' Ristuccia
 .br
   Peter 'fmoo' Ruibal
--- a/finch/gntaccount.c	Thu Sep 11 20:25:47 2008 +0000
+++ b/finch/gntaccount.c	Thu Sep 11 20:26:21 2008 +0000
@@ -503,7 +503,7 @@
 	list = purple_plugins_get_protocols();
 	if (list == NULL) {
 		purple_notify_error(NULL, _("Error"),
-				_("There's no protocol plugins installed."),
+				_("There are no protocol plugins installed."),
 				_("(You probably forgot to 'make install'.)"));
 		return;
 	}
--- a/finch/gntpounce.c	Thu Sep 11 20:25:47 2008 +0000
+++ b/finch/gntpounce.c	Thu Sep 11 20:26:21 2008 +0000
@@ -979,15 +979,10 @@
 						PURPLE_CALLBACK(signed_on_off_cb), NULL);
 }
 
-static void
-dummy_pounce_cb(PurplePounce *pounce, PurplePounceEvent events, void *data)
-{
-}
-
 /* XXX: There's no such thing in pidgin. Perhaps there should be? */
 void finch_pounces_uninit()
 {
-	purple_pounces_register_handler(FINCH_UI, dummy_pounce_cb, NULL, NULL);
+	purple_pounces_unregister_handler(FINCH_UI);
 
 	purple_signals_disconnect_by_handle(finch_pounces_get_handle());
 }
--- a/finch/libgnt/wms/Makefile.am	Thu Sep 11 20:25:47 2008 +0000
+++ b/finch/libgnt/wms/Makefile.am	Thu Sep 11 20:26:21 2008 +0000
@@ -1,6 +1,7 @@
+wms = irssi.la
 if PURPLE_AVAILABLE
 # These custom wms depend on libpurple
-purple_wms = s.la irssi.la
+purple_wms = s.la
 else
 purple_wms =
 endif
@@ -9,6 +10,7 @@
 irssi_la_LDFLAGS         = -module -avoid-version
 
 plugin_LTLIBRARIES = \
+	$(wms) \
 	$(purple_wms)
  
 plugindir = $(libdir)/gnt
@@ -16,12 +18,12 @@
 irssi_la_SOURCES = irssi.c
 irssi_la_LIBADD =  \
   $(GLIB_LIBS) \
-  $(top_builddir)/finch/libgnt/libgnt.la
+  ../libgnt.la
 
 s_la_SOURCES = s.c
 s_la_LIBADD =  \
   $(GLIB_LIBS) \
-  $(top_builddir)/finch/libgnt/libgnt.la \
+  ../libgnt.la \
   $(top_builddir)/libpurple/libpurple.la
 
 EXTRA_DIST = 
--- a/finch/plugins/Makefile.am	Thu Sep 11 20:25:47 2008 +0000
+++ b/finch/plugins/Makefile.am	Thu Sep 11 20:26:21 2008 +0000
@@ -52,7 +52,7 @@
 #
 SUFFIXES = .c .so
 .c.so:
-	$(LIBTOOL) --mode=compile $(CC) -DHAVE_CONFIG_H -I$(top_srcdir) $(AM_CPPFLAGS) $(CFLAGS) -c $< -o tmp$@.lo $(PLUGIN_CFLAGS)
+	$(LIBTOOL) --mode=compile $(CC) -DHAVE_CONFIG_H -I$(top_builddir) $(AM_CPPFLAGS) $(CFLAGS) -c $< -o tmp$@.lo $(PLUGIN_CFLAGS)
 	$(LIBTOOL) --mode=link    $(CC) $(CFLAGS) -o libtmp$@.la -rpath $(plugindir) tmp$@.lo $(LIBS) $(LDFLAGS) -module -avoid-version $(PLUGIN_LIBS)
 	@rm -f tmp$@.lo tmp$@.o libtmp$@.la
 	@cp .libs/libtmp$@.so* $@
--- a/libpurple/buddyicon.c	Thu Sep 11 20:25:47 2008 +0000
+++ b/libpurple/buddyicon.c	Thu Sep 11 20:26:21 2008 +0000
@@ -934,8 +934,8 @@
 purple_buddy_icons_node_set_custom_icon_from_file(PurpleBlistNode *node,
                                                   const gchar *filename)
 {
-	size_t len;
-	guchar *data;
+	size_t len = 0;
+	guchar *data = NULL;
 
 	g_return_val_if_fail(node != NULL, NULL);
 
@@ -945,8 +945,10 @@
 		return NULL;
 	}
 
-	if (!read_icon_file(filename, &data, &len)) {
-		return NULL;
+	if (filename != NULL) {
+		if (!read_icon_file(filename, &data, &len)) {
+			return NULL;
+		}
 	}
 
 	return purple_buddy_icons_node_set_custom_icon(node, data, len);
--- a/libpurple/buddyicon.h	Thu Sep 11 20:25:47 2008 +0000
+++ b/libpurple/buddyicon.h	Thu Sep 11 20:26:21 2008 +0000
@@ -308,7 +308,7 @@
  *
  * @param node      The blist node for which to set a custom icon.
  * @param icon_data The image data of the icon, which the buddy icon code will
- *                  free.
+ *                  free. Use NULL to unset the icon.
  * @param icon_len  The length of the data in @a icon_data.
  *
  * @return The icon that was set. The caller does NOT own a reference to this,
@@ -326,7 +326,8 @@
  * @see purple_buddy_icons_node_set_custom_icon()
  *
  * @param node      The blist node for which to set a custom icon.
- * @param filename  The path to the icon to set for the blist node.
+ * @param filename  The path to the icon to set for the blist node. Use NULL
+ *                  to unset the custom icon.
  *
  * @return The icon that was set. The caller does NOT own a reference to this,
  *         and must call purple_imgstore_ref() if it wants one.
--- a/libpurple/plugins/Makefile.am	Thu Sep 11 20:25:47 2008 +0000
+++ b/libpurple/plugins/Makefile.am	Thu Sep 11 20:26:21 2008 +0000
@@ -150,7 +150,7 @@
 #
 SUFFIXES = .c .so
 .c.so:
-	$(LIBTOOL) --mode=compile $(CC) -DHAVE_CONFIG_H -I$(top_srcdir) $(AM_CPPFLAGS) $(CFLAGS) -c $< -o tmp$@.lo $(PLUGIN_CFLAGS)
+	$(LIBTOOL) --mode=compile $(CC) -DHAVE_CONFIG_H -I$(top_builddir) $(AM_CPPFLAGS) $(CFLAGS) -c $< -o tmp$@.lo $(PLUGIN_CFLAGS)
 	$(LIBTOOL) --mode=link    $(CC) $(CFLAGS) -o libtmp$@.la -rpath $(plugindir) tmp$@.lo $(LIBS) $(LDFLAGS) -module -avoid-version $(PLUGIN_LIBS)
 	@rm -f tmp$@.lo tmp$@.o libtmp$@.la
 	@cp .libs/libtmp$@.so* $@
--- a/libpurple/plugins/autoaccept.c	Thu Sep 11 20:25:47 2008 +0000
+++ b/libpurple/plugins/autoaccept.c	Thu Sep 11 20:26:21 2008 +0000
@@ -117,6 +117,9 @@
 			{
 				int count = 1;
 				const char *escape;
+				gchar **name_and_ext;
+				const gchar *name;
+				gchar *ext;
 
 				if (purple_prefs_get_bool(PREF_NEWDIR))
 					dirname = g_build_filename(pref, purple_normalize(account, xfer->who), NULL);
@@ -132,9 +135,24 @@
 				escape = purple_escape_filename(xfer->filename);
 				filename = g_build_filename(dirname, escape, NULL);
 
+				/* Split at the first dot, to avoid uniquifying "foo.tar.gz" to "foo.tar-2.gz" */
+				name_and_ext = g_strsplit(escape, ".", 2);
+				name = name_and_ext[0];
+				g_return_if_fail(name != NULL);
+				if (name_and_ext[1] != NULL) {
+					/* g_strsplit does not include the separator in each chunk. */
+					ext = g_strdup_printf(".%s", name_and_ext[1]);
+				} else {
+					ext = g_strdup("");
+				}
+
 				/* Make sure the file doesn't exist. Do we want some better checking than this? */
+				/* FIXME: There is a race here: if the newly uniquified file name gets created between
+				 *        this g_file_test and the transfer starting, the file created in the meantime
+				 *        will be clobbered. But it's not at all straightforward to fix.
+				 */
 				while (g_file_test(filename, G_FILE_TEST_EXISTS)) {
-					char *file = g_strdup_printf("%s-%d", escape, count++);
+					char *file = g_strdup_printf("%s-%d%s", name, count++, ext);
 					g_free(filename);
 					filename = g_build_filename(dirname, file, NULL);
 					g_free(file);
@@ -142,6 +160,8 @@
 
 				purple_xfer_request_accepted(xfer, filename);
 
+				g_strfreev(name_and_ext);
+				g_free(ext);
 				g_free(dirname);
 				g_free(filename);
 			}
--- a/libpurple/plugins/perl/perl.c	Thu Sep 11 20:25:47 2008 +0000
+++ b/libpurple/plugins/perl/perl.c	Thu Sep 11 20:26:21 2008 +0000
@@ -466,6 +466,7 @@
 load_perl_plugin(PurplePlugin *plugin)
 {
 	PurplePerlScript *gps = (PurplePerlScript *)plugin->info->extra_info;
+	gboolean loaded = TRUE;
 	char *atmp[3] = { plugin->path, NULL, NULL };
 
 	if (gps == NULL || gps->load_sub == NULL)
@@ -501,6 +502,7 @@
 			purple_debug(PURPLE_DEBUG_ERROR, "perl",
 			           "Perl function %s exited abnormally: %s\n",
 			           gps->load_sub, SvPVutf8_nolen(ERRSV));
+			loaded = FALSE;
 		}
 
 		PUTBACK;
@@ -508,7 +510,7 @@
 		LEAVE;
 	}
 
-	return TRUE;
+	return loaded;
 }
 
 static void
--- a/libpurple/plugins/ssl/ssl-nss.c	Thu Sep 11 20:25:47 2008 +0000
+++ b/libpurple/plugins/ssl/ssl-nss.c	Thu Sep 11 20:26:21 2008 +0000
@@ -285,7 +285,8 @@
 	}
 	
 	for (count = 0 ; count < CERT_MAX_CERT_CHAIN ; count++) {
-		purple_debug_info("nss", "subject=%s issuer=%s\n", curcert->subjectName, curcert->issuerName);
+		purple_debug_info("nss", "subject=%s issuer=%s\n", curcert->subjectName,
+						  curcert->issuerName  ? curcert->issuerName : "(null)");
 		newcrt = x509_import_from_nss(curcert);
 		peer_certs = g_list_append(peer_certs, newcrt);
 
@@ -676,7 +677,8 @@
 	subjectCert = X509_NSS_DATA(crt);
 	g_return_val_if_fail(subjectCert, FALSE);
 
-	if ( PORT_Strcmp(subjectCert->issuerName, issuerCert->subjectName) != 0 )
+	if (subjectCert->issuerName == NULL
+			|| PORT_Strcmp(subjectCert->issuerName, issuerCert->subjectName) != 0)
 		return FALSE;
 	st = CERT_VerifySignedData(&subjectCert->signatureWrap, issuerCert, PR_Now(), NULL);
 	return st == SECSuccess;
--- a/libpurple/protocols/msn/msn.c	Thu Sep 11 20:25:47 2008 +0000
+++ b/libpurple/protocols/msn/msn.c	Thu Sep 11 20:26:21 2008 +0000
@@ -769,6 +769,9 @@
 	{
 		const char *phone;
 
+		purple_notify_user_info_add_pair(user_info, _("Has you"),
+									   ((user->list_op & (1 << MSN_LIST_RL)) ? _("Yes") : _("No")));
+
 		purple_notify_user_info_add_pair(user_info, _("Blocked"),
 									   ((user->list_op & (1 << MSN_LIST_BL)) ? _("Yes") : _("No")));
 
--- a/libpurple/protocols/oscar/libicq.c	Thu Sep 11 20:25:47 2008 +0000
+++ b/libpurple/protocols/oscar/libicq.c	Thu Sep 11 20:26:21 2008 +0000
@@ -27,6 +27,15 @@
 
 #include "oscarcommon.h"
 
+static GHashTable *
+icq_get_account_text_table(PurpleAccount *account)
+{
+	GHashTable *table;
+	table = g_hash_table_new(g_str_hash, g_str_equal);
+	g_hash_table_insert(table, "login_label", (gpointer)_("ICQ UIN..."));
+	return table;
+}
+
 static PurplePluginProtocolInfo prpl_info =
 {
 	OPT_PROTO_MAIL_CHECK | OPT_PROTO_IM_IMAGE,
@@ -97,7 +106,7 @@
 	NULL,					/* get_attention_types */
 
 	sizeof(PurplePluginProtocolInfo),       /* struct_size */
-	NULL
+	icq_get_account_text_table, /* get_account_text_table */
 };
 
 static PurplePluginInfo info =
--- a/libpurple/protocols/yahoo/yahoo.c	Thu Sep 11 20:25:47 2008 +0000
+++ b/libpurple/protocols/yahoo/yahoo.c	Thu Sep 11 20:26:21 2008 +0000
@@ -4301,6 +4301,15 @@
 	return FALSE;
 }
 
+static GHashTable *
+yahoo_get_account_text_table(PurpleAccount *account)
+{
+	GHashTable *table;
+	table = g_hash_table_new(g_str_hash, g_str_equal);
+	g_hash_table_insert(table, "login_label", (gpointer)_("Yahoo ID..."));
+	return table;
+}
+
 static PurpleWhiteboardPrplOps yahoo_whiteboard_prpl_ops =
 {
 	yahoo_doodle_start,
@@ -4389,7 +4398,7 @@
 	yahoo_attention_types,
 
 	sizeof(PurplePluginProtocolInfo),       /* struct_size */
-	NULL
+	yahoo_get_account_text_table,    /* get_account_text_table */
 };
 
 static PurplePluginInfo info =
--- a/libpurple/sslconn.h	Thu Sep 11 20:25:47 2008 +0000
+++ b/libpurple/sslconn.h	Thu Sep 11 20:26:21 2008 +0000
@@ -67,7 +67,7 @@
 	int fd;
 	/** Glib event source ID; used to refer to the received data callback 
 	 * in the glib eventloop */
-	int inpa;
+	guint inpa;
 	/** Data related to the underlying TCP connection */
 	PurpleProxyConnectData *connect_data;
 
--- a/libpurple/util.c	Thu Sep 11 20:25:47 2008 +0000
+++ b/libpurple/util.c	Thu Sep 11 20:26:21 2008 +0000
@@ -3763,9 +3763,7 @@
 	while((len = read(source, buf, sizeof(buf))) > 0) {
 
 		if(gfud->max_len != -1 && (gfud->len + len) > gfud->max_len) {
-			/* TODO: Fix this when not string frozen */
-			/*purple_util_fetch_url_error(gfud, _("Error reading from %s: response too long (%d bytes limit)"),*/
-			purple_util_fetch_url_error(gfud, "Error reading from %s: response too long (%d bytes limit)",
+			purple_util_fetch_url_error(gfud, _("Error reading from %s: response too long (%d bytes limit)"),
 						    gfud->website.address, gfud->max_len);
 			return;
 		}
--- a/pidgin/gtkconv.c	Thu Sep 11 20:25:47 2008 +0000
+++ b/pidgin/gtkconv.c	Thu Sep 11 20:26:21 2008 +0000
@@ -5253,8 +5253,7 @@
 	if (conv && PIDGIN_IS_PIDGIN_CONVERSATION(conv) && !hide) {
 		PidginConversation *gtkconv = PIDGIN_CONVERSATION(conv);
 		if (gtkconv->win == hidden_convwin) {
-			pidgin_conv_window_remove_gtkconv(gtkconv->win, gtkconv);
-			pidgin_conv_placement_place(gtkconv);
+			pidgin_conv_attach_to_conversation(gtkconv->active_conv);
 		}
 		return;
 	}
@@ -7183,6 +7182,14 @@
 			pidgin_conv_update_buddy_icon(conv);
 		}
 	}
+
+	/* Make the tabs show/hide correctly */
+	for (l = pidgin_conv_windows_get_list(); l != NULL; l = l->next) {
+		PidginWindow *win = l->data;
+		if (pidgin_conv_window_get_gtkconv_count(win) == 1)
+			gtk_notebook_set_show_tabs(GTK_NOTEBOOK(win->notebook),
+						   GPOINTER_TO_INT(value) == 0);
+	}
 }
 
 static void
@@ -7231,8 +7238,7 @@
 		if (!l)
 			break;
 
-		pidgin_conv_window_remove_gtkconv(hidden_convwin, gtkconv);
-		pidgin_conv_placement_place(gtkconv);
+		pidgin_conv_attach_to_conversation(conv);
 
 		/* TODO: do we need to do anything for any other conversations that are in the same gtkconv here?
 		 * I'm a little concerned that not doing so will cause the "pending" indicator in the gtkblist not to be cleared. -DAA*/
@@ -7272,8 +7278,7 @@
 							purple_conversation_get_account(conv)))))
 			continue;
 
-		pidgin_conv_window_remove_gtkconv(hidden_convwin, gtkconv);
-		pidgin_conv_placement_place(gtkconv);
+		pidgin_conv_attach_to_conversation(conv);
 	}
 }
 
--- a/pidgin/gtkdialogs.c	Thu Sep 11 20:25:47 2008 +0000
+++ b/pidgin/gtkdialogs.c	Thu Sep 11 20:26:21 2008 +0000
@@ -100,6 +100,7 @@
 /* Order: Alphabetical by Last Name */
 static const struct developer patch_writers[] = {
 	{"Felipe 'shx' Contreras",		NULL,	NULL},
+	{"Marcus 'malu' Lundblad", NULL, NULL},
 	{"Dennis 'EvilDennisR' Ristuccia",	N_("Senior Contributor/QA"),	NULL},
 	{"Peter 'Fmoo' Ruibal",		NULL,	NULL},
 	{"Gabriel 'Nix' Schulhof", 	NULL, 	NULL},
--- a/pidgin/gtkimhtmltoolbar.c	Thu Sep 11 20:25:47 2008 +0000
+++ b/pidgin/gtkimhtmltoolbar.c	Thu Sep 11 20:26:21 2008 +0000
@@ -1146,7 +1146,7 @@
 				toolbar);
 	}
 
-	free(toolbar->sml);
+	g_free(toolbar->sml);
 	gtk_object_sink(GTK_OBJECT(toolbar->tooltips));
 
 	menu = g_object_get_data(object, "font_menu");
--- a/pidgin/gtkprefs.c	Thu Sep 11 20:25:47 2008 +0000
+++ b/pidgin/gtkprefs.c	Thu Sep 11 20:26:21 2008 +0000
@@ -1005,6 +1005,12 @@
 	keyboard_shortcuts(ret);
 
 
+	/* Status selector options */
+	vbox = pidgin_make_frame(ret, _("Status Selector"));
+	pidgin_prefs_checkbox(_("Keep the status message when the status is changed"),
+				PIDGIN_PREFS_ROOT "/status/keep_status_message", vbox);
+
+
 	gtk_widget_show_all(ret);
 	g_object_unref(sg);
 	return ret;
@@ -1828,6 +1834,25 @@
 	g_value_unset (&val);
 }
 
+
+static void
+mute_changed_cb(const char *pref_name,
+                PurplePrefType pref_type,
+                gconstpointer val,
+                gpointer data)
+{
+	GtkToggleButton *button = data;
+	gboolean muted = val;
+
+	g_return_if_fail(!strcmp (pref_name, PIDGIN_PREFS_ROOT "/sound/mute"));
+
+	/* Block the handler that re-sets the preference. */
+	g_signal_handlers_block_matched(button, G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, pref_name);
+	gtk_toggle_button_set_active (button, muted);
+	g_signal_handlers_unblock_matched(button, G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, pref_name);
+}
+
+
 static GtkWidget *
 sound_page(void)
 {
@@ -1889,9 +1914,13 @@
 #endif /* _WIN32 */
 
 	vbox = pidgin_make_frame (ret, _("Sound Options"));
+
+	button = pidgin_prefs_checkbox(_("M_ute sounds"), PIDGIN_PREFS_ROOT "/sound/mute", vbox);
+	purple_prefs_connect_callback(prefs, PIDGIN_PREFS_ROOT "/sound/mute", mute_changed_cb, button);
+
 	pidgin_prefs_checkbox(_("Sounds when conversation has _focus"),
 				   PIDGIN_PREFS_ROOT "/sound/conv_focus", vbox);
-	pidgin_prefs_dropdown(vbox, _("Enable sounds:"),
+	pidgin_prefs_dropdown(vbox, _("_Enable sounds:"),
 				 PURPLE_PREF_INT, "/purple/sound/while_status",
 				_("Only when available"), 1,
 				_("Only when not available"), 2,
@@ -1908,7 +1937,7 @@
 	g_signal_connect (G_OBJECT (sw), "value-changed",
 			  G_CALLBACK (prefs_sound_volume_changed),
 			  NULL);
-	hbox = pidgin_add_widget_to_vbox(GTK_BOX(vbox), _("Volume:"), NULL, sw, TRUE, NULL);
+	hbox = pidgin_add_widget_to_vbox(GTK_BOX(vbox), _("V_olume:"), NULL, sw, TRUE, NULL);
 
 	purple_prefs_connect_callback(prefs, PIDGIN_PREFS_ROOT "/sound/method",
 								sound_changed3_cb, hbox);
--- a/pidgin/gtksavedstatuses.c	Thu Sep 11 20:25:47 2008 +0000
+++ b/pidgin/gtksavedstatuses.c	Thu Sep 11 20:26:21 2008 +0000
@@ -1913,6 +1913,7 @@
 	purple_prefs_add_none(PIDGIN_PREFS_ROOT "/status/dialog");
 	purple_prefs_add_int(PIDGIN_PREFS_ROOT "/status/dialog/width",  550);
 	purple_prefs_add_int(PIDGIN_PREFS_ROOT "/status/dialog/height", 250);
+	purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/status/keep_status_message", FALSE);
 }
 
 void
--- a/pidgin/gtkstatusbox.c	Thu Sep 11 20:25:47 2008 +0000
+++ b/pidgin/gtkstatusbox.c	Thu Sep 11 20:26:21 2008 +0000
@@ -2715,7 +2715,8 @@
 			gtk_widget_show_all(status_box->vbox);
 			status_box->typing = g_timeout_add(TYPING_TIMEOUT, (GSourceFunc)remove_typing_cb, status_box);
 			gtk_widget_grab_focus(status_box->imhtml);
-			gtk_imhtml_clear(GTK_IMHTML(status_box->imhtml));
+			if (!purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/status/keep_status_message"))
+				gtk_imhtml_clear(GTK_IMHTML(status_box->imhtml));
 		}
 		else
 		{
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pidgin/pidginstock-artwork.c	Thu Sep 11 20:26:21 2008 +0000
@@ -0,0 +1,508 @@
+/**
+ * @file pidginstock.c GTK+ Stock resources
+ * @ingroup pidgin
+ */
+
+/* pidgin
+ *
+ * Pidgin is the legal property of its developers, whose names are too numerous
+ * to list here.  Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
+ *
+ */
+#include "internal.h"
+#include "pidgin.h"
+
+#include "pidginstock.h"
+
+static struct StockIcon
+{
+	const char *name;
+	const char *dir;
+	const char *filename;
+
+} const stock_icons[] =
+{
+	{ PIDGIN_STOCK_ACTION,          NULL,      GTK_STOCK_EXECUTE          },
+#if GTK_CHECK_VERSION(2,6,0)
+	{ PIDGIN_STOCK_ALIAS,           NULL,      GTK_STOCK_EDIT             },
+#else
+	{ PIDGIN_STOCK_ALIAS,           "buttons", "edit.png"                 },
+#endif
+	{ PIDGIN_STOCK_CHAT,            NULL,      GTK_STOCK_JUMP_TO          },
+	{ PIDGIN_STOCK_CLEAR,           NULL,      GTK_STOCK_CLEAR            },
+	{ PIDGIN_STOCK_CLOSE_TABS,      NULL,      GTK_STOCK_CLOSE            },
+	{ PIDGIN_STOCK_DEBUG,           NULL,      GTK_STOCK_PROPERTIES       },
+	{ PIDGIN_STOCK_DOWNLOAD,        NULL,      GTK_STOCK_GO_DOWN          },
+#if GTK_CHECK_VERSION(2,6,0)
+	{ PIDGIN_STOCK_DISCONNECT,      NULL,      GTK_STOCK_DISCONNECT       },
+#else
+	{ PIDGIN_STOCK_DISCONNECT,      "icons",   "stock_disconnect_16.png"  },
+#endif
+	{ PIDGIN_STOCK_FGCOLOR,         "buttons", "change-fgcolor-small.png" },
+#if GTK_CHECK_VERSION(2,6,0)
+	{ PIDGIN_STOCK_EDIT,            NULL,      GTK_STOCK_EDIT             },
+#else
+	{ PIDGIN_STOCK_EDIT,            "buttons", "edit.png"                 },
+#endif
+	{ PIDGIN_STOCK_FILE_CANCELED,   NULL,      GTK_STOCK_CANCEL           },
+	{ PIDGIN_STOCK_FILE_DONE,       NULL,      GTK_STOCK_APPLY            },
+	{ PIDGIN_STOCK_IGNORE,          NULL,      GTK_STOCK_DIALOG_ERROR     },
+	{ PIDGIN_STOCK_INVITE,          NULL,      GTK_STOCK_JUMP_TO          },
+	{ PIDGIN_STOCK_MODIFY,          NULL,      GTK_STOCK_PREFERENCES      },
+#if GTK_CHECK_VERSION(2,6,0)
+	{ PIDGIN_STOCK_PAUSE,           NULL,      GTK_STOCK_MEDIA_PAUSE      },
+#else
+	{ PIDGIN_STOCK_PAUSE,           "buttons", "pause.png"                },
+#endif
+	{ PIDGIN_STOCK_POUNCE,          NULL,      GTK_STOCK_REDO             },
+	{ PIDGIN_STOCK_OPEN_MAIL,       NULL,      GTK_STOCK_JUMP_TO          },
+	{ PIDGIN_STOCK_SIGN_ON,         NULL,      GTK_STOCK_EXECUTE          },
+	{ PIDGIN_STOCK_SIGN_OFF,        NULL,      GTK_STOCK_CLOSE            },
+	{ PIDGIN_STOCK_TYPED,           "pidgin",  "typed.png"                },
+	{ PIDGIN_STOCK_UPLOAD,          NULL,      GTK_STOCK_GO_UP            },
+#if GTK_CHECK_VERSION(2,8,0)
+	{ PIDGIN_STOCK_INFO,            NULL,      GTK_STOCK_INFO             },
+#else
+	{ PIDGIN_STOCK_INFO,            "buttons", "info.png"                 },
+#endif
+};
+
+static const GtkStockItem stock_items[] =
+{
+	{ PIDGIN_STOCK_ALIAS,               N_("_Alias"),      0, 0, NULL },
+	{ PIDGIN_STOCK_CHAT,                N_("_Join"),       0, 0, NULL },
+	{ PIDGIN_STOCK_CLOSE_TABS,          N_("Close _tabs"), 0, 0, NULL },
+	{ PIDGIN_STOCK_TOOLBAR_MESSAGE_NEW, N_("I_M"),         0, 0, NULL },
+	{ PIDGIN_STOCK_TOOLBAR_USER_INFO,   N_("_Get Info"),   0, 0, NULL },
+	{ PIDGIN_STOCK_INVITE,              N_("_Invite"),     0, 0, NULL },
+	{ PIDGIN_STOCK_MODIFY,              N_("_Modify"),     0, 0, NULL },
+	{ PIDGIN_STOCK_OPEN_MAIL,           N_("_Open Mail"),  0, 0, NULL },
+	{ PIDGIN_STOCK_PAUSE,               N_("_Pause"),      0, 0, NULL },
+	{ PIDGIN_STOCK_EDIT,                N_("_Edit"),       0, 0, NULL }
+};
+
+static struct SizedStockIcon {
+  const char *name;
+  const char *dir;
+  const char *filename;
+  gboolean microscopic;
+  gboolean extra_small;
+  gboolean small;
+  gboolean medium;
+  gboolean large;
+  gboolean huge;
+  gboolean rtl;
+  const char *translucent_name;
+} const sized_stock_icons [] = {
+
+
+        /* Status icons */
+
+	{ PIDGIN_STOCK_STATUS_AVAILABLE, "status", "pidgin-available.png", 	TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, PIDGIN_STOCK_STATUS_AVAILABLE_I },
+	{ PIDGIN_STOCK_STATUS_AWAY, 	 "status", "pidgin-away.png",		TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, PIDGIN_STOCK_STATUS_AWAY_I },
+	{ PIDGIN_STOCK_STATUS_BUSY, 	 "status", "pidgin-busy.png", 		TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, PIDGIN_STOCK_STATUS_BUSY_I },
+	{ PIDGIN_STOCK_STATUS_CHAT, 	 "status", "pidgin-chat.png",		TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL },
+	{ PIDGIN_STOCK_STATUS_INVISIBLE, "status", "pidgin-invisible.png",	TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL },
+	{ PIDGIN_STOCK_STATUS_XA, 	 "status", "pidgin-extended-away.png",	TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, PIDGIN_STOCK_STATUS_XA_I },
+	{ PIDGIN_STOCK_STATUS_LOGIN, 	 "status", "pidgin-log-in.png",		TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL },
+	{ PIDGIN_STOCK_STATUS_LOGOUT, 	 "status", "pidgin-log-out.png",	TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL },
+	{ PIDGIN_STOCK_STATUS_OFFLINE, 	 "status", "pidgin-offline.png",	TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, PIDGIN_STOCK_STATUS_OFFLINE_I  },
+	{ PIDGIN_STOCK_STATUS_PERSON, 	 "status", "pidgin-person.png",		TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL  },
+	{ PIDGIN_STOCK_STATUS_MESSAGE, 	 "actions", "pidgin-message-new.png",   TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
+	
+
+        /* Chatroom icons */
+
+	{ PIDGIN_STOCK_STATUS_IGNORED,	 "status", "pidgin-blocked.png",	FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
+	{ PIDGIN_STOCK_STATUS_FOUNDER,	 "status", "pidgin-founder.png",	FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
+	{ PIDGIN_STOCK_STATUS_OPERATOR,	 "status", "pidgin-operator.png",	FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
+	{ PIDGIN_STOCK_STATUS_HALFOP, 	 "status", "pidgin-half-operator.png",	FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
+	{ PIDGIN_STOCK_STATUS_VOICE, 	 "status", "pidgin-voice.png",		FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
+
+
+        /* Dialog icons */
+
+	{ PIDGIN_STOCK_DIALOG_AUTH,	"status", "pidgin-auth.png",		FALSE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, NULL  },
+	{ PIDGIN_STOCK_DIALOG_COOL,	"status", "pidgin-cool.png", 		FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, NULL  },
+	{ PIDGIN_STOCK_DIALOG_ERROR,	"status", "pidgin-error.png",		FALSE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, NULL  },
+	{ PIDGIN_STOCK_DIALOG_INFO,	"status", "pidgin-info.png",		FALSE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, NULL  },
+	{ PIDGIN_STOCK_DIALOG_MAIL,	"status", "pidgin-mail.png",		FALSE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, NULL  },
+	{ PIDGIN_STOCK_DIALOG_QUESTION,	"status", "pidgin-question.png",	FALSE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, NULL  },
+	{ PIDGIN_STOCK_DIALOG_WARNING,	"status", "pidgin-warning.png",		FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, NULL  },
+
+
+        /* Animations */
+
+	{ PIDGIN_STOCK_ANIMATION_CONNECT0, "animations", "process-working0.png",FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
+	{ PIDGIN_STOCK_ANIMATION_CONNECT1, "animations", "process-working1.png",FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
+	{ PIDGIN_STOCK_ANIMATION_CONNECT2, "animations", "process-working2.png",FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
+	{ PIDGIN_STOCK_ANIMATION_CONNECT3, "animations", "process-working3.png",FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
+	{ PIDGIN_STOCK_ANIMATION_CONNECT4, "animations", "process-working4.png",FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
+	{ PIDGIN_STOCK_ANIMATION_CONNECT5, "animations", "process-working5.png",FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
+	{ PIDGIN_STOCK_ANIMATION_CONNECT6, "animations", "process-working6.png",FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
+	{ PIDGIN_STOCK_ANIMATION_CONNECT7, "animations", "process-working7.png",FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
+	{ PIDGIN_STOCK_ANIMATION_CONNECT8, "animations", "process-working8.png",FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
+	{ PIDGIN_STOCK_ANIMATION_CONNECT9, "animations", "process-working9.png",FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
+	{ PIDGIN_STOCK_ANIMATION_CONNECT10, "animations", "process-working10.png",FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
+	{ PIDGIN_STOCK_ANIMATION_CONNECT11, "animations", "process-working11.png",FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
+	{ PIDGIN_STOCK_ANIMATION_CONNECT12, "animations", "process-working12.png",FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
+	{ PIDGIN_STOCK_ANIMATION_CONNECT13, "animations", "process-working13.png",FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
+	{ PIDGIN_STOCK_ANIMATION_CONNECT14, "animations", "process-working14.png",FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
+	{ PIDGIN_STOCK_ANIMATION_CONNECT15, "animations", "process-working15.png",FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
+	{ PIDGIN_STOCK_ANIMATION_CONNECT16, "animations", "process-working16.png",FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
+	{ PIDGIN_STOCK_ANIMATION_CONNECT17, "animations", "process-working17.png",FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
+	{ PIDGIN_STOCK_ANIMATION_CONNECT18, "animations", "process-working18.png",FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
+	{ PIDGIN_STOCK_ANIMATION_CONNECT19, "animations", "process-working19.png",FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
+	{ PIDGIN_STOCK_ANIMATION_CONNECT20, "animations", "process-working20.png",FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
+	{ PIDGIN_STOCK_ANIMATION_CONNECT21, "animations", "process-working21.png",FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
+	{ PIDGIN_STOCK_ANIMATION_CONNECT22, "animations", "process-working22.png",FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
+	{ PIDGIN_STOCK_ANIMATION_CONNECT23, "animations", "process-working23.png",FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
+	{ PIDGIN_STOCK_ANIMATION_CONNECT24, "animations", "process-working24.png",FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
+	{ PIDGIN_STOCK_ANIMATION_CONNECT25, "animations", "process-working25.png",FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
+	{ PIDGIN_STOCK_ANIMATION_CONNECT26, "animations", "process-working26.png",FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
+	{ PIDGIN_STOCK_ANIMATION_CONNECT27, "animations", "process-working27.png",FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
+	{ PIDGIN_STOCK_ANIMATION_CONNECT28, "animations", "process-working28.png",FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
+	{ PIDGIN_STOCK_ANIMATION_CONNECT29, "animations", "process-working29.png",FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
+	{ PIDGIN_STOCK_ANIMATION_CONNECT30, "animations", "process-working30.png",FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
+	{ PIDGIN_STOCK_ANIMATION_TYPING0,  "animations", "typing0.png",FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
+	{ PIDGIN_STOCK_ANIMATION_TYPING1,  "animations", "typing1.png",FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
+	{ PIDGIN_STOCK_ANIMATION_TYPING2,  "animations", "typing2.png",FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
+	{ PIDGIN_STOCK_ANIMATION_TYPING3,  "animations", "typing3.png",FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
+	{ PIDGIN_STOCK_ANIMATION_TYPING4,  "animations", "typing4.png",FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
+	{ PIDGIN_STOCK_ANIMATION_TYPING5,  "animations", "typing5.png",FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
+
+
+        /* Conversation toolbar icons */
+
+	{ PIDGIN_STOCK_TOOLBAR_BGCOLOR, "actions", "pidgin-change-bgcolor.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
+	{ PIDGIN_STOCK_TOOLBAR_FGCOLOR, "actions", "pidgin-change-fgcolor.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
+	{ PIDGIN_STOCK_TOOLBAR_TEXT_SMALLER, "actions", "pidgin-font-size-down.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
+	{ PIDGIN_STOCK_TOOLBAR_TEXT_LARGER, "actions", "pidgin-font-size-up.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
+	{ PIDGIN_STOCK_TOOLBAR_SMILEY, "actions", "pidgin-emote-select.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
+	{ PIDGIN_STOCK_TOOLBAR_FONT_FACE, "actions", "pidgin-font-face.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
+	{ PIDGIN_STOCK_TOOLBAR_INSERT, "actions", "pidgin-insert.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
+	{ PIDGIN_STOCK_TOOLBAR_INSERT_IMAGE, "actions", "pidgin-insert-image.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
+	{ PIDGIN_STOCK_TOOLBAR_INSERT_LINK, "actions", "pidgin-insert-link.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
+
+
+        /* Menu icons */
+
+	{ PIDGIN_STOCK_TOOLBAR_BLOCK, "status", "pidgin-blocked.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
+	{ PIDGIN_STOCK_TOOLBAR_MESSAGE_NEW, "actions", "pidgin-message-new.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
+	{ PIDGIN_STOCK_TOOLBAR_PENDING, "status", "pidgin-tray-new-im.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
+	{ PIDGIN_STOCK_TOOLBAR_PLUGINS, "actions", "pidgin-view-plugins.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
+	{ PIDGIN_STOCK_TOOLBAR_UNBLOCK, "actions", "pidgin-unblock.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
+	{ PIDGIN_STOCK_TOOLBAR_SELECT_AVATAR, "actions", "pidgin-select-avatar.png", FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, NULL  },
+	{ PIDGIN_STOCK_TOOLBAR_SEND_FILE, "actions", "pidgin-send-file.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
+	{ PIDGIN_STOCK_TOOLBAR_TRANSFER, "actions", "pidgin-view-transfer.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
+
+
+        /* Tray icons */
+
+	{ PIDGIN_STOCK_TRAY_AVAILABLE, "status", "pidgin-tray-online.png", FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL  },
+	{ PIDGIN_STOCK_TRAY_INVISIBLE, "status", "pidgin-tray-invisible.png", FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL  },
+	{ PIDGIN_STOCK_TRAY_AWAY, "status", "pidgin-tray-away.png", FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL  },
+	{ PIDGIN_STOCK_TRAY_BUSY, "status", "pidgin-tray-busy.png", FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL  },
+	{ PIDGIN_STOCK_TRAY_XA, "status", "pidgin-tray-extended-away.png", FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL  },
+	{ PIDGIN_STOCK_TRAY_OFFLINE, "status", "pidgin-tray-offline.png", FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL  },
+	{ PIDGIN_STOCK_TRAY_CONNECT, "status", "pidgin-tray-connecting.png", FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL  },
+	{ PIDGIN_STOCK_TRAY_PENDING, "status", "pidgin-tray-new-im.png", FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL  },
+	{ PIDGIN_STOCK_TRAY_EMAIL, "status", "pidgin-tray-message.png", FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL  }
+
+};
+
+static gchar *
+find_file(const char *dir, const char *base)
+{
+	char *filename;
+
+	if (base == NULL)
+		return NULL;
+
+	if (!strcmp(dir, "pidgin"))
+		filename = g_build_filename(DATADIR, "pixmaps", "pidgin", base, NULL);
+	else
+	{
+		filename = g_build_filename(DATADIR, "pixmaps", "pidgin", dir,
+									base, NULL);
+	}
+
+	return filename;
+}
+
+static void
+add_sized_icon(GtkIconSet *iconset, GtkIconSize sizeid, const char *dir, 
+	       gboolean rtl, const char *size, const char *file)
+{
+	char *filename;
+	GtkIconSource *source;	
+
+	filename = g_build_filename(DATADIR, "pixmaps", "pidgin", dir, size, file, NULL);
+	source = gtk_icon_source_new();
+        gtk_icon_source_set_filename(source, filename);
+	gtk_icon_source_set_direction(source, GTK_TEXT_DIR_LTR);
+        gtk_icon_source_set_direction_wildcarded(source, !rtl);
+	gtk_icon_source_set_size(source, sizeid);
+        gtk_icon_source_set_size_wildcarded(source, FALSE);
+        gtk_icon_source_set_state_wildcarded(source, TRUE);
+        gtk_icon_set_add_source(iconset, source);
+	gtk_icon_source_free(source);
+
+	if (sizeid == gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL)) {
+		source = gtk_icon_source_new();
+	        gtk_icon_source_set_filename(source, filename);
+        	gtk_icon_source_set_direction_wildcarded(source, TRUE);
+	        gtk_icon_source_set_size(source, GTK_ICON_SIZE_MENU);
+	        gtk_icon_source_set_size_wildcarded(source, FALSE);
+        	gtk_icon_source_set_state_wildcarded(source, TRUE);
+	        gtk_icon_set_add_source(iconset, source);
+	        gtk_icon_source_free(source);
+	}
+        g_free(filename);
+
+       if (rtl) {
+		filename = g_build_filename(DATADIR, "pixmaps", "pidgin", dir, size, "rtl", file, NULL);
+                source = gtk_icon_source_new();
+                gtk_icon_source_set_filename(source, filename);
+                gtk_icon_source_set_direction(source, GTK_TEXT_DIR_RTL);
+                gtk_icon_source_set_size(source, sizeid);
+                gtk_icon_source_set_size_wildcarded(source, FALSE);
+                gtk_icon_source_set_state_wildcarded(source, TRUE);
+                gtk_icon_set_add_source(iconset, source);
+		g_free(filename);
+		gtk_icon_source_free(source);
+        }
+
+
+}
+
+/* Altered from do_colorshift in gnome-panel */
+static void
+do_alphashift (GdkPixbuf *dest, GdkPixbuf *src)
+{
+        gint i, j;
+        gint width, height, has_alpha, srcrowstride, destrowstride;
+        guchar *target_pixels;
+        guchar *original_pixels;
+        guchar *pixsrc;
+        guchar *pixdest;
+        guchar a;
+
+        has_alpha = gdk_pixbuf_get_has_alpha (src);
+        if (!has_alpha)
+          return;
+
+        width = gdk_pixbuf_get_width (src);
+        height = gdk_pixbuf_get_height (src);
+        srcrowstride = gdk_pixbuf_get_rowstride (src);
+        destrowstride = gdk_pixbuf_get_rowstride (dest);
+        target_pixels = gdk_pixbuf_get_pixels (dest);
+        original_pixels = gdk_pixbuf_get_pixels (src);
+
+        for (i = 0; i < height; i++) {
+                pixdest = target_pixels + i*destrowstride;
+                pixsrc = original_pixels + i*srcrowstride;
+                for (j = 0; j < width; j++) {
+                        *(pixdest++) = *(pixsrc++);
+                        *(pixdest++) = *(pixsrc++);
+                        *(pixdest++) = *(pixsrc++);
+                        a = *(pixsrc++);
+                        *(pixdest++) = a / 2;
+                }
+        }
+}
+
+/* TODO: This is almost certainly not the best way to do this, but it's late, I'm tired,
+ * we're a few hours from getting this thing out, and copy/paste is EASY.
+ */
+static void
+add_translucent_sized_icon(GtkIconSet *iconset, GtkIconSize sizeid, const char *dir,
+	       gboolean rtl, const char *size, const char *file)
+{
+	char *filename;
+	GtkIconSource *source;	
+	GdkPixbuf *pixbuf;
+
+	filename = g_build_filename(DATADIR, "pixmaps", "pidgin", dir, size, file, NULL);
+	pixbuf = gdk_pixbuf_new_from_file(filename, NULL);
+	do_alphashift(pixbuf, pixbuf);
+
+	source = gtk_icon_source_new();
+        gtk_icon_source_set_pixbuf(source, pixbuf);
+	gtk_icon_source_set_direction(source, GTK_TEXT_DIR_LTR);
+        gtk_icon_source_set_direction_wildcarded(source, !rtl);
+	gtk_icon_source_set_size(source, sizeid);
+        gtk_icon_source_set_size_wildcarded(source, FALSE);
+        gtk_icon_source_set_state_wildcarded(source, TRUE);
+        gtk_icon_set_add_source(iconset, source);
+	gtk_icon_source_free(source);
+
+	if (sizeid == gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL)) {
+		source = gtk_icon_source_new();
+	        gtk_icon_source_set_pixbuf(source, pixbuf);
+        	gtk_icon_source_set_direction_wildcarded(source, TRUE);
+	        gtk_icon_source_set_size(source, GTK_ICON_SIZE_MENU);
+	        gtk_icon_source_set_size_wildcarded(source, FALSE);
+        	gtk_icon_source_set_state_wildcarded(source, TRUE);
+	        gtk_icon_set_add_source(iconset, source);
+	        gtk_icon_source_free(source);
+	}
+        g_free(filename);
+	g_object_unref(pixbuf);
+
+       if (rtl) {
+		filename = g_build_filename(DATADIR, "pixmaps", "pidgin", dir, size, "rtl", file, NULL);
+ 		pixbuf = gdk_pixbuf_new_from_file(filename, NULL);
+		do_alphashift(pixbuf, pixbuf);
+		source = gtk_icon_source_new();
+                gtk_icon_source_set_pixbuf(source, pixbuf);
+                gtk_icon_source_set_direction(source, GTK_TEXT_DIR_RTL);
+                gtk_icon_source_set_size(source, sizeid);
+                gtk_icon_source_set_size_wildcarded(source, FALSE);
+                gtk_icon_source_set_state_wildcarded(source, TRUE);
+                gtk_icon_set_add_source(iconset, source);
+		g_free(filename);
+		g_object_unref(pixbuf);
+		gtk_icon_source_free(source);
+        }
+
+
+}
+
+
+void
+pidgin_stock_init(void)
+{
+	static gboolean stock_initted = FALSE;
+	GtkIconFactory *icon_factory;
+	size_t i;
+	GtkWidget *win;
+	GtkIconSize microscopic, extra_small, small, medium, large, huge;
+
+	if (stock_initted)
+		return;
+
+	stock_initted = TRUE;
+
+	/* Setup the icon factory. */
+	icon_factory = gtk_icon_factory_new();
+
+	gtk_icon_factory_add_default(icon_factory);
+
+	/* Er, yeah, a hack, but it works. :) */
+	win = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+	gtk_widget_realize(win);
+
+	for (i = 0; i < G_N_ELEMENTS(stock_icons); i++)
+	{
+		GtkIconSource *source;
+		GtkIconSet *iconset;
+		gchar *filename;
+
+		if (stock_icons[i].dir == NULL)
+		{
+			/* GTK+ Stock icon */
+			iconset = gtk_style_lookup_icon_set(gtk_widget_get_style(win),
+					stock_icons[i].filename);
+		}
+		else
+		{
+			filename = find_file(stock_icons[i].dir, stock_icons[i].filename);
+
+			if (filename == NULL)
+				continue;
+
+			source = gtk_icon_source_new();
+			gtk_icon_source_set_filename(source, filename);
+			gtk_icon_source_set_direction_wildcarded(source, TRUE);
+			gtk_icon_source_set_size_wildcarded(source, TRUE);
+			gtk_icon_source_set_state_wildcarded(source, TRUE);
+
+
+			iconset = gtk_icon_set_new();
+			gtk_icon_set_add_source(iconset, source);
+
+			gtk_icon_source_free(source);
+			g_free(filename);
+		}
+
+		gtk_icon_factory_add(icon_factory, stock_icons[i].name, iconset);
+
+		gtk_icon_set_unref(iconset);
+	}
+
+	/* register custom icon sizes */
+
+	microscopic =  gtk_icon_size_register(PIDGIN_ICON_SIZE_TANGO_MICROSCOPIC, 11, 11);
+	extra_small =  gtk_icon_size_register(PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL, 16, 16);
+	small =        gtk_icon_size_register(PIDGIN_ICON_SIZE_TANGO_SMALL, 22, 22);
+	medium =       gtk_icon_size_register(PIDGIN_ICON_SIZE_TANGO_MEDIUM, 32, 32);
+	large =        gtk_icon_size_register(PIDGIN_ICON_SIZE_TANGO_LARGE, 48, 48);
+	huge =         gtk_icon_size_register(PIDGIN_ICON_SIZE_TANGO_HUGE, 64, 64);
+
+	for (i = 0; i < G_N_ELEMENTS(sized_stock_icons); i++)
+	{
+		GtkIconSet *iconset;
+
+		iconset = gtk_icon_set_new();
+
+#define ADD_SIZED_ICON(name, size) do { \
+		if (sized_stock_icons[i].name)  \
+			add_sized_icon(iconset, name,  \
+					sized_stock_icons[i].dir, sized_stock_icons[i].rtl, \
+					size, sized_stock_icons[i].filename); \
+		} while (0)
+		ADD_SIZED_ICON(microscopic, "11");
+		ADD_SIZED_ICON(extra_small, "16");
+		ADD_SIZED_ICON(small, "22");
+		ADD_SIZED_ICON(medium, "32");
+		ADD_SIZED_ICON(large, "48");
+		ADD_SIZED_ICON(huge, "64");
+#undef ADD_SIZED_ICON
+
+		gtk_icon_factory_add(icon_factory, sized_stock_icons[i].name, iconset);
+		gtk_icon_set_unref(iconset);
+
+		if (sized_stock_icons[i].translucent_name) {
+			iconset = gtk_icon_set_new();
+
+#define ADD_TRANS_ICON(name, size) do { \
+			if (sized_stock_icons[i].name) \
+				add_translucent_sized_icon(iconset, name, \
+						sized_stock_icons[i].dir, sized_stock_icons[i].rtl, \
+						size, sized_stock_icons[i].filename); \
+			} while (0)
+			ADD_TRANS_ICON(microscopic, "11");
+			ADD_TRANS_ICON(extra_small, "16");
+			ADD_TRANS_ICON(small, "22");
+			ADD_TRANS_ICON(medium, "32");
+			ADD_TRANS_ICON(large, "48");
+			ADD_TRANS_ICON(huge, "64");
+#undef ADD_TRANS_ICON
+
+			gtk_icon_factory_add(icon_factory, sized_stock_icons[i].translucent_name, iconset);
+			gtk_icon_set_unref(iconset);
+		}
+	}
+
+	gtk_widget_destroy(win);
+	g_object_unref(G_OBJECT(icon_factory));
+
+	/* Register the stock items. */
+	gtk_stock_add_static(stock_items, G_N_ELEMENTS(stock_items));
+}
--- a/pidgin/plugins/Makefile.am	Thu Sep 11 20:25:47 2008 +0000
+++ b/pidgin/plugins/Makefile.am	Thu Sep 11 20:26:21 2008 +0000
@@ -132,7 +132,7 @@
 #
 SUFFIXES = .c .so
 .c.so:
-	$(LIBTOOL) --mode=compile $(CC) -DHAVE_CONFIG_H -I$(top_srcdir) $(AM_CPPFLAGS) $(CFLAGS) -c $< -o tmp$@.lo $(PLUGIN_CFLAGS)
+	$(LIBTOOL) --mode=compile $(CC) -DHAVE_CONFIG_H -I$(top_builddir) $(AM_CPPFLAGS) $(CFLAGS) -c $< -o tmp$@.lo $(PLUGIN_CFLAGS)
 	$(LIBTOOL) --mode=link    $(CC) $(CFLAGS) -o libtmp$@.la -rpath $(plugindir) tmp$@.lo $(LIBS) $(LDFLAGS) -module -avoid-version $(PLUGIN_LIBS)
 	@rm -f tmp$@.lo tmp$@.o libtmp$@.la
 	@cp .libs/libtmp$@.so* $@
--- a/pidgin/plugins/relnot.c	Thu Sep 11 20:25:47 2008 +0000
+++ b/pidgin/plugins/relnot.c	Thu Sep 11 20:26:21 2008 +0000
@@ -33,6 +33,7 @@
 
 #include "connection.h"
 #include "core.h"
+#include "debug.h"
 #include "notify.h"
 #include "prefs.h"
 #include "util.h"
@@ -45,14 +46,39 @@
 
 static void
 version_fetch_cb(PurpleUtilFetchUrlData *url_data, gpointer user_data,
-		const gchar *changelog, size_t len, const gchar *error_message)
+		const gchar *response, size_t len, const gchar *error_message)
 {
-	char *cur_ver, *formatted;
+	gchar *cur_ver, *formatted;
+	const char *tmp, *changelog;
+	char response_code[4];
+
 	GString *message;
-	int i=0;
+	int i = 0;
+
+	if(error_message || !response || !len)
+		return;
 
-	if(error_message || !changelog || !len)
+	memset(response_code, '\0', sizeof(response_code));
+	/* Parse the status code - the response should be in the form of "HTTP/?.? 200 ..." */
+	if ((tmp = strstr(response, " ")) != NULL) {
+		tmp++;
+		/* Read the 3 digit status code */
+		if (len - (tmp - response) > 3) {
+			memcpy(response_code, tmp, 3);
+		}
+	}
+
+	if (strcmp(response_code, "200") != 0) {
+		purple_debug_error("relnot", "Didn't recieve a HTTP status code of 200.\n");
 		return;
+	}
+
+	/* Go to the start of the data */
+	if((changelog = strstr(response, "\r\n\r\n")) == NULL) {
+		purple_debug_error("relnot", "Unable to find start of HTTP response data.\n");
+		return;
+	}
+	changelog += 4;
 
 	while(changelog[i] && changelog[i] != '\n') i++;
 
@@ -94,16 +120,35 @@
 {
 	int last_check = purple_prefs_get_int("/plugins/gtk/relnot/last_check");
 	if(!last_check || time(NULL) - last_check > MIN_CHECK_INTERVAL) {
-		char *url = g_strdup_printf("http://pidgin.im/version.php?version=%s&build=%s", purple_core_get_version(),
+		gchar *url, *request;
+		const char *host = "pidgin.im";
+		
+		url = g_strdup_printf("http://%s/version.php?version=%s&build=%s",
+				host,
+				purple_core_get_version(),
 #ifdef _WIN32
 				"purple-win32"
 #else
 				"purple"
 #endif
 		);
-		purple_util_fetch_url(url, TRUE, NULL, FALSE, version_fetch_cb, NULL);
+
+		request = g_strdup_printf(
+				"GET %s HTTP/1.0\r\n"
+				"Connection: close\r\n"
+				"Accept: */*\r\n"
+				"Host: %s\r\n\r\n",
+				url,
+				host);
+
+		purple_util_fetch_url_request_len(url, TRUE, NULL, FALSE,
+			request, TRUE, -1, version_fetch_cb, NULL);
+
+		g_free(request);
+		g_free(url);
+
 		purple_prefs_set_int("/plugins/gtk/relnot/last_check", time(NULL));
-		g_free(url);
+
 	}
 }
 
--- a/pidgin/win32/nsis/pidgin-installer.nsi	Thu Sep 11 20:25:47 2008 +0000
+++ b/pidgin/win32/nsis/pidgin-installer.nsi	Thu Sep 11 20:26:21 2008 +0000
@@ -777,12 +777,8 @@
     Delete "$INSTDIR\sounds\purple\send.wav"
     RMDir "$INSTDIR\sounds\purple"
     RMDir "$INSTDIR\sounds"
-    Delete "$INSTDIR\comerr32.dll"
     Delete "$INSTDIR\freebl3.dll"
-    Delete "$INSTDIR\gssapi32.dll"
     Delete "$INSTDIR\idletrack.dll"
-    Delete "$INSTDIR\k5sprt32.dll"
-    Delete "$INSTDIR\krb5_32.dll"
     Delete "$INSTDIR\libgtkspell.dll"
     Delete "$INSTDIR\libjabber.dll"
     Delete "$INSTDIR\libmeanwhile-1.dll"
@@ -1420,13 +1416,17 @@
   Push $R1
   Push $R2
 
-  ; Make the GTK+ Section RO if it is required.
   Call DoWeNeedGtk
   Pop $R0
   Pop $R2
-  IntCmp $R0 1 gtk_not_mandatory gtk_not_mandatory
+  IntCmp $R0 1 gtk_selection_done gtk_not_mandatory
+    ; Make the GTK+ Section RO if it is required.
     !insertmacro SetSectionFlag ${SecGtk} ${SF_RO}
+    Goto gtk_selection_done
   gtk_not_mandatory:
+    ; Don't select the GTK+ section if we already have this version or newer installed
+    !insertmacro UnselectSection ${SecGtk}
+  gtk_selection_done:
 
   ; If on Win95/98/ME warn them that the GTK+ version wont work
   ${Unless} ${IsNT}
--- a/po/POTFILES.in	Thu Sep 11 20:25:47 2008 +0000
+++ b/po/POTFILES.in	Thu Sep 11 20:26:21 2008 +0000
@@ -183,6 +183,8 @@
 libpurple/util.c
 libpurple/win32/libc_interface.c
 pidgin.desktop.in
+pidgin/artwork/hicolor/24x24/emotes/default.theme.in
+pidgin/artwork/hicolor/24x24/emotes/none/none.theme.in
 pidgin/eggtrayicon.c
 pidgin/gtkaccount.c
 pidgin/gtkblist.c
@@ -214,6 +216,7 @@
 pidgin/gtkwhiteboard.c
 pidgin/pidgin.h
 pidgin/pidgincombobox.c
+pidgin/pidginstock-artwork.c
 pidgin/pidginstock.c
 pidgin/pidgintooltip.c
 pidgin/pixmaps/emotes/default/24/default.theme.in
--- a/po/sv.po	Thu Sep 11 20:25:47 2008 +0000
+++ b/po/sv.po	Thu Sep 11 20:26:21 2008 +0000
@@ -9,8 +9,8 @@
 msgstr ""
 "Project-Id-Version: Pidgin\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-05-15 11:16+0200\n"
-"PO-Revision-Date: 2008-05-15 11:16+0100\n"
+"POT-Creation-Date: 2008-09-02 11:40+0200\n"
+"PO-Revision-Date: 2008-09-02 11:40+0100\n"
 "Last-Translator: Peter Hjalmarsson <xake@rymdraket.net>\n"
 "Language-Team: \n"
 "MIME-Version: 1.0\n"
@@ -96,6 +96,10 @@
 msgid "Alias:"
 msgstr "Alias:"
 
+#. Register checkbox
+msgid "Create this account on the server"
+msgstr "Skapa detta kontot på servern"
+
 #. Cancel button
 #. Cancel
 msgid "Cancel"
@@ -322,6 +326,7 @@
 msgid "Nickname"
 msgstr "Smeknamn"
 
+#. Never know what those translations might end up like...
 #. Idle stuff
 msgid "Idle"
 msgstr "Inaktiv"
@@ -402,6 +407,9 @@
 msgid "View Log..."
 msgstr "Visa logg..."
 
+msgid "View All Logs"
+msgstr "Visa alla loggar"
+
 msgid "Show"
 msgstr "Visa"
 
@@ -599,6 +607,19 @@
 msgid "Send To"
 msgstr "Skicka till"
 
+msgid "Invite message"
+msgstr "Ibjudningsmeddelande"
+
+msgid "Invite"
+msgstr "Bjud in"
+
+msgid ""
+"Please enter the name of the user you wish to invite,\n"
+"along with an optional invite message."
+msgstr ""
+"Ange namnet på den användare du vill bjuda in,\n"
+"samt ett inbjudningsmeddelande om du vill"
+
 msgid "Conversation"
 msgstr "Konversation"
 
@@ -611,6 +632,9 @@
 msgid "Add Buddy Pounce..."
 msgstr "Lägg till kompisnotifiering..."
 
+msgid "Invite..."
+msgstr "Bjud in..."
+
 msgid "Enable Logging"
 msgstr "Aktivera loggning"
 
@@ -620,9 +644,11 @@
 msgid "<AUTO-REPLY> "
 msgstr "<AUTO-SVAR>"
 
-#. Print the list of users in the room
-msgid "List of users:\n"
-msgstr "Lista över användare:\n"
+#, c-format
+msgid "List of %d user:\n"
+msgid_plural "List of %d users:\n"
+msgstr[0] "Lista över %d användare:\n"
+msgstr[1] "Lista över %d användare:\n"
 
 msgid "Supported debug options are:  version"
 msgstr "De felsökningsalternativ som stöds är: version"
@@ -637,6 +663,18 @@
 "Använde \"/help &lt;kommando&gt;\" för hjälp om ett specifikt kommando.\n"
 "Följande kommandon är tillgängliga i sammanhanget:\n"
 
+#, c-format
+msgid ""
+"%s is not a valid message class. See '/help msgcolor' for valid message "
+"classes."
+msgstr ""
+"%s är inte en giltig meddelandeklass. Se '/help msgcolor' för giltiga "
+"meddelandeklasser."
+
+#, c-format
+msgid "%s is not a valid color. See '/help msgcolor' for valid colors."
+msgstr "%s är inte en giltig färg. Se '/help msgcolor' för giltiga färger."
+
 msgid ""
 "say &lt;message&gt;:  Send a message normally as if you weren't using a "
 "command."
@@ -682,6 +720,19 @@
 msgid "statuses: Show the savedstatuses window."
 msgstr "statuses: Visar statushanteraren."
 
+msgid ""
+"msgcolor &lt;class&gt; &lt;foreground&gt; &lt;background&gt;: Set the color "
+"for different classes of messages in the conversation window.<br>    &lt;"
+"class&gt;: receive, send, highlight, action, timestamp<br>    &lt;foreground/"
+"background&gt;: black, red, green, blue, white, gray, darkgray, magenta, "
+"cyan, default<br><br>EXAMPLE:<br>    msgcolor send cyan default"
+msgstr ""
+"msgcolor &lt;klass&gt; &lt;förgrund&gt; &lt;bakgrund&gt;: Anger färgerna för "
+"olika klasser av meddelanden in konversationsfönstret. <br>    &lt;"
+"klass&gt;: recieve, send, highlight, action, timestamp<br>    &lt;förgrund/"
+"bakgrund&gt;: black, red, green, blue, white, gray, darkgray, magenta, cyan, "
+"default<br><br>EXEMPEL:<br>    msgcolor send cyan default"
+
 msgid "Unable to open file."
 msgstr "Kan inte öppna filen."
 
@@ -702,8 +753,10 @@
 msgstr "Pausa"
 
 #, c-format
-msgid "File Transfers - %d%% of %d files"
-msgstr "Filöverföringar - %d%% av %d filer"
+msgid "File Transfers - %d%% of %d file"
+msgid_plural "File Transfers - %d%% of %d files"
+msgstr[0] "Filöverföringar - %d%% av %d fil"
+msgstr[1] "Filöverföringar - %d%% av %d filer"
 
 #. Create the window.
 msgid "File Transfers"
@@ -818,6 +871,9 @@
 msgid "Conversations with %s"
 msgstr "Konversationer med %s"
 
+msgid "All Conversations"
+msgstr "Alla konversationer"
+
 msgid "System Log"
 msgstr "Systemlogg"
 
@@ -855,9 +911,6 @@
 msgid "IM"
 msgstr "Meddelande"
 
-msgid "Invite"
-msgstr "Bjud in"
-
 msgid "(none)"
 msgstr "(inget)"
 
@@ -1451,6 +1504,12 @@
 msgid "No Grouping"
 msgstr "Ingen gruppering"
 
+msgid "Nested Subgroup"
+msgstr "Nästad undergrupp"
+
+msgid "Nested Grouping (experimental)"
+msgstr "Nästad gruppering (experimental)"
+
 msgid "Provides alternate buddylist grouping options."
 msgstr "Erbjuder alternativa val för gruppering i kompislistan."
 
@@ -2069,8 +2128,11 @@
 msgid "ABI version mismatch %d.%d.x (need %d.%d.x)"
 msgstr "ABI versionen passar inte %d.%d.x (behöver %d.%d.x)"
 
-msgid "Plugin does not implement all required functions"
-msgstr "Insticksmodulen tillhandahåller inte alla nödvändiga funktioner"
+msgid ""
+"Plugin does not implement all required functions (list_icon, login and close)"
+msgstr ""
+"Insticksmodulen tillhandahåller inte alla nödvändiga funktioner (list_icon, "
+"login och close)"
 
 #, c-format
 msgid ""
@@ -2150,6 +2212,9 @@
 "Rapportera med en popupp när en autoaccepterad filöverföring är avslutad\n"
 "(endast när det inte är någon konversation med sändaren)"
 
+msgid "Create a new directory for each user"
+msgstr "Skapa en ny katalog för varje användare"
+
 msgid "Notes"
 msgstr "Noteringar"
 
@@ -2313,6 +2378,9 @@
 msgid "User Inactivity Timeout (in minutes)"
 msgstr "Användares inaktivitetstidsgräns (i minuter)"
 
+msgid "Apply hiding rules to buddies"
+msgstr "Verkställ döljningsregler för kompisar"
+
 #. *< type
 #. *< ui_requirement
 #. *< flags
@@ -2732,13 +2800,11 @@
 "modulen måste du installera ActiveTCL från http://www.activestate.com\n"
 
 msgid ""
-"The Apple Bonjour For Windows toolkit wasn't found, see the FAQ at: http://"
-"developer.pidgin.im/wiki/Using%20Pidgin#CanIusePidginforBonjourLink-"
-"LocalMessaging for more information."
-msgstr ""
-"Apples Bonjour För Windows hittades inte, läs FAQen: http://developer.pidgin."
-"im/wiki/Using%20Pidgin#CanIusePidginforBonjourLink-LocalMessaging för mer "
-"information"
+"The Apple Bonjour For Windows toolkit wasn't found, see the FAQ at: http://d."
+"pidgin.im/BonjourWindows for more information."
+msgstr ""
+"Apples Bonjour För Windows hittades inte, läs FAQen: http://d.pidgin.im/"
+"BonjourWindows för mer information"
 
 msgid "Unable to listen for incoming IM connections\n"
 msgstr "Kan inte lyssna efter inkommande IM anslutningar\n"
@@ -2792,9 +2858,6 @@
 msgid "Cannot open socket"
 msgstr "Kan inte öppna uttag"
 
-msgid "Error setting socket options"
-msgstr "Fel vid angivning av socket-val"
-
 msgid "Could not bind socket to port"
 msgstr "Kunde inte binda uttag till port"
 
@@ -2848,6 +2911,9 @@
 msgid "Save buddylist..."
 msgstr "Spara kompislista..."
 
+msgid "Load buddylist from file..."
+msgstr "Läs in kompislista från fil..."
+
 msgid "Fill in the registration fields."
 msgstr "Fyll i registreringsfälten."
 
@@ -3024,9 +3090,6 @@
 msgid "Save buddylist to file..."
 msgstr "Spara kompislista till fil..."
 
-msgid "Load buddylist from file..."
-msgstr "Läs in kompislista från fil..."
-
 #. magic
 #. major_version
 #. minor_version
@@ -3142,6 +3205,9 @@
 msgid "Encodings"
 msgstr "Kodning"
 
+msgid "Auto-detect incoming UTF-8"
+msgstr "Auto-avkänning för inkommande UTF-8"
+
 msgid "Real name"
 msgstr "Fullständigt namn"
 
@@ -3156,8 +3222,8 @@
 msgstr "Felaktigt läge"
 
 #, c-format
-msgid "Ban on %s by %s, set %ld seconds ago"
-msgstr "Bannlysning för %s av %s sattes för %ld sekunder sedan"
+msgid "Ban on %s by %s, set %s ago"
+msgstr "Bannlysning för %s av %s sattes för %s sedan"
 
 #, c-format
 msgid "Ban on %s"
@@ -3327,6 +3393,9 @@
 "away [meddelande]:  Ange ett frånvaromeddelande eller ange utan meddelande "
 "för att återvända från frånvaro."
 
+msgid "ctcp <nick> <msg>: sends ctcp msg to nick."
+msgstr "ctcp <alias> <meddelande>: skicka ett ctcp meddelande till alias"
+
 msgid "chanserv: Send a command to chanserv"
 msgstr "chanserv: Skicka ett kommando till chanserv"
 
@@ -3588,6 +3657,8 @@
 msgid "Country"
 msgstr "Land"
 
+#. lots of clients (including purple) do this, but it's
+#. * out of spec
 msgid "Telephone"
 msgstr "Telefon"
 
@@ -3788,6 +3859,9 @@
 msgid "Capabilities"
 msgstr "Stödjer"
 
+msgid "Priority"
+msgstr "Prioritet"
+
 # Detta begrepp är ju skumt nog som det är på engelska, så det kanske
 # är lika bra att använda ett svensk ord som är nästan snarlikt så
 # att åtminstone de som känner till vad Resource betyder i Jabber
@@ -3796,9 +3870,6 @@
 msgid "Resource"
 msgstr "Resurs"
 
-msgid "Priority"
-msgstr "Prioritet"
-
 msgid "Middle Name"
 msgstr "Andranamn"
 
@@ -4490,8 +4561,8 @@
 msgstr "XMPP meddelandefel"
 
 #, c-format
-msgid " (Code %s)"
-msgstr " (Kod %s)"
+msgid "(Code %s)"
+msgstr "(Kod %s)"
 
 msgid "XML Parse error"
 msgstr "XML-tolkningsfel"
@@ -4516,14 +4587,14 @@
 msgstr "_Acceptera förval"
 
 #, c-format
+msgid "Error joining chat %s"
+msgstr "Fel vid anslutning till chatt %s"
+
+#, c-format
 msgid "Error in chat %s"
 msgstr "Fel i chatt %s"
 
 #, c-format
-msgid "Error joining chat %s"
-msgstr "Fel vid anslutning till chatt %s"
-
-#, c-format
 msgid "Unable to send file to %s, user does not support file transfers"
 msgstr "Kan inte skicka fil till %s, användaren stödjer inte filöverföringar"
 
@@ -4819,6 +4890,10 @@
 msgstr "Passkonto ännu inte verifierat"
 
 #, c-format
+msgid "Passport account suspended"
+msgstr "Passport-kontot är avstängt"
+
+#, c-format
 msgid "Bad ticket"
 msgstr "Ogiltig biljett"
 
@@ -4841,6 +4916,9 @@
 msgid "Nudging %s..."
 msgstr "Vibbar %s..."
 
+msgid "Email Address..."
+msgstr "E-postadress..."
+
 msgid "Your new MSN friendly name is too long."
 msgstr "Ditt nya smeknamn för MSN är för långt."
 
@@ -4875,8 +4953,21 @@
 msgid "Disallow"
 msgstr "Tillåt ej"
 
-msgid "This Hotmail account may not be active."
-msgstr "Detta Hotmail-konto är kanske inte aktivt."
+#, c-format
+msgid "Blocked Text for %s"
+msgstr "Blockerad text för %s"
+
+msgid "No text is blocked for this account."
+msgstr "Ingen text är blockerad för detta kontot."
+
+#, c-format
+msgid ""
+"MSN servers are currently blocking the following regular expressions:<br/>%s"
+msgstr ""
+"MSN-servrarna blockerar för tillfället följande reguljära uttryck:<br/>%s"
+
+msgid "This account does not have email enabled."
+msgstr "Detta kontot har inte epost aktiverat."
 
 msgid "Send a mobile message."
 msgstr "Skicka ett mobilmeddelande."
@@ -4935,6 +5026,9 @@
 msgid "Allow/Disallow Mobile Pages..."
 msgstr "Tillåt/Hindra mobilsökningar..."
 
+msgid "View Blocked Text..."
+msgstr "Visa blockerad text..."
+
 msgid "Open Hotmail Inbox"
 msgstr "Öppna Hotmail Inkorg"
 
@@ -5137,16 +5231,8 @@
 msgid "Windows Live ID authentication:Unable to connect"
 msgstr "Windows Live ID autentisering: Kunde inte ansluta"
 
-#. we must have failed!
-msgid ""
-"Windows Live ID authentication: cannot find authenticate token in server "
-"response"
-msgstr ""
-"Windows Live ID autentisering: Kunde inte finns autentiseringsmarkös i "
-"serverns svar"
-
-msgid "Windows Live ID authentication Failed"
-msgstr "Windows Live ID autentisering misslyckades"
+msgid "Windows Live ID authentication:Invalid response"
+msgstr "Windows Live ID autentisering: Ogiltigt svar"
 
 #, c-format
 msgid "%s is not a valid group."
@@ -5193,6 +5279,9 @@
 msgid "Service Temporarily Unavailable."
 msgstr "Tjänst tillfälligt onåbar."
 
+msgid "Mobile message was not sent because it was too long."
+msgstr "Mobilmeddelandet sändes inte då det var för långt."
+
 msgid "Unable to rename group"
 msgstr "Kan inte byta namn på grupp"
 
@@ -5227,6 +5316,26 @@
 "\n"
 "Efter underhållet är slutfört kommer du kunna ansluta till MSN som vanligt."
 
+msgid ""
+"Message was not sent because the system is unavailable. This normally "
+"happens when the user is blocked or does not exist."
+msgstr ""
+"Meddelandet skickades inte eftersom systemet ej var tillgängligt. Detta "
+"händer normalt när en användare är blockerad eller inte existerar."
+
+msgid "Message was not sent because messages are being sent too quickly."
+msgstr ""
+"Meddelandet kunde inte skickas eftersom meddelandena skickades för snabbt."
+
+#, fuzzy
+msgid "Message was not sent because an unknown encoding error occurred."
+msgstr ""
+"Meddelandet kunde kanske inte skickas på grund av att ett okänt fel uppstod:"
+
+msgid "Message was not sent because an unknown error occurred."
+msgstr ""
+"Meddelandet kunde kanske inte skickas på grund av att ett okänt fel uppstod."
+
 msgid "Unable to connect"
 msgstr "Kan inte ansluta"
 
@@ -5344,6 +5453,9 @@
 msgid "The username specified is invalid."
 msgstr "Den angivna användarnamnet är ogiltigt."
 
+msgid "This Hotmail account may not be active."
+msgstr "Detta Hotmail-konto är kanske inte aktivt."
+
 msgid "Has you"
 msgstr "Har dig"
 
@@ -5383,8 +5495,10 @@
 msgstr "Loggar in"
 
 #, c-format
-msgid "Connection to server lost (no data received within %d seconds)"
-msgstr "Anslutning till servern tappad (ingen data mottagen på %d sekunder)"
+msgid "Connection to server lost (no data received within %d second)"
+msgid_plural "Connection to server lost (no data received within %d seconds)"
+msgstr[0] "Anslutning till servern tappad (ingen data mottagen på %d sekund)"
+msgstr[1] "Anslutning till servern tappad (ingen data mottagen på %d sekunder)"
 
 #. Can't write _()'d strings in array initializers. Workaround.
 msgid "New mail messages"
@@ -5484,9 +5598,15 @@
 
 #, c-format
 msgid ""
+"%d buddy was added or updated from the server (including buddies already on "
+"the server-side list)"
+msgid_plural ""
 "%d buddies were added or updated from the server (including buddies already "
 "on the server-side list)"
-msgstr ""
+msgstr[0] ""
+"%d vän lades till eller uppdaterades av servern (inklusive vänner som redan "
+"fanns på serverns lista)"
+msgstr[1] ""
 "%d vänner lades till eller uppdaterades av servern (inklusive vänner som "
 "redan fanns på serverns lista)"
 
@@ -6018,6 +6138,9 @@
 msgid "AIM Protocol Plugin"
 msgstr "Insticksmodul för AIM-protokoll"
 
+msgid "ICQ UIN..."
+msgstr "IQC UIN..."
+
 #. *< type
 #. *< ui_requirement
 #. *< flags
@@ -6114,11 +6237,11 @@
 msgid "In local permit/deny"
 msgstr "I lokal tillåt/neka"
 
-msgid "Too evil (sender)"
-msgstr "För onskefull (avsändare)"
-
-msgid "Too evil (receiver)"
-msgstr "För onskefull (mottagare)"
+msgid "Warning level too high (sender)"
+msgstr "Varningsnivån för hög (sändaren)"
+
+msgid "Warning level too high (receiver)"
+msgstr "Varningsnivån för hög (mottagaren)"
 
 msgid "User temporarily unavailable"
 msgstr "Användare är tillfälligt oåtkommlig"
@@ -6221,6 +6344,9 @@
 msgid "Camera"
 msgstr "Kamera"
 
+msgid "Screen Sharing"
+msgstr "Skärmdelning"
+
 #, c-format
 msgid "Free For Chat"
 msgstr "Tillgänglig för chatt"
@@ -6312,7 +6438,6 @@
 "Du har anslutit och kopplat ifrån för många gånger. Vänta tio minuter och "
 "prova igen. Om du fortsätter att försöka kommer du att få vänta ännu längre."
 
-#. client too old
 #, c-format
 msgid "The client version you are using is too old. Please upgrade at %s"
 msgstr "Versionen av klienten du använder är för gammal. Uppgradera på %s"
@@ -6468,18 +6593,25 @@
 "Du missade %hu meddelanden från %s eftersom frekvensgränsen har överskridits."
 
 #, c-format
-msgid "You missed %hu message from %s because he/she was too evil."
-msgid_plural "You missed %hu messages from %s because he/she was too evil."
+msgid ""
+"You missed %hu message from %s because his/her warning level is too high."
+msgid_plural ""
+"You missed %hu messages from %s because his/her warning level is too high."
 msgstr[0] ""
-"Du missade %hu meddelande från %s eftersom hon/han var för onskefull."
+"Du missade %hu meddelande från %s eftersom hennes/hans varningsnivå är för "
+"hög."
 msgstr[1] ""
-"Du missade %hu meddelanden från %s eftersom hon/han var för onskefull."
-
-#, c-format
-msgid "You missed %hu message from %s because you are too evil."
-msgid_plural "You missed %hu messages from %s because you are too evil."
-msgstr[0] "Du missade %hu meddelande från %s eftersom du är för onskefull."
-msgstr[1] "Du missade %hu meddelanden från %s eftersom du är för onskefull."
+"Du missade %hu meddelanden från %s eftersom hennes/hans varningsnivå är för "
+"hög."
+
+#, c-format
+msgid "You missed %hu message from %s because your warning level is too high."
+msgid_plural ""
+"You missed %hu messages from %s because your warning level is too high."
+msgstr[0] ""
+"Du missade %hu meddelande från %s eftersom din varningsnivå är för hög."
+msgstr[1] ""
+"Du missade %hu meddelanden från %s eftersom din varningsnivå är för hög."
 
 #, c-format
 msgid "You missed %hu message from %s for an unknown reason."
@@ -6509,9 +6641,6 @@
 msgid "Member Since"
 msgstr "Medlem sedan"
 
-msgid "Available Message"
-msgstr "Tillgängliga meddelanden"
-
 msgid "Your AIM connection may be lost."
 msgstr "Din anslutning kan vara borta."
 
@@ -6540,12 +6669,17 @@
 msgid "Personal Web Page"
 msgstr "Personlig webbsida"
 
+#. aim_userinfo_t
+#. strip_html_tags
 msgid "Additional Information"
 msgstr "Extra information"
 
 msgid "Zip Code"
 msgstr "Postnummer"
 
+msgid "Work Information"
+msgstr "Information om arbete"
+
 msgid "Division"
 msgstr "Avdelning"
 
@@ -6555,9 +6689,6 @@
 msgid "Web Page"
 msgstr "Webbsida"
 
-msgid "Work Information"
-msgstr "Information om arbete"
-
 msgid "Pop-Up Message"
 msgstr "Popup-meddelande"
 
@@ -6774,12 +6905,6 @@
 msgstr ""
 "Din IM-bild skickades inte. Du kan inte skicka IM-bilder via AIM-chattar."
 
-msgid "Away Message"
-msgstr "Frånvaromeddelande"
-
-msgid "<i>(retrieving)</i>"
-msgstr "<i>(mottar)</i>"
-
 msgid "iTunes Music Store Link"
 msgstr "Länk till iTunes Musikaffär"
 
@@ -6906,6 +7031,9 @@
 "filöverföringar och direktmeddelanden \n"
 "(långsammare men avslöjar inte ditt IP-nummer)"
 
+msgid "Allow multiple simultaneous logins"
+msgstr "Tillåt många samtidiga inloggningar"
+
 #, c-format
 msgid "Asking %s to connect to us at %s:%hu for Direct IM."
 msgstr "Ber %s att ansluta till oss på %s:%hu för Direct IM."
@@ -7211,13 +7339,6 @@
 "Notera att om du är skaparen, \n"
 "denna operation kommer till slut ta bort detta Qun."
 
-#, c-format
-msgid "Code [0x%02X]: %s"
-msgstr "Kod [0x%02X]: %s"
-
-msgid "Group Operation Error"
-msgstr "Gruppoperationsfel"
-
 #. we want to see window
 msgid "Do you want to approve the request?"
 msgstr "Vill du godkänna förfrågan?"
@@ -7247,35 +7368,42 @@
 msgid "Failed to send IM."
 msgstr "Kunde inte skicka snabbmeddelande"
 
-msgid "Keep alive error"
-msgstr "Problem att hålla vid liv"
-
-msgid "Error requesting login token"
-msgstr "Problem att efterfråga inloggningsmarkör"
-
-msgid "Unable to login. Check debug log."
-msgstr "Kan inte logga in. Kolla felsökningsloggen."
-
-msgid "Unable to login"
-msgstr "Kunde inte logga in."
-
-#. we didn't successfully connect. tdt->toc_fd is valid here
-msgid "Unable to connect."
-msgstr "Kan inte ansluta."
-
 #, c-format
 msgid "Unknown-%d"
 msgstr "Okänd-%d"
 
-msgid "TCP Address"
-msgstr "TCP-adress"
-
-msgid "UDP Address"
-msgstr "UDP-adress"
-
 msgid "Level"
 msgstr "Nivå"
 
+msgid "Member"
+msgstr "Medlem"
+
+msgid " VIP"
+msgstr "VIP"
+
+msgid " TCP"
+msgstr "TCP"
+
+#, fuzzy
+msgid " FromMobile"
+msgstr "Mobil"
+
+#, fuzzy
+msgid " BindMobile"
+msgstr "Mobil"
+
+msgid " Video"
+msgstr " Video"
+
+msgid " Space"
+msgstr " Space"
+
+msgid "Flag"
+msgstr "Flagga"
+
+msgid "Ver"
+msgstr "Ver"
+
 msgid "Invalid name"
 msgstr "Ogiltigt namn"
 
@@ -7288,12 +7416,16 @@
 msgstr "<b>Senast uppdatering</b>: %s<br>\n"
 
 #, c-format
+msgid "<b>Server</b>: %s: %d<br>\n"
+msgstr "<b>Server</b>: %s: %d<br>\n"
+
+#, c-format
 msgid "<b>Connection Mode</b>: %s<br>\n"
 msgstr "<b>Anslutningsläge</b>: %s<br>\n"
 
 #, c-format
-msgid "<b>Server IP</b>: %s: %d<br>\n"
-msgstr "<b>Server IP</b>: %s: %d<br>\n"
+msgid "<b>Real hostname</b>: %s: %d<br>\n"
+msgstr "<b>Verkligt värdnamn</b>: %s: %d<br>\n"
 
 #, c-format
 msgid "<b>My Public IP</b>: %s<br>\n"
@@ -7345,12 +7477,94 @@
 msgid "Connect using TCP"
 msgstr "Ansluter med TCP"
 
+msgid "resend interval(s)"
+msgstr "återsändgningsintervall(er)"
+
+msgid "Keep alive interval(s)"
+msgstr "Håll vid liv intrevall(er)"
+
+msgid "Update interval(s)"
+msgstr "Uppdateringsintervall(er)"
+
+#, c-format
+msgid "Invalid token len, %d"
+msgstr "Ogiltig polettlen, %d"
+
+msgid "Keep alive error"
+msgstr "Problem att hålla vid liv"
+
+msgid "Failed to connect server"
+msgstr "Kunde inte ansluta till servern"
+
 msgid "Socket error"
 msgstr "Uttag-fel"
 
+#, c-format
+msgid ""
+"Lost connection with server:\n"
+"%d, %s"
+msgstr ""
+"Tappade anslutningen med servern:\n"
+"%d, %s"
+
 msgid "Unable to read from socket"
 msgstr "Kan inte läsa från uttag"
 
+msgid "Write Error"
+msgstr "Skrivfel"
+
+msgid "Connection lost"
+msgstr "Anslutningen tappades"
+
+msgid "Couldn't resolve host"
+msgstr "Kunde ej slå upp värden"
+
+msgid "hostname is NULL or port is 0"
+msgstr "värdnamn är NULL eller porten är 0"
+
+#, c-format
+msgid "Connecting server %s, retries %d"
+msgstr "Ansluter till server %s, försök %d"
+
+#. we didn't successfully connect. tdt->toc_fd is valid here
+msgid "Unable to connect."
+msgstr "Kan inte ansluta."
+
+msgid "Could not resolve hostname"
+msgstr "Kunde ej slå upp värden"
+
+msgid "Unable to login. Check debug log."
+msgstr "Kan inte logga in. Kolla felsökningsloggen."
+
+msgid "Unable to login"
+msgstr "Kunde inte logga in."
+
+#, c-format
+msgid ""
+"Reply %s(0x%02X )\n"
+"Sent %s(0x%02X )\n"
+"Room id %d, reply [0x%02X]: \n"
+"%s"
+msgstr ""
+"Svarade %s(0x%02X )\n"
+"Skickade %s(0x%02X )\n"
+"Rum id %d, svarade [0x%02X]: \n"
+"%s"
+
+msgid "Failed room reply"
+msgstr "Misslyckades med rumssvar"
+
+#, c-format
+msgid "You are not a member of group \"%s\"\n"
+msgstr "Du är inte medlemm i gruppen \"%s\"\n"
+
+msgid "Can not decrypt login reply"
+msgstr "Kan inte dekryptera inloggningssvaret"
+
+#, c-format
+msgid "Invalid token reply code, 0x%02X"
+msgstr "Ogiltig polettsvarskod, 0x%02X"
+
 #, c-format
 msgid "%d has declined the file %s"
 msgstr "%d har har nekat filen %s"
@@ -7362,12 +7576,6 @@
 msgid "%d canceled the transfer of %s"
 msgstr "%d avbröt överföringen av %s"
 
-msgid "Connection lost"
-msgstr "Anslutningen tappades"
-
-msgid "Login failed, no reply"
-msgstr "Inloggningen misslyckades, inget svar"
-
 msgid "Do you want to add this buddy?"
 msgstr "Vill du lägga till den här kompisen?"
 
@@ -7404,6 +7612,14 @@
 msgid "%s is not in your buddy list"
 msgstr "%s finns inte på din kompislista"
 
+#, c-format
+msgid "Notice from: %s"
+msgstr "Notifiering från %s"
+
+#, c-format
+msgid "%s"
+msgstr "%s"
+
 msgid "Connection closed (writing)"
 msgstr "Anslutningen stängd (skrivande)"
 
@@ -8414,6 +8630,10 @@
 msgid "Error loading SILC key pair"
 msgstr "Fel vid inläsning av SILC-nyckelpar"
 
+#, c-format
+msgid "Download %s: %s"
+msgstr "Laddar ned %s: %s"
+
 msgid "Your Current Mood"
 msgstr "Ditt nuvarande humör"
 
@@ -8860,12 +9080,6 @@
 msgid "Could not create listen socket"
 msgstr "Kunde inte skapa lyssnarsocket"
 
-msgid "Couldn't resolve host"
-msgstr "Kunde ej slå upp värden"
-
-msgid "Could not resolve hostname"
-msgstr "Kunde ej slå upp värden"
-
 msgid "SIP usernames may not contain whitespaces or @ symbols"
 msgstr "SIP-användarnamnet får inte innehålla mellanslag eller symbolen @"
 
@@ -9251,6 +9465,9 @@
 msgid "doodle: Request user to start a Doodle session"
 msgstr "doodle: Fråga användaren angående att starta en kladd-session"
 
+msgid "Yahoo ID..."
+msgstr "Yahoo-ID..."
+
 #. *< type
 #. *< ui_requirement
 #. *< flags
@@ -9313,9 +9530,6 @@
 msgid "%s is trying to send you a group of %d files.\n"
 msgstr "%s försöker skicka en grupp av %d filer till dig.\n"
 
-msgid "Write Error"
-msgstr "Skrivfel"
-
 msgid "Yahoo! Japan Profile"
 msgstr "Yahoo! Japan-profil"
 
@@ -9604,6 +9818,14 @@
 msgid "Could not resolve host name"
 msgstr "Kunde inte slå upp värdnamnet"
 
+#, c-format
+msgid "Requesting %s's attention..."
+msgstr "Efterfrågar %s's uppmärksamhet..."
+
+#, c-format
+msgid "%s has requested your attention!"
+msgstr "%s har efterfrågat din uppmärksamhet!"
+
 #. *
 #. * A wrapper for purple_request_action() that uses @c Yes and @c No buttons.
 #.
@@ -9633,14 +9855,6 @@
 msgstr "%s är nu känd som %s.\n"
 
 #, c-format
-msgid "Requesting %s's attention..."
-msgstr "Efterfrågar %s's uppmärksamhet..."
-
-#, c-format
-msgid "%s has requested your attention!"
-msgstr "%s har efterfrågat din uppmärksamhet!"
-
-#, c-format
 msgid ""
 "%s has invited %s to the chat room %s:\n"
 "%s"
@@ -9655,6 +9869,20 @@
 msgid "Accept chat invitation?"
 msgstr "Tacka ja till chattinbjudan?"
 
+#. Shortcut
+msgid "Shortcut"
+msgstr "Genväg"
+
+msgid "The text-shortcut for the smiley"
+msgstr "Textgenvägen för smileyn"
+
+#. Stored Image
+msgid "Stored Image"
+msgstr "Sparad bild"
+
+msgid "Stored Image. (that'll have to do for now)"
+msgstr "Sparade bilder. (det får funka för tillfället)"
+
 msgid "SSL Connection Failed"
 msgstr "SSL-anslutning misslyckades"
 
@@ -9710,6 +9938,12 @@
 msgid "+++ %s became unidle"
 msgstr "+++ %s har blivit aktiv"
 
+#.
+#. * This string determines how some dates are displayed.  The default
+#. * string "%x %X" shows the date then the time.  Translators can
+#. * change this to "%X %x" if they want the time to be shown first,
+#. * followed by the date.
+#.
 #, c-format
 msgid "%x %X"
 msgstr "%x %X"
@@ -9825,6 +10059,11 @@
 msgid "Connection refused."
 msgstr "Anslutningen nekades."
 
+#. 10048
+#, c-format
+msgid "Address already in use."
+msgstr "Adressen används redan"
+
 msgid "Internet Messenger"
 msgstr "Meddelandeklient"
 
@@ -9932,8 +10171,8 @@
 msgid "_Basic"
 msgstr "_Basic"
 
-msgid "Create this new account on the server"
-msgstr "Skapa detta nya kontot på servern"
+msgid "Create _this new account on the server"
+msgstr "Skapa detta _nya kontot på servern"
 
 msgid "_Advanced"
 msgstr "_Avancerat"
@@ -9954,17 +10193,17 @@
 "all.\n"
 "\n"
 "You can come back to this window to add, edit, or remove accounts from "
-"<b>Accounts->Add/Edit</b> in the Buddy List window"
+"<b>Accounts->Manage Accounts</b> in the Buddy List window"
 msgstr ""
 "<span size='larger' weight='bold'>Välkommen till %s!</span>\n"
 "\n"
 "Du har inga IM-konton konfigurerade. För att påbörja en anslutning med %s så "
 "trycker du på knappen <b>Lägg till</b> nedanför och konfigurerar ditt första "
 "konto. Om du vill att %s ska ansluta till fler konton trycker du på <b>Lägg "
-"till</b> igen för att konfigurera dem en och en.\n"
+"till</b> igen för att konfigurera dem alla.\n"
 "\n"
 "Du kan komma tillbaka till detta fönster för att lägga till, ändra eller ta "
-"bort konton från <b>Konton->Lägg till/Ändra</b> i kompislistans fönster"
+"bort konton från <b>Konton->Hantera konton</b> i kompislistans fönster"
 
 #, c-format
 msgid "You have %d contact named %s. Would you like to merge them?"
@@ -10033,6 +10272,12 @@
 msgid "_Remove"
 msgstr "_Ta bort"
 
+msgid "Set Custom Icon"
+msgstr "Välj egen ikon"
+
+msgid "Remove Custom Icon"
+msgstr "Ta bort egen ikon"
+
 msgid "Add _Buddy..."
 msgstr "_Lägg till kompis..."
 
@@ -10132,8 +10377,8 @@
 msgid "/_Accounts"
 msgstr "/_Konton"
 
-msgid "/Accounts/Manage"
-msgstr "/Konton/Hantera"
+msgid "/Accounts/Manage Accounts"
+msgstr "/Konton/Hantera konton"
 
 #. Tools
 msgid "/_Tools"
@@ -10154,6 +10399,9 @@
 msgid "/Tools/Pr_ivacy"
 msgstr "/Verktyg/_Spärrlista"
 
+msgid "/Tools/Smile_y"
+msgstr "/Verktyg/Smile_y"
+
 msgid "/Tools/_File Transfers"
 msgstr "/Verktyg/_Filöverföringar"
 
@@ -10316,14 +10564,15 @@
 "<span weight='bold' size='larger'>Welcome to %s!</span>\n"
 "\n"
 "You have no accounts enabled. Enable your IM accounts from the <b>Accounts</"
-"b> window at <b>Accounts->Manage</b>. Once you enable accounts, you'll be "
-"able to sign on, set your status, and talk to your friends."
+"b> window at <b>Accounts->Manage Accounts</b>. Once you enable accounts, "
+"you'll be able to sign on, set your status, and talk to your friends."
 msgstr ""
 "<span weight='bold' size='larger'>Välkommen till %s!</span>\n"
 "\n"
 "Du har inga konton aktiverade. Aktivera dina IM-konton från fönstret "
-"<b>Konton</b> vid <b>Konton->Hantera</b>. Så snart du har aktiverat dina "
-"konton kommer du kunna välja en status och prata med dina vänner."
+"<b>Konton</b> vid <b>Konton->Hantera konton</b>. Så snart du har aktiverat "
+"dina konton kommer du kunna logga in, välja en status och prata med dina "
+"vänner."
 
 #. set the Show Offline Buddies option. must be done
 #. * after the treeview or faceprint gets mad. -Robot101
@@ -10383,6 +10632,12 @@
 msgid "Please enter the name of the group to be added."
 msgstr "Ange namnet på den grupp som du vill lägga till."
 
+msgid "Enable Account"
+msgstr "Aktivera konto"
+
+msgid "<PurpleMain>/Accounts/Enable Account"
+msgstr "<PurpleMain>/Konton/Aktivera Konto"
+
 msgid "<PurpleMain>/Accounts/"
 msgstr "<PurpleMain>/Konton/"
 
@@ -10395,12 +10650,6 @@
 msgid "_Disable"
 msgstr "A_vaktivera"
 
-msgid "Enable Account"
-msgstr "Aktivera konto"
-
-msgid "<PurpleMain>/Accounts/Enable Account"
-msgstr "<PurpleMain>/Konton/Aktivera Konto"
-
 msgid "/Tools"
 msgstr "/Verktyg"
 
@@ -10486,9 +10735,6 @@
 msgid "Change Size"
 msgstr "Ändra storlek"
 
-msgid "Remove Custom Icon"
-msgstr "Ta bort egen ikon"
-
 msgid "Show All"
 msgstr "Visa Alla"
 
@@ -10757,12 +11003,13 @@
 msgid "Fatal Error"
 msgstr "Allvarligt fel"
 
-msgid "lead developer"
-msgstr "utvecklingsledare"
-
 msgid "developer"
 msgstr "utvecklare"
 
+#. feel free to not translate this
+msgid "Ka-Hing Cheung"
+msgstr ""
+
 msgid "support"
 msgstr "support"
 
@@ -10800,6 +11047,9 @@
 msgid "original author"
 msgstr "ursprunglig upphovsman"
 
+msgid "lead developer"
+msgstr "utvecklingsledare"
+
 msgid "Afrikaans"
 msgstr "Afrikaans"
 
@@ -10869,6 +11119,9 @@
 msgid "French"
 msgstr "Franska"
 
+msgid "Irish"
+msgstr "Irländska"
+
 msgid "Galician"
 msgstr "Galiciska"
 
@@ -10935,6 +11188,9 @@
 msgid "Norwegian Nynorsk"
 msgstr "Norska Nynorsk"
 
+msgid "Occitan"
+msgstr ""
+
 msgid "Punjabi"
 msgstr "Punjabi"
 
@@ -11172,23 +11428,35 @@
 msgid "Right-click for more unread messages...\n"
 msgstr "Högerklicka för fler olästa meddelanden...\n"
 
-msgid "Change Status"
-msgstr "Ändra status"
-
-msgid "Show Buddy List"
-msgstr "Visa kompislistan"
-
-msgid "New Message..."
-msgstr "Nytt meddelande..."
-
-msgid "Mute Sounds"
-msgstr "Stäng av ljud"
-
-msgid "Blink on New Message"
-msgstr "Blinka vid nya meddelande"
-
-msgid "Quit"
-msgstr "Avsluta"
+msgid "_Change Status"
+msgstr "Ändra s_tatus"
+
+msgid "Show Buddy _List"
+msgstr "Visa kompis_listan"
+
+msgid "_Unread Messages"
+msgstr "_Olästa meddeladen"
+
+msgid "New _Message..."
+msgstr "Nytt _meddelande..."
+
+msgid "_Accounts"
+msgstr "_Konton"
+
+msgid "Plu_gins"
+msgstr "I_nsticksmoduler"
+
+msgid "Pr_eferences"
+msgstr "_Inställningar"
+
+msgid "Mute _Sounds"
+msgstr "_Stäng av ljud"
+
+msgid "_Blink on New Message"
+msgstr "_Blinka vid nya meddelande"
+
+msgid "_Quit"
+msgstr "_Avsluta"
 
 msgid "Not started"
 msgstr "Ej startad"
@@ -11291,9 +11559,8 @@
 msgid "Color to draw the name of a message you received."
 msgstr "Färg att rita namnet på ett meddelande du har tagit emot."
 
-#, fuzzy
 msgid "\"Attention\" Name Color"
-msgstr "Namn på bakgrundsfärg"
+msgstr "\"Uppmärksam\" Namnfärg"
 
 msgid "Color to draw the name of a message you received containing your name."
 msgstr ""
@@ -11306,22 +11573,26 @@
 msgid "Color to draw the name of an action message."
 msgstr "Färgen att skriva namnet i ett actionmeddelande."
 
-#, fuzzy
+msgid "Action Message Name Color for Whispered Message"
+msgstr "Actionmeddelandens namnfärg"
+
+msgid "Whisper Message Name Color"
+msgstr "Viskade meddelandens namnfärg"
+
 msgid "Typing notification color"
-msgstr "Färg på utpekade länkar"
+msgstr "Färg på notifiering"
 
 msgid "The color to use for the typing notification font"
-msgstr ""
-
-#, fuzzy
+msgstr "Färgen används för skriftnotifiering"
+
 msgid "Typing notification font"
-msgstr "Öka Typsnittsstorlek"
+msgstr "Typsnitt för skriftnotifiering"
 
 msgid "The font to use for the typing notification"
 msgstr "Typsnittet använt för skrivnotifieringen"
 
 msgid "Enable typing notification"
-msgstr ""
+msgstr "Aktivera skriftnotifiering"
 
 msgid "_Copy Email Address"
 msgstr "_Kopiera e-postadress"
@@ -11377,6 +11648,10 @@
 msgid "_Save Image..."
 msgstr "_Spara bild..."
 
+#, c-format
+msgid "_Add Custom Smiley..."
+msgstr "Lägg till egn smiley..."
+
 msgid "Select Font"
 msgstr "Välj typsnitt"
 
@@ -11415,9 +11690,21 @@
 msgid "Insert Image"
 msgstr "Infoga bild"
 
+#, c-format
+msgid ""
+"This smiley is disabled because a custom smiley exists for this shortcut:\n"
+" %s"
+msgstr ""
+"Denna mileyn är avaktiverad eftersom en egendefinierad smiley redan "
+"existerar för denna genvägen:\n"
+" %s"
+
 msgid "Smile!"
 msgstr "Smile!"
 
+msgid "_Manage custom smileys"
+msgstr "Hantera egna s_mileys"
+
 msgid "This theme has no available smileys."
 msgstr "Detta tema har inga tillgängliga smileys."
 
@@ -12138,6 +12425,12 @@
 msgid "Play"
 msgstr "Spela upp"
 
+msgid "_Browse..."
+msgstr "_Bläddra..."
+
+msgid "_Reset"
+msgstr "Åte_rställ"
+
 msgid "_Report idle time:"
 msgstr "_Rapportera inaktivitetstid:"
 
@@ -12308,6 +12601,47 @@
 msgid "Status for %s"
 msgstr "Status för %s"
 
+msgid "Custom Smiley"
+msgstr "Egen Smiley"
+
+msgid "More Data needed"
+msgstr "Mer Data behövs"
+
+msgid "Please provide a shortcut to associate with the smiley."
+msgstr "Var god ange en genväg att assocciera med den valda smileyn."
+
+msgid "Duplicate Shortcut"
+msgstr "Duplicera genvägen"
+
+msgid ""
+"A custom smiley for the selected shortcut already exists. Please specify a "
+"different shortcut."
+msgstr ""
+"En egen smiley för den valda genvägen existerar redan. Var vänlig ange en "
+"annorlunda genväg."
+
+msgid "Please select an image for the smiley."
+msgstr "Ange en bild för smileyn."
+
+msgid "Edit Smiley"
+msgstr "Redigera Smiley"
+
+msgid "Add Smiley"
+msgstr "Lägg till Smiley"
+
+msgid "Smiley _Image"
+msgstr "Smiley-_bild"
+
+#. Smiley shortcut
+msgid "Smiley S_hortcut"
+msgstr "Smiley-_genväg"
+
+msgid "Smiley"
+msgstr "Smiley"
+
+msgid "Custom Smiley Manager"
+msgstr "Hanterare för egna Smileys"
+
 msgid "Waiting for network connection"
 msgstr "Väntar på nätverksanslutning."
 
@@ -12446,6 +12780,9 @@
 msgid "_Open Mail"
 msgstr "_Öppna brev"
 
+msgid "_Edit"
+msgstr "R_edigera"
+
 msgid "Pidgin Tooltip"
 msgstr "Pidgin verktygstips"
 
@@ -13157,7 +13494,7 @@
 #. *< name
 #. *< version
 msgid "Conversation Window Send Button."
-msgstr ""
+msgstr "Skicka-knapp i konversationsfönster"
 
 #. *< summary
 msgid ""
@@ -13427,3 +13764,46 @@
 #. *  description
 msgid "This plugin is useful for debbuging XMPP servers or clients."
 msgstr "Denna modul är användbar vid felsökning av XMPP serverar och klienter."
+
+#~ msgid "Error setting socket options"
+#~ msgstr "Fel vid angivning av socket-val"
+
+#~ msgid ""
+#~ "Windows Live ID authentication: cannot find authenticate token in server "
+#~ "response"
+#~ msgstr ""
+#~ "Windows Live ID autentisering: Kunde inte finns autentiseringsmarkös i "
+#~ "serverns svar"
+
+#~ msgid "Windows Live ID authentication Failed"
+#~ msgstr "Windows Live ID autentisering misslyckades"
+
+#~ msgid "Too evil (sender)"
+#~ msgstr "För onskefull (avsändare)"
+
+#~ msgid "Too evil (receiver)"
+#~ msgstr "För onskefull (mottagare)"
+
+#~ msgid "Available Message"
+#~ msgstr "Tillgängliga meddelanden"
+
+#~ msgid "Away Message"
+#~ msgstr "Frånvaromeddelande"
+
+#~ msgid "<i>(retrieving)</i>"
+#~ msgstr "<i>(mottar)</i>"
+
+#~ msgid "Code [0x%02X]: %s"
+#~ msgstr "Kod [0x%02X]: %s"
+
+#~ msgid "Group Operation Error"
+#~ msgstr "Gruppoperationsfel"
+
+#~ msgid "Error requesting login token"
+#~ msgstr "Problem att efterfråga inloggningsmarkör"
+
+#~ msgid "TCP Address"
+#~ msgstr "TCP-adress"
+
+#~ msgid "UDP Address"
+#~ msgstr "UDP-adress"